- Hands-On Game Development with WebAssembly
- Rick Battagline
- 208字
- 2021-06-24 13:41:09
Understanding the game loop
A key concept in game design is the game loop. In any game, the code must run over and over again, performing a series of tasks such as input, AI, physics, and rendering. A game loop might look something like this:
while(loop_forever) {
get_user_input();
move_game_objects();
collision_detection();
render_game_objects();
play_audio();
}
An SDL/C++ game targeting almost any platform except WebAssembly would have a while loop, probably located within the main function of the C++ code, that would exit only when the player exits the game. WebAssembly shares its runtime with the JavaScript engine inside your web browser. The JavaScript engine runs on a single thread, and Emscripten uses JavaScript glue code to take what you have done inside SDL within WebAssembly and render that to the HTML canvas element. Therefore, we need to use an Emscripten-specific piece of code for our game loop:
emscripten_set_main_loop(game_loop, 0, 0);
In the next few chapters, we will be adding some of these functions to our game:
- Game object management
- Collision detection between game objects
- Particle systems
- Enemy spaceship AI using a finite state machine (FSM)
- Game camera for tracking our player
- Play audio and sound effects
- Game physics
- User interface
These will be functions called from the game loop.
- 電腦常見問題與故障排除
- Creating Dynamic UI with Android Fragments
- Linux運維之道(第2版)
- Getting Started with Qt 5
- 深入淺出SSD:固態存儲核心技術、原理與實戰(第2版)
- Mastering Adobe Photoshop Elements
- R Deep Learning Essentials
- 單片機系統設計與開發教程
- BeagleBone Robotic Projects
- “硬”核:硬件產品成功密碼
- Blender Game Engine:Beginner's Guide
- 微控制器的應用
- 筆記本電腦維修技能實訓
- 計算機組成技術教程
- The Applied Artificial Intelligence Workshop