i want to be a game developer

29
1/29/2015 iReader http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 1/29 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 I’ve 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! … 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 shouldn’t. Frankly, if you have only ever used a single language, you really shouldn’t 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, it’s simple, C++ is an epically stupid language to start with. It’s about the same as starting to learn math by starting with advanced calculus.

Upload: shivaraj1996

Post on 01-Oct-2015

214 views

Category:

Documents


0 download

DESCRIPTION

nbkbjk

TRANSCRIPT

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 1/29

    Iwanttobeagamedeveloper...nowwhat?

    Withpeoplelookingtogetintogamedevelopmentthesamequestionscomeupoverandover,soIveoptedtoputmythoughtsonthesubjectinoneplaceandtocompilealistofresourcesfornewdevelopers.

    Thosequestions?

    Iwanttolearngameprogramming,whatlanguageshouldIuse?

    ShouldIuseanengine,orcreatemyown?

    Whatlibrary/toolsshouldIuse"?

    Nowwhat?

    Iwilltrytoaddressallofthesequestionsandmoreinthefollowingpost.

    Forthoseofyouthatlikeskippingaheadtothelastpageinanovel,theselinksareforyou!

    theC++question.

    Let me get the 800lb gorilla out of the way first of all. C++. This is one of the mostcontroversialandrepetitiousquestionsofall.NewdevelopershearfromotherdevelopersthatC++iswhattheprosuseandthereforewanttousethat.Tomakemattersevenworse,peopleansweringthequestionsareoftennewdevelopersaswellandwillrecommendwhattheyknowthuspushingpeopletousealanguagetheyprobablyshouldnt.Frankly,ifyouhaveonlyeverusedasinglelanguage,youreallyshouldntbeansweringthesekindsofquestions!

    Alright,backtothewholeC++question.ShouldyoustartlearningwithC++?NO. See,nomaybe,nowishywashyansweror caveats, its simple,C++ is an epically stupid language tostartwith. Itsabout thesameasstarting to learnmathbystartingwithadvancedcalculus.

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 2/29

    Again,dumb.IfyouaregoingtolistentoasinglepieceofadviceIgive,itsDONOTSTARTWITHC++.Iknow,ofcourse,thatyouaregoingtocompletelydisregardthisadviceandstartwithC++,butin3or4yearswhenyouvegotthescarsandtraumafromignoringmyadvice,Imgoingtosmugly*tisktisk*andgiveyoumybestItoldyouso!.IwillofferanotherpieceofadvicewhileIamatitanyonethatrecommendsyoustartwithC++,inthefutureignoretheiradvice!

    Dont getmewrong, I totally understandwhy youwant to gowith C++, Im just as guilty.Recently I purchased a set of golf clubs and Im a horrificallymeh golfer, but I got a set ofbladescausethatswhattheprosuse.Thegotcha?Imnoprogolfer,andmygoddidthesegolfclubstotallyruinedmygolfgame.Sometimesusingwhattheprosuseisnttherightthingtodo.Alright,offthattangent.

    Again,thesearejustmyopinions(andthoseofthevastmajorityofpeoplethatwentdownthisroadthemselves!)andIknowyouaregoingtostartwithC++anyways,butdontsayIdidntwarnyou,becauseyouaremakingareallystupidmistake.

    Now,ifyoudidinfactmakethedecisiontogoaheadwithC++,fortheloveofallthatisholy,DONOTUSEDevC++.Itsold,unsupportedandavastlyinferiorchoiceoneverymeasurablelevel.Dontworry,Illcovertheoptionsofflater.

    Programmingisprogramming

    Thisoneisabitdepressingbutcompletelytrue.ThereisnothingreallymagicalaboutGameProgramming. Its programming, pure and simple. Inmyprofessional life, Ive done gameprogramming, tools programming, desktop app development, mobile phone apps, webdevelopment, enterprise development and even created an Internet startup. Through all ofthat,theprogramming,thoughforvastlydifferentpurposeswasalmostalwaysthesame.Hell,themostadvanced(anddifficult)codeIveeverwrittenwasinJavascript! Nowthebiggestdifferencewithgamedevelopingmath,yeah,youaregoingtohavetolearnmath.

    AnywayswhydoIbringthisup?Simple,beforeyoucanprogramgames,youneedtobeableto program. I know that sounds horribly obvious but you would be amazed by how oftenpeoplejumpstraightintogameprogrammingwithoutlearningthebasicsfirst.Thatsaid,myveryfirstlineofcodewasintheattempttocreateagame.Istillrememberittothisday:

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 3/29

    10PRINTWHATISYOURNAME?

    All this really means is, the very first thing you are going to have to learn is the basics ofprogramming.Noworriesthough,Illcoverthatlatertoo.

    Themostimportantthingis

    Dosomething.Really,themostimportantthingyoucandoisstartwritingcode,startlearning,jump in. All theplanning,dreamingand formingof teams isall funandsuch,but themostimportantthingyoucandois,umdo.Jumpin,learn,makemistakes,theexperiencewillbeinvaluable.

    Yourfirstgamewontbegood. Yoursecondgamewontbemuchbetter. But ifyoufinishasinglegame,youvedonebetterthan95%ofpeoplethatcamebeforeyou.DontplananMMO,itswaybeyondyou,evenwithateamofafewhundredpeople.Hell,aimingmuchhigherthanPong is setting yourself up for failure. Pick something small and execute. Again, there is a99.99%chanceyourgameisntgoingtobepublished,soapproachitasthelearningexperienceitis.

    Nothingfrustratesnewdevelopersmorethanthelackofprogress. This iswhysmall,doablegoalsaresoimportant.Nothingmotivateslikesuccess!

    ShouldIuseanengineorcreatemyown?

    Assumingyouareanewdeveloper,frankly,thisisaprematurequestion.Graspthebasicsofprogrammingbeforeyoueventhinkaboutusingorworse,creatinganengine.Otherwiseyouaredoublingyourworkload,asyoulearnbothalanguageANDanengine. Asanewlearner,youshouldbeminimizingthenumberofsubjectsyouneedtostudyatonce,asyoucanquicklygetoverwhelmedifyoutrytolearneverythingatonce.

    Nowonceyouvegotthegistofthingsandarestartingoutcreatinganewgame,thisisavery

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 4/29

    validquestion.Onethingtokeepinmind,anenginelikeUDKorUnityaretensorhundredsofthousands of man hours worth of work do you want to replicate that effort? Generally,especiallyforasmalldeveloper,youarebestofftouseanengine,doublysoiftryingtomakeacommercialqualityproduct.

    That said, if youare lookingat it as a learningexercisehaveat it! Youwill learna tonofinteresting and useful thingsworking on a engine of your own. Generally, if its a learningexercise,ittotallymakessensetodothingsthatmakenosense!

    Themostimportanttakeawayfromthissectionis,ifyouarenewtodevelopment,putabitoftimeintolearningprogramming,thenaskthisquestionlater!

    WhatlibrariesandtoolsshouldIuse?

    Thisoneallcomesdowntothelanguageyoupick.Illbreakitdownbylanguageinjustafewminutes.

    Whataremylanguagechoices?

    Alright, this one is a bit tricky, as frankly there are literally hundreds of programminglanguages,butIwillcoveroffthemostpopularones.

    C++thisisthelanguageyoushouldntpick,butnodoubtwill.

    Itsprosyoucangetclosetothemetal,itstheprochoice,lotsof3rdpartycommercialandfreelibrariesanditiswellsupportedacrossplatforms.

    Itscons?Justabouteverythingelse.Ittakes10xasmanylinesofcodetodosimplethings,its

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 5/29

    Itscons?Justabouteverythingelse.Ittakes10xasmanylinesofcodetodosimplethings,itslikejugglinglivehandgrenadessafetywise,itscompilationprocessisprimitiveandunwieldy,itssyntaxispainful,itslearningcurveissteepanditsstandardlibrariesareawful.

    Learningdifficulty:hard

    EDIT:8/16/2011Tobehonest,IhavebeenoverlyhardonC++.Dontgetmewrong,thisdoes notmean that I am endorsing it for new developers, that is still a seriously bad idea!However,withtheriseofiPhone(whichisObjectiveCbased,butsupportsC++)andAndroid(whichisJavabased,butalsosupportsC++)asgamingplatforms,C++spopularityisontherise.

    C SeeC++,which isasupersetofC. Therearereasons touse justCand frankly itsabiteasiertocometogripswith,butitisliketakingatripbacktothestoneages.

    Learningdifficulty:medium

    C#fulldisclosure,allthingsbeingequal,thisisthelanguageIgoto. Generally,thisisthenonC++ language most people will recommend and for good reason. C# is a modernderivativeofC++,inthatitwasbasedonC++(andnotJavaascommonlyheld).

    Thepros?EXCELLENTstandardlibraries.ProbablythebestonanyplatformIveeverused.Sothingslikeworkingoverthenetwork,manipulatingstrings,loadingfiles,etcarebyfareasierthanC++. Oh, andLINQ, generics, anonymousmethods and various other new languagefeaturesareprettygreat.

    Its cons? Probably the biggest is, its tied to Microsoft and that makes many peopleuncomfortable. As a result, its best implementation is on MS platforms, although it isavailableonOS/X, iOS,AndroidandLinux,youdohave to jumpthrougha fewmorehoopsoutside of MSland. Next up, its garbage collected, meaning you dont implicitly allocatememory.Finally,insomeregards,itcanbeslowerthanC++,althoughIthinkthispointiswayoverblownthesedays.

    Learningdifficulty:medium

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 6/29

    Learningdifficulty:medium

    JavaJavaisatrickyonetowriteabout,becauseofmyC#bias.IusedJavabeforeC#camearound and I could see how it was more productive than C++ and appreciated theencompassing libraries, especially as I was moving over from C++ at a time the StandardTemplateLibrarywasanythingbutstandardthatsaid,sinceC#camealong,itfeelstomeasasuperiorlanguageinjustabouteveryway.

    Thepros?Theecosystemismassive,thetoolsandlibrarysupportarelegion.ThereareninewaysofdoingeverythinginJava,andthenumberoffreetools(Eclipse,NetBeans,Ant,etc)aretrulystaggering. Languagewise, itsmuchlikeC#,librariesaremuchmorecapablethanC++andthe languageismuchless likelytobiteyouintheass ifyoumakeaslightmistake.Also,ifyouaredoingAndroiddevelopment,welluntilveryrecently(withaddedC++support)itwastheonlygameintown.

    Thecons? Javajusthasthiswayofannoyingyou,ofgettinginyourwaybecauseitthinksitknows better than you. Parts of the language are kludgy, overly verbose and again justannoying. In recent years, it has been evolvingmuch less elegantly than C#, so the newerlanguagefeaturesseemlikehalfassedpoorlyimplementeduglystepchildrencomparedtoC#(and in some regards,C++ ). Also, Java is the languageof academics andenterprises and itshowssomanythingsaresooverwhelminglyOVERengineeredastodriveyouinsane,asIsaidearlier, thereareninewaysofdoingeverything,but5of thosewaysareoutdated,3areawfulandfiguringoutwhatthegoodchoiceis,isuptoyou.Finallygamelibraryselectionisprettylimited.

    Oh,andOracleownthemnowofallthetechcompaniesintheworldIwouldwantinchargeofmylanguageofchoice,OraclesureashellwouldntbethecompanyIwouldpick.Forpeoplethat thinkMicrosoftare thedeviltheydontknowOracle! Their throwingaround lawsuitsleft,rightandcenter(includingGoogle/Android)wouldnotmakemefeelgoodaboutthings.

    Learningdifficulty:medium(*)

    (*)figuringoutWHATtouse,fromthehundredsoflibraries,deprecatedfeatures,tools,etc..isoverwhelmingandisprobablygoingtobeasbigachallengeforanewdeveloperaslearningthelanguageitself

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 7/29

    VisualBasictobehonest,since.NET,thislanguageeffectivelydied.UsingVB6isfranklyjust toooutdated tobotherwith thesedays,which isabitofashame,as it filledaveryniceniche that hasnt completely been filled. Now, VB.net is basically C# with a VBish skinapplied.IamsureVB.netdeveloperswilldisagree,buttheyarewrong.

    DelphiwasatimeIwouldhighlyrecommendthislanguage,butthishaven'tprogressedwellforDelphi.Ironically,theguythatinventedC#wastheguybehindDelphi.Supportjustisntthere,whichisashameasthelanguageisveryfriendlytonewerdevelopers.

    LUA/Python/Ruby In all honesty, Ive only really dabbled with these 3 languages andwhileall3are(andcommerciallyhavebeen)goodlanguagesforembeddingwithinagame,only Python really has a really solid game development community built around it, so isprobablythebestrecommendationfornewdevelopers.All3languagesshoulddefinitelybeonyour radar. My experience is very limited in all regards, so I dont really feel comfortablemakingasuggestiononewayortheother.Ifyouareanadvocateofanyoftheselanguagesandwanttowriteasectiononthem,sendittomeforinclusion!

    EDIT: If youare interested inLua,be sure to checkoutBattleof theLuagameengines formoredetails.

    Onebigadvantagetoallthreeoftheselanguagesisyoucanprogramtheminteractively,whichmeanstypesomecodeandseearesult. Whenyouare just tryingto figurethingsout, thatsprettypowerful!Lateroninthispost,IwillmostlyjustcoverPython,themostpopularofthethree, especially in regards to game programming. There is also Iron Python which is animplementationofPythononthe.NETplatform,whichmeansyougetallthelibrariesavailabletoC#andVB.net.

    C++.NETOnthetopicof.NETlanguages,C++alsomadeaspecialversionofC++,withadditionalkeywordstomakeitcompatiblewith.NETlibrariesandamodethatmakesmemorymanagementautomatic.Thatsaid,itwasakindscrewyhackishimplementationandnobodyreallytooktoit,soyoucanprobablyignoreC++.NETcompletely.TheonlyrealusecaseIcanthinkofis,ifyouonlyknowC++syntaxandwanttodoGUIdevelopmentwithWinForms,thismaybethewaytogo.Thatsaid,thatsaprettydamnedminorusecase!

    JavaScript I dont know how this little language managed to fit into every niche, butdamnedif itdoesnt! MostpeoplethinkofJavaScriptasawebscriptinglanguageandeasilythatisitsmostcommonuse,butthislanguageendsupbeingusedjustabouteverywhere.Its

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 8/29

    thatisitsmostcommonuse,butthislanguageendsupbeingusedjustabouteverywhere.Itsworthlearning,asitisreallyeverywhere,andalthoughbeginninglifeasabitofahack,ithasprovenitselfcapableagainandagain.Notmyfavoritelanguagetoworkin,butnottheworseby a long shot! If a new programming paradigm comes along, you can bet a JavaScriptimplementationwillcomealongsoonerthenlater!GivenHTML5andWindows8,Javascriptisonlygoingtogetmorepopularinthefuture,althoughImnotreallysurethisisagoodthing.Javascriptisaprototypebasedlanguage. All told,Javascripthasprettygoodlibrarysupportwhenitcomestogames,andisoneofthelanguagesavailablewhenusingUnity.

    EDIT:IfyouareinterestedinJavaScript,besuretocheckoutthelistofJavaScriptgamedevlibraries as well as my Cocos2Dhtml tutorials. I also have a pair of JavaScript bookrecommendations.

    AssemblyIfyouasabeginnerpickassemblyinthisdayandage,youdidsomethingwrong,extremelywrong!Choosingassemblyasyourfirst languagemakesC++looklikeawonderfulchoice!Thatsaid,thisisaboutasclosetothemetalasyoucanreasonablyget.Inthisageofi7quadcoreprocessorsthough,gettingclosetothatmetalisaprettystupidthingtodo.AtsomepointAssemblymaybecomeimportanttoyou,butIhighlydoubtit. Untilitdoes,pretenditdoesntexist.

    TheRestIhopeIdidntmissyourlanguageofchoice,astheresObjectiveC,D,F#,CAML,Smalltalk,LISP,Perl,PHP,Haskel,Pascalandafewhundredotherlanguagesavailable.Manyofthemaredomainorplatformspecificlanguages,orhavefairlypoorgamelibrarysupport.ObjectiveCisgaininginpopularitybasedonitbeingthemainlanguageofiOSplatforms,butoutsidethatworldit isvirtuallyunknownandfranklyIhateit. Idontrecommendagainstanyoftheselanguages,butnonearereallywellsuitedorverypopularforgamedevelopment.

    ButImanartist,wheredoIstart?

    Inthatcase,youshouldprobablystarthere.Pickoutanapplicationandgowithit. Manyoftheprogramsonthatlisthavefree/demoversionsavailable.Also,theGFSlistofapplicationsusedismostlyfulloffreeapplicationsusedtocreategames.

    SoIhavethisgreatideaforanMMO

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 9/29

    Alright, back to being negative again. You cant create anMMO. You and 10 of your bestfriendscantcreateanMMO,unlessofcourseyour10friendsareallAlistdevelopersandeventhenfranklyyoustillcantaffordtocreateanMMO.Gotafewmilliondollars?No?Thendropit,anMMOisntthewaytogo.Now,somedayyoumaybeabletoworkonaWarcraftkiller,butasyourfirstprojectwell franklythats liketryingto findacureforcancer inyourhighschoolchemistryclass.Aimlower,muchmuchlower.

    Ok,Ivedecidedtogoaheadwith

    C++isthelanguageforme!

    Egads,youjustwontlistenwillyouallright,weallmakethismistakewhenwestartout.IfyouinsistongoingtheC++route,learnthelanguagefirst,usingthefollowingrecommendedtoolsandlibraries.

    Freely available resources for learning the language ( Books andTutorials)

    Microsoft'sgettingstartedwithC++pageincludingBeginnerHowDoI?videosMITC++Introductioncourseware.Theyhaveothermoreadvancedlessonsaswell.ABeginnersC++(1996,outdated,butfree)www.cplusplus.com is a surprisingly comprehensive site dedicated to C++. Thetutorialssectionisagoodplacetostart.

    Onceyougetabitmoreadvanced,checkout

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 10/29

    BruceEckel'sThinkinginC++2ndEdition

    Iwillfillthisareainovertime.Muchofthefreeresourcesareterrible,oroutdated.Ifyouhaveagoodsuggestion,emailmeorcommentbelowandIwilladdit.

    Recommendedbooks(Notfree)

    TheC++ProgrammingLanguage

    Thisisthebookbythelanguagecreatorhimself.Itisconsideredthelanguagebibleofsorts.Itmaynotbethebestbooktolearnon,butitisabookeveryC++programmershouldhaveontheirbookshelf.

    C++HowtoProgram

    Currentlyinits8thedition,thisisaprettygoodfirstbookforaprogrammertolearnwith.Itcovers pretty much all of the language features and even covers Boost libraries, which is avaluableaddition. Keepinmind,thisbook, likemost introductorytexts,doesnotcoverGUIprogrammingofanyform.

    C++WithoutFear:ABeginner'sGuideThatMakesYouFeelSmart(2ndEdition)

    This one I recommend with a caveat. It is probably the single best conversationalintroductory C++ texts out there. It is very approachable and the pacing is quite good.Nothing is implementedbefore its explainedwhich is verynice. That said, some thingsarewrongoroutdated,occasionallyteachyouTheCwayofdoingstuffinsteadoftheC++way.Finally,theauthorrecommendsDevC++,whichisreallyreallyreallybad.Thoseflawaside,ifyou find all other texts to dry, confusing or technical, youmaywant to check this one out.Again,noGUIcoverageandnoBoost,butmanyof thenewer languagefeaturesarecovered,plusitspendsacouplechaptersattheendimplementingmorefullsolutions,whichisagoodthing.

    BeginningC++ThroughGameProgramming3rdEdition

    Nodoubtyouhaveseenthis titleand inyour futurecareerasaC++developerANDagamedeveloper, this soundsaboutperfect. It isnt,but it isnotbad. Letsput thisout there rightaway,thiswontteachyouhowtoprogramgames,butwhatitwilldoisteachyoutoprogram

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 11/29

    away,thiswontteachyouhowtoprogramgames,butwhatitwilldoisteachyoutoprogramC++. AsanintroductiontoC++text, itsnotasgoodastheprevioustwobooks. Asagameprogrammingtextitsallbutuseless.SowhyamIrecommendingit?ItsadecentintroductiontoC++programmingthatusessimplegamesforallofthedemonstrations.So,insteadoffairlyabstractorcontrivedexamplesyouseeinothertexts,alltheexamplesaregamerelated. Forexample,pointersandreferencesaretaughtbycreatingaTicTacToegame.Manypeoplewillfindthisaheckofaloteasiertowraptheirheadaroundthanmanyexamplesinotherbooks.

    EffectiveC++

    Thisisnotabeginnertext.Thisisanoldtext,outdatedevenasitdoesntcoverthelatestC++standard. Heck, its 6 years old! So why am I recommending it? Simple, every good C++programmerownsthisbook.Onceyougraspthebasicsofthelanguage,buythisbookanditwillmakeyouamuchbetterC++programmer.Seriously.HopefullyScottisworkingona4theditionaswespeak.Onthebrightside,its6yearsoldsoyoushouldbeabletofinditcheaply.InadditiontoStroustrupsbook,thisistheC++bible.

    Tools

    Whenitcomestotools,thechoicesareprettyclearwithC++

    VisualC++Express2010MicrosoftsfreeC++compiler/IDECodeblocksIDEandMingWfreeC++compiler

    Of the two, Iwould recommendVisual C++personally, unless of course you arent runningWindows. There are a few other options, but they all require a bitmorework or installingplugins,butIwilllistthemforcompleteness

    KDevelopalinuxbasedIDE,heavilycopiedfromVisualStudioinstyleEclipseIDEforC++acrossplatform(Linux,Win,Mac)IDE,mainlyforJava,butsupportsC++XCodeApplesIDE,supportsC++butisobviouslyMacOSonlyNetbeansforC++NetBeansisanotherJavaIDEthatsupportsC++. ItsactuallysurprisinglynewuserfriendlybutnowthatOracleisincharge,expectthattoend!

    Well,thatsaboutit.IfyouareworkingonWindows,IseenoreasontouseanythingbutVisualC++personally.AnumberoftutorialsouttherewillrecommendDevC++DONTunderany

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 12/29

    C++personally.AnumberoftutorialsouttherewillrecommendDevC++DONTunderanycircumstancesuseDevC++, itsold,unsupported,buggyandhas little tonoadvantagesovertheotherchoices.Itwaspopularatthetimebecausebackthen,therewasnofreelyavailableC++IDE,timeshavechanged.

    Oh, and just to be thorough, there are also Emacs andVi(m) which are actually just reallypowerfultexteditorsthatyouthencallouttothelikesofGccortheMinGWcompiler.ImostlyjustmentiontheseforcompletenessasifIdidntsomeguywithabeardandplaidshirtwouldnodoubtscoldmeovertheomission.InnowaydoIrecommendanewdeveloperstartwithanyoftheseitems!

    OnelastpointIthinkshouldbemadehere,yourchoiceofIDEhasabsolutelynoaffectonhowcrossplatformyourcodeis!Code(properly)writteninVisualC++canbelatercompiledforMacOSandLinux,forexample.

    Gamingrelatedstuff

    So, you are here for game programming advice and all Ive talked about is C++, now Iwillrectifythat.Firstyouneedtodecideifyouareworkingin2Dor3D.Juststartingout,Ihighlyrecommend sticking to 2D for now ( or stick to console apps until you get the gist of thelanguage ), yetonceyoudecide tomake thegraphicalplunge, thereare3major ( anda fewthousand other! ) 2D graphic libraries out there. I know this sounds like a copout, but allthreeareequallygood,soyoucantreallymakeamistakehere.

    2DLibraries

    SDLSimpleDirectMediaLayer

    Itsbeginnerfriendly,simple(relatively),crossplatform,wellsupportedandisusedtomakecommerciallyshippingproducts(liketherecentlyreleaseDungeonsofDredmore).Ithandlesjustabouteveryaspectofcreatinga2Dgame,graphics,sound,loadingfiles,networkingyounameit.ItisverymuchaCbasedlibrary.YoucanuseitfromC++withouteffort,justdontexpectanyobjectorientedfeatures.

    Allegro

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 13/29

    This is the library ( and Fastgraf ) I started out usingmanymanymany years ago. It wasoriginallywrittenfortheAtariSTandIamsimplyflooredthatit isstillaroundandinactivedevelopment.Thatsaid,itwasgoodthenanditisgoodnow.Interestingtriviapoint,theguybehindAllegrowayback in theearly90s,wenton tobecomeoneof themainprogrammersbehindXNA. Anyways,thismuchlikeSDL,coversjustabouteverythingyouwouldneedfor2Dgameprogramming.AlsolikeSDL,itsverymuchaClibrary.

    SFMLSimpleandFastMediaLibrary

    Thenewkidontheblock,andfrankly,Ihavezeropersonalexperiencewiththislibrary.Likethe other two, it handles just about everything you would need to implement a 2D game.Unliketheothers,thisisanobjectorientedlibrary(C++).Aquicklookattheclassesanditlookslikeaverymodernandcleandesign.Onthatlevelalone,IwouldprobablygothisrouteifIwasstartingouttoday.Itiseventdriven,whichisaveryhandything(andsomethingAllegroismovingtowards),whichshouldmakeyourgamestructureeasiertoimplement.

    3DLibraries

    Ifyouare just learning,youprobablyshouldntbeworking in3Drightnow,yetherearetheprimarylibrariesinusetoday.

    OpenGL

    OriginallydevelopedbySiliconGraphicsintheearly90s,thisisthegranddaddyof3DAPIs.Itsbiggestadvantageisitscrossplatformnature,asOpenGLiseverywhere.Thisisespeciallytrue on mobile devices like Android and iPhone, which both implement a stripped downversion ofOpenGL calledOpenGLES. You can view the getting started guide here. If youpreferinbookformtheOpenGLProgrammingGuide(RedBook)haslongbeviewedasTheOpenGLBible,theonebookallOpenGLprogrammersshouldown.Thatsaid,inrecentyearsOpenGL has changed quite a bit and the old cruft and obsolete instructions havent beenpruned out of this book yet. The NeHe tutorials have long been the goto resource for newOpenGLdevelopers, although in someways they suffer the same problem as theRedBook,timewaitsfornodocs!

    DirectX

    This isMicrosofts primary game SDK ( Software Development Kit ) for creating games onWindowsandXboxusingC++ (notbe confusedwithXNA). UnlikeOpenGL,DirectXalso

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 14/29

    WindowsandXboxusingC++ (notbe confusedwithXNA). UnlikeOpenGL,DirectXalsosupportsInputandSound.Microsofthasprovidedsomefairlygoodtutorials.Onethingtobeawareof,DirectX10and11requireVistaorhigher,sonoXPsupport!Thatsaid,DirectXisnodoubt the most popular SDK to use for commercial Windows games. Beginning GameProgramming isprobably thebestbeginner friendlyDirectXbook,butkeep inmind,youdoneedtounderstandC++already!

    Ogre3D

    Ogre3Dsitsinaweirdspot.Itisnotafullgameengine,butitisnotlikeOpenGLorDirectXeither.InfactOGREusesboth.Ogreisa3Drenderingengine.WritteninverycleanobjectorientedC++,OgrehandlesanumberoftasksthatneitherDirectXorOpenGLdo,likeascenegraph(thedatastructureyourworldisstoredin),importersforalmostallmajor3Dmodelingapplications, landscapes, LOD ( level of detail ) support, etc. If you are using DirectX orOpenGL to createa3Dgame, theseareall thingsyouwouldhave towriteyourself. Ogre iscrossplatformandhasbeenusedtocreateanumberofpublishedgames. Thehaveaprettygoodmanualonline. Therearealsoabeginnerandaprobookavailable,neitherofwhich Ihavereadthough.

    OtherLibraries

    ODEOpenDynamicsEngine

    nVidiaPhysX

    Are two freely available physics engines for accurately modeling real world physics in yourgame.ODEisopensourcedaswell.ThereisalsoHavokwhichisincludedinUnreal(UDK),butitslicensingisntsostraightforward.

    Box2D

    Aphysicsenginefor2Dgames.Free,powerfulandquiteabiteasierthanworkingin3D.

    Boost

    BoostisthefutureofC++,10oftheboostlibrariesarealreadypartoftheC++standard,withmorecomingsoon.BoostlibrariesperformdozensofcommontasksandmakeupforagiantflawintheC++language(thestandardlibrariesarecrapcomparedtootherlanguages).Thatsaid,theyarenttheeasiesttolearnandevenhardertounderstand.ManyBoostprogrammers

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 15/29

    said,theyarenttheeasiesttolearnandevenhardertounderstand.ManyBoostprogrammersare 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 thelibraries.

    GameEngines

    Iwillcoverthisoffinadifferentpost,asEnginesarentreallytiedtoaparticularlanguage.Forexample,thepopularUnrealengine,isverymuchwrittenandprogrammableinC++,butalsocanbeprogrammed inUnrealScript. Unity isprimarilyC#based,butcanbeextendedwithC++andscriptingwithJavascriptandBoo. PandacanbescriptedinPythonbutcanalsobeprogrammedinC++.Enginesdontreallyfitinbylanguage.

    Stilltoomanychoices,tellmeexactlywhattodo!

    Alright,keepinmindthisisallentirelymyopinion,butasagamedeveloperlearningC++youshould:

    GoheretodownloadandinstallVisualC++Express.

    TaketheguidedtourthatwillintroduceyoutousingtheIDEandlanguage.

    At this point I would recommend buying a C++ book such as thisone. There are a ton ofresourcesontheweb,butmanyareoutdatedorwrongandthesheervolumeisoverwhelming.Havingatleastonegoodbeginnersguideisideal.

    Gothroughthatbookanddosomebasicexercise,createafewconsoleapplicationsandgetafeelforthelanguage.

    NowgoanddownloadSFML(VisualStudio2008)

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 16/29

    Congratulations,ifyougottothispoint,youarenowagameprogrammer!

    EDIT:This sitenowhasa completegame fromscratchusingSFML tutorial available. YouneedtohavethebasicsofC++down,but itwillhopefully teachyouquiteabit. It isagoodplacetogoonceyouverunthroughacoupleC++tutorialsorafewchaptersofabook.

    C#isthelanguageforme!

    TheC#sectionisaloteasiertorightthanC++,asitsanewerlanguage,therearefewertoolsandonelibrarydominatesthegameecosystem.

    Freely available resources for learning the language ( Books andTutorials)

    MSDNVisualC#DeveloperCenter

    One really nice thing about working with Microsoft technologies is Microsoft knowdocumentation! Thenumberoftutorialsandhowtovideostheymakeavailableisextremelyvast. Thislinkaloneshouldhaveeverythingyouneedtoknowtogetupandrunning.Theyalsohavemoreresources,includingthisintroductionvideoavailableattheBeginnerDeveloperLearningCenter. Once you are ready tomove on to XNA give this tutorial a shot. To behonest,theyprobablyprovideeverythingyouneedtosucceed.

    C#Essentials

    Afreeebook,coversthebasicsofC#prettywell.Abitdatedbutstillfree.NicelymanyofthechangestoC#overitsevolutionarecomplementarytotheoldways,sonotasmanywaysofdoingthingshavebeendeprecated.

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 17/29

    RobMiles'C#YellowBook

    AfreebookfromaprofessorattheUniversityofHullaboutlearningtoprogramusingC#.Itsactually pretty good and he updates annually. Very good first step for a C# developer thatdoesntwanttospendmoney.

    IntroductiontoProgrammingThroughGameDevelopmentUsingMicrosoftXNAGameStudio

    RobMilesalsomadethisebookavailableforfreedownloadaswell.ItisallaboutlearninghowtoprogrambycreatinggamesinXNA.PersonallyIthinkthisiskindaabadidea,butthepriceisright!Definitelygiveitashot,itisaverythoroughtextandifitworksforyou,youwillbeupanddoingthefunstuffatamuchquickerpace.Itdoescoverjustabouteverythingyouneedtoknowtoprogramafullfeatured2Dgame.

    GangofFourDesignPatterns

    Truth is, this site is probably not going to make a lick of sense for you starting out, butbookmarkitandcomebackeveryonceinawhile.Oneofthebestsitesondesignpatterns,anddesignpatternsareaverygoodthingtoknow.Theywillchangethewayyoucode,forthebetter.

    Recommendedbooks(Notfree)

    .C#ProgrammingLanguage4thEdition(CoveringC#4.0)

    Oneof theprimarywriters of thisbook is the language author. Just like inC++,withC# Irecommendthebookby the languagecreator. Unlike theC++equivalent, thisbook ismorebeginnerfriendlyalthoughstillcomprehensive.AsaC#developer,thisisprobablythebibleofC#books.UnlikeC++,C#haschangedextensivelyinashortperiodoftime,sobesureyougetacopycoveringversion4!

    HeadfirstC#2ndedition

    Thisoneisabitdifferent,asthenameimplies,itjustsortajumpsinanddocumentsasitgoes.Insteadofworkingonconsoleapplications,youareactuallydeveloprealGUIappsrightfromthestart.Forthosethatlearnbydoing,thisisanexcellentbook.Itisveryconversationalandeasytoread,althoughalittlechaoticinitsformatting(checkoutthepreviewandyouwillseewhat Imean! ). If this ishowyou learn, thisbookwill begodsend,but I know it isnot for

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 18/29

    what Imean! ). If this ishowyou learn, thisbookwill begodsend,but I know it isnot foreveryone!

    C#4InANutshell

    Ijustlovethisseriesofbooks.Thesebooksareveryconciseandcovertheentirelanguage,butcanalsomakeforausefulreferencewellafteryouvegotthehangofthings.Thedownsidetothisconcisenessis,thereisnotalotofhandholding,itcoversthelanguageonly(notalkoftheIDEforexample)andthereisnocontinuityofexamplestotieitalltogether.Itdescribesalanguage feature, gives an example and moves on. This may or may not work for you,especiallyifyouhavenopriorlanguageexperience.

    IlookedatanumberoflearnXNAprogrammingbookstoseeifanyofthemweresuitabletoanew developer including Learning XNA 4, Microsoft XNA Game Studio 4.0: LearnProgramming Now! and Beginning XNA Game Programming and none do a good job ofcoveringtheC#language. Myrecommendationistogetagraspofthe languagebasicsfromanothersourcebeforejumpingintoaXNAspecificbook.

    Tools

    Thisareashouldbeextremelystraightforward,astherearereallyonlytwoidealIDEsforC#development,VisualC#andMonodevelop. Thatsaid,Microsofthavemuddiedthewatersbylettingtheirmarketingdepartmentgetinvolved,soyouhaveVisualC#,XNAGameStudioandnowGameStudioisincludedaspartofWindowsPhoneDevelopmentToolsyeah,thatmakesatonofsensetometoo!Justtoaddtothestupidity,WindowsPhoneDevelopmentTools(justrollsoffthetongue)onlyworksonVistaandWindows7,soifyouarerunningWindowsXP,youneedtodownloadthestandaloneversion.

    So

    VisualC#/GameStudioinstructions

    IfyouarerunningWindows7orVista,downloadthisor ifyouare interested inrunning thenewestandbetaestdownloadthis.

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 19/29

    However,ifyouarerunningWindowsXPdownloadthis.(DirectLinktoEXE)

    MonoDevelop/SharpDevelopinstructions

    Finally, if you are running onnonMicrosoft platformor for some reason dontwant to useVisualC#,MonoDevelopistheIDEofchoice.(DownloadPage)

    ThereisalsoSharpDevelopifMonoDevelopisntforyou. (DownloadPage). It isWindowsonlyhowever.

    Onekeythingtonote,ifyouareworkingwithandwantfullsupportforXNA,youwillneedtouseGameStudio/WindowsPhoneDevelopmentTools.A

    Gamingrelatedstuff

    XNA

    Insteadofrepeatingthisoneinthe2Dand3Dlibrariessection,Illjustaddressitfirst.XNAiswellregardedandisseenasabigreasontouseC#andforgoodreason,itreallyisawonderfuldevelopmentenvironment. Atthemostbasiclevel,XNAisaC#friendlyversionofDirectX,butthatissellingitfartooshort.

    XNAhandlesmost of the common tasks for game development. 2D graphics, 3D graphics,audio,assetloadingandthecontentpipeline.Itisalsoahellofaloteasiertogetuptospeedon than OpenGL or DirectX. The downside is, it is supported onWindows, Xbox and ( asubset) onWindows Phone 7. A number of released games, including every Indy game onXbox,havebeenreleasedusingXNAtools.

    TherearehoweverprojectstoportXNAtootherplatformsorlikethisone.

    Formoredetailscheckitout.

    2DLibraries

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 20/29

    2DLibraries

    SDL.Net

    Its SDL, the C++ library, with C# bindings. Therefore it is capable of 2D graphics, sound,loadingfiles,fonts,etcjustlikeSDL.C#specificdocumentationcanbefoundhere.

    3DLibraries

    OpenTK

    OpenTKisawrapperaroundOpenGL(3dgraphics),OpenCL(allowscodetorunacrossCPUandGPUs)andOpenAL(audio).Ifyouwanttodocrossplatform3D,OpenTKisthewaytogo.

    SlimDX

    ThisisawrapperaroundallthingsDirectX9/11.So,ifforsomereasonyoudontwanttouseXNA,youcanusefullDirectX.Forabeginner,thereisprobablyverylittlereason,asXNAisafairbiteasiertouse.

    Tao

    TaobringsOpenGL(3DGraphics),OpenAL(audio),ODE(physics)andanumberofotherlibraries toC#.Sadly, itsmostlybeenabandonedsoOpenTKisprobablyabetterbetat thispoint.

    Axiom

    ThisisaportofOGRE3Dto.NET.Sadlyittoodoesntappeartobethatactiveanymore.

    OtherLibraries

    Box2D.NET

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 21/29

    Box2Dphysicslibrary,for.NET.Aprettyimpressive2Donlyphysicslibrary.

    BEPUPhysics

    Isafull3Dphysicslibraryfor.NETthatalsosupportXbox360andWindowsPhone7.InthedeveloperswordsItsfastandhasabunchofcoolfeatureslikeconstraints,terrain,staticandinstanced meshes, continuous collision detection, custom collision rules, vehicles, easymultithreading,yaddayaddayadda..

    Stilltoomanychoices,tellmeexactlywhattodo!

    Alright,duetoitsyouthandtheexcellenceofXNA,thisisaneasyonetowrite.

    Firstoff,goanddownloadthenewestXNAGamestudio.

    WatchsomeoftheMicrosofttrainingmaterials.

    Createafewconsoleapps,getafeelingforthelanguage.Itwouldbeaverygoodideatobuyagoodintroductorybookrightnowifyoucanaffordit,runthroughtheirexamples.

    NowitstimetogetyourfeetwetwithXNA.Runthroughthe2Dgametutorial.

    UseXNAtocreateallmannerofsimple2Dthen3Dgames.

    Congrats,youarenowagameprogrammer!

    Javaisthelanguageforme!

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 22/29

    Javaisthelanguageforme!

    Freely available resources for learning the language ( Books andTutorials)

    Oracle'sTutorialSite

    Sun ( and nowOracle ) put together a very comprehensive set of tutorials for learning thelanguage. Startwith thegetting started tutorials andgo from there. Youcandownload thewholewackofthemforofflinereadinghere.

    IBMTutorials

    IBM also has a huge list of Java tutorials available, running the gamut of subjects, some ofwhichwouldreallysurpriseyoucomingfrombigblue!Keepinginmind,IBMwasthesourceofEclipse,theyareprobablythesecondmostinvolvedcompanyintheJavaecosystem,asidefromOracle.Lotsoftheirtutorialsareveryenterpriseoriented,butyouwillfindmanythatareuseful.Hereistheirintroductorytutorial,butperhapscoolestofall,theyhaveatutorialbuiltaroundagameforteachingthelanguage!IBMreallyisaweirdbeast.

    ThinkingInJava3rdEdition

    Itsabitoutdated(2002)atthispointintime.Itishoweverabookthatisveryeasytoread,followingalongandwillhelpyoulearnthelanguage. Youwillneedotherresources,butthisbook isaverygoodguidedown thepathof learningJava. Plus thewhole free thing is verynice!

    Recommendedbooks(Notfree)

    TheJavaProgrammingLanguage(ForthEdition)

    In keepingwithmy trend of recommending books by the language creator, this book is coauthoredbyJamesGosling.ItisacomprehensiveandrelativelybeginnerfriendlyintroductiontotheJavaprogramminglanguage.Unfortunately,itisgettingabitold,andonlycoversupto

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 23/29

    totheJavaprogramminglanguage.Unfortunately,itisgettingabitold,andonlycoversuptoJ2SE 5, while J2SE 6 is the most current release. That said, this shouldnt be much of ahandicap.

    HeadFirstJava

    Thisbook isaneasyread, incrediblyeasy. DareIsay it, it isactuallykindof fun. IalreadyknewJava toadegreeanddidnt reallyneeda beginnersbook,but Inoticed thisonewasalwaystrendinginSafaristop10list(outofover14Kbooks!)andcouldntfigureoutwhysoIgaveitaread. Itwasagenuinelyamusingbooktoread, itdidaverygoodjobofgettingthetechnicalinformationacrossinawaythatdidntfeelsodryandstuffylikemanytextsdo. Itmaynotbeyourstyle,butyoushoulddefinitelycheck itout! Amazonoffersa look insidepreview,andIsuggestyoudo.

    JavaHowToProgram9thEdition

    AVERYcomprehensive introductiontoJavaatawhopping1500pages, italsocomeswithawhoppingpricetag.Itishoweverthetextofchoiceformanyjavacoursesanditcoversprettymuchallofthelanguageaspects,includingmanycommonlibrariesandframeworks,whichtoyouasagameprogrammermaynotmatter.Againthough,thepricetagisakickintheteeth.

    EffectiveJava

    Thisisnotabeginnersbook,inthatitwontteachyouthelanguagebasics.Thisbook,handsdown, will make you a better Java programmer. Once youve mastered the basics of thelanguage,pickthisup!

    IsurewishIhadthisbooktenyearsago.SomemightthinkthatIdontneedanyJavabooks,butIneedthisone.

    Whosaid thataboutEffectiveJava? JamesGoslingthe languagecreator! I simplycannotthinkofhigherpraise.

    Tools

    This is an areawhere Java has always got it right, tools. There over the years have been anumberofgreatIDEsforJava,butthreehavereallyjumpedtotheforefrontandfortunatelyall3areavailablefreely.

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 24/29

    JavaSDK

    WhendevelopinginJava,yourfirststepistoinstalltheSDK(softwaredevelopmentkit).InsomecasesitmaybeincludedinyourIDEsinstall,butit issafesttostarthere. JustlikeallthingsJavatherearebewilderingnumberofoptionsandflavors.ThereisJavaSE(standardedition),EE(EnterpriseEdition),ME(MicroEdition),Embeddedaswellasvariousversionsforveryspecificdevicedevicesandprofiles.Hell,eventheJavausedforAndroiddevelopmentis completelydifferent! (And frankly isnt exactly Java,but thatsneitherherenor there ).Long story short though, unless you know a reason not to, what you want is Java SEDevelopmentKit7,atleastasofwritingitis.YouwillalsoseethisreferredtoastheJDKorasJ2SEonoccasionbecause,wellitsJava.Youwillstartnoticingatrendverysoon!

    Eclipse

    OriginallydevelopedbyIBM,thenowopensourceEclipseisthemostpopularJavaIDEinusetoday. Availableacrossmanyplatformsand sportingapluggableUI,Eclipsehaseverythingand thekitchen sink for features. Iwould say it is themost capableof the IDEsbuton thesame token, it is also themost confusing. If you areworkingonAndroiddevelopment it isGoogles preferred environment, so thats where the native tools are for authoring Androidapps. Thatsaid,IrecentlyworkedonanAndroidappandIHATEDtheexperience. Eclipsekeptfoulingupmyprojectsagainandagainandagain,ifIwasanewdeveloperImighthavequit in frustration! Get toknowthecleanparameter,youaregoing touse ita lot. Inallhonesty, for a newdeveloperwho isnt doingAndroidwork, stay away fromEclipse to startwouldbemyadvice. IfyoumustuseEclipse,besurenot togowild installingpluginsunlessyouabsolutelyneed them! Even figuringoutwhichversionofEclipse todownloadcanbeadauntingtask!Ifyoudontknow,downloadthisversion.

    Netbeans

    InthatspecialsortofwaythatJavahasofmakingthingsconfusingashell,NetbeansisboththenameofanIDEandthenameofaplatformfordevelopingSwingapplications.InthiscasewearetalkingabouttheIDE.Originallystartedasastudentproject(in96!),Sunpurchasedand open sourced it in 99. Since then, Sun (and now Oracle) have made continuous newreleases.It,likeEclipse,supportspluginsalthoughnowherenearasextensive(orannoying!).Thatsaid,itjustworks.ForanewdeveloperthisistheoneIrecommendstartingwith.AgainlikeEclipse,therearemanydifferentversionsandifyouchoosethewrongoneitinstallsaTONof crap youdontneedandprobablydontwant ( likewebanddatabase servers! ). On thisdownload page, unless you have a very good reason otherwise, its the JavaSE version youwant. ** I should note, you can do Android development using NetBeans, its just not

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 25/29

    supportedordocumentedbyGoogle.

    IntelliJIDEA

    ThisincrediblypopularIDE,welltobecompletelyhonest,Ihavealmostnoexperiencewith.See, itusedtocostmoneyandEclipse/Netbeanswerealwaysgoodenough. Thatsaid, inaworldfulloffreetools,peoplewerestillwillingtopayforIntelliJIDEA,thatsayssomething!Now though, they have a completely free edition! Again, I have no direct experience withIntelliJbeyondreading thewebsite,butcometime formynextJavaproject, Iwilldefinitelycheckitout.

    Gamingrelatedstuff

    2DLibraries

    Slick

    Ibelieve this is themost commonlyused2Dgame libraryonJava thesedays. It isbuiltonlwjgl ( details below ) and uses OpenGL or Java2D for fast 2D rendering. Additionally itsupports fonts, sound, input and image loading. There is also support for spritesheets,tilemapsand2Dcollisiondetection,allverycommonrequirementsincreatinga2Dgame.Thetutorialsevenwalkyouthroughcreatingacompletegame.Averycleanandbeginnerfriendlylibrary.

    LibGDX

    This libraryhandlesnotonlygraphics,but sound, filehandling, loggingand input. YoucanalsocreateAndroidappswithveryminimalcodechanges. Likeslick ituses lwjgl,aswellasjogl behind the scenes. The design seems remarkably clean, but the documentation is a bitlacking.

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 26/29

    Java2D

    ThisisJavasstandard2Ddrawinglibrary.Iamjustmentioningitforcompleteness,asIseenoreasontouseitoverSlickorLibGDX.

    3DLibraries

    Jogamp/jogl

    TheseprovideJavalanguagebindingsforOpenGL,OpenCL,OpenALandOpenMAXlibraries.Thiscanprovideyouwithlowlevelaccesstoallyourgraphicandaudioneeds.AdditionallyitcanworkwithJava2D,SwingandAWT.Atutorialforgettingstartedisavailablehere.Jogampis completely up to date with the latest OpenGL implementation and is the underlyingtechnologyinmanyhigherlevelJavagraphicslibraries.

    lwjglLightweightJavaGameLibrary

    Muchlikejogl,lwjglisalibrarybuiltontopofOpenGLandOpenAL.Additionallyitsupportsgamecontrollers likegamepadsandsteeringwheels. Ithasbeenused tomakeanumberofgamesandistheunderlyingtechnologypoweringthejMonkeyEngine.

    jMonkeyEngine

    Ok,itsnottechnicallyalibrary,itsafullgameengine.Whatdoesthatmean?Wellinsteadofaccomplishingonetask,itaccomplishesallthevarioustasksyouneedtocreateagame(andasjust mentioned, uses the lwjgl library to do it ). So in addition to graphics and sound, itprovidesafullscenegraph,meshandgraphicsimportingmethods,aGUI,networkinglibraryandmuchmore.Ifyouareplanningtoworkona3DgameonJava,starthere.Theresagoodselectionoftutorialsavailabletogetyoustarted.

    OtherLibraries

    jBullet/jbox2D

    ThepopularBullet3DandBox2DphysicslibrariesalsohaveJavaimplementations.

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 27/29

    Stilltoomanychoices,tellmeexactlywhattodo!

    Ok,firststepistodownloadandinstalltheJavatools.

    Nextup,goaheadandgetNetBeansandinstallit.

    NowdownloadandstartreadingThinkinginJava,givingsilentthankstoBruceEckelforhisgenerosity.Ifyoucantfollowthisbook,orneedaprintone,considerpurchasingHeadFirstJava.

    Runthroughthefirstfewchapters,dotheexamplesandlearnthebasicsofthelanguage.

    Onceyougraspthelanguagebasics,downloadandinstallSlick.

    Runthroughthe"Spiegel"tutorial.

    At this point, you should probably be capable of creating your own 2D games. If you areinterestedin3Dprogramming,considercheckingoutthejMonkeyEngine.

    Finally, go out and get Effective Java and read it, twice. It will make you a better Javaprogrammer.

    Congratulations,ifyougottothispoint,youarenowagameprogrammer!

    Pythonisthelanguageforme!

    Alright, this section is totally getting the shaft. Why? Frankly because I dont really knowPythonallthatwellanddontfeelcomfortablegivingadviceonasubjectIamnoteducatedon!

    So,insteadIamgoingtogiveanumberoflinksthatwillbeofuse.

    First,youneedtodownloadandinstallPythonitself.Ifyoudontknowwhichtopick,gowith

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 28/29

    First,youneedtodownloadandinstallPythonitself.Ifyoudontknowwhichtopick,gowithPython2.7.

    Now, picking an IDE out for Python is a right confusing task. If you follow that threads(incrediblybad)adviceof choosingVimorEmacs, Iwillpersonally come toyourhouseandsmackyou!Thatsaid,aneasyalternativedoesntspringtomind.PersonallyifIwasworkingwith Python today I would use Eclipse with the PyDev plugin. That said, I am not reallycomfortablerecommendingthattoanewdeveloper.Komodoeditisperhapsasgooda(free)choiceasanytostartwith,butitdoesnotsupportintegrateddebugging.

    NowthatthemessybusinessofchoosinganIDEisalloverwiththingsgetmucheasier.Thereisonedominant2DgamelibraryandthatisthePyGamewhichmayjustbethemostnewuserfriendly 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 powerfulengine that has been used to create commercial games. Again, like PyGame, it handleseverythingyoucouldpossiblyneedtocreateafull3Dgame.

    There are even a couple free books like Dive Into Python 3 and A Byte of Python ( goodbeginner text ).There is also a freelydownloadablebook InventYourOwnComputerGameWithPython.

    ThemostimportantpieceofadviceIcangiveyou,dont letpeopleconvinceyouthatPythonisntareallanguage.Ithasbeenusedinanumberofshipping,highqualitygamesandwillcontinuetobeusedassuch.

  • 1/29/2015 iReader

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx 29/29

    Beginner,Programming,C#,CPP,Java

    Nowwhat?

    So,youvepickedalanguage,thelibrariesyouwanttouseandnowyouneedto,youknowdosomething.Thisisalistofsuggestedprojectsforanewdeveloperinterestedingames,in(fullymyopinion)orderofdifficulty.Iamalwaysopentonewsuggestionshere,sosendthemin!Also,ifyouwanttosharetheresultsofyourefforts,letmeknowandIwillmakethatavailabletoo!

    andeverythingelse!

    Ifyouarelookingatgettinginto3Ddevelopmentcheckthislistof3Denginestogetstarted.Ifyouarestrugglingwiththeartsideoftheequation,besuretocheckoutAprogrammer'sguidetocreatingartforyourgame.

    Goodluckwithyourgamedevelopmentcareer!

    Programming

    www.gamefromscratch.com

    http://www.gamefromscratch.com/post/2011/08/04/Iwanttobeagamedeveloper.aspx

    http://goo.gl/ffgS