A presentation by Karl Schmidt from the Canadian Games Conference 2011, with advice on how to prepare and enter the game industry as a programmer, what to expect, and resources to help get started.
So You Want To Be A Game Programmer - CGC2011 Panel Presentation by Karl Schmidt
1. So you want to be a game programmer?
Karl Schmidt
karl@karlschmidt.net
Video of presentation:
http://www.youtube.com/watch?
v=0kN5XIihh1Q
Canadian Games Conference 2011
2. Who am I?
• Modding
• Education
• Career
Canadian Games Conference 2011
3. Obvious Stuff
• C/C++
• Somewhat obvious:
• Lua, Python, C#, etc
• Opinion: Degree or college almost always best
choice
• So important: Co-op and internships
Canadian Games Conference 2011
4. Not as Obvious
• SCM
• Perforce, SVN, CVS, GIT
• Offline asset pipelines
• AGILE (SCRUM, XP, etc)
• Learning
• Amazing amounts of resources
Canadian Games Conference 2011
5. Not Obvious (cont)
• Specializations
• Industry changes/diversity
• Mobile, Facebook, Flash, XNA, Windows 7 Mobile, etc
• Programming specific: Many-core, memory latency problem
• Career management
• Socializing
Canadian Games Conference 2011
6. Skills
• Time estimation
• Problem-solving
• Bug-fixing/Debugging
• Code reviews
• Working with other disciplines
• Low-level, usability
Canadian Games Conference 2011
8. Resources (cont)
• Developer Slides
• Blogs (so you want to be a graphics programmer? AltDevBlogADay)
• Developers directly
• Free tools (Visual Studio, gcc, etc)
• Demoscene
Big list of resources: karlschmidt.net/CGC2011
Canadian Games Conference 2011
9. Vancouver
• All sorts of companies:
www.techvibes.com/blog/biggest-video-game-
companies-in-bc-2011-edition-2011-01-14
• Other social game companies such as DES Games,
and more hidden away
Canadian Games Conference 2011
10. So you want to be a game programmer?
Any questions?
Karl Schmidt
karl@karlschmidt.net
twitter.com/IonPulse
Canadian Games Conference 2011
Editor's Notes
Quake 2 mini-mods, learned toolset, did a total conversion Quake 3 wrote coding tutorials BSc at SFU Lots of game projects for courses Programmer at Relic, first interned in 2006 Worked on Company of Heroes, COH: Opposing Fronts, Dawn of War 2 + 2 expansions, working on Space Marine
Interview tips: don’t oversell C++ knowledge, use const, references appropriately – but also know your audience Scripting languages are good if you are into design I was self-taught before post-secondary, missing some fundamentals (math, low-level hardware, database stuff) But also for meeting other like-minded people, as well as others like artists!
If you come with SCM skills already that is a HUGE bonus – all are freely available, try them all out! My first task was evaluating asset pipelines, tools is often a starting point for juniors SCRUM started at Relic when I joined, lots of other studios use agile project management – learn about it ahead of time Admit what you don’t know, you don’t want to waste anyone’s time, so ask for help when needed, but try to learn enough so you aren’t completely relying on everyone else Resources. Tons of them available. I didn’t even realize all of them until I started in the industry and found out from other people
Do you want to focus on graphics? Be a generalist? Like UI, AI, some other acronym? Industry is always changing, seemingly now more than ever # cores is going up, memory latency going up Be your own salesman! Self-manage to impress your manager Take your ego out of the equation, I’ve implemented features that got cut, tried optimizations that made things slower, it happens, it’s life. Programmers are stereotypically anti-social Socialize! Don’t skip out on company events! Lunch! Etc! I still have trouble with this myself People migrate to other studios, start studios – when you develop relationships now, then you ‘know’ people at lots of studios later on in your career!
Start estimating time for tasks NOW, for self projects In general be good at problem-solving, trying different approaches – googling for the solution every time is NOT a good approach Fixing things without breaking others, fully understanding code and systems Debugging – knowing how to use Visual Studio, GDB, various debugging techniques – I’m still learning about this too! Ask other programmers, they know! Ask ask ask! (Hardware breakpoints, conditional breakpoints, etc) You’re going to work with other disciplines, producers, designers, artists – they won’t usually know the same terminology as you, and in most cases they are going to be clients of your work – using systems or tools you create. So keep these things in mind, they can even teach you a few things
Make mods for games! Easy way to try out game concepts, see shipped code, use already-made assets, learn tools Source, id Tech 1/2/3/4, Unreal Open-source engines Notably OGRE3D, lots of physics ones, Irrlicht, Panda3D Platforms, learn the ins and outs of various platforms, hardware-specific stuff, some PS2 development is possible Books! I’ll link to my list later, lots of good game books (lots of bad too), game programming gems series, various gems series Twitter – Lots of devs on twitter, discussing ideas, you can ask questions, etc
GDC and other events happen annually, slides are posted – read and learn from them! Companies also ‘publish papers’, Valve, Crytek, Insomniac do this Developers have blogs, lots and lots of these, eventually I will be there too AltDevBlogADay Developers directly – they may email back! John Carmack responded to me when I was in high school (on twitter he rarely replies to people however) Free tools! Lots of free compilers and other tools available now, especially to students/indies (Havok, Visual Studio, 3D modeling suites) – I paid ~$180 for VC6 in high school
Things have changed a little since the article was published, some closers/downsizing, but MS has new studio, always start-ups … starting up