This course focuses on the technological aspects of game development. We will be covering various algorithms ranging from graphics to artificial intelligence/networking and sound. We will primarily explore the technical aspects of game development. As such, the course will involve many computer science topics, not just computer graphics. Note, this is not a course on game design even though we will have a game as a final project (see below). Such courses are offered elsewhere in the university for those who are looking for that. We will emphasize tools and algorithmic techniques that are critical components of games. Good game programmers today are primarily problem solvers, who know how to acquire a mental model of a complex software environment and to solve technical problems in order to achieve a timely goal. A game due at the end of the semester is a good, timely goal. But what we want you to learn in this class is how to get a toolchain in place and make it do what you need it to do to get the game done. We'll be grading you primarily on how well you do that, not on whether you're a good game designer.
Unless you have prior instructor permission or a valid nonacademic reason as determined by the instructor, you will lose 5 pts off your overall course grade for each day an assignment is late. For example, your grade in this class is evaluated over 100. If you turn in your deliverable one day late, then your maximum grade in the class will be 95, two days late - 90, etc.
Your responsibilities in this class
Every student must read and agree with the CS student's code of conduct. You must also follow the Dean of Students' requirements for academic integrity. You must report any piece of written material (text or software) that comes from someone other than yourself. Note that you are not allowed to use any software that overlaps with the objectives of homework and projects except those tools assigned as part of the project. There will be a discussion of policies related to group projects and homework in the class and this web page will be updated accordingly. If you have any questions about what you can and cannot do on any assignment, ask the instructor, do not guess or make assumptions, because if you are wrong, you will be held accountable.
The initial project in the class will be to create a three dimensional ball game. You may use the Bullet physics library or implement your own physics since the interactions involve more or less ridid body collisions. You have the freedom and encouragement to design your own variant of the basic game, but it should involve balls being lauched into a scoring region involving intricate physical interactions and some degree of user control involving paddles and perhaps other controls of your own design. You will be graded on your implementation and ambition within this constrained design environment and not primarily on game design prowess since this is not a course on game design.
The second project involves the creation of a game of your own design. This should be an extension of the capabilities you developed in your first project. It should involve new capabilities as well and can be more involved.
You will build your game on the course game engine and associated tools. Your primary implementation language will be C++, although other languages may be used for scripting. Note that we are not giving you a complete working toolchain at the start of the course as we would for a game design class. Part of your task will be to undertand and augment components of the toolchain as needed to make your game work.
Similar to professional game development, you will have hard deadlines scattered throughout the semester. Each of these deadlines (or milestones) will measure your progress towards meeting your requirements and finishing your game. Expect a steady workload for the entire semester. This is not a class where you can implement your project one week before the end of the semester.
Each team will demo your final game during the final exam
period of the class, which is on Saturday, May 12, from 2-5 pm.
We expect to have several representatives from local game
related compananies present at these demos. You must have
completed and installed the game on the lab machines (and turned
it in to us) no later than 11:59pm May 11. Rather than the
classroom that is scheduled for the final (WEL 2.308), we
will be having the demos in the kol64 Linux lab, in ENS
31NR. As anyone in the class already knows, to get there
you take the elevator to the lower basement of ENS, take a
right out of the elevator, walk all the way down the hall
(through some double-doors) until you pass a hallway on
your left. It's right after that.
Note that when you turn in your project on Friday, you
should turn in the same things that you did for previous
assignments, namely a project report, a readme with
instructions, and a build tree. You will also turn in
your evaluation of each team member separately, as before.
Note that when you turn in your project on Friday, you should turn in the same things that you did for previous assignments, namely a project report, a readme with instructions, and a build tree. You will also turn in your evaluation of each team member separately, as before.
Some previous class projects: