Overview (and implied syllabus) CS4070/6070 This is a course that is intended to provide an introduction to computer game programming in the PC environment. What we want is to equip the student who completes the course to proceed to the next course or into the gaming industry. This means that we want to create a firm foundation to build on, not necessarily a full structure yet :) There will be assigned readings, and you must do these as part of the course. However if you are truly interested in gaming and being a productive game programmer, you should treat these as suggestive and introductory only. There is a rich supply of tutorial and technical material on the web, the gaming activity is very well documented! You can use the links on the course web page as a starting point, or use Google(tm) to find your own materials. There will be assigned programming projects, and you must do these as part of the course. However if you are truly interested in gaming and being a productive game programmer, you should 'go beyond' to decorate/enhance your programs. There are always things to do to make the game better (and look better). A nice game that you have done can serve as a portfolio item that might be an enabling credential if you want to get into the gaming industry. But there is a point of diminishing returns, too -- maybe you have other courses that require attention :). Productive game programmers are also capable computer scientists, a fact that will become more clear as the course progresses. We develop 2D games using Dev-C++ as a compiler/development environment and Simple Directmedia Layer (SDL) for graphics and user interface capabilities. These choices have the advantages that they are freely available and quite capable. These choices have the disadvantage that they are not the development platform of choice in the industry; the industry uses more powerful tools (and more people working longer and harder) to produce much larger and more sophisticated games than we can do in just one semester (or less) of individual effort in a course environment. So, just to make this completely clear, we will not be producting Halo, Quake, Spore, or the Sims in CSX070. We will produce working games (on a more manageable level, a level of accomplishment achievable by an individual in a semester) and we will have some exposure/capability in all/most of the aspects of gaming (with the probable exception of working on large-scale code in a team/project environment). Toward the end of the course, after the fundamentals have been established and while the assignments in play are individual (or small team) projects, some 3D graphics and more advanced game topics will be discussed: 3D modeling, articulation and rigging 3D graphics, matrix transformations, tiling Lighting/shading models, texturing special FX 3D rendering, GPUs sound/audio issues user interface issues, game controllers networking game mods: counterstrike(eg) game AI game physics game engines gaming platforms: PS3, Xbox, Nintendo, portables (iPhone) OS issues: linux, Windows College/university game development courses