Written by Alex Vypirailenko
Medium Twitter LinkedIn
Got an idea of a game and want to create it yourself? Don’t know where to start?
If you have any experience in programming, you probably know that there are more sides to consider when developing games. Physics, animation, rendering – the stuff that doesn’t usually come up when building, say, an e-commerce platform.
And if you’re a newbie developer, well, there’s still a lot to learn about game development that’s specific to the industry. But on the bright side, you have a clear purpose for learning to code. So let’s see what you need to know to get started on creating games.
What Goes into Game Development: Key Components
Game development refers to the whole process of creating games. It involves more than just programming, but each of its components affects the code.
You can create a game individually or in a very small team, in which case it will be referred to as an indie game. Or you can find your way into a big company. Whether on your own or within a team, the following components are essential to games:
- Story – a game can have a linear or non-linear structure. In the case of the latter, the game plot will change depending on the actions that a player makes.
- Characters – the entities that players use to act out the plot. Characters have a physical appearance, abilities, and personality.
- Audio – all the sounds in a game, including the background music, characters voiceover, and any sounds triggered by actions like unsheathing a sword.
- Art – all the visual elements like texture, colors, or representation of natural phenomena.
- Lighting – another visual element that sets the mood with warm, cold, neutral, muted, or bright tones.
- Levels – the gameplay element that can be achieved through different floors, buildings, countries, or other locations that pose varied or increasing difficulty.
How do you form a game out of all these components? You need a toolset.
Choosing Software to Get Started in Game Development
Games involve a lot of audio-visual elements. But along with the graphics tools, you also need a game development environment to make these elements come to life. So here are the key software tools you need, with some examples:
- Game Engine
- jMonkeyEngine – written in Java and used specifically for 3D development.
- Unity – a 2D and 3D cross-platform engine popular for creating mobile games.
- Phaser – a 2D framework for web games.
- Art Program
- Adobe Photoshop – one of the world’s most popular graphics editing tools.
- Pixelmator – a graphics editor for Mac.
- GIMP – a cross-platform and open-source image editor for raster graphics.
- 3D Modeller
- Cinema 4D – a 3D suite for motion design and animation.
- ZBrush – a sculpting tool for creating characters.
- Blender – an open-source tool for 3D and visual effects.
- Audio tools
- Audacity – an open-source audio editor.
- FMOD – an engine for creating sound effects.
- Fabric – audio components in Unity.
What Should You Learn to Get into Coding Games?
Each game engine has a corresponding programming language. Let’s overview the ones that suit the engines we mentioned earlier.
Java for jMonkeyEngine
Java is a versatile object-oriented language that is commonly used for creating 2D games. But when used with jMonkeyEngine, you can develop stunning 3D worlds.
- Easy to learn – Java is beginner-friendly, and there are numerous courses for learning it. One of the best is CodeGym.cc platform that offers an opportunity to create your own version of the classic game while learning (for instance, Hungry Snake, 2048, Moon Lander, etc) and even share it with your friends.
- Suitable for cross-platform development – the code runs on the Java Virtual Machine which ensures interoperability of your games on different platforms.
- Native to Android – in fact, the OS was written in Java, so you shouldn’t have any problems adapting games to mobile.
- Deep community support – you can easily find help from peers and more experienced game developers.
- Open-source library support – even though Java is commercial, you can find an abundance of open-source resources.
- High demand for specialists – having mastered Java, finding a job will be simple.
- Java is quite verbose, meaning that some of your constructions might be hard to read.
C++ for Unity
C++ — an extension of the C language — is a general-purpose language that also supports the object-oriented paradigm. It’s one of the most popular languages used with Unity.
- Fast execution of programs – through C++ code is harder to write than Java due to complex syntax, its processing is done at compilation which helps reduce the runtime.
- A good foundation for learning other languages – if you master C++, it’s going to be much easier to study more languages.
- Portability – C++ is platform-independent meaning you can run the same app on different platforms.
- The language has a complex syntax that makes it hard to master it and write good code.
- C++ doesn’t offer garbage collection because memory management is done on the user’s side. Thus, there’s no automatic filtering of garbage data.
- Web game development – it is used for creating an in-browser gaming experience.
- Lightweight – JS is generally less resource-intensive for game development.
- If you want to create a 3D game, you’ll need an engine that offers such graphics.
Creating a Game Prototype
Whatever career path you choose, the best practice is always your own small project that will help you develop skills. It’s also a nice addition to your portfolio.
Game development starts with building an MVP (minimum viable product) – the core mechanics of the future game.
Once you get your characters moving (turning, jumping, etc.) without a hitch, the art and sounds can be layered. You can create these assets yourself or find suitable ready-made ones on sites like itch.io or OpenGameArt.
And once your game looks like a real one, it’s time to implement a game loop – the elements that make you want to keep playing, such as winning, losing, and starting all over.
Coders in different industries and with different levels of experience can feel that way. If you do, here are a few options for finding a way out:
- Ask for help from the community on websites like GitHub, StackOverflow, and Reddit.
- Try to look at the problem from another angle or look for a way around the problem.
Game development can be a challenging, yet very rewarding experience. Think about the game that you’ll be able to play at the end of your project. If that’s not motivating, then what is?
So, choose a language and an engine, and start coding. You’ll be able to layer art, sounds, and other features as you progress.