Create a Game Engine

Started by
46 comments, last by kks21199 11 years, 5 months ago



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.


[quote name='Debunez' timestamp='1351390269' post='4994612']

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.
[/quote]

Can you send me some links, about other books
Advertisement
You must learn to crawl before you can walk and you must learn to walk before you can run.

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 wink.png

Fly Safe 7o


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
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.

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 smile.png

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).
Use XNA. It is the easiest route to a 3D game engine. Here are some books I suggest (in this order).
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.

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

By the way. Never, EVER start with C++. I did. I still use C. It is very difficult to think in an OOP manner. C is procedural, a little bit more natural to think about, and OpenCL for a beginner is just mind-boggling (along with being useless for games). Choose C#, as you can use XNA, and can publish your game (and 9 others) on Xbox LIVE and/or Windows Phone for $100. I made an XNA game (sidescrolling adventure) in about a week or two, that being the first time working on a game and programming. XNA even has a step by step video tutorial with it, something I have yet to find anywhere else. The game I made was stupid and AWFULLY BORING, and violated about 15 different trademarks, so I couldn't sell it, but it was still progress. I have embarked now on programming a simple 3D game with OpenGL 2.0 (from 2004) and C, and even that is extremely difficult. If you want to program for a platform that is non-Microsoft, learn C. It is pretty much tied with Java for the most popular language (even though popularity doesn't matter) and is safer than C++. But yet again, you won't get yourself off the ground without some good mathematics.

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

I just published a mobile 2D cutout style animation tool on google play as somewhat of a stepping stone toward creating a game engine that allows you to focus more so on the artistic content of game development rather than the technical. I started with character animation loop development as the first tool in a series of tools. Please checkout my post on gamedev here or here as I don't quite know the properly location for it according to the post http://www.gamedev.net/topic/574344-does-my-post-belong-here/ it seems to indicate it belonged in this room.

[quote name='Sugavanas' timestamp='1351415147' post='4994658']
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
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.

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 smile.png

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).
[/quote]

This is really solid advice. Nice job Hodgman!

"The code you write when you learn a new language is shit.
You either already know that and you are wise, or you don’t realize it for many years and you are an idiot. Either way, your learning code is objectively shit." - L. Spiro

"This is called programming. The art of typing shit into an editor/IDE is not programming, it's basically data entry. The part that makes a programmer a programmer is their problem solving skills." - Serapth

"The 'friend' relationship in c++ is the tightest coupling you can give two objects. Friends can reach out and touch your privates." - frob

Some of the advice in this thread is just right and some is completely wrong, so take care.


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


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.
Hi, alvaro

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

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

This topic is closed to new replies.

Advertisement