Giter VIP home page Giter VIP logo

gameplayprogramming's Introduction

ECS189L - Gameplay Programming

CRN for Spring 2021

40582

Syllabus

Basic Information

Instructor

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: tentative Tuesdays at 2:00 PM
http://joshmccoy.com
https://faculty.engineering.ucdavis.edu/mccoy/
https://www.twitter.com/deftjams

TA

See Canvas.

Course

Lecture Meeting Time: Mondays, Wednesdays, and Fridays at 10:00-10:50 AM
Duscussion Meeting Time: Wednesdays at 11:00-11:50 AM
Final Examination Period: Wednesday, June 9th at 6:00-8:00 PM

Course Description

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.

Materials

Unity version 2021.1.0 Tech Stream release. Download it directly here or get it with Unity Hub putting the following URI in your browser:
unityhub://2021.1.0f1/61a549675243
You can download Unity Hub here.

Grading and Assessment

  • [45] Group Game Project
  • [45] Exercises
  • [10] Participation /Attendance

Grade Scale

Grade Point Threshold
A 94
A- 90
B+ 87
B 84
B- 80
C+ 77
C 74
C- 70
D+ 67
D 64
D- 60
F 0

Exercises

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 individually and will be worth 10 points each. Each will have two components which are described below with a typical amount of grade points they are worth:

  1. [70] The individual programming assignment.
  2. [30] 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.

Group Game Project

You will design and develop your own game given a set of themes and constraints in teams of 5. Each team member will have a main role and a sub-role on the game.

Quizzes

Due demands for ansynchronous course material, there will be no quizzes this quarter.

Light quizzes will be given during discussion sections. Their contents will be based on recent lectures and readings.

Participation and Attedance

Students are required to attend and participate in class, labs, and their team meetings. Attendance will be taken during lectures and discussion sections.

Participation

Each submitted participation code is worth 1 2 grade points. This means you need 5 codes to max out your particpation grade.

Attendance

The attendance rules are suspended while the course is offered remotely.

The attendance algorithm is as follows:
AttendanceGrade = Min(5, 5 * (SubmittedAttendanceCodes / (ClassesWhereAttendanceWasTaken - 1)))

Schedule

Week Topic Reading Discussion Plan Assignments and Due Dates
1 Overview of the course, game engines, anatomy of game development, command pattern. Salen and Zimmermen ch. 4 & 5 Dissecting Unity projects. Getting started with Unity materials
2 Unity structures, Code standards, best practices, style guides, camera systems, lerp. Command Pattern, Style Guide and Best Practices, Scroll Back: The Theory and Practice of Cameras in Side-Scrollers by Itay Karen. Overview of Programming Exercise 1: Command Pattern Assigned on 7 April: Exercise 1: Command Pattern
3 Gameplay mechanics, Game Events and the Observer Pattern.Data-driven game systems. Defining Game Mechanics by Miguel Sicart, Pubsub Overview of Exercise 2: Camera Controllers Assigned on 14 April: Exercise 2; Due on 14 April: Exercise 1 Implementation
4 Mechanics, rules, gameplay systems, component systems. Salen and Zimmermen ch. 11, 12, 13, Component design pattern Overview of Exercise 3 Due on 21 April: Exercise 1 Peer Review, Due on 21 April: Exercise 2
5 Interactivity, factory pattern. Salen and Zimmermen ch. 6, Crawford The Art of Game Design, ch. 1, INTERACTION section Due on 28 April: Exercise 3, Due on 28 April: Exercise 2 Peer Review
6 Game combat algorithms, game design documents. Achterman The Craft of Game Systems series 1, 2, 3, & 4
7 The Jump. Game Feel by Steve Swink
8 Game AI: character behavior, agents, and real-time performance. TBA Introduce pitches and game design docs with examples
9 Game AI: analytics and applications of data science and machine learning. TBA 3 minute final project pitches from each group Final project design doc due
10 Procedural content generation. TBA Final project demo

Development and Design Resources

Are you prepared?

World of Warcraft: The Burning Crusade Cinematic Trailer
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 laced 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):

  1. Final Fantasy VI Combat System
  2. Crystal Warriors
  3. Fantasy Fight

Unity and C# Practice Exam for New Programmers

Preparing for Projects

This is a 5-day regimen of training tutorials to learn the basics of Unity for use in this course. Each day consist of between 2 and 3 hours of material per day.

Day Material
1 Creating Your First Unity Project - Using the Unity Interface - Microsoft .NET Interactive Introduction to C#
2 Essential Unity Concepts - Roll-a-ball Tutorial - Scripting Overview,
3 Beginner Scripting (You can use nearly any 3D project with this tutorial.)
4 Intermediate Scripting Tutorial (You can use nearly any 3D project with this tutorial.)
5 Project Architecture: Unity Project Folder Structure - Unity Tips (This is long; watch as many as you can or care to.)

Unity

Unity User Manual
Unity Tutorials

Learning the Basics

C#

Learning C#

Game Design

How Games are Made

Design Documents

Game Feel

Production Cycles

Development teams

Techniques for Team Development

Scrum and GitHub

Project Versioning and Control

User Interface and User Experience (UI/UX)

Game Trailers and Press Kits

Attendance Policy

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.

UC Davis Code of Academic Conduct

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/).

Technology in the Classroom Policy

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.

Social Media Policy

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.

gameplayprogramming's People

Contributors

asandhuzero avatar dr-jam avatar zeychen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.