Class Syllabus
Professor
Theresa (Tess) Tanenbaum
(ttanen@uci.edu)
TA
Jeffrey Bryan
(jsbryan@uci.edu)
Time
Wednesdays 4-6:50pm
Location
Anteater Learning Pavilion Room 1600
Catalog Description
Students work in teams to design and implement a new computer game or virtual world. Emphasis on sound, art, and level design, building a community, cut scenes, production values, full utilization of hardware and software platform, and current industry trends.
Course Objectives and Philosophy
In this course students work in teams to design and develop a game. This game can be in any genre, developed on any platform, and be about any subject. As a final project class, things are pretty wide open, but there are some “learning objectives” for the class:
- Learn how to work within a diverse team as a specialist, while also taking ownership of the “big picture”.
- Learn how to “scope” and “polish” a comparatively “long term” game project.
- Learn how to coordinate with outside “contractors”, mentors, and collaborators, and how to manage complex communication and organizational tasks.
- Learn how to position your game within a market that is saturated with independent games so that it stands out.
- Learn how to test and refine your game with naïve players, how to take critical feedback, and how to “find the fun” through iterative design.
By the end of these two quarters, you should have a portfolio piece that you can proudly take with you as you enter the job market. You should have a game that you can enter into local, regional, and national design competitions. You should have something that you could conceivably polish and further refine and attempt to publish or otherwise distribute. By the end of the Fall Quarter you should have a playable prototype that is “feature complete”, meaning that the core mechanics are in place, and the “fun” is present. You will need the entire Winter Quarter to polish and refine that prototype into something that approaches “content complete”.
Course Related Outside Activities
Save the date now! January 31-February 02, 2020! I will be coordinating UCI’s GGJ location this year for the sixth year in a row. Previous GGJs have had amazing turnouts, with participants from UCI, other colleges in the area, and local game companies. Last year we were the second largest site in the US and the 8th largest site in the world! This year, you all will participate in the Jam: it will be a chance to clear out the cobwebs, to iterate over some ideas that you might have had to put on the back-burner during the Fall, and a chance to bond with your colleagues. Ordinarily I ask students to come to the Jam without pre-planned teams, but this year, if you want to Jam in your teams for the class I’ll allow it.
We will be having a “Capstone Games Showcase” at the end of the Winter Quarter in week 10. Each team will set up a table to demo their games, and will have 2 minutes to introduce their game to the assembled guests. Please feel free to invite family and friends. We will invite all of the industry mentors to attend, and will also be inviting students and faculty across ICS, and members of the IVECG to join us and see what everyone has made.
This event happens annually in Orange County, and our teams have done quite well in the competition. UCI capstone students have placed first for the last 5 years in a row. Submissions are usually in the Spring, and you are highly encouraged to polish and submit your games to this!
Course Logistics and Resources
Course Structure
We meet once a week for three hours. Every other Wednesday the Industry Mentors will visit, and meet with their teams. The other Wednesdays will be for team consulting with the teaching team, and for the occasional guest lecture from industry guests.
Mentors
We are joined by an exciting group of professional game developers from the games industry! Each team will have at least 1 official mentor, as well as access to the “floating mentors” in the room. These folks have a lot of wisdom and experience to offer and are committed to helping you make your games the best they can be.
Course Website
You've found it! This is it!
The syllabus will be posted on the course website, along with any digital resources for your use.
ITCH.IO Sites
Each team will create a project on itch.io where they will be able to post playable builds as the game progresses.
Google Drive
We will provide each team with a Google Drive folder, which we will have access to. This should be used for storing any design documentation, game assets (excluding code), and other materials that you generate during the class. Do not keep source code in this folder: that is what GitHub is for!
GitHub Repositories
We will be using GitHub to store and track the files created for the games in this class. I will create private repositories for each team as part of the course setup. Every student should create a GitHub account if they do not already have one.
Assignments and Grading
Winter Quarter Grading and Deliverables
ICS 169A and 169B are graded together; your official grade for the Fall quarter will be IP (In Progress). Each student will receive an unofficial, “tentative” grade for the Fall quarter, which will be determined as follows:
I will use the tried and true Index Card method to track attendance, and solicit feedback from you. The TA will distribute index cards at the beginning of each class – please return them by the end of class with your name, student number, the date, and any comments or questions you may have for the teaching team.
I will create a shared Google Form for each team. Each week, before Wednesday’s class, each member of the team should add a brief statement about what they plan to do in the coming week, and what they actually did the previous week
Your main deliverable for this course is your final game project. I will assign it a letter grade, based on the following factors:
- Gameplay: Did you find the fun? Is the game fun in more than one way? Do the mechanics give rise to the desired dynamics, and do these lead to the aesthetics that you are trying to produce? Is the game replayable? Are the controls effective and appropriate to the game design? Does it use challenge and difficulty effectively? Does the game reward desired behavior? Are the rewards intrinsically motivating? Does the game support a range of strategies, approaches, and playstyles?
- Narrative, concept, mood, or theme: Does the game have a strong concept that informs and integrates the different aspects of its design? Is this concept reflected in the gameplay? If the game includes narrative elements, are they realized through quality writing, environmental design, and character design?
- Aesthetics: Are the visuals pleasing and appropriate to the design? Is there a clear and consistent visual language in the game? Does it convey the desired mood or theme? Are animations polished and physically believable?
- Audio: Does it have music and sound? Are the audio assets complete, polished, and effectively integrated into the experience? Do they convey the desired mood or theme?
- (Note: credit is given for art and sound assets created by team members, and for the work required to wrangle external artists and their creations)
- User Experience and Interface: Are there appropriate menus, options, and interfaces for getting into and out of the game? Does the in-game UI communicate essential game-state information? Is the game-state legible to the player when necessary? Is the controller or keyboard/mouse configuration learnable, legible, and in service to the the design goals of the game? Does the interface leverage existing literacies or conventions where appropriate? Do the interface elements reinforce and support the narrative, theme, and emotional content of the game?
- Bookmarking and “scaffolding”: Does the game support save-states, player profiles, warps, passwords, checkpoints, or other systems for preserving progress and allowing players to interrupt and continue play across multiple sessions? Does the game provide tutorials, in-game support, training systems, and other mechanisms for teaching the player how to play, where to proceed, and how to engage with the game?
- Technical accomplishment: Does the game do something that required complex computation or infrastructure development (e.g.: complex AI, networked multi-player, procedural content generation, etc.)
- Depth and breadth: Does the game support extended play? Are there extensive levels to explore? Are there multiple characters or playstyles or weapons, or skills? Does the game support and reward the development of mastery and skill over repeated play?
- Innovation: Does the game attempt to do something new at the level of mechanics, dynamics, or aesthetics? Is it pushing the boundaries of existing games, or breaking new ground with aspects of its design?
For the most part, everyone on the team will receive the same grade, however I reserve the right to modify this grade at the individual level if it becomes clear that some members of a team are doing either exceptionally well or exceptionally poorly when compared to their peers.
The Winter Quarter grades are worth 55% of your overall grade in the class
Winter Weekly Schedule
Week 1
January 8
- Welcome Back!
- Winter Deliverables overview
- Lecture: “Game Feel & Polish”
Week 2
January 15
- Shuffle Mentors
- Meet the Mentors
- Sign up for team check-ins with Jeff and Tess
Week 3
January 22
- Lecture: Game Narrative and Dramatic Structures for Game Design
- Team meeting time
Week 4
January 29
- Meet with Mentors
- Sign up for team check-ins with Jeff and Tess
Week 5
February 5
- Lecture: Narrativized Game Interface
- Team meeting time
Week 6
February 12
- Meet with Mentors
- Guest Lecture: TBD
Week 7
February 19
- Workshop and present games in class
Week 8
February 26
- Meet with Mentors
- Guest Lecture: TBD
Week 9
March 5
- Showcase Prep
- Final Submission Prep
- Playtesting and Check-Ins
Week 10
March 11
Final showcase!
The final showcase event is open to the public! Feel free to invite family and friends so you can share your games with them! The mentors will be there, along with assorted ICS faculty and other interested folks from the community.
We will be holding the showcase in ALP 1600 this year.
Here’s an overview of the night:
- 4:00pm: Students arrive and set up games for demoing
- 4:30pm: Doors open to the public, mentors arrive
- 4:45pm: Professor Tanenbaum welcoming remarks
- 5:00pm: Team Introductions
- 5:30pm: Game Demos
- 7:30pm: Public departs, and we debrief and celebrate!
Finals Week
March 18
No class meeting during Finals Week
Final Builds and design materials are due by 11:59pm on Wednesday March 19th.
Fall Assignments and Grading
Fall Quarter Grading and Deliverables
ICS 169A and 169B are graded together; your official grade for the Fall quarter will be IP (In Progress). Each student will receive an unofficial, “tentative” grade for the Fall quarter, which will be determined as follows:
I will use the tried and true Index Card method to track attendance, and solicit feedback from you. The TA will distribute index cards at the beginning of each class – please return them by the end of class with your name, student number, the date, and any comments or questions you may have for the teaching team.
Please let the teaching team know if you will be missing class. While you will NOT be able to get credit for attendance, it is helpful for your team and for us to know that your absence is planned.
I will create a shared Google Form for each team. Starting in week 2, by 11:59 pm on the Tuesday before class, each member of the team should add a brief statement about what they plan to do in the coming week, and what they actually did the previous week. This is done individually, using the same form every week.
For the final presentation each team will present their game prototype to the class. This should be playable and should capture the core mechanics and experience of the game that you are developing. The second quarter of the class should be polishing and testing, so you want your prototype to be as feature complete as possible
The tentative Fall quarter grade will be weighted as 45% of the overall grade.
Late submissions will not be accepted under any circumstances.
Additional Important Course Policies and Resources
I expect everyone in the class to maintain a spirit of kindness, generosity, and inclusivity. We may not always agree with each other, and this classroom should be a space where we can collectively explore our disagreements in the spirit of intellectual curiosity and inquiry. However, I firmly believe that it is possible to disagree passionately while still treating the people around you with care and respect. As such, I have a zero tolerance policy for any behavior that denigrates, insults, attacks, or otherwise mistreats any other person in the classroom.
My name is Tess and I use she/her/hers pronouns. When you introduce yourself you may choose to share your gender pronouns. If you have a name you would prefer the teaching team and your colleagues to use instead of the one listed on the roster feel free to let us know and we will happily use it. If you have any questions about pronouns in general, or have any requests about your own pronouns or other gender-related needs in this space, you are welcome to chat with me.
Please read and heed the following information regarding academic dishonesty. I cannot and will not tolerate academic dishonesty. For more information, refer to the UCI Student Handbook. The UCI campus policy on academic honesty resides here: http://honesty.uci.edu/
The penalty for plagiarism is at a minimum to receive a 0 on the assignment and have the case reported to the Associate Dean’s office. Particularly flagrant cases may receive more severe punishment (notably failing the course).
Here is an excellent resource to help you determine if you have plagiarized or not?
Due to the nature of this course, there are few opportunities to plagiarize. However, there are lots of pitfalls around licensing, copyright infringement, and open/closed source software to be on guard for. There are plenty of resources out there for game developers including asset packs of sprites, sounds, and animations. There is also a lot of open source code that can be used to solve problems that others have already solved so that you can focus on your designs. I’m generally comfortable with you using these resources in moderation, but you need to be extremely disciplined about maintaining records of where you are sourcing materials and be confident that you are not violating any copyrights or other intellectual property agreements by including 3rd party materials in your game.
If you are a student with a disability (e.g., physical, learning, psychiatric, vision, hearing, etc.) and think that you might need special assistance or a special accommodation in this class or any other class, please check out the Disability Center online or visit them in person at: 100 Disability Services Center, Building 313, Irvine, CA 92697-5130. If you are having difficulty with the class for any of these reasons, please let the instructors know so we can work with you to meet your learning needs. If for any reason you are uncomfortable discussing the details surrounding a given situation you need not disclose anything, but at least let us know that something is going on so that arrangements can be made to adjust things for you before you fall too far behind.
We are always available to meet with students who are having trouble, and we are usually willing to make some reasonable accommodations if you have a legitimate issue, but we require that you check-in with us before a problem gets out of control so we can work something out.
It is common for university students to experience periods of emotional distress, such as depression and anxiety, especially around period of stress or change–for example, the transition to college from high school. At times, these emotional challenges can interfere with school work, making it difficult to attend class or complete assignments. If you are experiencing emotional distress, we strongly recommend contacting the UCI Counseling Center, which offers many forms of resources and support.
While your instructors sympathize with the challenges you may be facing, we are not mental health professionals. Therefore, we cannot grant you special accommodations due to emotional distress (such as a deadline on an assignment) unless you have sought assistance from the UCI Counseling Center or an outside mental health professional and can provide relevant documentation. Do not share the details of your mental health crisis with your instructors. This is for your privacy and our own emotional health.
If you are concerned about how your emotional health is affecting your overall quarter grade, seek assistance from the UCI Counseling Center immediately. Students whose grades suffer considerably are sometimes able to withdrawal from the course after the drop/add deadline. However, they may only do so if their ongoing mental health issues have been documented by the UCI Counseling Center.
(content adapted from Bonnie “Bo” Ruberg’s ICS60 syllabus)
Office Hours are held by appointment. If you wish to meet with me, please book a slot using this link.
Helpful Resources, Tips, and Tricks
The reality of our class (and our program as a whole) is that programmers outnumber artists three to one. However, there are many resources for those who want to include art in their games, but are not visual artists by training.
- Kate Compton’s Procedural Art for Games: Kate specializes in using code to make playful art. She did the special effects and planet generation for Spore, and has created a bunch of open-source PCG tools for things like generating and evolving plants, snowflakes, and other natural things. She is also the brains behind Tracery, a language for text generation that can be used for creating twitterbots, artbots, games, stories and more. Check out her GitHub for code you can use to make pretty things!
- Processing: Processing is a software sketchbook oriented at creating visual art through code. The language is very close in syntax to Java, but with a bunch of classes oriented towards creating and manipulating visuals. There are many examples of ideas on the site for how to use code to create art.
- Learning Shaders: A collection of tutorials on shaders in Unity, which will help you develop the specific look of your game.
- Linden Reid’s Shader Tutorials: Linden has many awesome tutorials for learning shaders in Unity. Other useful resources from him include this color spread tutorial and the github repo with the whole Unity project. Here’s the GDC talk about Fortnite’s procedural animations. He writes: “My blog has a post specifically about resources for getting started learning shaders in Unity. I highly recommend the book 3D Math Primer for Graphics and Game Developmentfor anybody interesting in learning shaders from the coding side. If you’re interested in learning about shaders without coding, I recommend Unity’s ShaderLab or Amplify Shader Editor.”
There are many resources to help you manage tasks, keep in communication, and keep your projects moving forward. here are a few that we recommend:
- Slack:Increasingly, people in tech, games, and academia are moving some of the conversations that used to happen in e-mail over to Slack. Slack has the advantage of persistent group conversation threads and the ability to integrate many tools directly into its workflow including Google Drive, GitHub, and Trello.
- Asana: Asana is a task management and workflow organizing application for complex projects.
- Trello: An alternative to Asana. Also good for managing tasks in large projects.
- (more coming soon)
Yes, we are all very familiar with Unity. And yes, Unity has many advantages. However, perhaps you want to do something more specialized, or perhaps you want to try something new. Here are some alternate engines and platforms to consider.
Unreal Engine: Probably the biggest competitor to Unity. Unreal has a slight edge over Unity for large complex projects, overall performance, and graphics quality (although this is subject to some debate). The blueprint system allows for non-programmers to quickly build out games, although it is limited.
Amazon Lumberyard: A relative newcomer to the game engine scene. Built on top of the CryEngine, it adds a new front end and easy Twitch integration, but may not be ready for prime time yet. We have mentors in the class who are working with it, so perhaps it is worth considering for certain kinds of projects.
Inform and Twine Interested in writing interactive fiction? These are the tools! Inform 7 is the heavyweight hypertext editor of your dreams. Ideal for complex narrative systems, but with a steep learning curve. Twine is the less fully featured, but profoundly easy to use baby sibling of Inform. Both are worth exploring if you want to do something story-centric.
(more coming soon)
I’ll be adding resources here throughout the year. There are many relevant books, tutorials, and papers out there to help you make your games better. This list is just a tiny slice of what you can find if you look.
- Game Feel, by Steve Swink: A great book that looks at some of the elements needed to make your gameplay feel awesome.
- Start Making Games by Craig Morrison: a great resource for game makers by our very own Craig Morrison. Geared at beginners, but with lots of tools for more advanced designers as well.
Old Obsolete Fall Weekly Schedule
Week 2
October 9
Due FRIDAY October 11: First Weekly Status Report
Due the night before class: Final Teams and contact info (submit via an e-mail to entire teaching team)
- Meet the Mentors
- Course policy overview
- Intro to project management tools.
Week 2 Lecture Slides
Week 3
October 16
Due the night before class: Itch.io links and initial brainstorming info. (submit via an e-mail to entire teaching team)
Due Tuesday October 15, and every Tuesday hereafter: Second Weekly Status Report
- Paper Prototyping Activity
Week 3 Lecture Slides
Week 4
October 23
Due the night before class: First playable build, posted to Itch.io site. (submit via an e-mail to entire teaching team)
- Meet with Mentors
- Guest Lecture: Linden Reid
Week 5
October 30
Due the night before class: Second playable build, posted to Itch.io site. (submit via an e-mail to entire teaching team)
During class we’ll be playing the games in their current state:
- One person at a time from each team is the “demo person”.
- Everyone else will circulate and playtest the other games.
- Swap out demo people at the halfway mark.
Week 6
November 6
DUE BY BEGINNING OF CLASS: List of technical problems/questions/blockers (submit via an e-mail to entire teaching team)
- Meet with Mentors
- Lecture: Fun Doctoring!
Week 6 Lecture Slides
"Fun Doctoring"
Week 7
November 13
Week 8
November 20
- Meet with Mentors
- We play your games!
Week 9
November 27
- (Professor Tanenbaum out of town)
- No class due to Thanksgiving
Week 10
December 4
- Meet with Mentors
- Lecture: Preparing for finals week presentations
Finals Week
December 11th
We will meet in the usual place, at the usual time on the usual day in finals week.
- Prototype Presentations