Introduction:
Game development lives in its own technical world. It has its own idioms, skills, and challenges. That’s one of the reasons games are so much fun to work on. Each game has its own rules, its own aesthetic, its own trade-offs, and the hardware it will run on keeps changing. There’s a reasonably good chance you will be the first person to meet and beat a new programming challenge.
Despite numerous efforts to standardize game development, in line with the rest of the software industry (efforts that go back at least 25 years), the style of programming in a game is still rather unique. There is a focus on speed, but it differs from real-time programming for embedded or control applications. There is a focus on clever algorithms, but it doesn’t share the same rigor as database server engineering. It draws techniques from a huge range of different sources, but almost without exception modifies them beyond resemblance. And, to add an extra layer of intrigue, developers make their modifications in different ways, often under extreme time pressure, and tailored entirely to the game at hand, leaving algorithms unrecognizable from studio to studio or project to project.