Overview
- Course Title
- Game Programming
- Section
- 1
- Prerequisites
- CS222 (CS230 is also recommended)
- Meetings
- Tuesday and Thursday, 3:30–4:45PM
- Instructor
- Paul Gestwicki, Ph.D.
- Office Hours
- See instructor Web site
The course catalog provides this short description of the course:
Serves as an introduction to game programming, and topics include active and passive rendering, sprite animation, collision detection, audio playback, input devices, deployment, and applications of artificial intelligence.
This course is a one-semester introduction to game programming. It will help you build upon your foundational programming knowledge to learn how game software is constructed. Such an investigation necessitates considering both technical and social or humanistic concerns. We will touch on game design (what is built) but only in that it enables us to focus on game programming (how it is built). However, there are many excellent resources for those interested in game design to explore independently, my personal favorite being Ian Schreiber's Game Design Concepts.
One semester is just enough to get your feet wet: it is my hope that this course can be a springboard to your future immersion in those areas of game development that most interest you. I believe in pursuing game development because of the joy of the craft, and this is reflected in the course design. There are many endemic problems in professional game development (see the famous EA Spouse essay, for example) and Cliff Harris has lucidly explained how your indie game will flop and you will lose money. A course on game programming will not grant you success or even entry into this hypercompetitive profession. However, I hope that we can work together to give you the expressive tools to be able to breathe life into your own creations. What you do from there is your choice.
The Computer Science department has identified the following learning outcomes for this course.
- Identify, compare, and evaluate different rendering and control models for interactive media programming, including: active rendering vs. passive rendering; event-driven programming; input device processing (keyboard, mouse, gamepad); and architectural patterns for synchronization of interactive elements in multithreaded environments.
- Apply and evaluate mathematical and computational analysis techniques to standard problems in game programming including: collision detection using space partitioning; collision processing using single- and double-dispatch; rule-based and pathfinding artificial intelligence; and thread pooling for realtime audio mixing.
- Apply modern tools of software development to game programming, including integrated development environments, version control systems, and digitial signatures and distribution.
- Develop technical communication and project organizational skills, including written and oral commuication, collaborative system analysis, and time-management.
- Distinguish among qualitative and quantitative aspects of the game design and development process, including identification of critical paths and prioritization of software modules.
Note that, because this is a three credit-hour course, you should expect to invest nine hours of attention to it per week.
Resources
Software and Hardware
We will focus our learning around Epic's Unreal Engine 4, which you can download from unrealengine.com. Be sure to download version 4.17. The UE4 documentation describes the minimum and recommended hardware specifications. The CS department will provide a small number of UE4-ready game development workstations for your use during the semester, but you should expect demand for these to be very high; the best-case scenario is that you are able to run UE4 on your own laptop that you can bring to class meetings.
In the second or third week of the semester, students in this class will gain card-swipe access to RB368, which is being outfitted with three game development workstations. We will be sharing this undergraduate research space with an immersive learning class, so please be respectful of their needs.
When you are ready to customize UE4 with C++ code, Windows users should download Visual Studio, following the installation and configuration instructions provided in the UE4 documentation. Mac users should install XCode; note that I have no experience with XCode and will not be able to help with this. GNU/Linux users: while you can build UE4 from source to run on Linux and integrate an IDE such as CodeLite to write custom C++, in practice I have found this to be much less performant and much more time consuming that running on Windows.
For version control, we will be using git. Install git according to the installation documentation; for Windows, I recommend the git for Windows project for easy access to Git BASH.
We will manage some required elements of the course through Canvas as part of Ball State's pilot of that system. Log on to bsu.instructure.com to access our Canvas course page.
Accounts
Downloading UE4 will require registration with Epic Games.
You will need to sign up for a Google Account, if you don't have one already. Configuring two-step verification on your Google Account is so strongly recommended it may as well be required.
You will need to sign up for a GitHub account if you don't already have one. As always, remember to use strong and unique passwords for different Web services. As a student, you should also request the Student Developer Pack, which gets you limited no-cost private repositories and access to some powerful tools.
You will receive an invitation to Slack for our class communication. Set your username to be the name you prefer to be called in meatspace, and upload a reasonable headshot so that we can learn who is who.
Schedule
We will dive into UE4 with a loosely-structured assignment to create a very simple casual game; the details of this are posted on Canvas, with a tentative deadline of September 5, when we will showcase our results. This will be followed by a formal introduction to Scrum for game development. We will try to move quickly into an incremental and iterative approach to group-based projects, working in 2- to 3-week iterations.
The withdraw deadline is October 25.
We will have a class meeting during the university-scheduled final exam slot, as per university policy.
Grading
Each of the following actions earns you one MacGuffin for the course (alternatively, XP, Gold Star, or Piece of the Rod of Seven Parts).
- Satisfactory completion of the Angry Whatevers assignment series
- Satisfactory completion of each team increment
- Completion of one achievement
- Completion of exactly one final exam option.
At the end of the semester, your grade will be computed according to the following table, where N is the number of iterations we undertake.
MacGuffins | Grade |
---|---|
0 | F |
≤N | D |
N+1 | C |
N+2 | B |
N+3 | A |
There will be two options for the final exam: a series of reflective essays that guide you toward articulating what you learned this semester, or a “game jam” final, in which you create an original game in Unreal Engine that demonstrates your learning this semester. Details for both will be given in the final week of class, and the final exam meeting will be an opportunity to share semester projects, game jam results, etc.. The final exam meeting will be 2:15PM on Tuesday, December 12.
All of my evaluations are made with respect to triage grading. C- “counts” as satisfactory, but seriously, come on.
Attendance and Related Policies
Your learning is commensurate to your participation, and so attendance is expected. You are responsible for your learning regardless of attendance. If you miss a class meeting, you should consult with trusted classmates to ensure you have the appropriate notes. I will not repeat myself unnecessarily over email, during office hours, or by appointment.
Meetings begin at the time scheduled, and you are expected to be ready to begin at this time; late entry is direspectful to me and your classmates.
Communication
Office Hours and Appointments
My office hours are listed on my Web site. Students who come to office hours are helped on a first-come, first-served basis; no appointment or prior contact is required. If a student wishes to make an appointment to meet outside of office hours, he or she should email the instructor the request along with several possible meeting times.
Note that during the second half of the semester, I tend to hold a lot of meetings in the lab. I usually remember to put a note on my door to this effect, but if I don't, you can look for me there.
All email communication to the instructor should be from a BSU-affiliated address. This policy ensures that senders can be correctly identified and protects your privacy. Email sent from other domains may not be answered.
The instructor may access email through services not affiliated with the University. Please note that such messages necessarily pass through the campus firewall in an unencrypted format, and they may be stored on servers not owned or managed by Ball State University. It is therefore advisable to restrict confidential information to office hours or appointments.
If you are emailing regarding questions in a computer program, it is recommended that you send a copy of the code in question in your email. The preferred method is to copy the code into the body of your message, using plain text and following standard formatting conventions. Alternatively, if the code is in a publicly-readable repository, email the URL.
Telephone
Although my office telephone number is listed on my Web site, email and face-to-face communication are strongly preferred. I will respond to every student email I receive; I will likely not respond to telephone messages.
Miscellany
Academic Integrity
Students and faculty are bound by the Student Academic Ethics Policy of the Code of Student Rights and Responsibilities.
Intellectual Property
It behooves you to be aware of fundamentals of copyright law and the university's intellectual property policies for student-created work.
File Formats
When file submission is necessary outside of Google Drive, all files must be submitted in open file formats. Good examples include HTML, PDF, OpenDocument, and plain text. Note that Microsoft Office and Adobe Creative Suite formats do not qualify.
Essays
Some assignments and achievements require the writing of an “essay.” I use this term in the classical sense, to describe a composition that represents an attempt to understand a complex idea. An essay needs to have a point—a theme, a thesis, a central question. This should be supported by evidence, with assumptions identified and claims justified or cited. As implied by this course's prerequisites, our essays should represent college-level writing.
An essay, properly written, should hurt a bit. If you are truly writing to understand, then you have to be challenging yourself. If you are only summarizing something you have read or previously believed, it is not an “essay” by our definition.
Writing in this way has implications for structure and form. One long rambling paragraph cannot be an essay: each paragraph should have a clear and coherent theme that supports the central argument, and you need more than one of these to support an argument worth forwarding. The fact that we are writing in a digital environment should not be overlooked: you can include images, video, sound, and hyperlinks, following the same judgement you would use to include any formal element. Even typefaces, colors, and margins are part of a digital composition. These have meaning, and because of that, you should not change them unless you are proficient in digital document design: the defaults are provided because of their generality, and they are likely appropriate for your compositions.
The Elements of Style provides an excellent refresher on how to produce good, clear writing. It is a short, affordable book in its latest release, and the earliest printings are in the public domain (see archive.org, for example).
The Writing Center
Want extra feedback on your papers? The Writing Center is a community of Ball State students and faculty who value writing. Come and collaborate with one of our trained peer tutors on any project for any major. The Writing Center is a comfortable, supportive environment for writers from all communities and backgrounds. It is located in Robert Bell 291. To make an appointment, go to http://ballstate.mywconline.com.
General Academic Success
One of my favorite guides for academic success in college is William Rapaport's “How to Study: A Brief Guide”. You may also be interested in the Future Authoring Program, a research-validated program designed to help people identify goals in the 3–5-year frame and to align their actions toward meeting those goals. If you spend some time with either of these, I would be eager to hear about your experience.
Notice for Students with Disabilities
If you need course adaptations or accomodations because of a disability, please contact the instructor as soon as possible. Ball State's Disability Services office coordinates services for student with disabilities; documentation of a disability needs to be on file in that office before any accomodations can be provided. Disability Services can be contacted at 765-285-5293 or dsd@bsu.edu.
Statement on Diversity
Ball State University aspires to be a university that attracts and retains a diverse faculty, staff, and student body. We are committed to ensuring that all members of the community are welcome, through valuing the various experiences and worldviews represented at Ball State and among those we serve. We promote a culture of respect and civil discourse as expressed in our Beneficence Pledge and through university resources found at http://cms.bsu.edu/campuslife/multiculturalcenter.