Sie sind auf Seite 1von 27

Archive Contact Log in

GameFromScratch is now on Twitter. Click me to Follow


New to Game Dev? Start Here!
Game Dev for Kids
C++ Game Tutorial Series
Blender Game Art Tutorial
LibGDX Tutorial Series
Phaser/Typescript Tutorial Series
PlayStation SDK Tutorial Series
Cocos2D HTML5 Tutorial Series
Moai Tutorial Series
Gamedev Math Tutorials
Unity 3D book round-up
SpriteKit with Swift Tutorial Series
HTML5 Game Dev Links
Product Reviews
Category list
Art (95)
Cool Thing of the Week (9)
Design (24)
General (89)
News (168)
Programming (238)
Totally Off Topic (43)
Tag cloud
2D 3D Android Applications Blender
Book Books C# Cocos2D CPP
CryEngine Design Engine GameFromScratch
GIMP Haxe HTML HTML5 iOS Java
JavaScript LibGDX LUA Mac Moai
News Node Phaser Pipeline PlayN
PlayStation Mobile Programming Project Anarchy
PSSDK Rant Review SFML Tips
4. August 2011 186 Comments
<< Unity 3.4 has been released | Adventures in C++ >>
Home > Programming
I want to be a game developer... now what?

With people looking to get into game development the same questions come up over and over, so Ive opted to put my thoughts on the subject in one place and
to compile a list of resources for new developers.

Those questions?
I want to learn game programming, what language should I use?
Should I use an engine, or create my own?
What library/tools should I use"?
Now what?

I will try to address all of these questions and more in the following post.

For those of you that like skipping ahead to the last page in a novel, these links are for you!
Jump ahead to C++ section
Jump ahead to C# section
Jump ahead to Java section
Jump ahead to Python section ( and mild disappointment )


the C++ question.

Let me get the 800lb gorilla out of the way first of all. C++. This is one of the most controversial and repetitious questions of all. New developers hear from other
developers that C++ is what the pros use and therefore want to use that. To make matters even worse, people answering the questions are often new
developers as well and will recommend what they know thus pushing people to use a language they probably shouldnt. Frankly, if you have only ever used a
single language, you really shouldnt be answering these kinds of questions!

Alright, back to the whole C++ question. Should you start learning with C++? NO. See, no maybe, no wishy washy answer or caveats, its simple, C++ is an epically
stupid language to start with. Its about the same as starting to learn math by starting with advanced calculus. Again, dumb. If you are going to listen to a single
piece of advice I give, its DO NOT START WITH C++. I know, of course, that you are going to completely disregard this advice and start with C++, but in 3 or 4
Programming Tutorials Art Tutorials Books & Reviews Links & Guides New Developer? Start here
Tools Tutorial TypeScript UDK
Unity Wings3D YUI
RecentPosts
Syntax highlighting the code in your clipboard
A closer look at the Urho3D Game Engine
Guide to Creating a Game on an iPadMeet Codea
GameFromScratch.com's Guide to Creating a Game
on an iPad -- An Upcoming Series
Guest Tutorial: Creating a Game Using MightyEditor
and Phaser
Cocos2d-x Tutorial Series: Game Loop, Updates and
Action Handling
Cocos2d-x Tutorial Series: Handling the Keyboard
Xcode 6.1 upgrade killed my ability to sign iOS apps.
And how I fixed it
Adventures in Phaser with TypeScriptGrouping
Cocos2d-x Tutorial Series: Handling Touch and Mouse
Input
Cocos2d-x Tutorial Series: Basic Sprites, Positioning,
Parenting and Coordinate Systems
CopperCube no programming required 3D Engine
Version 5 released
Month List
October 2014 (12)
September 2014 (17)
August 2014 (8)
July 2014 (16)
June 2014 (19)
May 2014 (14)
April 2014 (15)
March 2014 (19)
February 2014 (14)
January 2014 (15)
December 2013 (10)
November 2013 (9)
October 2013 (12)
September 2013 (21)
August 2013 (17)
July 2013 (15)
June 2013 (18)
May 2013 (13)
April 2013 (21)
March 2013 (16)
February 2013 (14)
January 2013 (15)
December 2012 (16)
November 2012 (21)
October 2012 (23)
years when youve got the scars and trauma from ignoring my advice, Im going to smugly *tisk tisk* and give you my best I told you so!. I will offer another
piece of advice while I am at it anyone that recommends you start with C++, in the future ignore their advice!

Dont get me wrong, I totally understand why you want to go with C++, Im just as guilty. Recently I purchased a set of golf clubs and Im a horrifically meh golfer,
but I got a set of blades cause thats what the pros use. The gotcha? Im no pro golfer, and my god did these golf clubs totally ruined my golf game. Sometimes
using what the pros use isnt the right thing to do. Alright, off that tangent.

Again, these are just my opinions ( and those of the vast majority of people that went down this road themselves! ) and I know you are going to start with C++
anyways, but dont say I didnt warn you, because you are making a really stupid mistake.

Now, if you did in fact make the decision to go ahead with C++, for the love of all that is holy, DO NOT USE DevC++. Its old, unsupported and a vastly inferior
choice on every measurable level. Dont worry, Ill cover the options off later.

Programming is programming

This one is a bit depressing but completely true. There is nothing really magical about Game Programming. Its programming, pure and simple. In my
professional life, Ive done game programming, tools programming, desktop app development, mobile phone apps, web development, enterprise development
and even created an Internet startup. Through all of that, the programming, though for vastly different purposes was almost always the same. Hell, the most
advanced ( and difficult ) code Ive ever written was in Javascript! Now the biggest difference with game developing math, yeah, you are going to have to learn
math.

