What should I learn before I create my own game engine?

Started by
13 comments, last by Madolite 8 years, 7 months ago

Hello everyone. I'm new to game programming, and I was just curious where I should start out if I want to create my own game engine.

Thank you.

Advertisement


Hello everyone. I'm new to game programming, and I was just curious where I should start out if I want to create my own game engine.

What previous gaming related experience do you have? Ok, you just stated you were new to game programming. Read my next question first.

What scope do you expect for your engine? Is it going to be a "make this kind certain of game, then throw it away" engine (aka = a game), or are you expecting a more general purpose toolset that you can reuse, with editor/toolchains?

If your answer is "I want to make a general purpose engine like unity", then I'll be that person to tell you. No way. Back down, you are in for trouble. Don't make engines, make games. Especially if you are a beginner. Or, at least try to help us understand your motivation. Do you want to make an engine because you are interested in the low level technical things, or do you think it is required to make a game? In latter case, let me tell you, its not, especially for beginner games. The list of recommended beginner games is simple - pong, breakout, pacman, ... you don't need an "engine" for this, you'll start out with a simple design where you have a game loop, and dedicated "Paddle", "Ball", ... classes, without much of a supporting framework - unless you decide to use an already existing engine like Unity which can take much work from you. Again, tell us more about what you really want to do - make games as fast as possible to visualize your game ideas, or learn how to code in game related environments?

I don't necessarily have a of experience to speak from, but I can tell you that you should definitely evaluate what you are trying to do. A lot of game developers often say "Make games, not engines." In game programming, and honestly, in programming in general, some people get caught up in trying to write a codebase that is perfect and is easily to add new things into. Some people get caught up trying to make the perfect engine before even making the simplest of games. If you want to learn how this low-level stuff works, then fine, learn about game engines and how they work. However, if you want to make an actual game, then use a pre-made engine like Unity or use a framework like Monogame or SFML to program your game.

2D or 3D? Any particular type of game or a generic engine?

Do you know any programming languages already?

Do you want to make your own level editor?

Any particular goals or just an engine?

Besides those question I think sound advice would start with

timing

game loop

game state

input

collision detection

spatial subdivision

getting things on the screen

getting things on the screen fast/efficiently

That should get you started.

-potential energy is easily made kinetic-

The simple version is this: learn to make games in another engine first.

You are a beginner. You have no idea what an engine even is or what it needs to do.

That said, if you care about building engines, a good intermediate book to get is Game Engine Architecture (Jason Gregory). I don't think it's going to be easiest or most useful read if you haven't made at least one game on your own first, though.

Sean Middleditch – Game Systems Engineer – Join my team!

In reality... it just depends on why you are making the game engine. If you are trying to make something like Unreal Engine, Unity, or other wise. You might just want to find a different thing to do. A super engine that generic isn't made by one person. And has been outfitted over the years. You can study the source code if you want. But what makes it so complicated is what the engine is supposed to do.

If you are making the engine specific for what you are creating. Then it won't take much. You need to understand basic and advanced calculus. Linear algebra. Trig.

And in software design. You'll need to understand game loops, states, and some patterns.

Engines are tools used by game developers.

IMHO every master craftaman should knoe hoe to make his own tools... But to get to that point you've first got to learn how to use these tools.

How can you build a decent lathe if you've never used one? How would you even know of it is usable when you're done?
Learn to use as many game engines as you can. Learn what you like about them and what's frustrating with them. Learn the patterns that seem to be common among all of them. Find the common solutions and architectures. Be a skilled user of the tool, and then make your own.

If your end aim is to make a game with your new engine, then don't make an engine, make a game...

Engines are tools used by game developers.

IMHO every master craftaman should knoe hoe to make his own tools... But to get to that point you've first got to learn how to use these tools.

How can you build a decent lathe if you've never used one? How would you even know of it is usable when you're done?
Learn to use as many game engines as you can. Learn what you like about them and what's frustrating with them. Learn the patterns that seem to be common among all of them. Find the common solutions and architectures. Be a skilled user of the tool, and then make your own.

My only argument to that, the origional people whom made their tools for their engines, never actually used an engine before.


My only argument to that, the origional people whom made their tools for their engines, never actually used an engine before.
You don't honestly believe those engines are still around today, do you?

@OP: I agree with the others, make games first, with or without engine. Once you understand how a game works (what it needs, etc), you can think about how to supply that to a game programmer with your own engine. Also look at how the other engines supply that functionality.

This topic is closed to new replies.

Advertisement