Question about flow of game loop

Started by
0 comments, last by ProtectedMode 10 years, 2 months ago

Hello,

I am using SDL with C++ to make a simple arena top down shooter. The issue I am having is with how the layout of the game as far as the game loop and the headers/source files are concerned. Basically, here is how I envision the layout being:

gameCore.cpp == This would be the main code of the game, containing the order of the functions that actually make the game happen

gameInit.h == this file would be included in the above file, and would contain everything that is initially set up(initialize SDL, etc)

*Things such as the player and enemies, environment objects would be kept in their own source file( a .cpp I believe?) For example, there would be player.h, enemy1.h, etc, and an include file that is included in gameCore.cpp for each one.

gameRender.h == this would blit every surface to the screen(basically handle the visual aspect of things) this file would also be included at the top of gameCore.cpp

gameLoop.h == this file would be the actual gameplay, it would initialize instances of the player and enemies, etc.

gameExit.h == this would handle what happens when the game exits, mainly clearing surfaces, etc.

I guess my question is if this is the best way to do it? I can code the actual functions, my problem is just understanding where it all fits in.

Thanks so much!

Advertisement

I don't think what you are doing is the correct approach. I'm sure others can explain this better but I will try to explain the usual way a game is made:

  • First, you use classes. The header files (.hpp) contain the declarations and the source files (.cpp) contain the implementations.
  • You probably want to create a Game class that contains all basic functions.
  • After that you would create a Main.cpp, which creates an instance of the game, initalizes it, and runs it.

If you need a class to know about another class, you only include the header file. This way, you have the code spread to multiple files so you won't have to compile the hole thing again when you change one line. Using classes also makes your code cleaner and easier to manage (in my opinion). A list of files your game consists of could be:

  • Game.hpp. This header file contains the declarations of the class and its functions like OnInit, OnCleanup and OnRun... Or something like that.
  • Game.cpp. This file contains the definitions of the Game functions.
  • Main.cpp. This file includes "Game.hpp", instantiates it and runs it.

If you change "Game.cpp" now, you will only have to recompile that file, not the rest. This may seem a bit weird for you now but you will see other advantages later.

BTW, the ".h" extension is normally used for C headers but for C++ this is usually ".hpp", even though many people use ".h".

This topic is closed to new replies.

Advertisement