Anyways why do I bring this up? Simple, before you can program games, you need to be able to program. I know that sounds horribly obvious but you would
be amazed by how often people jump straight in to game programming without learning the basics first. That said, my very first line of code was in the attempt to
create a game. I still remember it to this day:
10 PRINT WHAT IS YOUR NAME?
All this really means is, the very first thing you are going to have to learn is the basics of programming. No worries though, Ill cover that later too.


The most important thing is

Do something. Really, the most important thing you can do is start writing code, start learning, jump in. All the planning, dreaming and forming of teams is all fun
and such, but the most important thing you can do is, um do. Jump in, learn, make mistakes, the experience will be invaluable.

Your first game wont be good. Your second game wont be much better. But if you finish a single game, youve done better than 95% of people that came
before you. Dont plan an MMO, its way beyond you, even with a team of a few hundred people. Hell, aiming much higher than Pong is setting yourself up for
failure. Pick something small and execute. Again, there is a 99.99% chance your game isnt going to be published, so approach it as the learning experience it is.

Nothing frustrates new developers more than the lack of progress. This is why small, doable goals are so important. Nothing motivates like success!


Should I use an engine or create my own?

Assuming you are a new developer, frankly, this is a premature question. Grasp the basics of programming before you even think about using or worse, creating
an engine. Otherwise you are doubling your workload, as you learn both a language AND an engine. As a new learner, you should be minimizing the number of
subjects you need to study at once, as you can quickly get overwhelmed if you try to learn everything at once.
PEOPLE RECENT POPULAR
September 2012 (24)
August 2012 (24)
July 2012 (25)
June 2012 (28)
May 2012 (35)
April 2012 (26)
March 2012 (13)
February 2012 (14)
January 2012 (13)
December 2011 (9)
November 2011 (16)
October 2011 (11)
September 2011 (7)
August 2011 (8)
July 2011 (7)
June 2011 (8)
May 2011 (15)
April 2011 (11)
DisqusCommentsSummary
Recent Comments
Stephanie
I have found out, that libgdx it doesn't like
if you use pictures in your map, that have
a different tile size than the map (yeah,
you can do this in the tiled map editor). Correcting
this has...
LibGDX Tutorial 11: Tiled Maps Part 2: Adding a sprite
and dealing with layers 19 hours ago
gamefromscratch
There are a few advantages. First, I dont
use Wordpress, I use Blog Engine, and the
only option available is ancient. That said,
this has an advantage and disadvantage really, its a
matter of what...
Syntax highlighting the code in your clipboard 22
hours ago
Lior Tal
What is the advantage of using a custom
tools (such as Highlight) over using a
plugin for your blogging engine? (e.g: i use
a nice plugin for Wordpress that does syntax
highlighting).
Syntax highlighting the code in your clipboard 1 day
ago
gamefromscratch
This is for a different editor, but should
help you along.
http://siondream.com/blog/game...
LibGDX Tutorial 11: Tiled Maps Part 2: Adding a sprite
and dealing with layers 1 day ago
Graham Misail

Now once youve got the gist of things and are starting out creating a new game, this is a very valid question. One thing to keep in mind, an engine like UDK or
Unity are tens or hundreds of thousands of man hours worth of work do you want to replicate that effort? Generally, especially for a small developer, you are
best off to use an engine, doubly so if trying to make a commercial quality product.

That said, if you are looking at it as a learning exercise have at it! You will learn a ton of interesting and useful things working on a engine of your own.
Generally, if its a learning exercise, it totally makes sense to do things that make no sense!

The most important take-away from this section is, if you are new to development, put a bit of time into learning programming, then ask this question later!


What libraries and tools should I use?

This one all comes down to the language you pick. Ill break it down by language in just a few minutes.


What are my language choices?

Alright, this one is a bit tricky, as frankly there are literally hundreds of programming languages, but I will cover off the most popular ones.

C++ this is the language you shouldnt pick, but no doubt will.

Its pros you can get close to the metal, its the pro choice, lots of 3rd party commercial and free libraries and it is well supported across platforms.

Its cons? Just about everything else. It takes 10x as many lines of code to do simple things, its like juggling live hand grenades safety wise, its compilation
process is primitive and unwieldy, its syntax is painful, its learning curve is steep and its standard libraries are awful.

Learning difficulty: hard

EDIT: 8/16/2011 To be honest, I have been overly hard on C++. Dont get me wrong, this does not mean that I am endorsing it for new developers, that is still a
seriously bad idea! However, with the rise of iPhone ( which is Objective-C based, but supports C++ ) and Android ( which is Java based, but also supports C++ ) as
gaming platforms, C++s popularity is on the rise.

C - See C++, which is a superset of C. There are reasons to use just C and frankly its a bit easier to come to grips with, but it is like taking a trip back to the stone
ages.

Learning difficulty: medium

C# full disclosure, all things being equal, this is the language I go to. Generally, this is the non-C++ language most people will recommend and for good reason.
C# is a modern derivative of C++, in that it was based on C++ ( and not Java as commonly held ).

Newsletter
Get notified when a new post is published.
Enter your e-mail
Calendar
<< October 2014 >>
Mo Tu We Th Fr Sa Su
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
View posts in large calendar

How would I add collisions to a Tiled
layer? I can't find any tutorials on google
that make sense. Thanks.
LibGDX Tutorial 11: Tiled Maps Part 2: Adding a sprite
and dealing with layers 1 day ago
The pros? EXCELLENT standard libraries. Probably the best on any platform Ive ever used. So things like working over the network, manipulating strings, loading
files, etc are by far easier than C++. Oh, and LINQ, generics, anonymous methods and various other new language features are pretty great.

Its cons? Probably the biggest is, its tied to Microsoft and that makes many people uncomfortable. As a result, its best implementation is on MS platforms,
although it is available on OS/X, iOS, Android and Linux, you do have to jump through a few more hoops outside of MS-land. Next up, its garbage collected,
meaning you dont implicitly allocate memory. Finally, in some regards, it can be slower than C++, although I think this point is way over blown these days.

