Programming is required for 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 means that getting started can seem difficult or challenging, especially for beginners. 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 errors 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.
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 not only serve 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 from 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. Animations, text output or shader systems are also part of this
- Input processing frameworks
- A physics engine that performs calculations for 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 is 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 target platform or control, as well as precisely define the game goal and, if necessary, the storyline. It makes sense to think about the order in which individual aspects of the game need to be implemented in advance.
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. One 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 is, as already mentioned, an engine that you don't necessarily need 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.
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.
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 the time being. Recently there are now even courses and many books that deal with game development and design.
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, shouldn't be too complex, but above all 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.
- Who won the Vietnam War with America
- How do conjoined twins marry
- How can you easily distinguish between Spanish dialects
- Is Mohammad bin Salman a good person
- Can IB Diploma Latin be self-taught
- Why is the government lying
- How do football bets work
- Who wants to be a YouTuber
- Why are breasts good
- How do nectarines differ from peaches?
- In which books are there characters with super powers?
- What are the uses for social networks
- How can I improve my general awareness
- Why is embedding important in machine learning
- What is a cat memory span
- Is it worth it to be an academic professor
- How's the parking in Appleton WI
- Why doesn't Kevin Durant play in the center
- What are common bad driving habits
- Help heating pads with Kraempfen
- What language is required to learn Python
- What are the automotive trends in 2019
- What should I study for educational law
- What is the test for RTO