One of the topics that worry new-ish game developers – including developers that have just finished their first game or two – is which programming language, library, or platform is the best one to choose.
This is related to a fear that learning the wrong one may keep a game from coming out well, or make it too hard to reach players easily, or could even involve developing skills and concepts that will be a dead end, not transferring productively later to future tools and projects.
The first programming language and development environment that you learn will probably not be the last one you use. Every five years or so there are major shifts in videogame platforms, tools, audience proportions, and – though not generally relevant at first in early projects – business models (which definitely affect their design!).
Fortunately there are always patterns that can be carried forward. Troubleshooting technical errors has a certain process. Many common programming languages share structural similarities. No matter what your means of implementation you’ll always be up against design challenges that are related to but separate from the code (that is, figuring out what’s worth doing, apart from figuring out how to do it).
My programming languages and libraries backstory, to keep it short, went something like: C, assembly, C++, Allegro, Java, XNA, SDL, OpenGL, DirectX, Unreal engine, ActionScript 3, Flex, PlayCrafter, Objective-C, Cocos2D, Processing, HTML5, PHP/SQL, back to ActionScript 3, and most recently: Unity.
Will it stay at Unity forever? Very unlikely. It’s a really excellent development tool, with all kinds of advantages, but over time for a myriad of reasons these things have a way of changing. As game developers we have to be ready to adapt.
This is totally normal! Developers that get stuck on a particular platform or technology, afraid or unwilling to learn new technologies, tend to fall behind and out of active development.
More importantly, everyone’s path tends to be different. Some people start with RPG Maker. Some people start with BASIC. The first options that applied ten years ago may well be different than the options available now. My point is that the path of learning programming languages meanders all over the place. For comparison, and as supporting evidence, I recently asked HobbyGameDev’s Twitter followers, “Which programming languages, libraries, and development environments do you know? (in the order learned, or by recency of use, oldest first)”
“Which programming languages, libraries, and development environments do you know? (in the order learned, or by recency of use, oldest first)”
As with my previous Twitter community post, I’ve included their handles with their responses. Feel free of course to follow some of these fine folks, all of whom are (like me!) your peers in contemporary videogame development:
Brendan McGuire @BreadmanMcG: Learned: HTML, ActionScript2.0 & Flash, C, Visual Studio, C++, DX9, OpenGL, XCode, Objective-C
DemiGoth @DemiGoth: BASIC, Pascal, PHP/MySQL, C#. But basically I can master ANY language in a matter of days if I have a good reference around.
Matthew DeLucas @MattrifiedGames: Visual Basic, Flash, GML / GameMaker, XNA / C#, Unity…I feel there is something in there…
Steven Hoskins @sahoskins1: C#.net, Silverlight (I know…), XNA, Java (& android Java), Unity (C# script). In order of recency of use.
Chance Millar @ValeourM: Learned (first to last): VisualStudio/VB.net, C++, SFML, Eclipse/Java, Allegro, Android, libGDX, Unity/C#/Mono, DirectX/OpenGL
b5cully @b5cully: Languages: Pascal, Java, Java Swing, JMonkeyEngine, C
Razberry Ranid @Razberryranid: Some Basic, Some C and learning Processing now.
Chirimoya @ChirimoyaGames: DIV2 (dead), AS2, C, Java (ew). Currently using Lua+Löve
That One Fruckert @Fruckert: Learned: Game Maker, Python/PyGame, C# with XNA and Monogame. Some point in there is Ogre, but I never really pursued it.
Lazarus 2.0 @LazarusRock: VB, C, C#, Java, GML (Game Maker), Unity
Archgamist @Archgamist: CP/M Basic, CBM Basic, Tehobasic, Amos Basic, Turbo Pascal, C++, Java, Lingo, ActionScript, Object Pascal and finally C#
Metaldemon @MeTaLDeMoN1: C#, VS2010, XNA, VS2012, OpenTK, Pencil.Gaming, Netbeans, Eclipse, IntelliJ, MonoDevelop.
John Ayliff @johnayliff: I can’t remember the full list but it starts with Commodore 64 Basic and ends with Unity.
Nick G. @NicholasGolden: c#,Lua, Js
Logan Flood @lowgunshogun: C, C++… DirectX 9.0, OpenGL… Visual Studio 2008, 2010, 2012
Saša Barišić @cartman300: Pascal, Visual Basic, Forth, Lua, C++, C, C#… As for dev env, I use Visual Studio.
What variety! There are certainly some patterns. C and its variants are a part of many people’s paths. We’ve all got some languages that we’ve only dabbled in, or only used while learning, or maybe just needed to pick up to help with a project that we weren’t the main developer on.
The main pattern: programmers over time pick up a variety of platforms. Technology changes, games change, gamers change, and as developers we change to keep up with it.
Learning a new programming language isn’t nearly as daunting or as hard as, say, learning a new language. The vocabularies are tiny. The grammar is almost all pretty similar. There are a few key differences to learn, some strengths to figure out how to use, and some language-specific quirks or issues to learn how to work around.
Nothing to intimidated by.
Not long ago I asked another related question, “How did you get started in game development? Programming classes? Using a tool? Friend’s help? Self-taught from books or sites (which ones)?”
“How did you get started in game development? Programming classes? Using a tool? Friend’s help? Self-taught from books or sites (which ones)?”
Though this is of course not quite the same prompt as the previous one, many of the answers similarly demonstrate that the platform, programming language, or environment that people started with didn’t determine their future path. Keep on learning. Just like these developers (some of whom started very young, some of whom started much more recently, but we’re all in the same boat!):
Josh Singer @joshuabsinger: started aged 9, learned BASIC along with my Dad on the ZX Spectrum. He wanted to run tax calculations, I wanted to make games!
Lazarus 2.0 @LazarusRock: Taught myself Applesoft BASIC on the Apple IIc and the rest is history. Anyone remember NIBBLE??
Jose Lema @tankete: AppleSoft Basic on Apple II+ as kid. Entered (and won) Maxis contest with Klik & Play as teen. 25 year hiatus. LÖVE w/ kids (:
Ben Burns @almostgames Hah! I also used Klik and Play back in the day, had a shareware/demo version disc off the front of a magazine.
James Eggs Shepherd @JamesOfJames: ordered Klik & Play, the precursor to GameMaker, in 1996 from Scholastic book fair, also started on a Packard Bell!
Pixel Cows @pixel_cows: Older brother got me in #gamedev when I was 10, I teached my cousin when he was 10. Now he’s the programmer. Smart investment!
Jean-Francois Trudel @Jeff_Nacht: We’re using @unity3d at the moment, with lots of tutorials. Also reading books and articles on game development. Friend and I decided, after 30 years each of playing games, and years of talking about them, we should do something.
Sanjana @kungfutweeter: just getting started with game dev and I’m using unity 3d YouTube tuts. Also taking a coursera course on game dev with C#.
Matt Martin @cainrod: your site helped me start my first project and gave me the confidence to keep trying new ideas.
Jonathan Bennetts @JoffCom: like most people Unreal and Counter Strike Maps. Then Game Maker / RPG Maker / FPS Creator then Flash / XNA to UDK and Unity.
Joshua Waring @Joshhua5: Self taught, because classes were too slow.
Elijah Whitehouse @Defective14: I went to a college in Florida after I got out of the military in 2011. Early 2012 I moved to LA and graduated back in Nov.
Gareth Wilcock @Gazza_N: I was 12. I wanted to make games. My dad gave me some BASIC manuals he had. It was all downhill from there.
Mike Desjardins @ZeroLogics: I did an interview with a developer a while back and he said “The best way to start is to just try it”
R.Jaime Smith @RJaimeSmith: All started with level design in Age of Empires…
Sam Atkins @AtkinsSJ Self-taught. Found a naff tool, The 3D Game Maker, in a shop when I was teenager. Later GameMaker, now ‘proper’ languages.
Mike Desjardins @ZeroLogics: I’ve always wanted to make a game but thought it was too hard. One day I downloaded Unity3D and started tinkering. That’s it!
Zuri @thaboundlezz: Self-taught (& still learning) from random Youtube videos on how to use #3dsmax & #unity3d
Tony Stark @TonyIronStark: self taught using game maker when at junior high… Now I’m in college programing and using unity
(Given Unity’s present popularity, if it’s a platform you’d like to get started on or experiment with changing over to, I’ve got a free 1 hour video crash course on Unity that many folks have used to get some quick traction and momentum!)
For more thoughts about programming from the community of game developers on Twitter, check out Programming Language Preferences and Tips from Readers and Twitter Followers.
Learn and practice team game development with Gamkedo Club.
Membership worldwide. Professional support. Proven process.
Subscribe by e-mail to receive weekly updates with Gamkedo.Community interviews and YouTube training videos for game developers!