1 of 36

GameDev Talk

Getting into the Industry

Samantha Difeo & Michael Sukkarieh

2 of 36

Timeline

  • Game development related courses at McGill
  • Where to get experience
  • Resume tips & tricks
  • Game dev vs big tech interviews
  • Interview questions and tips

3 of 36

What is GameDev McGill?

  • GameDev McGill is the game development club at McGill
    • We host McGame Jam, a 48-hour hackathon where you make a game based on a theme
    • Members have access to equipment and resources to help make games
    • Sponsored by Ubisoft and EA
  • Check us out on our public Facebook: GameDev McGill page & gamedevmcgill.ca

4 of 36

Introduction

Samantha Difeo

  • U3 Mathematics and Computer Science with a focus in Computer Games
  • Lead Programmer of GameDev McGill
  • Game industry experience
    • Gameplay Programmer Intern @ Square Enix Montreal

5 of 36

Specialized McGill Classes

  • Comp 557: Fundamentals of Computer Graphics
  • ESCE 446/546: Image Synthesis
  • Comp 521: Modern Computer Games
  • Comp 361: Software Engineer Project
  • Comp 322: Introduction to C++

6 of 36

Aside: some of the information is opinionated and bias, but I try to add as many facts as possible. McGill is also not the only school around, check out other courses in Concordia and elsewhere (if you speak French).

7 of 36

Comp 557 / ESCE 446/546 : Graphics Courses

  • Either Fundamentals of Computer Graphics or Image Synthesis
  • Very specialized for those interested in Graphics
  • 557 is fundamentals, including the graphics pipeline
    • Not practical knowledge => will not get you a job in graphics, but helps for grad school and understanding the basics
  • 446 goes over modern photo realistic rendering technology
    • A lot of theory, but also has a lot of very practical assignments
    • Once the class is finished, you will have built a ray tracer

8 of 36

Comp 521: Modern Computer Games

Overview:

  • Goes over common concepts in game programming with applied assignments in Unity and C#
  • Great section on Game AI
    • algorithms and tools such as A* path finding & behavior trees
  • Tad bit of design and narration

Comments:

  • More for grad students than for industry
  • Learn the basics to Unity before taking the class
  • Assignments are great! (add to your resume)
  • Does not mention industry standards often
    • especially does not reference newer games or latest tech
  • Does NOT go into detail on multiplayer

Assignment 2: Fall 2019

9 of 36

Comp 361: Software Engineer Project

Overview:

  • Usually taught by Professor Kienzle, a year long project course
  • Teams of ~6 programmers create either a 2D or 3D game based off of a board game

Comments:

  • First semester is only UML diagrams
  • It is a lot of work in the second semester
  • You will do networking! It looks great on resumes
    • … but you will not be taught networking, so hits like a tank
  • Nice finished side project, highly recommend taking it

10 of 36

Comp 322: Introduction to C++

Overview:

  • Teaches C++ assuming a little Java and/or C knowledge, but goes over OOP and pointers slowly

Comments:

  • If you have Chad, he is super nice
  • Bird class, no final, 1 credit, less intensive version of Comp 202, but for C++
  • Best to learn C++ on your own
    • Although Unreal Engine’s C++ is a struggle, there is not much documentation
  • Does not mention Vectors nor networking uses or game development

Or learn online:

https://www.geeksforgeeks.org/introduction-to-c-programming-language/�https://www.learncpp.com/

11 of 36

General helpful McGill classes

  • Comp 303: Software Design
  • Math 133: Linear Algebra and Geometry

12 of 36

Comp 303: Software Design

Overview:

  • Learn best practices and important design decisions as a developer. This includes correct syntax, encapsulation, design patterns, etc

Comments

  • A requirement for computer science
  • I advise taking it as early as you can!
    • It helps you improve your coding for all classes / parts of computer science
  • The last material is design patterns, these are common interview questions

Cannot take it yet? Read all of this:

https://gameprogrammingpatterns.com/contents.html

13 of 36

Math 133:

Linear Algebra

and Geometry

Comments:

  • Math 232 is proof heavy. It is usually students first experience with a tough math class
  • For game development:
    • Change of basis formula (232)
    • Vector & Matrix math (133)

14 of 36

Linear Algebra Example

Pos: (0,1.5,0)