Learning difficulty: medium

Java Java is a tricky one to write about, because of my C# bias. I used Java before C# came around and I could see how it was more productive than C++ and
appreciated the encompassing libraries, especially as I was moving over from C++ at a time the Standard Template Library was anything but standard that said,
since C# came along, it feels to me as a superior language in just about every way.

The pros? The ecosystem is massive, the tools and library support are legion. There are nine ways of doing everything in Java, and the number of free tools (
Eclipse, NetBeans, Ant, etc ) are truly staggering. Language wise, its much like C#, libraries are much more capable than C++ and the language is much less
likely to bite you in the ass if you make a slight mistake. Also, if you are doing Android development, well until very recently ( with added C++ support ) it was the
only game in town.

The cons? Java just has this way of annoying you, of getting in your way because it thinks it knows better than you. Parts of the language are kludgy, overly
verbose and again just annoying. In recent years, it has been evolving much less elegantly than C#, so the newer language features seem like half assed poorly
implemented ugly step children compared to C# ( and in some regards, C++ ). Also, Java is the language of academics and enterprises and it shows so many
things are so overwhelmingly OVER engineered as to drive you insane, as I said earlier, there are nine ways of doing everything, but 5 of those ways are outdated,
3 are awful and figuring out what the good choice is, is up to you. Finally game library selection is pretty limited.

Oh, and Oracle own them now of all the tech companies in the world I would want in charge of my language of choice, Oracle sure as hell wouldnt be the
company I would pick. For people that think Microsoft are the devil they dont know Oracle! Their throwing around lawsuits left, right and center ( including
Google/Android ) would not make me feel good about things.

Learning difficulty: medium (*)
(*) figuring out WHAT to use, from the hundreds of libraries, deprecated features, tools, etc.. is overwhelming and is probably going to be as big a challenge for
a new developer as learning the language itself


Visual Basic to be honest, since .NET, this language effectively died. Using VB6 is frankly just too outdated to bother with these days, which is a bit of a shame,
as it filled a very nice niche that hasnt completely been filled. Now, VB.net is basically C# with a VBish skin applied. I am sure VB.net developers will disagree,
but they are wrong.

Delphi was a time I would highly recommend this language, but this haven't progressed well for Delphi. Ironically, the guy that invented C# was the guy behind
Delphi. Support just isnt there, which is a shame as the language is very friendly to newer developers.

LUA/Python/Ruby In all honesty, Ive only really dabbled with these 3 languages and while all 3 are ( and commercially have been ) good languages for
embedding within a game, only Python really has a really solid game development community built around it, so is probably the best recommendation for new
developers. All 3 languages should definitely be on your radar. My experience is very limited in all regards, so I dont really feel comfortable making a suggestion
one way or the other. If you are an advocate of any of these languages and want to write a section on them, send it to me for inclusion!
EDIT: If you are interested in Lua, be sure to check out Battle of the Lua game engines for more details.
Notify me

One big advantage to all three of these languages is you can program them interactively, which means type some code and see a result. When you are just trying
to figure things out, thats pretty powerful! Later on in this post, I will mostly just cover Python, the most popular of the three, especially in regards to game
programming. There is also Iron Python which is an implementation of Python on the .NET platform, which means you get all the libraries available to C# and
VB.net.

C++.NET On the topic of .NET languages, C++ also made a special version of C++, with additional keywords to make it compatible with .NET libraries and a
mode that makes memory management automatic. That said, it was a kind screwy-hackish implementation and nobody really took to it, so you can probably
ignore C++.NET completely. The only real use case I can think of is, if you only know C++ syntax and want to do GUI development with WinForms, this may be the
way to go. That said, thats a pretty damned minor use case!

JavaScript I dont know how this little language managed to fit into every niche, but damned if it doesnt! Most people think of JavaScript as a web scripting
language and easily that is its most common use, but this language ends up being used just about everywhere. Its worth learning, as it is really everywhere, and
although beginning life as a bit of a hack, it has proven itself capable again and again. Not my favorite language to work in, but not the worse by a long shot! If a
new programming paradigm comes along, you can bet a JavaScript implementation will come along sooner then later! Given HTML5 and Windows 8, Javascript is
only going to get more popular in the future, although Im not really sure this is a good thing. Javascript is a prototype based language. All told, Javascript has
pretty good library support when it comes to games, and is one of the languages available when using Unity.
EDIT: If you are interested in JavaScript, be sure to check out the list of JavaScript gamedev libraries as well as my Cocos2D-html tutorials. I also have a pair of
JavaScript book recommendations.

Assembly If you as a beginner pick assembly in this day and age, you did something wrong, extremely wrong! Choosing assembly as your first language makes
C++ look like a wonderful choice! That said, this is about as close to the metal as you can reasonably get. In this age of i7 quad core processors though, getting
close to that metal is a pretty stupid thing to do. At some point Assembly may become important to you, but I highly doubt it. Until it does, pretend it doesnt
exist.

The Rest - I hope I didnt miss your language of choice, as theres Objective-C, D, F#, CAML, Smalltalk, LISP, Perl, PHP, Haskel, Pascal and a few hundred other
languages available. Many of them are domain or platform specific languages, or have fairly poor game library support. ObjectiveC is gaining in popularity based
on it being the main language of iOS platforms, but outside that world it is virtually unknown and frankly I hate it. I dont recommend against any of these
languages, but none are really well suited or very popular for game development.


But Im an artist, where do I start?

In that case, you should probably start here. Pick out an application and go with it. Many of the programs on that list have free/demo versions available. Also, the
GFS list of applications used is mostly full of free applications used to create games.


