官术网_书友最值得收藏!

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.

主站蜘蛛池模板: 远安县| 新晃| 乐清市| 株洲市| 八宿县| 镇巴县| 中超| 武安市| 双城市| 涿鹿县| 东台市| 宁阳县| 钦州市| 德州市| 濮阳县| 勃利县| 忻城县| 汉川市| 锡林浩特市| 海南省| 清新县| 友谊县| 榆社县| 沙雅县| 四平市| 泰来县| 华池县| 闽清县| 容城县| 五华县| 新营市| 定南县| 柏乡县| 巴南区| 西贡区| 浦县| 马公市| 尚志市| 开平市| 克山县| 冷水江市|