Create a Game Engine

Started by
46 comments, last by kks21199 11 years, 5 months ago
this post is just an agreement with alvaro.
until you know how to write engines: avoid writing engines, avoid using engines, write games
Advertisement
A game engine is NOT just an Unreal Engine, Havok Vision Engine, Unity, etc. Those are all tools that were built upon an underlying game engine codebase. What you should do is start with the basics of a graphics api such as OpenGL or DirectX. Once you have the basics about working in one of those two graphics API then you will be able to start making a game framework and from there a full on game engine. Game Engine codebases tend to have a few things:

1. A way to render both 2D and 3D GameObjects. (E.g Models, Sprites, Text)
2. A way to get user input (e.g Keyboard, Mouse, Gamepad) (NOTE: the standard Windown API allows for keyboard and mouse input capture quite easily)
3. A way to render audio (e.g FMOD is a solid library for audio)
4. A way to simulate physics within the engine.
4a. For 2D (consider Box2D for a good api to help with 2D collision detection) Otherwise you must
muster up some balls and be able to write the function to manipulate the objects yourself.
4b. For 3D (consider Bullet Physics or Havok Physics APIs to help with 3D object collision and physics
simulation.

Once you have the components listed above working fluidly together you have yourself a full game engine. Now if you were thinking of making
something like Unreal Engine that is a whole other story.

Unreal Engine is a Forms Application that encapsulates what was stated above as well as many many other components (e.g Animation, video production, ai, etc etc)

What you should do is start simple and work your way up. Once you have the basics covered you can start making a full on game engine. Then you can if you are feeling ballsy learn how to encapsulate different aspects of the game engine into a windows form and start creating a simple GameEngine application that allows you to visually build your game rather than hardcode it all in.

Suggested books:

DirectX:

Introduction to 3D Game Programming with DirectX9 or Introduction to 3D Game Programming with DirectX11 by Frank Luna.
Programming 2D Games by Charles Kelly.
Guys, you are discouraging me, but still i want to make one.

A game engine is NOT just an Unreal Engine, Havok Vision Engine, Unity, etc. Those are all tools that were built upon an underlying game engine codebase. What you should do is start with the basics of a graphics api such as OpenGL or DirectX. Once you have the basics about working in one of those two graphics API then you will be able to start making a game framework and from there a full on game engine. Game Engine codebases tend to have a few things:

1. A way to render both 2D and 3D GameObjects. (E.g Models, Sprites, Text)
2. A way to get user input (e.g Keyboard, Mouse, Gamepad) (NOTE: the standard Windown API allows for keyboard and mouse input capture quite easily)
3. A way to render audio (e.g FMOD is a solid library for audio)
4. A way to simulate physics within the engine.
4a. For 2D (consider Box2D for a good api to help with 2D collision detection) Otherwise you must
muster up some balls and be able to write the function to manipulate the objects yourself.
4b. For 3D (consider Bullet Physics or Havok Physics APIs to help with 3D object collision and physics
simulation.

Once you have the components listed above working fluidly together you have yourself a full game engine. Now if you were thinking of making
something like Unreal Engine that is a whole other story.

Unreal Engine is a Forms Application that encapsulates what was stated above as well as many many other components (e.g Animation, video production, ai, etc etc)

What you should do is start simple and work your way up. Once you have the basics covered you can start making a full on game engine. Then you can if you are feeling ballsy learn how to encapsulate different aspects of the game engine into a windows form and start creating a simple GameEngine application that allows you to visually build your game rather than hardcode it all in.

Suggested books:

DirectX:

Introduction to 3D Game Programming with DirectX9 or Introduction to 3D Game Programming with DirectX11 by Frank Luna.
Programming 2D Games by Charles Kelly.



Thanks i can use your help, other than this can anyone mention more.
I had no intention of discouraging you, i actually encourage you to make a game engine. Apologies if it appeared otherwise.

The issue people bring up is how do you write an engine without a game to give you a set of requirements. Well, make up your requirements. Is there something you have seen in a game you'd like to emulate? Such as path finding, deferred shading, deformable terrain, destructable objects, gui ideas. Built up a set of demos, each their own executable, that do something different with your engine. As you develop more of those your engine code will mature, you might start again a few times because you realise you could have done something better.

At no point did i state that the article suggests Unity.

I had no intention of discouraging you, i actually encourage you to make a game engine. Apologies if it appeared otherwise.


I felled that you and some others were discouraging me because they said that not to do it, but thats ok



The issue people bring up is how do you write an engine without a game to give you a set of requirements. Well, make up your requirements. Is there something you have seen in a game you'd like to emulate? Such as path finding, deferred shading, deformable terrain, destructable objects, gui ideas. Built up a set of demos, each their own executable, that do something different with your engine. As you develop more of those your engine code will mature, you might start again a few times because you realise you could have done something better.


I did not want to use any engines,but still i know that it is easier to finish my game in some months with ue3 or ce3. The thing is i don't want to finish a game now. If you want to know one thing i am just 13 years old. I want to learn programming, i don't care if it takes too long to finish because i am still young. the main point is i did not know one thing till i read some others article. The thing is we have to make games by programming, so can anyone of you explain how do we change it to engine when it is completed and also is god of war made by programming without an engine.
It seems like your primary focus on this is to learn. So with that in mind, here is my suggestion. First figure out what you want to learn exactly? whether it is 3d rendering, 3d sound, image loading, networking, etc. I would possibly start with a library like SFML. This will handle some of the details that you may not care about in the beginning. For instance, it can help you create a window on a variety of platforms with a common interface. It also does things such as loading a variety of images and can do audio. The nice thing about it is it is fully open source and free to use for commercial purposes. What you can do is use the library on things you don't want to focus on learning, but then the things you do want to focus on you can not use the library. For instance, I want to write my own 3d rendering engine so I will not be using SFML's 3d graphics library. As you go along and feel like you want to tackle other areas, you can strip out the library from your code. If you try to write everything yourself you will become frustrated with your progress.

The key to any engine making is to have a game that you develop along side of it. This gives you a good testing platform and good usage information. You may find that the interface you thought would be great for a particular functionality is actually not very good. Pick the kind of game you would like to design your engine for such as an FPS, RPG, or RTS. Developing a game alongside your engine will also give your audience a good demo.


Hi,

For someone with no programming experience, creating a game engine will require many things, some mentioned here.  One important requirement is that you make games for a year or years before starting to create a game engine.

There are many types of game engine designs.  Some are about the complexity of a game but others are far more complicated than a game. Some game engines are integreted with a game.  Some games have part of the game engine delivered with the game so the user can make missions, characters, skins (paint jobs on objects), maps, and so forth, as a modder or even professional artist.

I would estimate that the game engine of a typical AAA popular game which had huge sales took years with at least several distinct but connected teams of tech people and artists.  A few indy game developers have had success with being a one person band and created their own game engine for a successful marketed game but this demands years of programming experience.

As you research the making of a game, then you will slowly but surely learn about game engines if you read with a wise choice of sources.

Game creators must outnumber game engine creators by quite a gigantic amount.  1 to 100? It must be more like 1 to 1000 or much more. It would be interest to know...

At any rate, you will need to be very experienced in a language and know much about the development environment with it to accomplish a very successful game engine.

It is doable yet be prepared for the possibility of the equivalent to a Masters or Doctorate amount of research.  A simpler game engine might take a couple years or more at least. There is nothing wrong with aiming that high, but just so you know!


Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

Hey there,

If you truly are motived and determined to make a game engine then I applaud you. As people have already have pointed out this is an enormous task with a lot of different and challenging topics to cover, but there are quite a lot of good resources out there to point you in the right direction. It would honestly take me far too long to type out all the things you need to learn to make a game engine, but I do recommend that you still have a game in mind to develop using the engine that you create.

As for resources I recommend the following:
Game Engine Architecture by Jason Gregory http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/156881413
Game Coding Complete (4th Edition) http://www.amazon.com/Game-Coding-Complete-Fourth-Edition/dp/1133776574/ref=pd_sim_b_1

Read those books very thoroughly and slowly, they do a good job of covering most of the general topics associated with developing a game engine.

There really isn't much else that I can say to help you at this point apart from the face that you're going have to put your head down and work really hard.
My Advice:
If you are very enthusiastic on creating a computer game (especially 3D), and prepared to work hard, be prepared to buy a LOT of books.

C dominates the world of linear procedural computing, which won't advance. The future lies in MASSIVE parallelism.


Hey there,

If you truly are motived and determined to make a game engine then I applaud you. As people have already have pointed out this is an enormous task with a lot of different and challenging topics to cover, but there are quite a lot of good resources out there to point you in the right direction. It would honestly take me far too long to type out all the things you need to learn to make a game engine, but I do recommend that you still have a game in mind to develop using the engine that you create.

As for resources I recommend the following:
Game Engine Architecture by Jason Gregory http://www.amazon.co...ry/dp/156881413
Game Coding Complete (4th Edition) http://www.amazon.co.../ref=pd_sim_b_1

Read those books very thoroughly and slowly, they do a good job of covering most of the general topics associated with developing a game engine.

There really isn't much else that I can say to help you at this point apart from the face that you're going have to put your head down and work really hard.


I would have recommended Game Coding Complete 4th edition however that book requires or rather is better used if you have some skill with DirectX prior to reading it. Using it alongside Frank Luna's book Intro to 3D Game Programming with DirectX9/11 would probably be a better idea.

This topic is closed to new replies.

Advertisement