What else should a game programmer read? / Hebrew
This is a continuation of the article with interesting, as it seems to me, materials that were collected while working in game companies, and which in one way or another influenced me. A game programmer, like any other programmer, has to read quite a lot of various literature, game and game-related articles, watch conference recordings. Consequently, a list of articles and videos with different technical orientations was released, many of which were published in a thread on Khabra. The 20s seemed to be particularly fruitful, when it was not always possible to leave the apartment, then probably collecting various articles turned into a small hobby.
But, as rightly written in the comments to the previous article, one should not forget classical literature, so this time I will put Gogol’s “Dead Souls” in first place. The work tells the story of a young and ambitious man who comes to a provincial town with an unusual offer: he is going to buy “dead souls” – peasants who have died or are leaving, but have not yet been “deregistered” in order to re-register as their owner and receive them loans and privileges.
For two hundred years, the novel is rightfully considered a heritage of world literature. The work is clever and ingenious, because the idea presented is not difficult to implement. I think, with some adjustments, it will be relevant in 10 and 20 years, remaining as if out of time. Rereading the novel, probably already in the third, unfortunately, I realize that I see from my own experience how Chichikov’s ideas still live.
So, let’s continue!
joelonsoftware.com – If anyone doesn’t know, Joel Spolsky was one of the creators of Stack Overflow, probably the most popular Q&A resource for programmers. The site provides an opportunity for programmers to share knowledge, solve problems and discuss topics related to programming. And of course his book “Joel on Software”, a collection of the most interesting articles from the blog with practical advice on software development and project management.
Blood, Sweat, and Pixels: The Triumphant, Turbulent Stories Behind How Video Games Are Made (Blood, Sweat and Pixels: How to Make Games) is a book written by Jason Schreier and published in 2017 about how video games are made. About the difficulties faced by developers in the process of creation. The topics raised in the book are not only about successful success, but also about failures, conflicts, small budgets, difficulties (not only technical ones) faced by studios and indigeros. Projects from the book are iconic “The Witcher 3: Wild Hunt”, “Destiny”, “Uncharted 4: Path of the Thief”, “Stardew Valley” and many more. In general, I liked the book, probably due to the fact that I had to face the events described personally, but the author omits a lot and does not tell or does not tell completely. What cannot be taken away is the ease of presentation and the emphasis on the human aspects of development. It reads like a good novel about difficult decisions and situations, persistent overcoming of problems. Happy End included.
https://kotaku.com/the-exceptional-beauty-of-doom-3s-source-code-5975610 Origins of the third Doom as an example of a high-quality and easy-to-understand large code base. When I read Sources of Third Thought, I was always surprised at the very small number of comments, but the most interesting thing is that it did not make the code any less understandable. It was always annoying when the name of a method failed to tell what it was doing. It’s like taking a pencil with a red lead and drawing it green. If a method does too much to describe in a condemnation, then you should reduce the amount of code inside the method – this is probably one of the best rules I took away from these sources. I wouldn’t say that the doom turned my world upside down, but the comments in the code were reduced, and the functions were shorter – that’s for sure.
MISRA C++
It is a set of standards and recommendations for the development of safe and reliable software on the plus side. The goal of MISRA C++ was to improve the quality of software, improve its security and reliability through a set of rules that help avoid common errors and problems. During my work on hydroacoustics software, this was the main development guide, how do you like, for example, the lack of a free operator new/delete in the program? If the program can allocate memory only at the start, or cannot allocate, but only uses the allocated volume, then the approach to design and development becomes radically different. A lot of practices and rules can be applied in the playground, it definitely doesn’t get worse.
https://technology.riotgames.com/news/profiling-measurement-and-analysis
“Profiling, Measurement and Analysis” on the Riot Games website, from the masters of multiplayer and creators of League of Legends In this article, two meters will walk you through the basics of profiling and some examples of code on the pros. The article is from 2018, but for the start of learning the methods and principles of profiling, it is exactly that.
EASTL
https://github.com/electronicarts/EASTL
One of the three alternatives to the standard library that most game developers (with a creak) accept as more or less working and common. Appeared back when the 98/03 standard was in the proposals, and Folly was not even close. It is being developed even now, individual solutions are not averse to dragging it to the standard. Don’t know what to do on the weekend? Check these guys out in the repo, lots of fun stuff. This is how the EASTL sourcebook begins with this introduction.
Gaming platforms and game design impose certain requirements on game software that differ from other platforms. First of all, game software requires large amounts of memory, but has a limited amount to work with. In addition, game software faces other limitations, such as weak CPU caches, less powerful CPUs, and non-default memory alignment requirements. As a result, game software must be careful with memory and CPU.
The C++ Standard Library’s containers, iterators, and algorithms are potentially useful for a variety of game programming needs. However, the shortcomings and omissions of the standard library prevent it from being an ideal choice for high-performance software. First of all, among these shortcomings, the model of allocators should be noted.
An Extended and Partially Reworked Replacement (EASTL) for the C++ Standard Library was implemented by Electronic Arts to address these shortcomings in portability and read in the form
level-design.ru
Mykhailo Kadikov’s blog about games, interesting articles with analysis of various mechanics in games, written in simple and understandable language. I don’t know which way this site got into, the first articles did not impress at all, perhaps because of the author’s desire to greatly simplify concepts and explain obvious things three times. But with each new article they become better and more interesting.
blog.joelburgess.com
Joel Burgess is a veteran developer who worked on projects such as The Elder Scrolls V: Skyrim and Fallout 3/4. Lots of material with thoughts on game design and its evolution, game programming and development. And based on his articles and speeches at GDC, you can make a separate book on game development (in fact, only one game, of course, Fallout 3), there are so many interesting moments and tips.
spiiin.github.io
I recently met Sashko Boyk @spiiin, I regret that I did not find his site earlier. Lots of useful and interesting information. As it turned out, we worked together for some time at Gaijin, but we did not cross paths on projects. And he also made a cool level editor for games under Dandy and not only. CadEditor – Level editor for many games for different platforms (NES, Sega Mega Drive, GBA), lies here.
“For the Win” by Kevin Werbach and Dan Hunter
One of the best books on gamification and applying design principles and techniques outside of the world of game development. The authors tell how game elements can be broken down into components and used in different fields. Many valuable ideas such as game elements and game mechanics can be used to motivate, engage users and gain feedback in education, marketing and in general any field that is tied to the human mind. In general, it is very funny to notice when you are being played.
Can a scripting language run faster than the pros?
Lecture by Anton Yudintsev (Gaijin) on daScript, a scripting language – which is faster than C++. Do not believe? Why I believe is a separate question – was it possible to dig the Dagor/War Thunder engine and tools from the inside, and transfer them to NxSwitch and AppleTV. It was very, very difficult to stuff a tundra engine into an iPhone 6, which was actually an AppleTV 4Gen, and make it work.
“The Art of Game Design” by Jesse Schell – good material for those who want to get acquainted with the principles of game design at a basic level and understand what it is all about. It will help to understand at your fingertips what aspects and mechanics of games can cause emotions and impressions in players. How to understand the needs and interests of players, how to use different level design elements, objects and even build phrases to achieve the desired emotional response. For experienced designers, it is unlikely that there will be anything interesting, and it is quite difficult to get lost in the practices developed over time.
https://www.youtube.com/playlist?list=PLokhY9fbx05eq8SvcNOxYRquYMzMjF9Ok
The list of analyzes of AI in various games is constantly updated, for 9 years there have been almost eight dozen releases on the implementation of AI in well-known games, from FEAR to Spider.
More links:
A collection of useful tips for optimizing C++ code, it is better to use it as a reference than to read everything in a row.
In simple language, about why you need to care about cachelocality in the code, or how to push the perf 27 times while traversing the array.
The story of Vitaly Borodovskyi (WoT) how to design top mmo projects.
An excellent article by Nicolas Kraj on the secrets of game designers to make you believe in the game more.
Playrix’s blog has been empty for 22 years, but the value of the articles has not decreased. A series of articles about their own VSO engine was particularly good
A very interesting report about Naughty Dog on fibers and implementation in their engine, I consider it an ideal implementation for a curling iron.
That’s all, I hope, it was interesting and useful!