So I have this great idea for an MMO

Alright, back to being negative again. You cant create an MMO. You and 10 of your best friends cant create an MMO, unless of course your 10 friends are all A-
list developers and even then frankly you still cant afford to create an MMO. Got a few million dollars? No? Then drop it, an MMO isnt the way to go. Now,
some day you may be able to work on a Warcraft killer, but as your first project well frankly thats like trying to find a cure for cancer in your high school
chemistry class. Aim lower, much much lower.


Ok, Ive decided to go ahead with



C++ is the language for me!

Egads, you just wont listen will you all right, we all make this mistake when we start out. If you insist on going the C++ route, learn the language first, using the
following recommended tools and libraries.

Freely available resources for learning the language ( Books and Tutorials )

Microsoft's getting started with C++ page including Beginner How Do I? videos
MIT C++ Introduction courseware. They have other more advanced lessons as well.
A Beginners C++ ( 1996, outdated, but free )
www.cplusplus.com is a surprisingly comprehensive site dedicated to C++. The tutorials section is a good place to start.

Once you get a bit more advanced, check out

Bruce Eckel's Thinking in C++ 2nd Edition

I will fill this area in over time. Much of the free resources are terrible, or outdated. If you have a good suggestion, email me or comment below and I will add it.

Recommended books ( Not free )

The C++ Programming Language
This is the book by the language creator himself. It is considered the language bible of sorts. It may not be the best book to learn on, but it is a book every C++
programmer should have on their bookshelf.

C++ How to Program
Currently in its 8th edition, this is a pretty good first book for a programmer to learn with. It covers pretty much all of the language features and even covers
Boost libraries, which is a valuable addition. Keep in mind, this book, like most introductory texts, does not cover GUI programming of any form.

C++ Without Fear: A Beginner's Guide That Makes You Feel Smart (2nd Edition)
This one I recommend with a caveat. It is probably the single best conversational introductory C++ texts out there. It is very approachable and the pacing is
quite good. Nothing is implemented before its explained which is very nice. That said, some things are wrong or outdated, occasionally teach you The C way of
doing stuff instead of the C++ way. Finally, the author recommends DevC++, which is really really really bad. Those flaw aside, if you find all other texts to dry,
confusing or technical, you may want to check this one out. Again, no GUI coverage and no Boost, but many of the newer language features are covered, plus it
spends a couple chapters at the end implementing more full solutions, which is a good thing.

Beginning C++Through Game Programming 3rd Edition
No doubt you have seen this title and in your future career as a C++ developer AND a game developer, this sounds about perfect. It isnt, but it is not bad. Lets
put this out there right away, this wont teach you how to program games, but what it will do is teach you to program C++. As an introduction to C++ text, its not
as good as the previous two books. As a game programming text its all but useless. So why am I recommending it? Its a decent introduction to C++
programming that uses simple games for all of the demonstrations. So, instead of fairly abstract or contrived examples you see in other texts, all the examples
are game related. For example, pointers and references are taught by creating a Tic Tac Toe game. Many people will find this a heck of a lot easier to wrap their
head around than many examples in other books.

Effective C++
This is not a beginner text. This is an old text, outdated even as it doesnt cover the latest C++ standard. Heck, its 6 years old! So why am I recommending it?
Simple, every good C++ programmer owns this book. Once you grasp the basics of the language, buy this book and it will make you a much better C++
programmer. Seriously. Hopefully Scott is working on a 4th edition as we speak. On the bright side, its 6 years old so you should be able to find it cheaply. In
addition to Stroustrups book, this is the C++ bible.

Tools

When it comes to tools, the choices are pretty clear with C++

Visual C++ Express 2010 Microsofts free C++ compiler/IDE
Codeblocks IDE and MingW free C++ compiler

Of the two, I would recommend Visual C++ personally, unless of course you arent running Windows. There are a few other options, but they all require a bit
more work or installing plugins, but I will list them for completeness

KDevelop a linux based IDE, heavily copied from Visual Studio in style
Eclipse IDE for C++ a cross platform ( Linux, Win, Mac) IDE, mainly for Java, but supports C++
XCode Apples IDE, supports C++ but is obviously Mac OS only
Netbeans for C++ NetBeans is another Java IDE that supports C++. Its actually surprisingly new user friendly but now that Oracle is in charge, expect
that to end!

Well, thats about it. If you are working on Windows, I see no reason to use anything but Visual C++ personally. A number of tutorials out there will recommend
Dev C++ DONT under any circumstances use DevC++, its old, unsupported, buggy and has little to no advantages over the other choices. It was popular at the
time because back then, there was no freely available C++ IDE, times have changed.

Oh, and just to be thorough, there are also Emacs and Vi(m) which are actually just really powerful text editors that you then call out to the likes of Gcc or the
MinGW compiler. I mostly just mention these for completeness; as if I didnt some guy with a beard and plaid shirt would no doubt scold me over the omission.
In no way do I recommend a new developer start with any of these items!

One last point I think should be made here, your choice of IDE has absolutely no affect on how cross platform your code is! Code ( properly ) written in Visual C++
can be later compiled for Mac OS and Linux, for example.

Gaming related stuff

So, you are here for game programming advice and all Ive talked about is C++, now I will rectify that. First you need to decide if you are working in 2D or 3D. Just
starting out, I highly recommend sticking to 2D for now ( or stick to console apps until you get the gist of the language ), yet once you decide to make the
graphical plunge, there are 3 major ( and a few thousand other! ) 2D graphic libraries out there. I know this sounds like a cop-out, but all three are equally good,
so you cant really make a mistake here.

2D Libraries

SDL - SimpleDirect Media Layer
Its beginner friendly, simple ( relatively ), cross platform, well supported and is used to make commercially shipping products ( like the recently release Dungeons
of Dredmore ). It handles just about every aspect of creating a 2D game, graphics, sound, loading files, networking you name it. It is very much a C based
library. You can use it from C++ without effort, just dont expect any object oriented features.

