A game engine is a software framework primarily designed for the development of video games [..]
Using an existing engine or writing a new one is, unfortunately, a hard question depending on many factors.
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:
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 are a few 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 make them.
- Running into driver bugs will eat a lot of time and cause premature balding.
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.