Create a Game Engine
#22 Members - Reputation: 160
Posted 25 October 2012 - 01:37 PM
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.
#23 Members - Reputation: 150
Posted 25 October 2012 - 07:33 PM
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 am 14 and made 1 year in game developing..xD
Currently learning c++ to make games with OpenGL and also rigging. :-]
#24 Members - Reputation: 1418
Posted 26 October 2012 - 06:21 AM
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.
Edited by Dave, 26 October 2012 - 06:27 AM.
#25 Members - Reputation: 150
Posted 26 October 2012 - 08:20 AM
I felled that you and some others were discouraging me because they said that not to do it, but thats okI 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.
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.
I am 14 and made 1 year in game developing..xD
Currently learning c++ to make games with OpenGL and also rigging. :-]
#26 Members - Reputation: 375
Posted 26 October 2012 - 08:32 AM
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.
#27 Members - Reputation: 1413
Posted 26 October 2012 - 09:23 PM
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
#28 Members - Reputation: 103
Posted 27 October 2012 - 07:37 AM
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.
#29 Crossbones+ - Reputation: 743
Posted 27 October 2012 - 11:00 AM
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.
"The only thing stopping you from what you want in the future is what you want right now." - Zig Ziglar
#30 Members - Reputation: 160
Posted 27 October 2012 - 08:11 PM
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.
#31 Members - Reputation: 150
Posted 28 October 2012 - 03:05 AM
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
i don't care hw many years it takes for me to complete a game or a game engine, i have already mentioned that i am juz 13 and the main reason for me is to learn things. Can anyone say me the best language to create games
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.
thanks i will buy those books and start leaning it. I have a great story in my mind but i don't have enough programming skills to develop it so i think to spend more years learning and then start with the story
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.
Thanks for your advice but can u suggest me some books.
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.
Can you send me some links, about other books
I am 14 and made 1 year in game developing..xD
Currently learning c++ to make games with OpenGL and also rigging. :-]
#32 Members - Reputation: 703
Posted 28 October 2012 - 07:49 AM
Creating a game engine with little to no programming experience is extremely hard if not impossible. I would suggest fist learning a language like python, java, or maybe c#. You'll see a lot of talk about c++ and how it is used in the great games but don't fall for it. Talking from personal experience, as a beginner you should not start with c++ as you will regret it. If you're really wanting to create an engine I would start with java but learn the basics and slowly progress towards and engine.
The progression route I would take would be: get a book on the language and do any and all exercises, write a text based game, try and write a pong clone, try to write your own basic game (keep in mind it won't be perfect, but you'll learn a lot), and most importantly practice.
That's just my opinion and what I've found to work for most people. I can't recommend any good books, but I would also combine some online tutorials with a book so you can get another perspective on things as well. Don't give up, but be patient and work towards a game engine. Rome wasn't built in a day
#define TRUE FALSE //Happy debugging...
#33 Moderators - Reputation: 13554
Posted 28 October 2012 - 08:33 AM
There is no best language. The best one is the one that you can use -- e.g. some people would say, for example, "Java is crap", but the guy who made Minecraft was comfortable making games with Java, so he made a game using Java and got $200000000... There's no right or wrong choices in general, the answer depends on your personal situation.i don't care hw many years it takes for me to complete a game or a game engine, i have already mentioned that i am juz 13 and the main reason for me is to learn things. Can anyone say me the best language to create games
Right now, the best language for you is one that's easy to learn. Common suggestions for easy to learn languages that you can easily make games with, are Python or C#, but there are also many others.
Eventually, I'd suggest that you learn C++, but I wouldn't recommend you start that until you're comfortable programming in other languages first, because it's a painful language to learn.
An Engine programmer will be proficient in many languages, so there's no need to rush straight to "the right language" immediately. I work as an engine programmer, and I regularly use C#, C++, Lua and batch. To begin with, you can make an engine using one language, but in the long run, you are going to be able to use many of them, so don't rush
Also, keep in mind that talented people almost never build their magnum opus as their first work.
e.g.
* If you want to build space-shuttles, you don't start building one at 13 and work on it for a lifetime -- you start building toy rockets and motorbikes, then go to college, then get a job at NASA.
* If you want to build sky-scrapers, you play with lego, learn to draw, go to college, get a job designing houses, and build bigger and bigger things until you're finally working on giant towers.
Likewise, your first game engine should be very limited in scope. In order to not get carried away trying to make something too large, try and attach it to a particular game. As you take this journey of learning, there'll be points where it will be better to start your next step (mostly) from scratch, rather than trying to continue building atop what you've made so far. The foundations of an engine that you write today in 2012, aren't going to be strong enough to support development of engine code that you want to write in 2022. So, think of some achievable games that you want to make, and design your first engine around the requirements of those games only.
e.g. Before UDK there was the Unreal 3, which was created alongside Gears of War. Before that, there was Unreal 2.5, which was created for UT2004, before that was Unreal 2 for UT2003, before that was Unreal for Unreal.
Likewise, John Carmack made the Doom engine, then threw it out and made the Quake engine, then threw that out for Quake 2, then threw that out for Quake 3, then threw that out for Doom 3, etc...
I guess what I'm trying to say is, don't get caught up planning some project that will take you "I don't care how many years", because by then, you're going to be a much better programmer, and you'll have moved on past your initial code. e.g. John Carmack wouldn't want to use the Doom 1 engine code in Doom 4 -- he's thrown it out and written it again, because he's a different programmer now than he was then. It's great to have a big long-term goal (e.g. be a competent engine programmer), but you need to find the short-term stepping stones to getting there, and keep them in sight (e.g. build a 'Pong' engine, build a 'Mario' engine).
Edited by Hodgman, 28 October 2012 - 08:38 AM.
#34 Crossbones+ - Reputation: 743
Posted 28 October 2012 - 11:35 AM
Algebra II by Mcgraw-Hill
Trigonometry by Mcgraw-Hill
The C Programming Language [OR] a book on C#
[maybe a linear algebra book and/or calculus book, depends on what you do]
Computer Graphics, Principles and Practice (you may not need this, depending on how much you learn off of the web)
Real Time Rendering, 3rd edition
OpenGL Programming Guide
Game Engine Architecture
There are of course many other books on topics like AI, audio, physics, algorithms, and general programming. I wouldn't say you need EVERY SINGLE ONE of these books, as you can supplement your knowledge from papers on the web. But trigonometry is a must and also Algebra II, more so trigonometry. You have to have a firm grounding in computer graphics and definitely mathematics. Save yourself the sanity and failure. Use Unity or UDK.
Edited by MrJoshL, 28 October 2012 - 11:37 AM.
"The only thing stopping you from what you want in the future is what you want right now." - Zig Ziglar
#35 Crossbones+ - Reputation: 743
Posted 28 October 2012 - 11:50 AM
"The only thing stopping you from what you want in the future is what you want right now." - Zig Ziglar
#36 Members - Reputation: 182
Posted 28 October 2012 - 12:03 PM
#37 Crossbones+ - Reputation: 318
Posted 28 October 2012 - 01:12 PM
There is no best language. The best one is the one that you can use -- e.g. some people would say, for example, "Java is crap", but the guy who made Minecraft was comfortable making games with Java, so he made a game using Java and got $200000000... There's no right or wrong choices in general, the answer depends on your personal situation.
i don't care hw many years it takes for me to complete a game or a game engine, i have already mentioned that i am juz 13 and the main reason for me is to learn things. Can anyone say me the best language to create games
Right now, the best language for you is one that's easy to learn. Common suggestions for easy to learn languages that you can easily make games with, are Python or C#, but there are also many others.
Eventually, I'd suggest that you learn C++, but I wouldn't recommend you start that until you're comfortable programming in other languages first, because it's a painful language to learn.
An Engine programmer will be proficient in many languages, so there's no need to rush straight to "the right language" immediately. I work as an engine programmer, and I regularly use C#, C++, Lua and batch. To begin with, you can make an engine using one language, but in the long run, you are going to be able to use many of them, so don't rush
Also, keep in mind that talented people almost never build their magnum opus as their first work.
e.g.
* If you want to build space-shuttles, you don't start building one at 13 and work on it for a lifetime -- you start building toy rockets and motorbikes, then go to college, then get a job at NASA.
* If you want to build sky-scrapers, you play with lego, learn to draw, go to college, get a job designing houses, and build bigger and bigger things until you're finally working on giant towers.
Likewise, your first game engine should be very limited in scope. In order to not get carried away trying to make something too large, try and attach it to a particular game. As you take this journey of learning, there'll be points where it will be better to start your next step (mostly) from scratch, rather than trying to continue building atop what you've made so far. The foundations of an engine that you write today in 2012, aren't going to be strong enough to support development of engine code that you want to write in 2022. So, think of some achievable games that you want to make, and design your first engine around the requirements of those games only.
e.g. Before UDK there was the Unreal 3, which was created alongside Gears of War. Before that, there was Unreal 2.5, which was created for UT2004, before that was Unreal 2 for UT2003, before that was Unreal for Unreal.
Likewise, John Carmack made the Doom engine, then threw it out and made the Quake engine, then threw that out for Quake 2, then threw that out for Quake 3, then threw that out for Doom 3, etc...
I guess what I'm trying to say is, don't get caught up planning some project that will take you "I don't care how many years", because by then, you're going to be a much better programmer, and you'll have moved on past your initial code. e.g. John Carmack wouldn't want to use the Doom 1 engine code in Doom 4 -- he's thrown it out and written it again, because he's a different programmer now than he was then. It's great to have a big long-term goal (e.g. be a competent engine programmer), but you need to find the short-term stepping stones to getting there, and keep them in sight (e.g. build a 'Pong' engine, build a 'Mario' engine).
This is really solid advice. Nice job Hodgman!
I see the future in 1's and 0's
▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬
#39 Members - Reputation: 5828
Posted 29 October 2012 - 06:31 AM
Some of the advice in this thread is just right and some is completely wrong, so take care.
That's a strange comment. Wouldn't it make sense to point out which is which, in your opinion? And while you are at it you could justify your classification.
#40 Members - Reputation: 1413
Posted 29 October 2012 - 07:49 AM
I believe that the reason it seems strange to you is because there is more to the issue than the surface which you see.
The people much more experienced and moderators should handle this delicate situation instead of me, so I am 100% justified to take a "Hey, we've got a problem here," kind of approach. Since you have a reputation of over 3,000, I wonder why you haven't taken care of the loose ends.
Fair criticism I have here. On face value, a legitimate question you had. Now let's see who is experienced and bold enough to point at the wrong advice in detail to correct them.
Clinton