Allegro
This is the library ( and Fastgraf ) I started out using many many many years ago. It was originally written for the Atari ST and I am simply floored that it is still
around and in active development. That said, it was good then and it is good now. Interesting trivia point, the guy behind Allegro way back in the early 90s, went
on to become one of the main programmers behind XNA. Anyways, this much like SDL, covers just about everything you would need for 2D game programming.
Also like SDL, its very much a C library.

SFML - Simple and Fast Media Library
The new kid on the block, and frankly, I have zero personal experience with this library. Like the other two, it handles just about everything you would need to
implement a 2D game. Unlike the others, this is an object oriented library ( C++ ). A quick look at the classes and it looks like a very modern and clean design. On
that level alone, I would probably go this route if I was starting out today. It is event driven, which is a very handy thing ( and something Allegro is moving towards
), which should make your game structure easier to implement.

3D Libraries

If you are just learning, you probably shouldnt be working in 3D right now, yet here are the primary libraries in use today.

Open GL
Originally developed by Silicon Graphics in the early 90s, this is the grand daddy of 3D APIs. Its biggest advantage is its cross platform nature, as OpenGL is
everywhere. This is especially true on mobile devices like Android and iPhone, which both implement a stripped down version of Open GL called OpenGL ES. You
can view the getting started guide here. If you prefer in book form the OpenGL Programming Guide ( Red Book ) has long be viewed as The OpenGL Bible, the
one book all OpenGL programmers should own. That said, in recent years OpenGL has changed quite a bit and the old cruft and obsolete instructions havent
been pruned out of this book yet. The NeHe tutorials have long been the goto resource for new OpenGL developers, although in some ways they suffer the same
problem as the Red Book, time waits for no docs!

DirectX
This is Microsofts primary game SDK ( Software Development Kit ) for creating games on Windows and Xbox using C++ ( not be confused with XNA ). Unlike
OpenGL, DirectX also supports Input and Sound. Microsoft has provided some fairly good tutorials. One thing to be aware of, DirectX 10 and 11 require Vista or
higher, so no XP support! That said, DirectX is no doubt the most popular SDK to use for commercial Windows games. Beginning Game Programming is probably
the best beginner friendly DirectX book, but keep in mind, you do need to understand C++ already!

Ogre 3D
Ogre3D sits in a weird spot. It is not a full game engine, but it is not like OpenGL or DirectX either. In fact OGRE uses both. Ogre is a 3D rendering engine.
Written in very clean object oriented C++, Ogre handles a number of tasks that neither DirectX or OpenGL do, like a scene graph ( the data structure your world is
stored in ), importers for almost all major 3D modeling applications, landscapes, LOD ( level of detail ) support, etc. If you are using DirectX or OpenGL to create a
3D game, these are all things you would have to write yourself. Ogre is cross platform and has been used to create a number of published games. The have a
pretty good manual online. There are also a beginner and a pro book available, neither of which I have read though.

Other Libraries

ODE - Open Dynamics Engine
nVidia PhysX
Are two freely available physics engines for accurately modeling real world physics in your game. ODE is open sourced as well. There is also Havok which is
included in Unreal (UDK), but its licensing isnt so straight forward.

Box2D
A physics engine for 2D games. Free, powerful and quite a bit easier than working in 3D.

Boost
Boost is the future of C++, 10 of the boost libraries are already part of the C++ standard, with more coming soon. Boost libraries perform dozens of common
tasks and make up for a giant flaw in the C++ language ( the standard libraries are crap compared to other languages ). That said, they arent the easiest to learn
and even harder to understand. Many Boost programmers are amongst the best in the field, and it shows. There are books available for Boost too, although the
website actually has extremely good documentation for the majority of the libraries.

Game Engines

I will cover this off in a different post, as Engines arent really tied to a particular language. For example, the popular Unreal engine, is very much written and
programmable in C++, but also can be programmed in UnrealScript. Unity is primarily C# based, but can be extended with C++ and scripting with Javascript and
Boo. Panda can be scripted in Python but can also be programmed in C++. Engines dont really fit in by language.

Still too many choices, tell me exactly what to do!

Alright, keep in mind this is all entirely my opinion, but as a game developer learning C++ you should:

Go here to download and install Visual C++ Express.
Take the guided tour that will introduce you to using the IDE and language.
At this point I would recommend buying a C++ book such as this one. There are a ton of resources on the web, but many are outdated or wrong and the sheer
volume is overwhelming. Having at least one good beginners guide is ideal.
Go through that book and do some basic exercise, create a few console applications and get a feel for the language.
Now go and download SFML ( Visual Studio 2008 ) <- until 2010 update occurs.
Run through the SFML configuration/starting tutorial.
Now start running through the other tutorials.
At this point, you should be ready to consider making a game. Start with something small, like creating a PacMan clone or something similar.
Now start making more complex games, or using or creating a game engine.
Congratulations, if you got to this point, you are now a game programmer!

EDIT: This site now has a complete game from scratch using SFML tutorial available. You need to have the basics of C++ down, but it will hopefully teach you
quite a bit. It is a good place to go once youve run through a couple C++ tutorials or a few chapters of a book.






C# is the language for me!

The C# section is a lot easier to right than C++, as its a newer language, there are fewer tools and one library dominates the game ecosystem.

Freely available resources for learning the language ( Books and Tutorials )

