Langkah-langkah ini Anda sebutkan kemungkinan besar dilakukan di mesin yang terpisah. Hanya saja mesin game sederhana biasanya memilikinya dalam satu pass. Urutan Anda
for each object
do physics
do game logic
draw
menjadi
call physics subsystem
call game logic subsystem
call drawing subsystem
Mesin Fisika menangani posisi dan ukuran.
Game Logic Engine berusaha menafsirkan apa yang diubah Physics Engine (ia dapat menghalangi beberapa titik arah ...), tujuan apa yang dimiliki karakter dan perilaku apa yang harus mereka lakukan , ia menjalankan skrip terjadwal ( fungsi berpikir ini ).
Drawing Engine menggambar objek apa yang terlihat, dan dia tahu objek apa yang terlihat karena mesin Quake curang di sini (lihat bagian Draw).
Saran saya kepada Anda adalah untuk lebih mempelajari bagaimana simulasi dilakukan daripada mesin game itu. Ada budaya pop besar terkait pengembangan game dan mesin game dibuat dalam bahasa imperatif (karena tradisi & kecepatan); jadi itu lebih mencerahkan bagi saya untuk mendapatkan buku teks yang bagus (bukan teori) dan MAKA melihat mesin (latihan) daripada melihat mesin dan teka-teki selama berjam-jam bagaimana mereka melakukannya.
Fisika
Seluruh gagasan tentang iterasi semua entitas dan melakukan {think, draw} mungkin akan menimbulkan masalah. Akan ada konflik dan sebagainya. Saya percaya Valve punya Havok dan saya kira Havok menangani fisika yang cukup benar.
Berpikir
Fungsi pikir dijalankan ketika waktu dalam permainan sama dengan waktu di pikiran berikutnya . Ini bekerja seperti ini di mesin Quake, dan mesin Quake adalah dasar untuk mesin Half Life. Ini TIDAK dijalankan setiap saat.
Secara internal itu harus berupa iterasi sederhana melalui daftar entitas dan memeriksa apakah waktu telah berlalu untuk memanggil fungsi think. Kompleksitas waktu adalah O (N), di mana N adalah sejumlah entitas.
Jika ada jumlah entitas yang sangat besar, Anda harus mengukur seberapa banyak akan meningkatkan fps. Perhatikan, bahwa karena hukum Amdahl, percepatan ini berpotensi tidak terlihat. Maksud saya, Anda hanya mengulang semua item dan mengurangi & memeriksa satu nomor.
Saya akan mempercepatnya dengan menyortir entitas dengan nextthink (membuat daftar pointer ke entitas dan mengurutkannya setiap kali; bukan array entitas, karena entitas dapat mengubah nextthink mereka kapan saja, jadi rearanging mereka dalam array membutuhkan O (N) alih-alih O ( 1) dalam daftar).
Anda juga harus melihat penjadwal O (1) di Linux .
Seri
Mesin menggambar apa yang kira-kira terlihat dari area di mana kamera. Level permainan adalah partisi menjadi pohon, dan area adalah daun dari pohon itu. Saya tidak akan mengganggu Anda dengan detail tentang hal itu ... Jadi, jika suatu entitas terlihat, ia dimasukkan ke dalam serangkaian entitas yang terlihat dan mereka ditarik.
Mereka menyimpan area apa yang berpotensi terlihat. Ini disebut "set potensial yang terlihat", singkatnya PVS . Ada visualisasi PVS , kapsul hijau adalah pemain dan di sekitarnya diberikan apa yang berisi PVS-nya.
<some commercial engine>
?