Term: Fall 2024

Instructor: Aline Normoyle

Course Info

Welcome to CS283: Game Programming!

SnowCabin

This intermediate programming course covers the foundational concepts, architectures, and mathematics underlying video games and digital interactive experiences. We will deconstruct the designs of classic games, such as Pac-Man, Super Mario Brothers, Minecraft, Doom, and Diablo II, to explore the data structures, algorithms, and foundational mathematics necessary to implement popular game mechanics and features. Potential topics will include rendering and modeling, navigation systems, game artificial intelligence, dialog systems, character animation, networked multiplayer, user interfaces, physics engines, and sound. The course will challenge students to create original and novel game concepts through weekly assignments, labs, and a final project. Through these projects, students will learn the foundational mathematics behind "making objects move", such as transformations, splines, collision detection, and raycasting. Furthermore, students will gain object-oriented programming experience through designing mid-scale programs. Programming and project assignments will be in C#, use the Processing and Unity frameworks, and cover how to build games for different platforms, namely web, desktop, virtual reality, and augmented reality.

Meeting Times

Activity Location Time

Lecture

Park 159

Tuesday and Thursday 1:10 AM - 2:30 PM

Lab

Park 230

Thursday 2:40 PM - 4:00 PM

Office Hours - Prof. Aline Normoyle

200B

2-3 PM Fridays

Office Hours - Neha Thumu

Park

4-5 PM Fridays

Schedule

The syllabus may change during the semester. Please check here every week for updates on lecture content, worksheets, and assignments.

Week Date Agenda

1

September 3, 5

Introductions, Hello Unity

  • Topics: Game Loop, Update Pattern, Game Time, C#

  • Read: Madhav Chapter 1

  • Assignment 01: Due Sept 6

  • Lab: Unity and Github setup

2

Sept 10, 12

Common game concepts, Component-based architectures, Math for Games

3

Sept 17, 19

Math for Games. Cameras

  • Read: Madhav Chapter 3, 8

  • Topics: Dot and cross product, Rotations, Slerp, Types of cameras, Mouse and Keyboard Input

  • Assignment 03: Due September 20

4

Sept 24, 26

Transforms

5

Oct 1,3

Characters and Animation I

  • Topics: Skeletal animation and meshes, Animation curves, Keyframes and Splines, Bezier Curves

  • Assignment 05: Due Oct 4

  • Lab Oct 3

6

Oct 8, 10

Character animation, Motion capture

  • Motion editing, blending, crossfading, motion capture, facial animation colliders, physics

  • Assignment 06: Due Oct 20

  • Quiz 2, Study Guide 2

7

Oct 16,19

Fall Break

  • NO LECTURES, LABS, HOMEWORKS

8

Oct 22, 24

Collisions and Physics, User Interfaces

  • Read: Madhav Chapter 7

  • Topics: collision volumes, rigid bodies, forces, torques. UIs, Fonts, layouts, sprites

  • Assignment 07: Due Oct 25

  • Lab: Review and animator controller setup

9

Oct 29,31

Steering and path finding

  • Read: Madhav Chapter 9 ("Game" AI, Pathfinding)

  • Read: AI for Games, Sections 4.1-4.4

  • Topics: Navigation, path planning, steering

  • Assignment 08: Due Nov 1

  • Quiz 3: Study Guide

10

Nov 5, 7

Behaviors

  • Nov 5: NO CLASS. NO LAB. ELECTION Day

  • Topics: Finite State Machines, Behavior Trees

  • Read: Madhav Chapter 9 (State-based behaviors, Strategy and planning)

  • Read: AI for Games, Sections 5.1-5.4

  • Assignment 09: Due Nov 8

11

Nov 12, 14

Other Game AI Techniques

  • Topics: Fuzzy Logic, Goal-based behaviors

  • Lab: Implementing wander using a behavior tree (or Physics Simulation)

  • Assignment 10: Due Nov 15

  • Read: Madhav Chapter 9 (State-based behaviors, Strategy and planning)

  • Read: AI for Games, Sections 5.5-5.9