MSDN Visual C# Developer Center
One really nice thing about working with Microsoft technologies is Microsoft know documentation! The number of tutorials and how to videos they make
available is extremely vast. This link alone should have everything you need to know to get up and running. They also have more resources, including this
introduction video available at the Beginner Developer Learning Center. Once you are ready to move on to XNA give this tutorial a shot. To be honest, they
probably provide everything you need to succeed.
C# Essentials
A free e-book, covers the basics of C# pretty well. A bit dated but still free. Nicely many of the changes to C# over its evolution are complementary to the old
ways, so not as many ways of doing things have been deprecated.

Rob Miles' C# Yellow Book
A free book from a professor at the University of Hull about learning to program using C#. Its actually pretty good and he updates annually. Very good first step
for a C# developer that doesnt want to spend money.

Introduction to Programming Through Game Development Using Microsoft XNA Game Studio
Rob Miles also made this ebook available for free download as well. It is all about learning how to program by creating games in XNA. Personally I think this is
kinda a bad idea, but the price is right! Definitely give it a shot, it is a very thorough text and if it works for you, you will be up and doing the fun stuff at a much
quicker pace. It does cover just about everything you need to know to program a full featured 2D game.
Gang of Four Design Patterns
Truth is, this site is probably not going to make a lick of sense for you starting out, but bookmark it and come back every once in a while. One of the best sites on
design patterns, and design patterns are a very good thing to know. They will change the way you code, for the better.

Recommended books ( Not free )


.C# Programming Language 4th Edition ( Covering C# 4.0 )
One of the primary writers of this book is the language author. Just like in C++, with C# I recommend the book by the language creator. Unlike the C++
equivalent, this book is more beginner friendly although still comprehensive. As a C# developer, this is probably the bible of C# books. Unlike C++, C# has
changed extensively in a short period of time, so be sure you get a copy covering version 4!

Headfirst C# 2nd edition
This one is a bit different, as the name implies, it just sorta jumps in and documents as it goes. Instead of working on console applications, you are actually
develop real GUI apps right from the start. For those that learn by doing, this is an excellent book. It is very conversational and easy to read, although a little
chaotic in its formatting ( check out the preview and you will see what I mean! ). If this is how you learn, this book will be godsend, but I know it is not for
everyone!

C# 4 In A Nutshell
I just love this series of books. These books are very concise and cover the entire language, but can also make for a useful reference well after youve got the
hang of things. The downside to this conciseness is, there is not a lot of hand holding, it covers the language only ( no talk of the IDE for example ) and there is no
continuity of examples to tie it all together. It describes a language feature, gives an example and moves on. This may or may not work for you, especially if you
have no prior language experience.


I looked at a number of learn XNA programming books to see if any of them were suitable to a new developer including Learning XNA 4, Microsoft XNA Game
Studio 4.0: Learn Programming Now! and Beginning XNA Game Programming and none do a good job of covering the C# language. My recommendation is to get
a grasp of the language basics from another source before jumping into a XNA specific book.

Tools

This area should be extremely straight forward, as there are really only two ideal IDEs for C# development, Visual C# and Monodevelop. That said, Microsoft have
muddied the waters by letting their marketing department get involved, so you have Visual C#, XNA Game Studio and now Game Studio is included as part of
Windows Phone Development Tools yeah, that makes a ton of sense to me too! Just to add to the stupidity, Windows Phone Development Tools ( just rolls off
the tongue ) only works on Vista and Windows 7, so if you are running Windows XP, you need to download the standalone version.

So
Visual C# / GameStudio instructions
If you are running Windows 7 or Vista, download this or if you are interested in running the newest and beta-est download this.

However, if you are running Windows XP download this. ( Direct Link to EXE )

MonoDevelop / SharpDevelop instructions
Finally, if you are running on non-Microsoft platform or for some reason dont want to use Visual C#, MonoDevelop is the IDE of choice. ( Download Page )

There is also SharpDevelop if MonoDevelop isnt for you. ( Download Page ). It is Windows only however.

One key thing to note, if you are working with and want full support for XNA, you will need to use GameStudio/Windows Phone Development Tools. A


Gaming related stuff

XNA

Instead of repeating this one in the 2D and 3D libraries section, Ill just address it first. XNA is well regarded and is seen as a big reason to use C# and for good
reason, it really is a wonderful development environment. At the most basic level, XNA is a C# friendly version of Direct X, but that is selling it far too short.
XNA handles most of the common tasks for game development. 2D graphics, 3D graphics, audio, asset loading and the content pipeline. It is also a hell of a lot
easier to get up to speed on than OpenGL or DirectX. The downside is, it is supported on Windows, Xbox and ( a subset) on Windows Phone 7. A number of
released games, including every Indy game on Xbox, have been released using XNA tools.
There are however projects to port XNA to other platforms or like this one.
For more details check it out.

2D Libraries

SDL.Net
Its SDL, the C++ library, with C# bindings. Therefore it is capable of 2D graphics, sound, loading files, fonts, etc just like SDL. C# specific documentation can be
found here.

3D Libraries

OpenTK
OpenTK is a wrapper around OpenGL ( 3d graphics ) , OpenCL ( allows code to run across CPU and GPUs) and OpenAL ( audio ). If you want to do cross platform
3D, OpenTK is the way to go.

SlimDX
This is a wrapper around all things DirectX 9/11. So, if for some reason you dont want to use XNA, you can use full Direct X. For a beginner, there is probably very
little reason, as XNA is a fair bit easier to use.

Tao
Tao brings OpenGL ( 3D Graphics ), OpenAL ( audio), ODE ( physics ) and a number of other libraries to C#. Sadly, its mostly been abandoned so OpenTK is
probably a better bet at this point.

Axiom
This is a port of OGRE 3D to .NET. Sadly it too doesnt appear to be that active anymore.

Other Libraries

Box2D.NET
Box2D physics library, for .NET. A pretty impressive 2D only physics library.

