15-466-f18 Computer Game Programming (original) (raw)
Computer Game Programming (Fall, 2018)
Tuesdays and Thursdays 13:30-14:50 in NSH 3002
Taught by Jim McCann (Office Hours in EDSH229, after class on Thursday and by appointment) with TA help from Steven Osman (Office Hours in EDSH228, by appointment).
We use Piazza for discussion and e-mail for announcements.
Games
In this class, we make games. Here they are:
- Game0: Object Show (23 games)
- Game1: Walking Simulator (13 games)
- Game2: Sports (14 games)
- Game3: Shady Businesss (14 games)
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 -- optionally -- some game-design exercises.
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.2+) API.
Previous years with similar content:Game Programming '17.Game Programming '09.
Work
Students will be graded out of 17 + 3N points, divided as follows:
Points | Work |
---|---|
3N | Small Games |
20 | Final Game |
There are no late days; however, there is enough slack in the grading to support completely missing one assignment.
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.
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 without giving credit is a form of plagiarism. Plagiarism is a highly 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 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 source code is covered by some sort of license agreement. Make sure that code you use has a license agreement compatible with this course. For example, I am unwilling to pay for a license for a library just so I can compile your code, or sign a non-disclosure agreement just so I can read it.
Resources
The course does not have a textbook. However, there are several documents available on the internet that you may find useful:
- The OpenGL Specifications
- SDL Documentation
- cppreference.com the slightly-better documentation wiki for modern C++
- Advances In Real-Time Rendering SIGGRAPH course notes covering advanced rendering techniques being used in games
- Blender API Documentation, useful when writing or modifying export scripts.
There are also some great, cross-platform content-creation tools that we will use in our asset pipelines:
- GIMP is a 2D raster graphics editor
- Inkscape is a 2D vector graphics editor
- Blender is a 3D modelling, animation, and rendering suite
And some places to get free game assets:
- Kenney.nl has 2D and 3D assets, creative-commons licensed
Schedule
(NOTE: schedule very much not final.)
August
September
9/18 (T) Materials (BRDF toy). Post-processing effects. Game2: "Sports" [Implementation Due 9/25, Noon]
9/27 (R) Game3: "Shady Business" [Implementation Due 10/2] Final Game: Three More Ideas With Pictures [Due 10/2, in class]
October
10/2 (T) Game theory (notes) Final Game: Pitch Slide (1024x768, .png or .jpg) [Due 10/4, noon]
10/4 (R) Initial Pitches Final Game: Refined Pitches (groups of two, 5min) [Due 10/9, in class]
10/9 (T) Refined Pitches Retrospective. Final Game: Design Document [Due 10/11, Noon]
10/11 (R) Final Game Meetings Final Game: Prototype Due [10/18, Noon]
10/16 (T) Authored Animation (pt1). (notes)
10/18 (R) Authored Animation (pt2). (notes) Final Game: Demo Due [11/1 in class]
November
11/1 (R) Playtesting Final Game Midpoint Demo Final Game: Final Due [12/4, Noon]
11/13 (T) Group Work Time
11/20 (T) Group Work Time + Donuts
11/22 (R) No class - Thanksgiving
11/27 (T) Apple Guest Lecture: "Metal Tile Shading for Games"
11/29 (R) Work Day + Donuts
December
12/4 (T) Final Game Start polishing for Final Expo [4pm, 12/7] Final Game Demonstrations + Donuts
12/6 (R) Special Topics (the real world)
12/7 (F) Final Game Expo! (setup: 4pm, Expo: 4:30-7pm)
Design Doughnuts
In order to encourage submission of optional design documents, I will add one to the design doughnut counter for every person who completes a design document. Any morning when the doughnut counter is at least 10, I will bring donuts for the class, and subtract 10 from the counter value.