CSC 395-02: Game Design & Programming

Instructor
Dawn Nye

Office Hours
By appointment (Noyce 2811). Let me know the day before you want to meet (or earlier), and we can make something work. I also keep late hours and will usually answer Teams messages and emails late into the night.

Mentor
Michael O’Connor

Mentor Sessions
W 7-8 PM at Noyce 3819

Meeting Times
MWF 1:00-1:50 PM at Noyce 3819

Course Description
This course will provide students with a broad range of experiences in game design, software development, AI, computer graphics, and oration all aimed at video game development. Students will, over the course of the semester, prototype a video game of their own design in small groups using the programming techniques and design philosophies presented in the class. These topics will include, but are not limited to, core game loop structures, game software architecture, 2D/3D movement, collision detection, AI movement/steering behaviors, AI coordination and decision making, tactical vs strategic planning, turn-based vs real-time behaviors, and game platforms such as MonoGame, Unity, Unreal, and so on.

In addition, student groups will give several oral presentations during the class. They will have the opportunity to pitch their game in a number of simulated scenarios, including a short ‘elevator pitch’ as well as in a more formal mock interview setting.


Topics and Readings

Below are the (immediately) upcoming and previous topics we will cover in class. More will be added as the semester advances.

TopicAssociated Reading/Notes/Slides
Introductions
History of Video GamesSlides
The Big ProjectThe Project
C#Experience the Difference

A Lot of C# Tutorials by RB Whitaker
MonoGameGetting Started

A Lot of XNA (MonoGame’s Nearly Identical Precursor) Tutorials by RB Whitaker
A Lot of MonoGame Tutorials by RB Whitaker

FOR MAC USERS
Step By Step Instructions to Set Up Everything
How To Tame Your Mac (Video Instructions)
For further questions, email h@nnah.io, who, out of the goddess of her own heart, has put these materials together.
Pitches/Design DocsNotes
The Anatomy of a Design Document
National STEM Video Game Challenge: Game Design Documents
Example Elevator Pitch Flyer

NEW: Example Game Pitch Slides
Affine TransformationsA Crash Course on Linear Algebra
Tips and Tricks Notes
Game DesignIntro to Game Design
Collision DetectionDeveloping Collision Detection
Quick General Convex Polygon Collision Detection (via the Separating Axis Theorem)
AABB Tree Example
Quadtree Example
The Sweep and Prune Algorithm in Detail

Resolving Collisions – New!!!
Use a Physics Engine (Like This One!?) Or Write Your Own
3DBlender Tutorial Series
Game ArchitectureEntity-Component vs Blobject vs Chaos

Entity-Component-System
Small ECS Game Walkthrough
The Unknown Design Pattern
There’s a Wiki!?
AICollider Queries
Minimax
Global Behaviors from Local Decisions
Flocking Principles
Behavior Trees
More Reading
Fuzzy Logic
The Full Formal Treatment

Textbook: Grinnell Library
ShadersBackground

Lab – Let’s Make More Shaders
Secondary Lighting Tutorial
Blinn-Phong Lighting

Advanced Techniques
Normal Mapping (more advanced form of Bump Mapping)
Skyboxes and Reflections
Shadow Maping
Shadow volumes
HCIGuest Lecture Slides
Bepu PhysicsThe Repo (obtain via the NuGet Package)
-Contains demos (Demos.sln)
Getting Started
More Approachable Example Code
Procedural Content GenerationIntroduction
Genetic Algorithms
Notes
Generating Structures
Noise and Terrain
Grammars
Graph Grammars

Textbook: https://www.pcgbook.com/
Jumping (and Related Math)Math for Game Programmers: Building a Better Jump
5 Tips for Better Platformer Controls
Why Does Celeste Feel So Good to Play?
Platformer Toolkit (Interactive Tutorial!!!)
Miscellaneous TopicsTrigger Colliders
Pathfinding
Debugging Games

Course Outline

Course topics will eventually include (approximately in the order presented) but are not limited to:

  • Video game history
  • Game design
  • Game pitches
  • Video game design/documentation
  • Video game software architecture
  • 2D game platforms
    • Core rendering techniques
    • Core platform architecture
  • 2D movement and collision detection
  • 3D game platforms
    • Core rendering techniques
    • Core platform architecture
  • 3D movement and collision detection
  • Animation
  • Input/output management
  • Kinetic vs dynamic movement
  • AI mathematical foundations
  • AI kinetic movement and dynamics steering behaviors
  • AI movement coordination and group decision making
  • Pathfinding
  • Tactical vs strategic planning
  • Turing-based AI vs real-time AI
  • A final game prototype presentation

Course Objectives

  • Students will learn to create a game pitch document and pitch presentation
  • Students will learn to create a well-written game design document
  • Students will prototype a game of their own design using their game design document
  • Students will understand basic game architecture paradigms and concepts such as:
    • Core game loops independent of concrete implementation
    • Input/output management
    • Movement
    • Physics
    • Shaders
    • AI
  • Students will learn how to incorporate AI into computer games with the opportunity to utilize more advanced AI techniques upon interest