Time: MWF 10:30-11:35
Location: LS G12
Professor: David Galles
Office: HR 542
Office Hours: T/TR 10:00 - 12:00, or by appointment
Though these are my stated office hours, I am in my office most of the day.
If my door is open (and it usually is), I am happy to talk with students.
Required: 3D Math Primer for Graphics and Game Development, F. Dunn, I Parberry
Recommended: The Art of Game Design: A book of lenses, Jesse Schell
CS 245 - Data Structures and Algorithms
Math 201/202 Discrete Mathematics
Grades will be given according to scores on programming assignments, a midterm and a final, according to the following percentages.
|Project 1: Pong||15%||2/17/2016 and 2/26/2016|
|Project 2: Tank||20%||3/25/2016 and 4/1/2016|
|Project 3: Student Choice||30%||5/11/2016|
|Code Review / Final Presentation||5%||Various|
|Final||15%||05/16/2016 Monday 10:00 a.m.
Grades will be on a straight scale, with approximately:
|A||90% and above|
|F||61% and below|
These are percentages are upper limits -- thus a score of 90 is guaranteed to get at least an A-, 80 is guaranteed to get at least a B-, and so on. I reserve the right to move these down, but I will not move them up.
Final and Midterm
The midterm and the final will be closed notes. If you have a conflict with the midterm date, see me now to see if we can work something out. Requests to change midterm dates after the first week or two of class are unlikely to be met. The final date is unlikely to be changed, but you are free to ask.
This is a heavy programming course. The assignments should be a lot of fun, but you will be spending more time coding than in other CS classes. Note that while I will be expecting a great deal from you, I am also willing to give you significant assistance -- don't spin your wheels and become frustrated, ask for help!
There wil be 3 projects -- a "warm-up" project that each person will need to do on his or her own and two group projects. (Note that the "warm-up" project will still have significant coding, and will require learning to use the graphic engine and art pipeline tools, so get started early!) Each project will have some required elements, but you will also have a fair amount of latitude to be creative. While the majority of the grade for the projects will be the technical aspects of the programs, there will be some weight towards artistic expression -- how fun are your games to play, do your games have a consistent aesthetic, and so on. For projects 2 and 3, part of your grade also will be the feedback you give to other students during "focus testing" -- more on that when projects 2 and 3 are assigned.
Each student will have to do at least one "code review". In a code review, you walk the class through a section of your code, and explain how you implemented a particular feature. Your fellow students (and your instructor) will ask questions about the design decisions that you made, and how your code is structured.
Students who complete this class will be able to:
Create a full-scale game using a modern 3D engine. Specifically:
- Program (and debug!) in C++
- Use and understand a complex graphics engine, and work within a large codebase that the student not write, using documentation and available source code to understand how the engine is to be best utilized
- Manage a large-scale programming project, including complicated directory structures and several outside libraries
- Use intermediate-level 3D math, including transformation matrices and quaternions.
- Create art assets (3D models and textures), and manage an asset pipleine to get the assets into the game proper
- Write simple scripts in Lua (scripting language), and integerate lua into a C++ project to allow for non-programmers to create scripts and more complex assets.
Topics To be Covered (Somewhat tentative list)
- C++ Programming
- Using Modern Graphics Engines
- OGRE, Object-oriented Graphics Rendering Engine
- Content Creation
- Using Blender: Basics
- Creating 3D Models (Blender)
- Creating Textures and UV mapping (Blender)
- Rigging and Animating (Blender)
- Content Pipeline (Blender and OGRE)
- 3D Math
- Introduction and Transformation Between Spaces
- Linear Transformations and Homogenous Matrices
- Orientation and Quaternions
- Computational Geometry and Intersection of 3D objects
- Physics Engines
- Scriping Languages
- Writing lua programs/scripts
- Integrating lua and C/C++