How does the game development process work?

Game development

Many people learn programming with the aim of developing their own computer game or even making game development their profession. Programming a game makes it possible to live out your own creativity, develop worlds or tell a story. To do this, however, you have to know how a game works, how to design graphics and how to program a game. This can make getting started, especially for programming beginners, difficult or challenging. In this article we want to clarify how exactly game development works for both small and large games and then go into some ways to develop your own game.

How are games developed?

Game development includes many aspects such as game design and conception, the creation of graphics, programming the course of the game and especially for games that are to be published, of course also testing, marketing and publication. The phases of developing a specific game typically consist of planning, development or implementation and testing.

In the planning phase, a so-called game design document is created. Game design refers to the theoretical conception of the game world and rules, also taking into account the target group and marketing aspects. In addition to the results of this conception, the game design document mostly contains prototypes with which a basic impression of the subsequent gameplay can be obtained. A good and well-thought-out design document is necessary in order to identify and correct mistakes in the game logic at an early stage - because later, when programming has already started, mistakes can become costly.

The planning should also deal with technical aspects such as the target platform, the controls or whether a multiplayer mode is planned. This information is relevant to the cost estimate, schedule and actual implementation. If the game is to have different levels, a level design is also required.

After planning the game, the implementation takes place, which usually takes up most of the time. Whether the implementation follows a waterfall model or the agile method differs from project to project. Agile methods with an iterative approach have become more and more popular in software development in recent years. The implementation includes the creation of 3D models, sound effects, animations, etc. and of course the programming of the game process.

Individual components are tested with unit tests during programming. But automatic integration and system tests should also have their place in every software project. Before the game can be put on the market, black box tests are usually carried out. The game is tested in its entirety by developers or specially paid testers without prior knowledge of the individual components. The software is therefore a "black box" whose inner workings are not known.

If the game passes these tests, alpha and beta tests can follow. The game is played by real players who can give feedback to the manufacturer. The alpha and beta phase of a game can be either closed (by invitation only) or open (accessible to everyone). They serve not only to detect program errors, but also problems in balancing or usability.

How does a game work?

Conception, implementation, testing and publication are the phases of game development. But how exactly does a game work itself?

