Dapatkah sistem Prestasi diimplementasikan kemudian dalam pengembangan?

12

Saya ragu apakah saya ingin mengimplementasikan fitur ini di game saya saat itu atau tidak. Saya tidak ingin proyek menjadi jauh di luar kendali jadi saya fokus pada mekanika inti terlebih dahulu.

Apakah ini fitur yang mudah diimplementasikan kemudian dengan asumsi data saya menggerakkan segalanya dan menyimpan semuanya?

Bryan Harrington
sumber
3
Saya mem-porting game DOS terkenal ke windows beberapa tahun yang lalu - salah satu hal yang saya ingin tambahkan, jika kita akan membuat perubahan pada gameplay - akan menjadi prestasi. Jadi jika saya bisa menambah prestasi pada game berusia lebih dari 10 tahun jelas tidak dirancang untuk itu, saya cukup banyak mengatakan mereka dapat ditambahkan di mana saja. Heck, situs ini juga punya prestasi ..
Jari Komppa

Jawaban:

19

Apakah Anda bertanya dari sudut pandang teknis pelaksanaan atau konsekuensi dari desain? Bagaimanapun, jawaban atas pertanyaan Anda adalah "ya".

Dari sisi teknis, secara umum Anda hanya menemukan kait dalam kode Anda yang merespons acara pencapaian Anda dan memasukkan kode pelacakan stat Anda di sana. Anda mungkin harus menambahkan beberapa hal baru jika Anda melacak hal-hal yang tidak persis peristiwa terpisah yang sudah terjadi dalam permainan (misalnya: X jumlah jam bermain).

Dari sisi desain, yah, prestasi adalah motivator ekstrinsik dan menambahkannya tidak terlalu berperan dalam lingkaran inti permainan, kecuali bagi orang yang ingin mencarinya. Jadi mereka cukup aman.

Tetrad
sumber
Ya, saya melakukan ini sekarang. Itu cukup mudah untuk menghubungkan shotsFired++ke dalam bagian di mana peluru baru dipakai, dan shotsHit++di bagian di mana peluru berdampak pada pemain lain. Itu membantu saya melacak siapa yang menembakkan peluru apa (karena saya menggunakan informasi untuk melacak siapa yang mendapatkan apa yang membunuh dll)
bobobobo
5

Asalkan mesin game Anda dirancang dengan baik dan menggunakan beberapa jenis sistem acara yang dapat diamati (di mana acara dihasilkan dan didengarkan oleh pihak yang berkepentingan), seharusnya cukup mudah untuk "plug-in" sistem pencapaian di kemudian hari (dengan menambahkan pendengar yang tepat). Desain semacam ini sangat fleksibel.

Jus Moo
sumber
2

Karena orang-orang yang sudah ada telah menambahkan jawaban yang baik, izinkan saya menjawab situasi yang tidak tertutup.

Jika sama sekali Anda berada dalam posisi di mana Anda telah menyelesaikan pengkodean permainan Anda dan sekarang mulai membuat kode prestasi dan merasa sangat kompleks untuk mempertahankan terlalu banyak variabel dan jumlah dan menghapusnya di acara-acara tertentu dan hal-hal seperti itu.

Anda selalu dapat membuat satu kelas (sebaiknya tunggal) untuk menerima semua acara. Sekarang daftarkan semua pencapaian Anda. Kemudian daftarkan semua acara game yang perlu dilacak. Untuk misalnya daftar saya saat ini terlihat seperti ini

MEMBUNUH MUSUH - berjalan, peluru KEMATIAN PLAYER - falling_off, kesehatan ENTER_ROOM, EXIT_ROOM dll.

Rincian ekstra seperti berjalan, peluru bisa menjadi parameter. Sekarang memiliki satu fungsi bernama fireEvent di kelas pelacakan Prestasi. Cari semua tempat dalam kode tempat Anda perlu memadamkan peristiwa dan memanggil fungsi itu. Sekarang lakukan sisa pekerjaan kotor di kelas Prestasi. ini adalah cara teraman untuk tidak mengganggu kode dan Prestasi kode yang ada. Itu bekerja cukup cepat untuk saya.

Rajavanya Subramaniyan
sumber
Itulah solusi yang sangat bagus untuk implementasi pasca pengembangan. Saya akan mengingat hal ini karena saya masih tidak yakin apakah saya ingin menerapkannya. Saya mungkin melakukannya pada tahap selanjutnya karena saya tidak ingin ruang lingkup proyek saya menjadi lepas kendali.
Bryan Harrington