12

Nov 19,21

Steering Techniques

13

Nov 26

Sound, Building for different platforms (Desktop/Web/Mobile/VR/AR)

  • Sound. Building with Unity

  • Read: Madhav Chapter 6

  • Lab: Quiz 4

  • Nov 28: Thanksgiving, NO CLASS

14

Dec 3,5

Advanced Topics

  • Potential Topics: Gameification, Game AI, Game modding, Emulators, VR/AR, Networking

  • Lab Dec 3, Game Milestone 1

15

Dec 10,12

Advanced Topics

  • Topics: TBD

  • Lab Dec 10, Final Game Demo Day and Party

  • Game Project Github Due, Dec 13th, at midnight

Text and Tools

  • Game Programming Algorithms and Techniques by Sanjay Madhav. Although you can purchase this from Amazon, we also have a copies that you can access. See our slack from more info.

  • Github Account Please go to github.com and register. You will be using github to submit assignments.

  • Slack Please go to slack.com. Our workspace is BrynMawr-CS223-F24. You can ask questions and request one-on-one help over zoom using this course’s slack channel.

We will also use the following references for some content.

  • Game Math by Fletcher Dunn and Ian Parbery. You can access it for free here

  • Game Programming Patterns by Bob Nystrom. You can access it for free here

Grading Policies

All graded work will receive a grade, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.3, 1.0, or 0.0. At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:

40%

Final Project

30%

Assignments

30%

Lab work and Quizzes

5%

Participation

Labs and exams

In labs, we will have practice quizzes for the final exam, each structured like a mini-code jam where you work together in teams. Each quiz will have a study guide so you know what types of questions to expect. During lab, you will be randomly assigned a partner and given 40 minutes to complete the questions. The following week in lab, we will go over answers for the previous week.

If you cannot attend a lab, please let the instructor know in advance. There are no make-up opportunities for labs — the missing work will be re-weighted to be part of your final exam.

There will be one final exam for the semester. Details and dates will be released during the semester. Please read the section on accomodations if you are in need of extra time. You must inform us of accommodations or conflicts at least 2 weeks in advance of the exam.

Quizzes and exams will be open book. You will be given sample questions beforehand to help you study. Warning! Do not rely heavily on your notes for quizzes. You will need to have concepts memorized in order to finish within the time limit.

Homeworks and exercises

This course features weekly lab exercises and assignments which are an important component of the class.

Lab exercises will be passed out in lab. These exercises are intended to be short and will typically ask you to reproduce demos from class or tackle concepts you will need for your assignment. Lab exercises should be handed in at the end of lab.

Class exercises will be passed out in class. These exercises are intended to be short and will typically ask you to practice concepts from lecture.

Assignments will be posted Saturdays and due Friday before midnight. You are strongly encouraged to start early so that you can ask questions. See the syllabus for links to the assignments.

You will submit your assignments electronically using git.

Late Policy

Because practice is so important for learning how to program, we will do frequent exercises, assignments, and quizzes throughout the term.

The purpose of this work is to give you hands on experience with the topics from class. Most of this work will be due in lecture or labs. The weekly time commitment for this course is aimed to be approximately 10 hours per week.

Assignments will generally be due on Fridays. However, you may request up to one late day (until Saturday) if necessary. No submissions beyond Saturday will be accepted. This allows us time to grade assignments. And it helps prevent you from falling behind. Note that with weekly assignments, you can miss a week or two without losing much points on a final grade.

If you need to miss a quiz, we will not have make-ups. Instead, the missed credit for the quiz will be added to the final exam.

You may need to provide a doctor’s note if you need special accommodations due to a medical emergency. If you require an accommodation for exams and quizzes, this must be submitted to the instructor within the first two weeks or class.

Academic Integrity

Copied and unattributed work will receive zero credit. At Bryn Mawr, we assume students are trustworthy and work with honesty and integrity. Look here for information about Bryn Mawr’s Honor Code.

