Saya menemukan pertanyaan ini ketika saya sedang merancang sebuah video game di C #.
Jika kami mempertimbangkan game seperti Battlefield atau Call of Duty , ratusan atau bahkan ribuan peluru terbang pada saat bersamaan. Peristiwa dipicu terus-menerus, dan dari apa yang saya tahu, ini menyedot banyak kekuatan pemrosesan ... atau apakah itu? Saya ingin tahu bagaimana berbagai pengembang game mengelola peluru (2D dan 3D) dan apa metode yang paling efisien untuk masing-masingnya.
Saya membaca pertanyaan Bagaimana peluru disimulasikan dalam video game? tetapi itu tidak menyentuh bagaimana peluru bekerja dari perspektif desain program.
Saya punya beberapa ide, tetapi masing-masing memiliki kekurangan:
Metode paling efisien yang bisa saya pikirkan (untuk game 2D):
Katakanlah saya akan membuat kelas yang disebut Bullet, dan untuk berapa lama pengguna menekan tombol, setiap 0,01 detik objek Bullet akan dibuat. Peluru ini memiliki:
1 Kecepatan
2 Posisi awal dari tempat pengambilan gambar
3 Tekstur sprite
4 Efek on-hit
Karena peluru akan menjadi kelasnya sendiri, ia bisa mengatur pendengar menggambar, bergerak, dan bertindak itu sendiri.
Tidakkah akan sulit pada prosesor untuk memproses ribuan objek ini yang dipakai, kemudian dihancurkan (ketika efek on-hit dipicu)? Ruang RAM?
Metode yang efisien untuk game 3D - Pikiran lain yang saya miliki adalah:
Katakanlah saya membuat kelas senjata. Senjata ini memiliki berbagai fitur, beberapa di antaranya:
1 Deteksi kemana arah senjata, dan tentukan apakah senjata itu melihat sasaran
2. Memicu animasi penembakan pistol
3 Memiliki metode doDamage () yang menunjukkan sesuatu untuk mengurangi kesehatan dari senjata apa pun yang diarahkan
4 Memberitahu kelas animasi peluru ketika tombol ditekan
Saya kemudian dapat membuat kelas statis, kata BulletAnimation, yang bisa mendapatkan pemberitahuan dari mana senjata yang memicu itu, di mana senjata itu diarahkan (untuk tujuan peluru), dan informasi tentang sprite dan kecepatan yang tepat untuk digunakan untuk peluru. . Kelas ini kemudian menggambar sprite (pada utas baru mungkin, idk) berdasarkan kedua posisi dan sprite yang diinginkan, untuk mensimulasikan peluru yang ditembakkan dari pistol.
Yang terakhir tampaknya jauh lebih sulit untuk dikodekan, dan tidakkah akan membutuhkan banyak kekuatan pemrosesan untuk terus-menerus memanggil statis untuk melakukan ini untuk ribuan peluru pada satu waktu? Mendapatkan pembaruan yang konstan pada posisi awal dan akhir juga akan sulit.
Pertanyaan saya adalah, apa cara pembuat game paling efisien melakukannya? Apakah metode ini berubah dari game 2D ke 3D?
pew-pew-pew
teknologi :)