At the lowest level of a game are drivers that enable access to the hardware and hardware-related APIs (German interfaces) such as DirectX or OpenGL. These are made by a so-called game engine or Game engine used. A game engine is a framework or a kind of basic structure that takes on the most important tasks and consists of different parts. This includes:

  • A graphics engine that takes over the rendering of the game or the graphic representation. It has functions with which textures, 3D models and sprites (images for special effects) can be loaded, managed and displayed. This also includes animations, text output or shader systems
  • Input processing frameworks
  • A physics engine that performs calculations on physical behavior. Many games have high demands on the realistic behavior of objects. Since the exact calculation can be very resource-intensive, efficiency takes precedence over accuracy
  • A sound engine
  • Frameworks for connection to the network
  • The provision of the game loop (what exactly that is, we'll clarify in a moment)

Game engines are therefore the heart of every computer game. They have the advantage that the developer does not have to write his own code for generic aspects of game development, such as loading graphics or processing input, but can rely on the framework. Therefore, he can concentrate on implementing the game-specific code. Game engines are not game-specific, but can be used more or less universally.

In addition to this programming, graphics must also be modeled for a game. For 3D models, wire frame models or models based on polygons can be used. In addition, 2D images, so-called textures, are developed, which then refine the surface.

What is the game loop?

We have just come across the term game loop. Every computer game goes through the steps of input, processing and output over and over again. This EVA principle is one of the basic principles of data processing. In the first step, the user makes an input, for example a mouse control or a key click. Information that comes from other players via the Internet must also be taken into account as input. The input data are then processed by executing the rules of the game, moving players or calculating animations. The results are then given as output to the user.

In a simple puzzle or quiz game, processing and output only have to happen after one input and are not computationally intensive. In an animated game, on the other hand, this process should run at least 24 times per second so that the game runs smoothly - without the process being triggered by a user input, as is the case with the EVA principle. This process is called a game loop, since it is continuously run through in a loop.

Develop your own game

Now that the basics of how a game works and is developed are clear, the question arises how you can develop your own game. Although game programming consists of many individual parts, these three main points are relevant:

  • The game idea
  • Choosing a programming language
  • Choosing a game engine

The game idea and concept

In particular, the first game you develop shouldn't be too complex. How complex the development will be depends first of all on the genre. For example, a quiz or 2D puzzle is much easier to implement than a 3D game that requires animation and physics. The platform for which the game is intended is also relevant: requirements for a mobile game are different from those for a console or computer. Various variants such as arrow keys and keyboard, mouse, joystick, gamepad or even steering wheels are available for control. These also have an effect on the complexity of the development.

For a commercial computer gamer, several programmers write several million lines of source code - a huge task that requires a lot of planning. And also, if it is possible for an individual to write an indie game or a commercial app, the first project should be more of a small game with 2D graphics with the main goal of gaining experience. A project that is too large or complex can quickly lead to frustration.

When a game idea has been found, one should first deal with the conception and answer the questions just described about the target platform or control, as well as precisely define the game goal and, if necessary, the storyline. It makes sense to think in advance about the order in which individual aspects of the game need to be implemented.

The selection of the programming language

In addition to the game concept, the selection of the programming language is also important. The decision has an impact on which game engine can be used and how complex the programming will be. The following languages ​​play a role in game programming:

  • Assembler, as a fast and hardware-related language. A disadvantage of assembler is the slow development, comparatively few tools and the complexity for beginners. Although language used to be very important, it is no longer widely used in game development.
  • C is a well-known language with numerous tools, but no built-in object orientation.
  • C ++ is a very complex, but efficient and also hardware-oriented language with object orientation. A disadvantage is that the language lacks built-in garbage collection and no protection against memory leaks. It is supported by some game engines.
  • C # is an object-oriented language that is relatively well known and easy to use, but it uses a lot of memory. It is also supported by many game engines.
  • Java is an object-oriented language that is portable and one of the most important languages ​​for Android game development.
  • Script languages ​​such as Python or Lua are often only used for scripting the gameplay but not for the source code of the game itself.
  • Shader languages ​​such as Cg, HLSL, GLSL are also not used for the main code, but are indispensable for developing 3D games.

Selection of the game engine

Not every game engine requires that you can actually program. Some engines like GameMaker have their own language to get started without programming knowledge. For more complex games and more powerful engines, however, you will not be able to avoid learning a programming language. Even if some engines support multiple languages, there is usually a main language that should be used for development. We want to briefly introduce three engines that are suitable for beginners and private individuals.

GameMaker

GameMaker is, as already mentioned, an engine that you don't necessarily have to be able to program for. The engine has a clearly structured user interface, which enables events and actions to be assigned using drag and drop, for example. In addition, it supports its own scripting language, the Game Maker Language, for developing a game. The engine is good for beginners and jump'n'run or puzzle games, but does not support 3D games.

Unreal Engine

The Unreal Engine is a game engine for developing 3D games. It consists of a graphics engine, the script language UnrealScript and utilities like a level editor. she has a Blueprint Function with which the course of the game can be modeled as a virtual graph. Since the Unreal Engine otherwise only supports the C ++ language and has a very large range of functions, it is not necessarily suitable for beginners, but it is a very powerful tool for experienced developers. The Unreal Engine has been free of charge for private individuals and projects with a turnover of up to € 3,000 since 2015.

Unity engine

The Unity Engine is also suitable for 3D games and also for almost any target platform and is considered to be very beginner-friendly. It supports the programming languages ​​JavaScript and C #. In particular, C # is of interest to programmers as a widespread, object-oriented programming language. The Unity Engine is free for private individuals.

C # programming for beginners13.90 € AvailableAdd to cart

Tutorials, literature and courses of study

If you are still unsure whether you can develop your own game, you will find many free tutorials on the Internet to implement your own little game from start to finish with various engines. The advantage of such a tutorial is that you learn different concepts and how to use a game engine using a practical example and then transfer what you have learned into your own project. A separate concept is not necessary for this at first. Recently there are now even courses and many books that deal with game development and design.

Conclusion

Game programming is a great way to express your creativity and implement your own ideas. At the same time, it helps to improve one's own programming skills and can even become a profession.

Basically, before you start programming, you should design the game principle and idea, the controls, the target platform and the course of the game and create a schedule. The first game in particular should not be too complex, but rather aim to gain experience.

A programming language and a game engine must also be selected for the implementation. The game engine is the central component of every game and provides a framework for loading and displaying graphics, processing inputs and executing the game loop, among other things. This means that the programmer no longer has to deal with the setup of the game, but can concentrate on the game-specific code. Many games also require graphics or sounds to be implemented.

For beginners in particular, it can be useful to first do a tutorial for a game engine in order to get to know the most important concepts and then to apply them to their own game.