Pos: (6,2,-0.5)

15 of 36

Linear Algebra Example:

Ray Sphere Intersection

Ray:

x = x0 + at

y = y0 + bt

z = z0 + ct

Sphere:

(x-x1)2 + (y-y1)2 + (z-z1)2 = r2

Solve for t:

  1. t ∉ R ⇒ no intersection [√(b2 - 4ac)]
  2. Plug t into the ray equations above

Substitute in the ray equations for x,y,z

⇒ (x0 + at - x1)2 + (y0 + bt - y1)2 + (z0 + ct - z1)2 = r2

Direction vector (a,b,c)

Origin (x0,y0,z0)

Center (x1,y1z1)

Radius r

16 of 36

General Information to Learn

Things to know

  • Basics of threading, basics of networking, design patterns, high school level physics, linear algebra, raycasting, collision detection, OOP, concept of components & actors/game objects, character movement, etc

Things not to worry about

  • Probability, statistics, calculus, numerical analysis
  • You are not expected to know a ton about AI as an intern, but it helps
  • NP-Complete/Dynamic/Recursive sort of questions

17 of 36

Where to get experience

18 of 36

School Experience

Game Jams

  • Many coming up!
  • They usually help assign teams if you do not have one
  • GameDev McGill has our yearly McGame Jam (just happened though)
  • The club also has monthly game jams!

Side Project

  • Focus on something you want to learn, not a general project.
  • Tips: Keep it in scope, ie NO RPGs, ignore multiplayer unless that is your focus, simple art, and puzzle games are super hard to make

Art

  • Start creating 3D assets!
    • focus on a specialty, not a general overview. (ex: character/animation, OR environment art OR VFX)

Design

  • Hardest of the bunch to dive into, we have no classes on it. See Concordia's new design class made in partner with Ubisoft.

Ubisoft Game Lab Competition

19 of 36

Community Experience

  • Pixelles (a women in game dev group)
    • Mentorship programs, socials, GDC benefits
  • TAG (Concordia game research club)
  • Flop (Game Developers club in Montreal)
  • Non-school related game jams
  • Open Source Projects
    • ex: Blender is open sourced
  • Networking events
    • Facebook events
      1. Gameplay space testing
      2. Gamedev meet ups in Montreal
    • GDC in California ($$)

Gameplay Space

20 of 36

Resume tips & tricks

21 of 36

Resume Tips & Tricks

  • Put all the keywords you know somewhere
    • Algorithms, graphics pipeline, C++, Unity experience, etc etc
  • Tailor a resume/CV to the job
    • Keep a separate Tech vs GameDev resume
    • Check their job postings
      • For example Blizzard required Python for gameplay programming (??), so if you know Python add it, even if its a common game dev language

22 of 36

Resume Tips & Tricks

  • Projects Section:
    • Have more than one side project? => put projects first on resume
    • Github, itch.io, linkedin
    • Describe in 1-2 sentences each side project
      • Not “we did a game in 48-hours”, but “I worked on lighting, level design, etc”
    • Make sure everything linked is appropriate

23 of 36

Interview process

24 of 36

Introduction

  • Michael Sukkarieh, U4 Software Engineering
  • Previous work experience
    • Graphics Programmer Intern @ Ubisoft
    • Software Engineer Intern @ Google
    • Rendering Engineer Intern @ EA
  • Companies I’ve interviewed for:
    • Apple, Microsoft, Google, NVIDIA, Activision, Riot Games, Eidos, Ubisoft, EA, Beenox

25 of 36

Big Tech vs Game Dev Definitions

  • “Big Tech” is a nickname for all of the major software companies (Google, Microsoft, Apple, Amazon, Facebook, Netflix, etc)
    • “Big 4”: Google, Microsoft, Amazon, Facebook
    • “FAANG”: Facebook, Apple, Amazon, Netflix, Google
  • “Game Dev” are all the major AAA game studios (Ubisoft, EA, Eidos, Bethesda, Activision, Riot Games, Rockstar Games, etc)

26 of 36

Big Tech vs Game Dev Interviews

  • These two categories of companies have different interview practices, so it’s important to know the difference when preparing
  • Big Tech tends to focus on general CS knowledge, while Game Dev tends to focus on specialized domain knowledge
    • Most positions open at Big Tech are for general software engineering positions, and a lot of the times you don’t know which team you’ll be on
    • Game Dev teams tend to be divided into specialized positions, and you will most likely know exactly which team you’re applying for at the start

