While the project is in development phase it is very convenient to have all the assets laying around in folders. But when it’s time to distribute your game it doesn’t look as professional when everything is lying all over the…
While the project is in development phase it is very convenient to have all the assets laying around in folders. But when it’s time to distribute your game it doesn’t look as professional when everything is lying all over the…
One of the most overlooked things when you create your first game, is the sound. For me, the sound really makes a game come to life. I can just look back to when I was a kid. I could play…
All games contain loops of some sort. The most important loop in the game is simply called “game-loop”. This is a short example how it will run:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
// Creates a vector of pointers to GameObjects AnimationLibrary* animLib = new AnimationLibrary(); animLib->init(); SoundLibrary* sndLib = new SoundLibrary(); sndLib->init(); std::vector<GameObject*> gameObjectList; gameObjectList.push_back(new Enemy(400, 50, animLib, sndLib)); gameObjectList.push_back(new Player(400, 400, animLib, sndLib)); // Init all the objects before running them for(std::vector<GameObject*>::iterator it = gameObjectList.begin(); it != gameObjectList.end(); it++){ (*it)->init(); // Loads graphics, sounds and other properties } SDL_Event event; bool gameIsRunning = false; while(gameIsRunning){ // Check if game is quitting, in that case, leave the loop while(SDL_PollEvent(&event)){ if(event.type == SDL_QUIT){ gameIsRunning = false; } } // Sort the gameObjectList std::sort(gameObjectList.begin(), gameObjectList.end(), mySorter); /* Iterate through the list of gameobjects. * Using C++11's auto here instead of the tedious declaration. */ for(auto it = gameObjectList.begin(); it != gameObjectList.end(); it++){ (*it)->listen(event); (*it)->update(gameObjectList); (*it)->draw(screen); // Screen is the framebuffer // passed to all objects. } Collision::collisionCheck(gameObjectList); // The collision detection // is a separate function // and topic itself. // MORE code here, removing and deleting dead objects // checking whether player is alive, any enemies left etc. SDL_Flip(screen); // Update the screen. SDL_Delay(1000/FPS); // Wait for a bit ~20ms } |
This is a short version of what is happening in the code.…
In the last post I made a GameObject class. Now it’s time to subclass from the GameObject class into an enemy. The enemy object will make use of the shared functionality in GameObject, like position, access to a shared AnimationLibrary…
A lot of objects in the game has a many things in common. They contain an Animationlibrary, a position on the screen, width and height. They also got common functions like: Listen Sends any event from the user’s keyboard/mouse/joystick to…
Sprites. The small animated objects are essential to a 2D game. My game will contain quite a number of sprites like enemies, bullets and of course the the player. There are different approaches how to arrange your sprites. Some developers…
SDL 1.2 is a pretty easy library to learn. One web site I cannot more than recommend is Lazy Foo’s SDL tutorials. It’s the best starting point if you’re new to SDL. The tutorials go through a lot of important…
About 20 years ago, I had a desire to create my own game. At that time I had some basic programming skills, but I was still very much a beginner. With no clue about how to make a game. In…