Game Programming
Dr. Joshua A. McCoy, Assistant Professor
Computer Science and Cinema and Digital Media Departments
Email: jamccoy at ucdavis dot edu
Office: 3033 Kemper Hall
Office Hours: Mondays at 4:15 to 5:15 PM
http://joshmccoy.com
https://faculty.engineering.ucdavis.edu/mccoy/
https://www.twitter.com/deftjams
https://www.twitch.tv/deftjamz
Arunpreet Sandhu
Email: asisandhu at ucdavis dot edu
Office: 55 Kemper Hall
Office hours: Thursday from 1-2 PM
Lecture Meeting Time: Mondays, Wednesdays and Fridays at 3:10-4:00 PM in Haring Hall room 2016
Lab Meeting Time: Thursdays at 4:10-5:00 PM in Art Building 204.
Final Examination Period: Friday, June 7th at 1:00-3:00 PM
This course is about the design and development of nuanced and highly-contextual gameplay systems built on the foundation of traditional game engines. Technical game development has many facets including graphics engines, sound engines, networking, and animation system. Many of these facets are now well-established and are provided for in modern game engines. The focus of this course is on the remaining areas that are difficult to abstract and engineer into game engines as they are depend on the genre or details of a specific game design.
Unity version 2018.3.11f1. Download it here via the Unity Hub.
- [40] Programming Exercises
- [50] Project
- [10] Participation and Portfolio
Grade | Point Threshold |
---|---|
A | 95 |
A- | 90 |
B+ | 87 |
B | 84 |
B- | 80 |
C+ | 77 |
C | 74 |
C- | 70 |
D+ | 67 |
D | 64 |
D- | 60 |
F | 0 |
The programming exercises consist of projects in Unity in which you will have to implement significant game systems or capabilities. These exercises are to be completed individuallyl and will be worth 10 points each. Each will have two components which are described below with the amount of grade points they are worth:
- [7] The individual programming assignment.
- [3] Peer-reviewing the work of another pseudo-randomly assigned student.
Individual Programming Assignment - The exercise repositories complete with project descriptions and work specific ations will distributed via GitHub Classroom. You will be responsible for completing the excercise objectives, code quality, and following the best practices as described in class. Final submissions will be made via GitHub classroom.
Peer-review - For each programming excercise, each student will perform a peer review for another student's work. The reviewing student will be given access to the repository of another student's submmission for review. The peer-reviewer will make a new branch in the repository named "review" and will be responsible for a code review based on C# style guides, an assessment of how well the submission achieved the objectives of the assignment, and notes for improvement.
Exciting things TBA.
Students are required to attend and participate in class, labs, and their team meetings. Additionally, you can boost your participation points by building a portfolio of your work that is accessible to other via the web.
Week | Topic |
---|---|
1 | Overview of the course, Game Engines, Game Systems, Command Pattern. |
2 | Unity structures. Code standards, best practices, and style guides. |
3 | Gameplay systems. Camera systems. Technical Game Primitive. |
4 | Game Events and the Observer Pattern.Data-driven game systems. |
5 | Game Combat Algorithms. |
6 | Development teams and development methodologies. |
7 | Game balance and testing. |
8 | Game AI: character behavior, agents, and real-time performance. |
9 | Game AI: analytics and applications of data science and machine learning. |
10 | Procedural content generation. |
You are not prepared!
-- Illidan Stormrage
Illidan's words may resonate with you as computer science and game development are both difficult disciplines whose surrounding communities are lace with high expectations and elitism. Below are resources that can cut through assumptions and feeling though self-examination.
Introductory practice exercises for C# and game systems (you can run these in Unity, .Net, or MonoDevelop):
Unity and C# Practice Exam for New Programmers
Unity User Manual (2018.3)
Unity Tutorials
- Editor Basics - A video introduction to the basics of working with the Unity editor.
- Learning the interface - An introductory web page to the basic components of the Unity editor.
- An Introduction to Editor Scripting - An example-driven lesson about the basics of creating Unity scripts in C#.
- Important Classes - Basic descriptions and links to MonoBehavior, Transform, and RigidBody(2D).
- Unity C# class relationship diagram (originally from this Reddit post)
- Vector Cookbook - A basic introduction into vector operations in Unity.
- 2D or 3D projects - A guide to the differences between 2D and 3D projects in Unity.
- Graphics - The entrypoint to the graphics capabilities of Unity.
- Physics - The entrypoint to Unity's physics system.
- Scripting - The entrypoint into scripting in Unity.
- Scripting Tutorials - An index of beginner, intermediate, and topical scripting tutorials and lessons.
- Getting started iwth C# from Microsoft .NET documentation.
- Beginning C# 7 Programming with Visual Studio 2017 by Perkins, Benjamin, Hammer, Jacob Vibe, and Reid, Jon D.
- Illustrated C# 7 : the C# language presented clearly, concisely, and visually by Solis, Daniel M., and Schrotenboer, Cal.
- Design patterns in C# : a hands-on guide with real-world examples by Sarcar, Vaskaran.
- Fallout: A Postmortem by Timothy Cain
- Postmortem: Ion Storm's Deus Ex by Warren Spector *How Long Does It Take to Make an Indie Game? by Joseph Mirabello
- The "Core" of a Game by Brenda Romero
- A Feature Set from a “Core” by Brenda Romero
- Creating a Game Design Document by Brenda Romero
- One Page Designs by Stone Librande
- A GDD Template for the Indie Developer by Jason Bakker
- Effectively Organize Your Game's Development With a Game Design Document by Gamux
- The four phases of game development by Pascal Bestebroer
- pp. 39-56 of Game Development and Production by Erik Bethke [free preview]
- Scrum: A Breathtakingly Brief and Agile Introduction by Agile Learning Labs
- Try Git: Code School by GitHub
- Agile Lessons from Ryse and Crysis 3 by Patrick Payne
- Beyond Scrum: Lean and Kanban for Game Developers by Clinton Keith
- git - the simple guide by Roger Dudler
- GitHub for Noobs (1/4) – A Short History by Travis Neilson
- GitHub for Noobs (2/4) - Common Workflows by Travis Neilson
- GitHub for Noobs (3/4) Using the GitHub Desktop App by Travis Neilson
- GitHub for Noobs (4/4) Using the Command Line by Travis Neilson
- The Interface is Part of Gameplay by Brenda Romero
This course has no formal attendance policy. However, regular attendance is greatly recommended to be successful in the course as many of the class meetings will involve programming and one-on-one learning. If you expect to be consistently absent, please discussion the situation with your instructor.
The UC Davis Code of Academic Conduct (http://sja.ucdavis.edu/files/cac.pdf) will be strictly enforced in this class. In particular, plagiarism, academic dishonesty, and cheating will be dealt with severely. Any breach of the Code of Academic conduct can result in failing the assignment, failing the course, and displinary action via the Office of Student Support and Judicial Affairs (http://sja.ucdavis.edu/).
The use of laptops and technology in general are encouraged in this course as long as they are not disruptive to the rest of the class. If you choose to use a device with a screen, please sit in the back of the room to avoid distracting your fellow students. You are required to ask for permission before video or audio recording in the classroom. In general, students will be treated as adults capable of managing their technological lives while being respectful of others in the classroom.
Students are not permitted to make visual or audio recordings, including live streaming, of classroom lectures or any class related content, using any type of recording devices (e.g., smart phone, computer, digital recorder, etc.) unless prior permission from the instructor is obtained, and there are no objections from any of the students in the class. If permission is granted, personal use and sharing of recordings and any electronic copies of course materials (e.g., PowerPoints, formulas, lecture notes and any classroom discussions online or otherwise) is limited to the personal use of students registered in the course and for educational purposes only, even after the end of the course.
To supplement the classroom experience, lectures may be audio or video recorded by faculty and made available to students registered for this class. Faculty may record classroom lectures or discussions for pedagogical use, future student reference, or to meet the accommodation needs of students with a documented disability. These recordings are limited to personal use and may not be distributed (fileshare), sold, or posted on social media outlets without the written permission of faculty.
Unauthorized downloading, file sharing, distribution of any part of a recorded lecture or course materials. or using information for purpose other than the student's own learning is prohibited unless prior authorization is given by the instructor.