I asked this earlier in this thread at stackoverflow.com. One of the early comments redirected me here to gamedev.stackexchange.com, so I'm reposting here.

Searching for related questions I found a number of very specific questions, but I'm afraid the specifics have proved fruitless for me and after 4 hours on Google I'm no closer than I started, so I felt reaching out to a community might be in order.

First, my goal: I've never made a game before, although I've muddled over the possibility several times. I decided to finally sit down and start learning how to code games, use game engines, etc. All so that one day (hopefully soon) I'll be able to make functional (albeit simple) games. I can start adding complexity later, for now I'd be glad to have a keyboard-controlled camera moving in a 3D world with no interaction beyond that.

My background: I've worked in SEVERAL programming languages ranging from PHP to C++ to Java to ASM. I'm not afraid of any challenges that come with learning the new syntax or limitations inherent in a new language. All of my past programming experience, however, has been strictly non-graphical and usually with little or extremely simple interaction during execution. I've created extensive and brilliant algorithms for solving logical and mathematical problems as well as graphing problems. However in every case input was either defined in a file, passed form an HTML form, or typed into the console. Real-time interaction with the user is something with which I have no experience.

My question: Where should I start in trying to make games? Better yet- where should I start in trying to create a keyboard-navigable 3D environment? In searching online I've found several resources linking to game engines, graphics engines, and physics engines. Here's a brief summary of my experiences with a few engines I tried:

Unreal SDK: The tutorial videos assume that you already have in-depth knowledge of 3D modeling, graphics engines, animations, etc. The "Getting Started" page offers no formal explanation of game development but jumps into how Unreal can streamline processes it assumes you're already familiar with. After downloading the SDK and launching it to see if the tools were as intuitive as they claimed, I was greeted with about 60 buttons and a blank void for my 3D modeling. Clicking on "add volume" (to attempt to add a basic cube) I was met with a menu of 30 options. Panicking, I closed the editor.

Crystal Space: The website seemed rather informative, explaining that Crystal Space was just for graphics and the companion software, CEL, provided entity logic for making games. A demo game was provided, which was built using "CELStart", their simple tool for people with no knowledge of game programming. I launched the game to see what I might look forward to creating. It froze several times, the menus were buggy, there were thousands of graphical glitches, enemies didn't respond to damage, and when I closed the game it locked up. Gave up on that engine.

IrrLicht: The tutorial assumes I have Visual Studio 6.0 (I have Visual Studio 2010). Following their instructions I was unable to properly import the library into Visual Studio and unable to call any of the functions that they kept using. Manually copying header files, class files, and DLLs into my project's folder - the project failed to properly compile.

Clearly I'm not off to a good start and I'm going in circles. Can someone point me in the right direction? Should I start by downloading a program like Blender and learning 3D modeling, or should I be learning how to use a graphics engine? Should I look for an all-inclusive game engine, or is it better to try and code my own game logic? If anyone has actually made their own games, I would prefer to hear how they got their start.

Also- taking classes at my school is not an option. Nothing is offered.

• +1 Good programming background looking for specific needs. – Will Marcouiller Mar 4 '11 at 4:03
• +1, this is a well thought out and researched question regarding how to start game development. Also, I feel your pain regarding the Unreal SDK. – James Mar 4 '11 at 16:08
• I recommend checking out Raven67854's tutorials for the UDK. They are listed under videos, people seem to like them. – Jesse Dorsey Mar 4 '11 at 19:56
• My piece of advise is to just start making something. Usually people who asked this kind of questions want to pave their way linearly (because I once ask this same kind of question). However, from my past experience, game development learning curve is a non-linear curve. I usually move from problem to problem --- if I got stuck, then I ask/search for answer. Therefore, just try out stuff, learn from trial and error. Usually I start with the tutorials. However, these tutorials have never give enough details, so I must ask/search/experiment for answers. – user1542 May 18 '12 at 10:22

I have asked such a question when I joined GD. Here are some links that might be of interest to you which I hope will guide you toward your objective.

In short, I would go with XNA Game Studio to get a grip on game development. Then, moving forward to what you wish to achieve as knowledge/technology. XNA taught me about working with sprites, and allowed me to apply some of my knowledge right from the beginning of my learning curve so that I have been able to get a grasp fast enough to understand how I should design my game to use classes while working with dependency injection and so forth. So, I'm keeping you waiting no more.

Why XNA will you ask? Simply because of your Java background. XNA uses C# which is similar to Java on some multiple ways, and is also a simple framework to use which abstracts away the Game Loop and stuff so that you may concentrate on what is important.

I really do hope this will get you starting. =)