As you progress in this course, you will see that programming is a creative process, similar to writing. The same problem can be solved in multiple ways. It’s essential that you develop your own skills for developing algorithms and implementing them through programs.

Quizzes and exams will be closed book. You will be able to bring a single cheat sheet with you. The goal of assignments and labs is to help you prepare for quizzes and exams! If you can sit down, focus, and answer sample questions within a time limit, you will ace the exams for this class. Incidentally, you will also be prepared to ace a job interview on this topic!

Integrity Guidelines:

  • DO discuss ideas and approaches with your classmates.

  • DO discuss ideas and approaches with your TAs and instructor.

  • DO search for documentation and sample programs for built-in C functions and C syntax.

  • DO use code from our text books and class (with attribution).

  • DON’T use Chat-GPT (or other LLMs) to generate solutions.

  • DON’T copy full solutions, from online tutorials, previous students, etc

  • DON’T use functions and C syntax that is disallowed by the Makefile. We are deliberately using simple and portable C.

  • DON’T modify any basecode that comes with your assignment.

  • DON’T ever share your code with other students.

It’s ultimately up to you to learn from your assignments! Remember, no one is going to hire you to do work that they can easily do themselves using a search or AI program generator. The programs in this course are simple enough for an AI or search or two to solve. But the next level of programs will not be so simple. You must do the work yourself. This is the only way you will develop the skills and expertise to reach your full potential.

One final point: we will be using open-source repositories for homeworks in this class. Thus, it will be possible to see what other students (and previous students) have submitted. If you copy from others' repositories, it will be obvious to everyone involved! Only look at other solutions after you have finished your own first!

Academic Accommodations

All classes will be recorded and close-captioned. Links to lectures will be posted on the class syllabus.

Any student who has a disability-related need to record this class first must speak with the Director of Access Services, Deb Alder, as part of university policy. Class members need to be aware that this class may be recorded.

To receive an accommodation for a course activity (such as more time on quizzes and exams), you must have an Accommodation Letter from the Office of Student Disability Services and you need to contact us to work out the details of your accommodation at least two weeks prior to the activity. Forms can be emailed to me, the instructor.

You are also welcome to contact us privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services.

Students needing academic accommodations for a disability must first register with Access Services. Students can call 610-526-7516 to make an appointment with the Director of Access Services, Deb Alder, or email her at dalder@brynmawr.edu to begin this confidential process. Once registered, students should schedule an appointment with the professor as early in the semester as possible to share the verification form and make appropriate arrangements. Please note that accommodations are not retroactive and require advance notice to implement. More information can be obtained at the Access Services website. (http://www.brynmawr.edu/access-services/)

Covid Policy

Lectures and labs will have a mask-friendly policy. All are welcome to wear a mask if they so wish, but no one is mandated to wear a mask.

If you are symptomatic (coughing, sore throat, or running nose), please either stay at home or come into campus with a mask. Lectures will be recorded so they can be watched later. Missed lab activities and quizzes will have their grade credit transferred to the final.

Academic support

Title IX

Bryn Mawr/Haverford College is committed to fostering a safe and inclusive living and learning environment where all can feel secure and free from harassment. All forms of sexual misconduct, including sexual assault, sexual harassment, stalking, domestic violence, and dating violence are violations of Bryn Mawr/Haverford’s policies, whether they occur on or off campus. Bryn Mawr/Haverford faculty are committed to helping to create a safe learning environment for all students and for the College community as a whole. If you have experienced any form of gender or sex-based discrimination, harassment, or violence, know that help and support are available. Staff members are trained to support students in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, and more.

The College strongly encourages all students to report any incidents of sexual misconduct. Please be aware that all Bryn Mawr/Haverford employees (other than those designated as confidential resources such as counselors, clergy, and healthcare providers) are required to report information about such discrimination and harassment to the Bi-College Title IX Coordinator.

Information about the College’s Sexual Misconduct policy, reporting options, and a list of campus and local resources can be found on the College’s website: