Creating sprites
For those who creates sprites by plotting their own pixel graphics, know it’s a very time consuming tasks. Before I had only been using Gimp and Photoshop to do animations. Layer by layer for each frame. It worked ok, but …
A code blog
For those who creates sprites by plotting their own pixel graphics, know it’s a very time consuming tasks. Before I had only been using Gimp and Photoshop to do animations. Layer by layer for each frame. It worked ok, but …
When I’ve been building for different platforms in C++. I’ve experienced that there are no easy way to get the path to important directories. Each platform has it’s own code to get it’s own specific paths, and they are also …
Now when my first game is finished I’ve been thinking about game number 2. Spacefight is a fairly simple game but it has a lot of resuable building blocks. Like the animation and sound library. Game type The next game …
The game is finally complete! You can find it under the download section on this blog, if you want to try it out. You can also look it up on Bitbucket. I’m quite happy how it turned out. I have …
The game starts to look complete and I am getting ready to build versions of the game, for the platforms I initially had in mind which are Linux, Windows and Mac OSX. Building for Windows First off I hoped I …
Spacefight – Building and distributing the game – Part 11 Read more »
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 …
Spacefight – Packing all the resources into one file – Part 10 Read more »
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 …
In software development there are different types of bugs. C++ is a hard typed language which makes it easy for the compiler to detect errors in the code. So if there is type error (int is not a float, or …
Spacefight – Gamecrash, memory leaks and frustration – Part 8 Read more »
Now the game is as far in the development phase and things are moving around on the screen! In order to put some logic into the game I’ll need some kind of a collision detection. I will use a very …
Spacefight – Things are moving, but do they collide? – Part 7 Read more »
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. …