BEPU Physics
Is a full 3D physics library for .NET that also support Xbox360 and Windows Phone 7. In the developers words Its fast and has a bunch of cool features like
constraints, terrain, static and instanced meshes, continuous collision detection, custom collision rules, vehicles, easy multithreading, yadda yadda yadda..

Still too many choices, tell me exactly what to do!

Alright, due to its youth and the excellence of XNA, this is an easy one to write.

First off, go and download the newest XNA Gamestudio.
Watch some of the Microsoft training materials.
Create a few console apps, get a feeling for the language. It would be a very good idea to buy a good introductory book right now if you can afford it, run through
their examples.
Now its time to get your feet wet with XNA. Run through the 2D game tutorial.
Use XNA to create all manner of simple 2D then 3D games.
Congrats, you are now a game programmer!








Java is the language for me!

Freely available resources for learning the language ( Books and Tutorials )

Oracle's Tutorial Site
Sun ( and now Oracle ) put together a very comprehensive set of tutorials for learning the language. Start with the getting started tutorials and go from there.
You can download the whole wack of them for offline reading here.

IBM Tutorials
IBM also has a huge list of Java tutorials available, running the gamut of subjects, some of which would really surprise you coming from big blue! Keeping in mind,
IBM was the source of Eclipse, they are probably the second most involved company in the Java ecosystem, aside from Oracle. Lots of their tutorials are very
enterprise oriented, but you will find many that are useful. Here is their introductory tutorial, but perhaps coolest of all, they have a tutorial built around a game
for teaching the language! IBM really is a weird beast.

Thinking In Java 3rd Edition
Its a bit out dated ( 2002 ) at this point in time. It is however a book that is very easy to read, following along and will help you learn the language. You will need
other resources, but this book is a very good guide down the path of learning Java. Plus the whole free thing is very nice!


Recommended books ( Not free )


The Java Programming Language ( Forth Edition )
In keeping with my trend of recommending books by the language creator, this book is co-authored by James Gosling. It is a comprehensive and relatively
beginner friendly introduction to the Java programming language. Unfortunately, it is getting a bit old, and only covers up to J2SE 5, while J2SE 6 is the most
current release. That said, this shouldnt be much of a handicap.

Head First Java
This book is an easy read, incredibly easy. Dare I say it, it is actually kind of fun. I already knew Java to a degree and didnt really need a beginners book, but I
noticed this one was always trending in Safaris top 10 list ( out of over 14K books! ) and couldnt figure out why so I gave it a read. It was a genuinely amusing
book to read, it did a very good job of getting the technical information across in a way that didnt feel so dry and stuffy like many texts do. It may not be your
style, but you should definitely check it out! Amazon offers a look inside preview, and I suggest you do.

Java How To Program 9th Edition
A VERY comprehensive introduction to Java at a whopping 1500 pages, it also comes with a whopping price tag. It is however the text of choice for many java
courses and it covers pretty much all of the language aspects, including many common libraries and frameworks, which to you as a game programmer may not
matter. Again though, the price tag is a kick in the teeth.

Effective Java
This is not a beginners book, in that it wont teach you the language basics. This book, hands down, will make you a better Java programmer. Once youve
mastered the basics of the language, pick this up!
I sure wish I had this book ten years ago. Some might think that I dont need any Java books, but I need this one.
Who said that about Effective Java? James Gosling the language creator! I simply cannot think of higher praise.

Tools

This is an area where Java has always got it right, tools. There over the years have been a number of great IDEs for Java, but three have really jumped to the
forefront and fortunately all 3 are available freely.

Java SDK
When developing in Java, your first step is to install the SDK ( software development kit ). In some cases it may be included in your IDEs install, but it is safest to
start here. Just like all things Java there are bewildering number of options and flavors. There is Java SE ( standard edition ), EE ( Enterprise Edition ), ME ( Micro
Edition ), Embedded as well as various versions for very specific device devices and profiles. Hell, even the Java used for Android development is completely
different! ( And frankly isnt exactly Java, but thats neither here nor there ). Long story short though, unless you know a reason not to, what you want is Java SE
Development Kit 7, at least as of writing it is. You will also see this referred to as the JDK or as J2SE on occasion because, well its Java. You will start noticing a
trend very soon!

Eclipse
Originally developed by IBM, the now open source Eclipse is the most popular Java IDE in use today. Available across many platforms and sporting a pluggable UI,
Eclipse has everything and the kitchen sink for features. I would say it is the most capable of the IDEs but on the same token, it is also the most confusing. If you
are working on Android development it is Googles preferred environment, so thats where the native tools are for authoring Android apps. That said, I recently
worked on an Android app and I HATED the experience. Eclipse kept fouling up my projects again and again and again, if I was a new developer I might have quit
in frustration! Get to know the clean parameter, you are going to use it a lot. In all honesty, for a new developer who isnt doing Android work, stay away from
Eclipse to start would be my advice. If you must use Eclipse, be sure not to go wild installing plugins unless you absolutely need them! Even figuring out which
version of Eclipse to download can be a daunting task! If you dont know, download this version.


Netbeans
In that special sort of way that Java has of making things confusing as hell, Netbeans is both the name of an IDE and the name of a platform for developing Swing
applications. In this case we are talking about the IDE. Originally started as a student project ( in 96! ), Sun purchased and open sourced it in 99. Since then, Sun
(and now Oracle) have made continuous new releases. It, like Eclipse, supports plugins although nowhere near as extensive ( or annoying! ). That said, it just
works. For a new developer this is the one I recommend starting with. Again like Eclipse, there are many different versions and if you choose the wrong one it
installs a TON of crap you dont need and probably dont want ( like web and database servers! ). On this download page, unless you have a very good reason
otherwise, its the JavaSE version you want. ** I should note, you can do Android development using NetBeans, its just not supported or documented by Google.


