layout: true --- class: center, middle # CMPM 121 - Game Development Patterns --- # Instructor and Schedule * Instructor: Dr. *Markus* Eger (he/him) * Email:
meger@ucsc.edu
* Office hours: Monday, Wednesday, 3.30-4.30pm * My office is E2-267, you can also reach out on Discord * Class: Monday, Wednesday, 7.10-8.45pm, Thimann 1 * Discussion Sections: - Wednesday, 1.20pm-2.25pm, Crown Classroom 208 - Friday, noon-1.05pm, E2-194 --- # About Me * Originally from Austria --- # About Me
--- class: medium # About Me * Originally from Austria * BSc and MSc in Computer Science from University of Technology Graz, Austria * PhD in Computer Science from NC State University, USA * Visiting professor at the University of Costa Rica 2019-2020 * Assistant professor at Cal Poly Pomona, 2021-2024 * Games: Hades II, Factorio: Space Age, Balatro, IEH 2 * I also like board games, e.g. Dominion --- # About Me
--- # About Me - My dissertation was about games that involve communication, including Hanabi and One Night Ultimate Werewolf - My research involves games, AI, VR, and interaction with humans - I am also interested in procedural content generation (Minecraft, narrative generation, etc.) - Fun fact: My cats are from Costa Rica --- # About Your TA: Ishaan (he/him) .left-column[
] .right-column[ * 6th year CM PhD student working with Prof. Jim Whitehead * Have created procedural road generation tools and worked with the CARLA simulator. I have also been the Graduate Student Instructor for the Foundations of Video Game Design (CMPM80K) class for 1 quarter. * Undergrad from Savitribai Phule Pune University. * Research Interests: procedural generation, AI and Large Language Models, 3D game engines and animation. * Current project: Using Large Language Models to generate NPC car behaviors to test autonomous vehicles in simulation. * Areas of expertise: game design concepts, programming, 3D game engines (Unreal/Unity), and AI ] --- # About You: Who is here?
--- # About You * Name * Games * Fun facts? --- # Class Resources * Canvas * Discord * [Unity 6](https://unity.com/) * It is highly recommended that you use a git repository (github or similar) for development! --- # Class contents and structure * We will talk about recurring patterns in large software projects * These include design patterns (how to organize your classes), but we will also talk about other aspects of software engineering * This class is a prerequisite for the CMPM 170-series, where you will work on a large project from scratch * In this class you will work on a large project with a lot of guidance * There will also be some assigned readings + quizzes about them --- # Textbook (free!)
[Robert Nystrom: *Game Programing Patterns*](https://gameprogrammingpatterns.com/) --- # Textbook (accessible online through the library)
[Martin Fowler: *Refactoring Improving the Design of Existing Code*](https://refactoring.com) --- class: medium # Class schedule (tentative) * Introduction: Week 1 * Software Architecture: Week 2 * Design Patterns: Weeks 3-5 * Software Engineering Practices: Weeks 6-7 * Refactoring: Weeks 8-10 --- # Grading * Assignment 0 (Unity tutorial): 5% * Assignment 1 (enemy spawning): 15% * Assignment 2 (spells): 15% * Assignment 3 (relics): 15% * Assignment 4 (pivot): 5% ("getting started") + 25% * Quizzes (about 6-8): 20% --- # Assignment 0 * The project will be done in Unity * Some of you may already be familiar with the engine * Some may have never used it * Assignment 0 is a Unity tutorial to make sure that everyone has at least a basic overview of the engine * We won't need much more than that! --- # What this class is not * This class is not "Intro to Unity" * We will use it, because it does some things for us that are tedious otherwise * You will mostly work on "pure" code structure, rather than something Unity-specific * There may be packages in the asset store that do some of the things we are doing, but learning specific packages is also not the purpose of this class --- # What this class is * A discussion of many different aspects of software engineering * Software is often written in teams * We will therefore also talk about working with teams * Assignments 1-3 are in teams of 2 (Assignmen 0 is individual) * Assignment 4 is in teams of 4 --- # Next * Go to discussion section on Wednesday or Friday (depending on which you enrolled in) * Start assignment 0 (Unity tutorial) * Look for a partner for assignments 1-3 (there's a #group-search Discord channel)