i want to be a game developer
DESCRIPTION
nbkbjkTRANSCRIPT
-
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