ฉันไม่แน่ใจว่าต้องการใช้คุณลักษณะนี้ในเกมของฉันในเวลานั้นหรือไม่ ฉันไม่ต้องการให้โครงการอยู่ไกลเกินควบคุมดังนั้นฉันจึงมุ่งเน้นไปที่กลไกหลักก่อน
นี่เป็นคุณสมบัติที่ใช้งานได้ง่ายในภายหลังโดยสมมติว่าฉันไดรฟ์ข้อมูลทุกอย่างและจัดเก็บทุกอย่างหรือไม่
ฉันไม่แน่ใจว่าต้องการใช้คุณลักษณะนี้ในเกมของฉันในเวลานั้นหรือไม่ ฉันไม่ต้องการให้โครงการอยู่ไกลเกินควบคุมดังนั้นฉันจึงมุ่งเน้นไปที่กลไกหลักก่อน
นี่เป็นคุณสมบัติที่ใช้งานได้ง่ายในภายหลังโดยสมมติว่าฉันไดรฟ์ข้อมูลทุกอย่างและจัดเก็บทุกอย่างหรือไม่
คำตอบ:
คุณได้รับการถามจากมุมมองด้านเทคนิคของการนำไปใช้หรือขอบเขตของการออกแบบหรือไม่? ทั้งสองวิธีคำตอบสำหรับคำถามของคุณคือ "ใช่"
จากด้านเทคนิคของสิ่งต่าง ๆ โดยทั่วไปการพูดคุณเพียงแค่ค้นหา hooks ในโค้ดของคุณที่ตอบสนองต่อเหตุการณ์ความสำเร็จของคุณและใส่รหัสติดตามสถานะลงในนั้น คุณอาจต้องเพิ่มสิ่งใหม่ ๆ หากคุณกำลังติดตามสิ่งที่ไม่ต่อเนื่องที่เกิดขึ้นในเกม (ตัวอย่างเช่น: จำนวนชั่วโมงที่เล่น X)
จากด้านการออกแบบสิ่งต่าง ๆ ความสำเร็จเป็นแรงบันดาลใจจากภายนอกและการเพิ่มเข้ามาไม่ได้เล่นมากเกินไปในวงหลักของการเล่นเกมยกเว้นสำหรับผู้ที่ต้องการแสวงหามัน ดังนั้นพวกเขาจึงค่อนข้างปลอดภัยโดยไม่คำนึงถึง
shotsFired++
เข้าไปในส่วนที่กระสุนใหม่ถูกสร้างขึ้นและshotsHit++
ในส่วนที่กระสุนส่งผลกระทบต่อผู้เล่นอื่น มันช่วยให้ที่ฉันติดตามสิ่งที่ยิงกระสุน (เพราะผมใช้ข้อมูลในการติดตามผู้ที่มีสิ่งที่ฆ่า ฯลฯ )
หากเอ็นจิ้นเกมของคุณได้รับการออกแบบมาเป็นอย่างดีและใช้ระบบเหตุการณ์ที่สังเกตได้ (ซึ่งเหตุการณ์ถูกสร้างและรับฟังโดยผู้มีส่วนได้เสีย) มันควรจะง่ายในการ "plug-in" ระบบความสำเร็จในภายหลัง (โดยการเพิ่ม ผู้ฟังที่เหมาะสม) การออกแบบแบบนี้มีความยืดหยุ่นมาก
ในฐานะที่เป็นคนที่มีอยู่แล้วได้เพิ่มคำตอบที่ดีให้ฉันตอบสถานการณ์ที่ไม่เปิดเผย
หากคุณอยู่ในตำแหน่งที่คุณได้เขียนโค้ดเกมของคุณเสร็จแล้วและตอนนี้เริ่มมีความสำเร็จในการเขียนโค้ดและพบว่ามันซับซ้อนมากในการรักษาตัวแปรและการนับจำนวนมากเกินไป
คุณสามารถสร้างหนึ่งคลาส (โดยเฉพาะอย่างยิ่งซิงเกิล) เพื่อรับเหตุการณ์ทั้งหมด ตอนนี้แสดงรายการความสำเร็จทั้งหมดของคุณ จากนั้นแสดงรายการกิจกรรมเกมทั้งหมดที่จำเป็นในการติดตาม สำหรับเช่นรายการปัจจุบันของฉันมีลักษณะเช่นนี้
ศัตรูฆ่า - เดินกระสุนตายผู้เล่น - falling_off สุขภาพ ENTER_ROOM, EXIT_ROOM เป็นต้น
รายละเอียดพิเศษเหล่านั้นเช่นการเดินกระสุนอาจเป็นพารามิเตอร์ ตอนนี้มีหนึ่งฟังก์ชันที่เรียกว่า fireEvent ในคลาสติดตามผลสัมฤทธิ์ ค้นหาสถานที่ทั้งหมดในรหัสที่คุณต้องการใช้งานเหตุการณ์และเรียกใช้ฟังก์ชันนั้น ตอนนี้งานที่เหลือของสกปรกในคลาสความสำเร็จ นี่เป็นวิธีที่ปลอดภัยที่สุดที่จะไม่รบกวนการทำงานของรหัสและรหัสความสำเร็จที่มีอยู่ มันค่อนข้างเร็วสำหรับฉัน