I said I would spend some time talking about our C++ port as it progressed, and so here we are. Part 1. ‘Oorah.
Perhaps the first question that comes up with this port is why? Why are we taking the time to start from scratch like this, after having spent so long developing the game in GameMaker.
The primary reason for me is that C++ gives me the ability to do actual, competent technical design. GameMaker is technically Object-Oriented, but not in a way that I find valuable or clear. I feel that GameMaker is a fantastic way to approach the concept of game development and programming, but not a place to truly excel.
Moving to C++ gives us the advantages of true Object-Oriented design. What that will eventually mean is that I can develop the game faster, more efficiently, and more intelligently. It also means that ports are more likely to happen, and that integration with popular web services is in the cards.
What are we using?
For development, we’re using a number of tools:
Justin and I are both using Visual Studio 2013 for our compilation and programming. We’ve chosen Visual Studio mostly because we’re familiar with it and how it works.
We’ve decided to use SFML to develop this project. It allows us to focus on game development, instead of nitty-gritty of operating systems.
We’ve chosen SourceTree and BitBucket to handle our version control needs. Version control is an interesting and very broad topic, and we’re very slowly digging our way into its secrets.
The first issue that popped up for us was perhaps the most basic issue: How do we start this project?
Developing a game in GameMaker is fairly simple to start with. GameMaker handles most of the complicated stuff for you. It creates the window, handles your game loop, and renders things for you. The biggest challenge for us so far has been internalizing how exactly these things work in a more basic environment.
I’ll talk more about game loops and rendering in the future. We’re still working through it. Our biggest goal right now is to learn how to design and develop this basic aspect of the game in an optimized and efficient way. It wouldn’t do to build an entire game upon a faulty core.
I expect us to make mistakes as we go through this process. This is our first time approaching game development from this angle, and it’s something that is relatively complex. I’m okay with the mistakes though; they’re the best way to learn.
What we’re doing now
Our time at the moment is being invested into rendering. The main game loop exists and is functional. Our priority is to design the rendering process properly, so that it stops being something that we need to think about in the future.
I’ll be back fairly soon with Part 2, discussing the game loop and rendering more in-depth. Hopefully these posts continue to interest you! If you have any insight or thoughts on what we’re doing, feel free to let us know.
See you all soon!