Saya belum pernah benar-benar melakukan banyak pemrograman game sebelumnya, pertanyaan yang cukup mudah.
Bayangkan saya membangun game Tetris, dengan loop utama terlihat seperti ini.
for every frame
handle input
if it's time to make the current block move down a row
if we can move the block
move the block
else
remove all complete rows
move rows down so there are no gaps
if we can spawn a new block
spawn a new current block
else
game over
Semua yang ada dalam game sejauh ini terjadi secara instan - semuanya muncul secara instan, baris dihapus secara instan, dll. Tetapi bagaimana jika saya tidak ingin hal-hal terjadi secara instan (yaitu hal-hal yang bernyawa)?
for every frame
handle input
if it's time to make the current block move down a row
if we can move the block
move the block
else
?? animate complete rows disappearing (somehow, wait over multiple frames until the animation is done)
?? animate rows moving downwards (and again, wait over multiple frames)
if we can spawn a new block
spawn a new current block
else
game over
Dalam klon Pong saya ini bukan masalah, karena setiap frame saya hanya menggerakkan bola dan memeriksa tabrakan.
Bagaimana saya bisa mengatasi masalah ini? Tentunya sebagian besar permainan melibatkan beberapa aksi yang membutuhkan lebih dari satu frame, dan hal-hal lain berhenti sampai aksi selesai.
Action
kelas dan antrian tindakan untuk dilakukan. Ketika suatu tindakan selesai, hapus dari antrian dan lakukan tindakan selanjutnya dll. Jauh lebih fleksibel daripada mesin-keadaan.