Using an existing engine or writing a new one is, unfortunately, a hard question depending on many factors.
This article is split into two sections, one for using an existing game engine, the other for creating a new game engine from scratch, to help you decide what to do.
Using an existing Game Engine
If you want to make a game and get something playable & distributable within a... reasonable time-frame... using an existing game engine is strongly recommended.
The most commonly used game engines are as follows:
- Unity Engine (C#)
- Unreal Engine (C++, Blueprints)
- Godot Engine (C, C++, C#, VisualScript, GDScript)
TODO: Create one article for each engine.
Creating a new Game Engine
If you wish to learn how game engines works, creating one is a good way of approaching the issue.
After all, everyone has to learn to walk before they can run!
Following is a list of things you must keep in mind and be aware of before you begin:
- You must have the concrete want (motivation) and will (discipline) to do so.
- It is a massive amount of work, potentially spanning over years of your life.
- Having several years of programming experience is a must; nobody will hold your hand in this endeavour.
- All the tooling for asset-, level- and gameplay-creation? You'll have to write all of that too.
- Running into driver bugs will eat a lot of time and make you want to rip your hair out.
The above list might make you question "Why would anyone do this?!", to which most of us will say... because it's fun! :D
A more concrete reason is that, by writing both the high- and low-level code, you can gain a lot of performance (that'd otherwise be left on the table) and the freedom to make some truly awesome things.