What should a game programmer read? / Hebrew

What should a game programmer read? / Hebrew

The amount of specific knowledge that the average game programmer needs, even if he’s just starting his career, makes me “slightly” homesick. This is one of the reasons why most people who are “burnt to make games” fail at the technical interview stage (usually more than one). This is normal and sad. Add here that non-fundamental knowledge, such as tools, libraries and engines, has to be updated every 5-7 years. I don’t see here that Grobud is very different from other areas of development. If 15 years ago the “good me” had sent a list of books to be read and pondered, the army of collected rakes would not have been so large and diverse, and without half-length pens. Be careful, there will be a super long image at the end of the article (taken from github here, with the permission of the author)


All the books and resources that will be listed here can be divided into several types (this is a personal opinion, you can talk).

Documentation and examples

Here it is recommended only to spoil, no one will write the documentation better than the creators of the tool. So my practice is to read the manual and samples before starting to code. Many people start doing it much later, when bugs have already crept in or something is not working.

Best practices

From the sea of ​​books on programming (mostly on the pros) and development in general, there are not so many left on my desk.

Code Complete: A Practical Handbook of Software Construction.

More and more often I come back to this book to find the reasoning and the right words and to dissuade colleagues from pulling a new fancy framework into the engine while it’s up and running. The book describes the basic principles of software development, such as modularity, code reading, reuse, as well as various aspects that affect the quality of the resulting product – design, testing, debugging, analysis, etc. It seems that everything is written simply and clearly. , but how difficult it is to write simple and clean code in a real project.

Effective C++ (“Effective use of C++”, Scott Meyers)

The entire trilogy (there is also Effective and modern C++/The most effective use of C++) by Meyers on how to “good” write spherical horses in a vacuum, I would give in the first courses of the university, in parallel with the study of the language itself. The book provides practical tips and tricks for using pros to write efficient, productive, and clean code. It is clear that the books are quite old and do not meet modern standards, but they did not become worse from this.

