Games and Game Engines

In this introductory chapter, I’ll talk a bit about game engines: what they are, and why they’re used. I’ll also discuss a few game engines of historical significance, as well as introduce the high-level capabilities of Unity. If you want to get straight

  • PDF / 1,862,303 Bytes
  • 12 Pages / 439.37 x 666.142 pts Page_size
  • 99 Downloads / 225 Views

DOWNLOAD

REPORT


Games and Game Engines In this introductory chapter, I’ll talk a bit about game engines: what they are, and why they’re used. I’ll also discuss a few game engines of historical significance, as well as introduce the high-level capabilities of Unity. If you want to get straight to making games, feel free to skim or skip this chapter and come back to it later.

Game Engines—What Are They? Game engines are software development tools designed to reduce the cost, complexity, and time-to-market required in the development of video games. These software tools create a layer of abstraction on top of the most common tasks in developing video games. The layers of abstraction are packaged together into tools designed to function as interoperable components that can be replaced outright or extended with additional third party components. Game engines provide tremendous efficiency benefits by reducing the depth of knowledge required to make games. They can be minimal in their prebuilt functionality or full-featured, allowing game developers to focus entirely on writing gameplay code. Game engines offer an incredible advantage over starting from scratch for solo developers or teams who just want to focus on making the best game possible. When building the © Jared Halpern 2019 J. Halpern, Developing 2D Games with Unity, https://doi.org/10.1007/978-1-4842-3772-4_1

1

Chapter 1

Games and Game Engines

sample game in this book, you won’t need to build complex mathematical libraries from the ground up or figure out how to render individual pixels on-screen, because the developers who created Unity have already done that work for you. Well-designed modern game engines do a good job of separating functionality internally. The game play code, which consists of code describing the player and inventory, is kept separate from the code that decompresses an .mp3 file and loads it into memory. Game play code will call on well-defined engine API interfaces to request things like “draw this sprite at this location” and so forth. The component-based architecture of a well-designed game engine allows for extensibility that encourages adoption, because the development team is not locked into a predetermined set of engine capabilities. This extensibility is especially important if the game engine source code is not available as open-source or is prohibitively expensive to license. The Unity game engine is purpose built to allow for third party plug-ins. It even goes so far as to provide an Asset Store containing plug-­ ins, accessible through the Unity Editor. Many game engines allow for cross-platform compilation as well, meaning that your game code is not constrained to a single platform. The engine does this by not making assumptions about the underlying computer architecture and letting the developer specify which platform they’re using. If you wanted to release your game for console, desktop, and mobile, the game engine allows you to flip a few switches to set the build configuration to that platform. There are caveats to the miracles of c