Fundamentals of C/C++ Game Programming; using target based Development on SBC’s, is quite a mouthful isn’t it, as a title, it’s also making a few promises that it probably can’t keep, since there are so many definitions of what are the fundamental skills a game programmer needs to have. But it’s my view there are a few things that can get people up and running and develop their hunger for learning, and it’s those things I want to bring to you here. This is for people who want to be game programmers, but probably don’t quite know how to do it or feel a little daunted that their coding skills don’t really let them explore their game creation skills. Although this is very much a beginner’s book, it is not really aimed at a total novice who has never programmed before; you should be able to understand at least the basic concepts and syntax of C/C++ programming.
There are some excellent beginner’s books I recommend to all my students, such as Michael Dawson’s excellent Beginning C++ Through Game Programming, which though light on actual graphic gaming, is a superb foundation for C++. I will give some very simple getting started examples and build on those, so even the most code wary beginner should pick things up as they go.
None of the code in this book is complex, indeed it can be comfortably argued it’s over simplified, it’s designed as a jumping off point for a novice to expand their knowledge and most of the initial explanations are going to be understandable even for a total beginner. I’ll start slow and explain much at first, but the pace will pick up as we get going and I’ll let the online source code go into more detail as I explain the overall intent of what we are doing rather than the specific functions. If you still don’t understand the syntax of the code, you should undertake a beginners coding course, there are several on line. Also, despite the title, this isn’t a book solely about programming Single Board Computers (SBC’s). The use of a cheap target system is a means to an end to encourage the reader to limit expectations and work within tight constraints which game programmers, especially console programmers have to work with. I want primarily to focus on gameplay concepts and game structures which will let us get games up and running really quickly. However, we do have to introduce some technical concepts later, when we’re a bit more comfortable, since most of these technical concepts will have a direct impact on the performance of your games. You will need to know just enough to avoid some pitfalls and get things up and running correctly.
SBC’s are usually quite simple systems, so building a working knowledge of the fairly generic hardware to produce graphics, sound and data storage is generally easier to learn on them, than it would be on your up to the minute PC which will shield you from errors by virtue of massive processing performance and near unlimited memory.
Once understood, all of the concepts and projects in this book are easily transferrable to any development target where the reader can stretch their growing skills on more powerful systems while still being mindful of the need to work within constraints of hardware which are hard to push, as well as personal limits which should always be pushed.
But SBC’s are really fun to work with, cheap to acquire and present a real sense of achievement when you make them to do more than just act as media servers or control units.
Most important, this is not a how to do x, with y kind of book. I want to take you through a journey of discovery, mine as well as yours, and provide suggestions and working examples on how to do things that games need, and let you decide if the approach I’ve taken is valid. I want to make you question things and hopefully come to different conclusions, using what I supply as a base for debate and expansion rather than a gospel to be followed. When working with beginners, I don’t believe in imposing “the right way”, I prefer to have faith in, “this works for me, can I make it better?”. The “right way”, for you at least, will come with practice and the joy of achievement.
©2017,2018 - Brian Beuken