27 of 36

Big Tech Interviews

  • Test general CS knowledge
    • Data structures (arrays, strings, stacks, hashmaps, etc)
    • Best class for this would be COMP 250 (maybe even 251)
    • However, class knowledge alone is not enough (will talk more about this later)
  • Usually involve writing a function which uses some data structure to solve some problem
    • Ex. implement a queue with 2 stacks, reverse a linked list, etc
    • Only way to get better at this is to solve problems
  • May involve an online test or an in-person test where you need to write code on the whiteboard

28 of 36

Big Tech Interviews - Resources

  • My biggest recommendation: LeetCode
    • LeetCode is an website which includes hundreds of example problems for you to practice on
    • From my experience, the types of problems on LeetCode were very similar to the problems I’ve been asked in real interviews
  • Other resources: HackerRank (website), Cracking the Coding Interview (Book)
  • Try your best to solve as many problems as you can
    • Don’t look at the answer until you’ve been stuck for a very long time, and if you look at the answer make sure to revisit the problem later to ensure you understood it
    • Make sure you do questions on various different topics

29 of 36

Game Dev Interviews

  • Tend to test specific domain knowledge
  • Common programming positions:
    • Graphics Programmer
    • Physics Programmer
    • Gameplay Programmer
    • Network Programmer
    • Online Programmer (different than Network Programmer)
    • Tool Programmer
    • etc
  • When applying to a Game Dev studio, you will most likely be applying to a specific position and they will ask you questions specific to that position

30 of 36

Resume and Projects

  • If you’ve been given an interview for a game dev position, you most likely have experience in that domain
  • Ensure that you can talk about every detail on your resume in technical depth
    • Almost every Game Dev company I have interviewed for has asked me specific questions about things on my resume (sometimes that’s the whole interview)
    • Before walking into an interview, ensure that you can describe every project on your resume from start to finish
  • As a result, do not put anything on your resume that you are not comfortable talking about or that you didn’t really do
    • It might help you get an interview, but you will be grilled about it during the interview

31 of 36

C++ / Low Level Questions

  • With some exceptions, most of the work you will be doing will be in C++
  • Game Dev in general tends to have fairly low level challenges, so you may be asked about this
    • If you don’t know C++ but got the interview, they probably won’t ask you specific C++ questions but might still ask general low level questions
    • Also if you don’t know C++, learn C++
  • C++ specific concepts to know
    • How are virtual functions implemented?
    • Why is it important to declare destructor as virtual?
    • What is the difference between a ref and a pointer?
    • What is the main difference between calling a function with a parameter that’s a reference and between one that isn’t?
    • What is const-correctness?

32 of 36

C++ / Low Level Questions

  • General Low Level Concepts
    • What is a pointer? What is happening when I dereference a pointer?
    • What is the size of a pointer?
    • What’s the difference between allocating something on the heap and the stack? Which one takes more time?
    • What’s the purpose of a cache?
  • Useful classes:
    • ECSE 324 / COMP 273
    • Operating Systems

33 of 36

Math Questions

  • Math is an important concept in Game Dev
    • More likely to be asked these kinds of questions for a graphics position, but might still get asked basic questions for other positions
  • Understand linear algebra fundamentals
    • Dot product
    • Cross product
    • Basic geometric shapes (ray, plane, sphere, etc)
  • More math is needed if you’re applying for a graphics position
    • 3d math related to projection/transformation
    • Graphics pipeline

34 of 36

Timeline for Applying

  • Applying at the right time is important
  • BigTech:
    • Most Big Tech companies begin looking for summer interns in September/October
    • Process is very long and has multiple stages (may take 1-3 months from applying to get offer)
  • Game Dev:
    • Most local game studios begin looking for summer interns in January/February
    • Usually less bureaucratic, and you will be interviewing with your future boss

35 of 36

4 months ++

Get experience

(see experience slides)

2 months ++

Draft a resume

Start networking

1 week

Get your resume reviewed!

1 week

APPLY!

10+ applications

Check out those linkedin contacts you made while networking

???

Profit

36 of 36

Questions?