• Sorry for the delayed response =) I was reading each of the posts you redirected me to (Also, one of the posts linked to an MSDN page on making 3D games with XNA, which interested me since the XNA game engine page originally looked like it was strictly for 2D games). I definitely think this is a good starting point. Thank you. I'm going to download XNA tonight and go to bed, then hopefully tomorrow I can try to make Pong or something. – stevendesu Mar 4 '11 at 4:33
• @Steven: No problem! I posted this answer for the sake of helping an enthusiast developer just like me who asked for guidance! I really hope you'll enjoy doing it! My first and still challenge is to develop a simple Arkanoid-like game where I have to work my way for collision detection while having written my classes one for each the space craft, the energy ball and the brick. Then, my Game1 class is used as a game controller, which in my opinion is the class that shall control and tell the other classes what to do, etc. I explain a little this aspect the link #4 and #5. – Will Marcouiller Mar 4 '11 at 4:44
• I may be asking another question very soon (tomorrow) x.x Downloaded XNA Game Studio 4.0, installed it.... And there were no obvious instructions for what to do next. The entire official XNA website just says "make games for Windows Phone 7" all over it - nothing about making games for Windows. I'll figure it out in the morning or ask here if I can't. Bed time =) – stevendesu Mar 4 '11 at 4:47
• Create a new project using Visual Studio, then, choose XNA somewhere you can choose the project type. Then, start making games for windows! Your XNA game project template (new project) will compile and run on Windows natively. XNA is the Microsoft library for game development, as such, you may develop games for Windows and XBox. – Will Marcouiller Mar 4 '11 at 5:06
• For the sake of the future, it's worth pointing out that XNA is essentially deprecated, but Monogame lives on. For the most part, the same code will work. – Magus Feb 27 '14 at 22:23

You might try Unity 3D, because

• it can be programmed in JavaScript, C# or Boo
• it has a good tutorial over here
• its learning curve is not as steep
• there is Unity Answers, where you find even more resources.

(Disclaimer: I'm in no way related to the makers of Unity, I just use it myself and found it a great tool to learn the basics).

But yeah – you set yourself up to quite some task. I'm now in my 6th semester studying game design, and I still don't feel like I scratched more than the surface. It's no wonder the industry has specialists for pretty much every facet of the process of creating a game.

Edit: There has been a comment about Unity being seen as not a "proper" game engine, that could be misunderstood as me saying that – therefore spawning the comments below. It was not my intention to suggest that Unity could not be used to do proper game design, on the contrary. I use it myself, and I like it. ;)

• Whats improper about it? – lathomas64 Mar 4 '11 at 13:16
• I'm curious as well. – Jesse Dorsey Mar 4 '11 at 14:33
• Maybe the fact that (like Flash or Java) it requires a container program to run, so he considers it "improper" in that it can't just be compiled and distributed to massive audience with no hassle? Either way, I'm looking into XNA right now. I may check out Unity3D if XNA proves too difficult. – stevendesu Mar 4 '11 at 15:03
• Well, I heard people saying that for "proper" game design, Unity is not to be taken seriously. As said before – I'm using it myself, and I'm pretty happy with it. In some cases, Unity just makes things suspiciously easy, I guess … ;) I was merely hedging, because I didn't know how people would react here to mentioning Unity. Maybe that caused the downvote? – xeophin Mar 4 '11 at 15:05
• @steven_desu: Actually, you only need a container program for the webplayer. Games compiled to run on Windows or Mac are entirely self-contained. – xeophin Mar 4 '11 at 15:08

Well if you had problems with irrlicht, you should also try Ogre3D; it's not easier, but it may work better if you put some time into it. The important thing you have to understand are what is a framelistener, how to get the time since the last frame was displayed, and that's pretty much the only thing you have to understand if you want to make this application you are talking about.

I've also had some difficulties with irrlicht, the tutorials are not very up to date, but you should have tried the samples !

I also ran a lot in circles at the begining, toying with panda3d and other stuff like pygame etc. Try to focus on some game idea and implement one thing at a time.

And try to remember some matric math, it will have some use in 3D !

I've recently started the same pursuit as you. I ran into a pure java engine called jMonkeyEngine which has led me through a fantastic set of tutorials. I don't know if it really explains game design to a massive extent but it does get you started on the graphical front.

It suggests/links to tools you might use for modeling and has copy and paste-able, well-described examples to step you through putting a box on the screen to setting up the physics engine.

Definitely worth a read - I had a good idea of what I was doing after only several hours.

• The tutorials are worth a read even if you aren't using the engine. There are also nice tutorials on some 3D maths. – DMan Sep 8 '11 at 22:49

You should really try Flixel http://flixel.org/ I Made my first "demo" game using flixel. Nice community, nice tutorials.

It's not 3D but it does have many nice features that make your first steps into the game programming environment easy.

Such that: Display thousands of moving objects
Basic collisions between objects
Group objects together for simplicity
Easily generate and emit particles
Create game levels using tilemaps
Text display, save games, scrolling
Mouse & keyboard input
Math & color utilities

And it's free for commercial use, which is awesome.

If you haven't worked with graphics at all.before just learning open gl or direct x is a start. I programmed my first game that way. Our company engines are in house and most systems support open gl in some form. I learned while on the job looking through the code written before I started working. You might want to take a look at some open source projects to see how a game structure is set up and start modifying those until you feel comfortable about starting your own thing. I also suggest "Game coding complete" as a great reference to all the little bits of game programming you don't realize are there, like proper file structure and resource management.

Try Source Engine. It is easy to develop games on it and you can get distribution platform (Steam) and sell your game for free if you sign an agreement with Valve Corportaion.

I would recommend starting with flash games, since you really have everything you need in one package to make simple games. There are tons of blogs with walkthroughs, Emanuele Feronato's for example. He even has a book out with 10 complete games or so.

I've been using FlashDevelop, which is sufficient for development.

Chris Moeller's "Creating a Asteroids Flash Game" is an excellent case in point, with a complete step by step approach using flash develop.

For Tile-based games, there's an excellent tutorial at Ironcoding.

Armed with all that, my recommendation is to find some place where there is a video game challenge, with a community of people building games. Build one video game a month, focusing on something small you can finish, polish and present before going onto your next project. I'm participating in a monthly video game challenge here.

Keep it small so you can finish it and release it.