Robert Nystrom “Game programming patterns” (https://gameprogrammingpatterns.com)
The only normal book (and portal) is devoted to practical patterns and programming examples used or used in the development of computer games. The author was a game developer for a long time, but then he went to the dark side and started sawing Dart.

I was recently delighted with such a book here, I recognized myself in a couple of such tips. It became embarrassing, you have to work on yourself. @Andrey2008 Thank you for the book, it was interesting.

Fundamental to the development of books

“Game Engine Architecture” (“Architecture of game engines”) – Written by Jason Gregory, the book is a comprehensive overview of the principles, concepts, and practices involved in game engine development. It describes the theory and various aspects of game engine architecture, starting with basic design principles and ending with real-world examples. This book is about how to make game engines, you can actually see how they are made on a lot of examples on github. Game Engine Architecture is a must-read for game developers, designers, and engineers. It is unlikely that you will find a more comprehensive description collected in one place and in an accessible language.

Jeannie Novak. Game Development Essentials

Unlike many other books about the process of creating a game, Game Development Essentials shows the complexities that can arise during development. Throughout the book, the main idea is conveyed to the reader that creating the game of your dreams requires more than just a good idea, and that game programming is hard work, not fun. I advise to read both those who have gathered in Grobud in general, and those who are thinking of “entering the IT”. Grabud is just a special case of the software development industry, where certain features of its features are maximized.

Eric Lengyel. Mathematics for 3D Game Programming and Computer Graphics

Eric Lengel is the founder of Terathon Software and the creator of the C4 Engine, a former developer at Naughty Dog, Sierra Studios and Apple. Mainly intended for programmers who want a deeper understanding of the processes inside the game and the mathematics behind it all. However, in most cases the book is too technical and difficult for beginners, especially in the field of 3D graphics. Basic knowledge in mathematics cannot be dispensed with here, and an understanding of mathematical concepts is required only at the level of 2-3 university courses. In addition, the book focuses mainly on the mathematical aspects of development, without examples of how it can affect general architecture, design, mechanics, etc.

Game AI developer’s library (programmer + designer)

Game AI Pro (Steven Rabin) – This is a series of books, edited by Steven Rabin, devoted to AI in computer games. Each book in this series is a collection of articles and materials from real developers who share their experience and knowledge.

Making Deep Games (Doris C. Rusch) – The book is written by Doris C. Rusch, the author promotes the concept of “deep game” and gives practical recommendations for their creation. There are very few technical details, the author reflects more on the concepts and mechanics that they can to cause emotional changes in players, experiences and principles of supporting the gaming atmosphere. It is not a very interesting book, in my opinion, it is a lot of water to draw on a volume of 200 pages, but sometimes it is useful, and I noticed some practices in various projects.

Game Engine Gems — a series of books on features of games that have already been released, something like a paper podcast of valuable tips, techniques and best practices from experienced developers. The format is short stories from experts in the game development industry. Interesting reading as a retrospective of mistakes and how to do “should” and especially “shouldn’t”. Don’t look at the name, it’s not only about game engines, later the releases became little by little.

The Pyramid of Game Design (Nicholas Lovell) – The book describes a conceptual model of computer game design. The described model should help game developers to connect different aspects of game design, again the model is theoretical, I have not seen practical examples of its use over the years of development. As theory looks pretty good, as practice, I would not give free rein to such ideas in a real project due to their high emotion orientation.

Dev blogs

In addition to books to keep up with what’s happening in the industry, I occasionally look to see what’s new from the people who are moving the industry forward. The first place will of course be GDC and video for the entire duration of the conference, as well as smaller conferences. Next is a list of personal blogs, where interesting articles and analyzes of the game periodically appear.

gdcvault.com
fabiensanglard.net
simonschreibt.de
oddtales.net/blog
blog.thomaspoulet.fr
froyok.fr
adriancourreges.com
elopezr.com
gen-graphics.blogspot.com
astralcode.blogspot.com
morad.in
alain.xyz
cosmonautblog.wordpress.com
cookieplmonster.github.io
factorio.com/blog
ashrein.github.io
mamoniem.com
simoncoenen.com/blog
acko.net
bartwronski.com

Github\Assetstore

Knowledge, articles and developments generally tend to flow to specialized sites. In this regard, asset stores have become a good opportunity to roll out a prototype or MVP to quickly review people’s reactions to this or that idea. What used to be the prerogative of big companies and displayed at GDC as hard-earned experience and know-how is now available in tons of plugins for a dollar or even for free. The downside of this approach was a sharp decline in the quality of solutions, 80% of libraries and plugins are abandoned after a year of development, so you should approach any lib you pull from Github or the store with caution. Even 1k stars does not guarantee that liba and the project will be supported for a long time.

github.com/fffaraz/awesome-cpp – the repo can be useful for everyone who is interested in programming in general and on pros in particular, it is updated quite often. There are many references, for all occasions, but not all projects are alive.

github.com/Caerind/AwesomeCppGameDev – a lot of links to engines and game tools, again not all live. But the sample is large and it is easy to know what is there and what is not, very revealing. Even going through the links and seeing what and how can be implemented is also useful.

github.com/skywind3000/awesome‑gamedev — all kinds of gaming stuff

Instead of conclusions

Nowadays, people treat books with a large share of skepticism, preferring more interactive means of learning, such as video courses or mentoring. Video courses and online tutorials, due to their format, greatly simplify the presentation of information, they can be useful for visualizing complex concepts, but the book gives you the opportunity to think that there is no one else between you and the book. It is better to read books in the original, because translations do not always fully convey the author’s assessment, or are replaced by adapted versions, which does not benefit the translation.

And of course, theory without practice is dead. To learn how to make games, you need them all the time.

The same picture

I didn’t need the information from two-thirds of the books here during the entire development time, but maybe this is just the consequences of the “progressive differentiation” of the industry.

Related posts