IntelliJ IDEA
This incredibly popular IDE, well to be completely honest, I have almost no experience with. See, it used to cost money and Eclipse/Netbeans were always good
enough. That said, in a world full of free tools, people were still willing to pay for IntelliJ IDEA, that says something! Now though, they have a completely free
edition! Again, I have no direct experience with IntelliJ beyond reading the website, but come time for my next Java project, I will definitely check it out.



Gaming related stuff

2D Libraries

Slick
I believe this is the most commonly used 2D game library on Java these days. It is built on lwjgl ( details below ) and uses OpenGL or Java2D for fast 2D rendering.
Additionally it supports fonts, sound, input and image loading. There is also support for spritesheets, tilemaps and 2D collision detection, all very common
requirements in creating a 2D game. The tutorials even walk you through creating a complete game. A very clean and beginner friendly library.

LibGDX
This library handles not only graphics, but sound, file handling, logging and input. You can also create Android apps with very minimal code changes. Like slick it
uses lwjgl, as well as jogl behind the scenes. The design seems remarkably clean, but the documentation is a bit lacking.

Java2D
This is Javas standard 2D drawing library. I am just mentioning it for completeness, as I see no reason to use it over Slick or LibGDX.

3D Libraries

Jogamp/jogl
These provide Java language bindings for OpenGL, OpenCL, OpenAL and OpenMAX libraries. This can provide you with low level access to all your graphic and
audio needs. Additionally it can work with Java2D, Swing and AWT. A tutorial for getting started is available here. Jogamp is completely up to date with the latest
OpenGL implementation and is the underlying technology in many higher level Java graphics libraries.

lwjgl - Lightweight Java Game Library
Much like jogl, lwjgl is a library built on top of OpenGL and OpenAL. Additionally it supports game controllers like gamepads and steering wheels. It has been
used to make a number of games and is the underlying technology powering the jMonkeyEngine.

jMonkeyEngine
Ok, its not technically a library, its a full game engine. What does that mean? Well instead of accomplishing one task, it accomplishes all the various tasks you
need to create a game ( and as just mentioned, uses the lwjgl library to do it ). So in addition to graphics and sound, it provides a full scene graph, mesh and
graphics importing methods, a GUI, networking library and much more. If you are planning to work on a 3D game on Java, start here. Theres a good selection of
tutorials available to get you started.


Other Libraries

jBullet / jbox2D
The popular Bullet 3D and Box 2D physics libraries also have Java implementations.


Still too many choices, tell me exactly what to do!

Ok, first step is to download and install the Java tools.
Next up, go ahead and get NetBeans and install it.
Now download and start reading Thinking in Java, giving silent thanks to Bruce Eckel for his generosity. If you cant follow this book, or need a print one, consider
purchasing Head First Java.
Run through the first few chapters, do the examples and learn the basics of the language.
Once you grasp the language basics, download and install Slick.
Run through the "Spiegel" tutorial.
At this point, you should probably be capable of creating your own 2D games. If you are interested in 3D programming, consider checking out the
jMonkeyEngine.
Finally, go out and get Effective Java and read it, twice. It will make you a better Java programmer.
Congratulations, if you got to this point, you are now a game programmer!




Python is the language for me!

Alright, this section is totally getting the shaft. Why? Frankly because I dont really know Python all that well and dont feel comfortable giving advice on a subject
I am not educated on!
So, instead I am going to give a number of links that will be of use.

First, you need to download and install Python itself. If you dont know which to pick, go with Python 2.7.

Now, picking an IDE out for Python is a right confusing task. If you follow that threads (incredibly bad) advice of choosing Vim or Emacs, I will personally come to
your house and smack you! That said, an easy alternative doesnt spring to mind. Personally if I was working with Python today I would use Eclipse with the PyDev
plugin. That said, I am not really comfortable recommending that to a new developer. Komodo edit is perhaps as good a (free) choice as any to start with, but it
does not support integrated debugging.

Now that the messy business of choosing an IDE is all over with things get much easier. There is one dominant 2D game library and that is the PyGame which
may just be the most new user friendly game library available. Tutorial support is quite good, as is the documentation. Python really handles everything you
could need to create a 2D game, graphics, sound, controls, fonts, etc

However, if 2D isnt your thing, check out Panda3D. Stupid name aside, this is a powerful engine that has been used to create commercial games. Again, like
PyGame, it handles everything you could possibly need to create a full 3D game.

There are even a couple free books like Dive Into Python 3 and A Byte of Python ( good beginner text ). There is also a freely downloadable book Invent Your Own
Computer Game With Python.

The most important piece of advice I can give you, dont let people convince you that Python isnt a real language. It has been used in a number of shipping,
high quality games and will continue to be used as such.





Email Digg Reddit Facebook StumbleUpon del.icio.us
38
Related posts
Unity Book Roundup
With the recent (limited time) release of Unity Android and iOS for free, there is bound to be an in...
GameFromScratch Guide to Getting Kids Started in Game Development
It is getting more and more common for kids of younger and younger ages to show interest in ...
Game From Scratch C++ Edition Part 5
This section is going to be a bit of overkill for a simple pong game, but in a gam...
Programming Beginner, Programming, C#, CPP, Java


Now what?
------------------------------

So, youve picked a language, the libraries you want to use and now you need to, you know do something. This is a list of suggested projects for a new
developer interested in games, in ( fully my opinion ) order of difficulty. I am always open to new suggestions here, so send them in! Also, if you want to share the
results of your efforts, let me know and I will make that available too!


and everything else!
If you are looking at getting into 3D development check this list of 3D engines to get started. If you are struggling with the art side of the equation, be sure to
check out A programmer's guide to creating art for your game.

Good luck with your game development career!
Currently rated 4.8 by 118 people
All rights reserved. Copyright 2014 GameFromScratch.com.

Das könnte Ihnen auch gefallen