ระบบความสำเร็จสามารถนำมาใช้ในการพัฒนาได้หรือไม่


12

ฉันไม่แน่ใจว่าต้องการใช้คุณลักษณะนี้ในเกมของฉันในเวลานั้นหรือไม่ ฉันไม่ต้องการให้โครงการอยู่ไกลเกินควบคุมดังนั้นฉันจึงมุ่งเน้นไปที่กลไกหลักก่อน

นี่เป็นคุณสมบัติที่ใช้งานได้ง่ายในภายหลังโดยสมมติว่าฉันไดรฟ์ข้อมูลทุกอย่างและจัดเก็บทุกอย่างหรือไม่


3
ฉันย้ายเกม DOS ที่เป็นที่รู้จักไปยัง windows เมื่อสองสามปีที่แล้ว - หนึ่งในสิ่งที่ฉันอยากจะเพิ่มเข้าไปถ้าเราจะทำการเปลี่ยนแปลงใด ๆ กับการเล่นเกม - จะประสบความสำเร็จ ดังนั้นหากฉันสามารถเพิ่มความสำเร็จให้กับเกมที่มีอายุมากกว่า 10 ปีซึ่งไม่ได้ออกแบบมาอย่างชัดเจนฉันจะบอกว่าพวกเขาสามารถเพิ่มได้ทุกที่ เฮ็คไซต์นี้มีความสำเร็จ ..
Jari Komppa

คำตอบ:


19

คุณได้รับการถามจากมุมมองด้านเทคนิคของการนำไปใช้หรือขอบเขตของการออกแบบหรือไม่? ทั้งสองวิธีคำตอบสำหรับคำถามของคุณคือ "ใช่"

จากด้านเทคนิคของสิ่งต่าง ๆ โดยทั่วไปการพูดคุณเพียงแค่ค้นหา hooks ในโค้ดของคุณที่ตอบสนองต่อเหตุการณ์ความสำเร็จของคุณและใส่รหัสติดตามสถานะลงในนั้น คุณอาจต้องเพิ่มสิ่งใหม่ ๆ หากคุณกำลังติดตามสิ่งที่ไม่ต่อเนื่องที่เกิดขึ้นในเกม (ตัวอย่างเช่น: จำนวนชั่วโมงที่เล่น X)

จากด้านการออกแบบสิ่งต่าง ๆ ความสำเร็จเป็นแรงบันดาลใจจากภายนอกและการเพิ่มเข้ามาไม่ได้เล่นมากเกินไปในวงหลักของการเล่นเกมยกเว้นสำหรับผู้ที่ต้องการแสวงหามัน ดังนั้นพวกเขาจึงค่อนข้างปลอดภัยโดยไม่คำนึงถึง


ใช่ฉันกำลังทำสิ่งนี้อยู่ มันค่อนข้างง่ายที่จะเชื่อมโยงshotsFired++เข้าไปในส่วนที่กระสุนใหม่ถูกสร้างขึ้นและshotsHit++ในส่วนที่กระสุนส่งผลกระทบต่อผู้เล่นอื่น มันช่วยให้ที่ฉันติดตามสิ่งที่ยิงกระสุน (เพราะผมใช้ข้อมูลในการติดตามผู้ที่มีสิ่งที่ฆ่า ฯลฯ )
bobobobo

5

หากเอ็นจิ้นเกมของคุณได้รับการออกแบบมาเป็นอย่างดีและใช้ระบบเหตุการณ์ที่สังเกตได้ (ซึ่งเหตุการณ์ถูกสร้างและรับฟังโดยผู้มีส่วนได้เสีย) มันควรจะง่ายในการ "plug-in" ระบบความสำเร็จในภายหลัง (โดยการเพิ่ม ผู้ฟังที่เหมาะสม) การออกแบบแบบนี้มีความยืดหยุ่นมาก


2

ในฐานะที่เป็นคนที่มีอยู่แล้วได้เพิ่มคำตอบที่ดีให้ฉันตอบสถานการณ์ที่ไม่เปิดเผย

หากคุณอยู่ในตำแหน่งที่คุณได้เขียนโค้ดเกมของคุณเสร็จแล้วและตอนนี้เริ่มมีความสำเร็จในการเขียนโค้ดและพบว่ามันซับซ้อนมากในการรักษาตัวแปรและการนับจำนวนมากเกินไป

คุณสามารถสร้างหนึ่งคลาส (โดยเฉพาะอย่างยิ่งซิงเกิล) เพื่อรับเหตุการณ์ทั้งหมด ตอนนี้แสดงรายการความสำเร็จทั้งหมดของคุณ จากนั้นแสดงรายการกิจกรรมเกมทั้งหมดที่จำเป็นในการติดตาม สำหรับเช่นรายการปัจจุบันของฉันมีลักษณะเช่นนี้

ศัตรูฆ่า - เดินกระสุนตายผู้เล่น - falling_off สุขภาพ ENTER_ROOM, EXIT_ROOM เป็นต้น

รายละเอียดพิเศษเหล่านั้นเช่นการเดินกระสุนอาจเป็นพารามิเตอร์ ตอนนี้มีหนึ่งฟังก์ชันที่เรียกว่า fireEvent ในคลาสติดตามผลสัมฤทธิ์ ค้นหาสถานที่ทั้งหมดในรหัสที่คุณต้องการใช้งานเหตุการณ์และเรียกใช้ฟังก์ชันนั้น ตอนนี้งานที่เหลือของสกปรกในคลาสความสำเร็จ นี่เป็นวิธีที่ปลอดภัยที่สุดที่จะไม่รบกวนการทำงานของรหัสและรหัสความสำเร็จที่มีอยู่ มันค่อนข้างเร็วสำหรับฉัน


นั่นเป็นทางออกที่ดีมากสำหรับการพัฒนาระบบโพสต์ ฉันจะจำไว้เพราะฉันยังไม่แน่ใจว่าฉันต้องการที่จะใช้มัน ฉันอาจทำในภายหลังเพราะฉันไม่ต้องการขอบเขตของโครงการที่จะควบคุม
ไบรอันแฮร์ริงตัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.