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?
game-design
achievements
Bryan Harrington
sumber
sumber
Jawaban:
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.
sumber
shotsFired++
ke dalam bagian di mana peluru baru dipakai, danshotsHit++
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)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.
sumber
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.
sumber