Computer Game Programming (Fall, 2019)

Tuesdays and Thursdays 10:30-11:50 in GHC 4101

Taught by Jim McCann (Office Hours in Smith Hall 229, Wednesdays 12:30-13:30 and by appointment) with TA help from Yixin He (Office hours in Smith Hall Second Floor Common Area, Fridays 13:30-15:00 and by appointment).

We use Piazza for discussion and announcements.

gp19 logo shadow gp19 logo shadow

Course Goals

Computer Game Programming will help you build the programming skills needed to turn ideas into games. This means we'll be covering both runtime systems and the asset pipelines to fuel them, along with some game-design exercises (with an eye to thrifty code).

The philosophy of this course is to learn by building games, from (nearly) the ground up -- this means lots of C++ and OpenGL hacking, a smattering of scripting (shell, python, javascript, lua), and a lot of documentation-reading. You do not need to be an expert in any of these things, but it would help if you are familiar with C++ and the modern OpenGL (3.3+) API.

Previous years with similar content: Game Programming '18, Game Programming '17, Game Programming '09.

Work

Students will be graded out of 20 + 3N + 0.5D points, divided as follows:

PointsWork
0.5DAttendance
3NSmall Games
20Final Game

Attendance will be recorded using small in-class activities. Small games will be assigned roughly weekly to highlight basic game-related functions. The Final Game will be larger undertaking by groups of 3-4.

There are no late days; however, there is enough slack in the grading to support completely missing one small game.

For anticipated absences, please contact the instructor at least two days in advance to arrange to receive a "via-e-mail" version of the day's in-class activity; additionally, there is enough slack in the grading to support unexpectedly missing two classes.

Life Advice

Being sick isn't fun. University health services is conveniently located and has flu vaccine available starting in September.

Mental health is an important aspect of physical health. CMU's CaPS services exist to help you manage your mental state.

If you have a disability and are registered with the Office of Disability Resources, I encourage you to use their online system to notify me of your accommodations and discuss your needs with me as early in the semester as possible. I will work with you to ensure that accommodations are provided as appropriate. If you suspect that you may have a disability and would benefit from accommodations but are not yet registered with the Office of Disability Resources, I encourage you to contact them at access@andrew.cmu.edu.

Don't Steal

Using other people's code or data without giving credit is a form of plagiarism. Plagiarism is an immoral activity that I take very seriously. If you plagiarize, you will fail the class, and I will do my best to make sure you are removed from CMU entirely.

All you need to do to avoid plagiarism is to make sure to give credit for the code and data you use in you project. Something as simple as the comment "//based on https://wiki.libsdl.org/SDL_CreateWindow" can save your academic career from ruin.

Additionally, most human-created works are covered by copyright and thus subject to some sort of license agreement. Make sure that code and data you use has a license agreement compatible with this course. For example, I am unwilling to pay for a license for a library so I can compile your code, or sign a non-disclosure agreement so I can read it.

Work Together

This is a course that involves writing a lot of code. Please, by all means, work together!

Resources

The course does not have a textbook. However, there are several documents available on the internet that you may find useful:

There are also some great, cross-platform content-creation tools that we will use in our asset pipelines:

And some places to get free game assets:

Schedule

(NOTE: schedule subject to change.)

  1. August
  2. Start Aug. 27
    Due Sep. 3 (before class)
  3. Start Sep. 3
    Due Sep. 10 (before class)
  4. Start Sep. 10
    Due Sep. 17 (before class)
  5. Start Sep. 17
    Due Sep. 24 (before class)
  6. Start Sep. 24
    Due Oct. 1 (before class)
  7. Start Oct. 1
    game5: Sports
    Due Oct. 8 (before class)
  8. Start Oct. 8
    game6: Post-Skeletal
    Due Oct. 15 (before class)
  9. Start Oct. 15
    final game A: prototype
    Due Oct. 29 (before class)
  10. Start Oct. 29
    final game B: vertical slice
    Due Nov. 12 (before class)
  11. Start Nov. 12
    final game C: build out
    Due Nov. 26 (before class)
  12. Start Nov. 26
    final game D: polishing & presskit
    Due Dec. 5 (before class)
  13. T
    2019
    8-27
  14. R
    2019
    8-29
  15. September
  16. T
    2019
    9-3
  17. R
    2019
    9-5
  18. T
    2019
    9-10
  19. R
    2019
    9-12
  20. T
    2019
    9-17
  21. R
    2019
    9-19
  22. T
    2019
    9-24
  23. R
    2019
    9-26
  24. October
  25. T
    2019
    10-1
  26. R
    2019
    10-3
  27. T
    2019
    10-8
  28. R
    2019
    10-10
  29. T
    2019
    10-15
  30. R
    2019
    10-17
  31. T
    2019
    10-22
  32. R
    2019
    10-24
  33. T
    2019
    10-29
  34. R
    2019
    10-31
  35. November
  36. T
    2019
    11-5
  37. R
    2019
    11-7
  38. T
    2019
    11-12
  39. R
    2019
    11-14
  40. T
    2019
    11-19
  41. R
    2019
    11-21
  42. T
    2019
    11-26
  43. R
    2019
    11-28
  44. December
  45. T
    2019
    12-3
  46. R
    2019
    12-5
  47. F
    2019
    12-6
  • Design Docs
  • Retrospective. Final Game Midpoint Demo Final Game: Final Due [11/29, Noon] Final Game Start polishing for Final Expo [4pm, 12/7]