Decal
This course is a deep dive into the creation of games, from beginning to end. Over the course of the semester, students will pitch a game, form small teams, and build a project from start to finish with help from the instructors. Students are not required to have any prior game development experience but it is required that a student taking the course either has basic art, music or programming abilities.
They will also learn about the different roles that exist within the industry, how to apply their skills to them, and form an understanding about how to best prepare themselves to find their way into these roles. This will be a rigorous class, one that will require a lot of time and dedication. Students will be selected via the application due Friday, January 20 at 11:59 PM, to ensure that the class composition reflects a diverse range of skills, backgrounds, and proficiency levels.
Apply Here
Course Info
Time: Tue/Thu 6:30-8:00pm
Location: Jacobs 10
Lead Facilitators: Henry La
Faculty of Record: Ren Ng
Course Email: decal@gamedev.berkeley.edu
Office Hours
Time: Mon 4-5PM, Wed 7:30-8:30PM
Location: Discord
Past Projects
Prerequisites
This class is open to both programmers and artists. You are not required to have any prior game development experience.
Programmers
Have completed CS61A and CS61B (concurrently is ok)
Artists
Some artistic background, familiarity with some digital art tools. A portfolio works
Course Structure
The class meets twice a week, for an hour and a half each meeting and attendance is required. For the first four weeks, meetings will be tutorial lectures, designed to provide students with knowledge of how the Unity engine works and best practices for implementing game mechanics. The majority of the classes for the first half of the course will be in the form of hands-on lab assignments.
Project teams are formed around Week 6 and the course will assume the following structure:
The first ~20 minutes of class will be a short lecture. On the first class of the week, a project work meeting will follow. On the second class of the week there will be a work day following. Occasionally, the second class of the week will be replaced with a guest lecture or playtest.
During the project work meetings:
Teams will meet, check in with a facilitator about their progress, and plan their work schedule for the next week. Teams will work on their projects and get help from facilitators. The lectures from Week 6 onward will be determined during the semester based on what the students need. The lectures will come from a variety of sources: instructors, industry contacts, alumni, and possibly the students themselves.
The Projects
Project 1
Programmers will follow along a series of tutorial videos to create a game from scratch. After completing the game, each student will be required to design and implement their own mechanics, artwork, or SFX and music. This project will reinforce key concepts introduced in the lectures given in the first four weeks of the class. Programmers will learn the fundamentals of creating a project in Unity by following the tutorial. Artists will learn to create and incorporate their own assets by designing and importing their own assets into a mechanically completed game.
Team size: 1 person
Project 2
A one week "game jam" type project where the goal is to try and build a game in a week. The main purpose of this project is to teach students about scope and what can be done in a week. It will also serve as a way for each student to see what kind of group dynamic works best for them.
Team size: 2-3 people
Project 3
The flagship project for the course is a game designed and built by the students themselves over the course of approximately two months. Students will begin preparing pitches in Week 5 with guidance from the instructors, and will present their pitches to the entire class in Week 6. Students will then select which projects they are interested in, and the instructors will form teams based on their interests and skills. From there on out, the teams will work with the instructors and their team leads to create a schedule. The instructors will also assign labs to each team based on the project that team is working on; the labs will provide the team with resources that will be useful to know when working on the project. While working on the project, the teams will work with and receive feedback from the facilitators and other students. All projects will be graded based on how well they achieve five milestones.
Team size: 3-4 people
At each milestone, all projects are shared with the rest of the class. These milestones are as follows:
Milestone 0: Each team is expected to have a game design document completed. The design document needs to include an explanation for the vision of the game as well as the specifics for the core aspects of the game. The teams are also expected to create a week by week breakdown of tasks.
Milestone 1: Minimum Viable Product (MVP): Playable prototype of the original pitch. The core mechanics and the first iteration of the core art assets of the game should be implemented. Effectively this milestone exists to ensure that the games are fun, and to provide teams with feedback regarding how their game can be improved.
Milestone 2: Alpha Build: All of the main mechanics should be in place. The general art style should be decided on and the main assets (character, environment) should be in place. A first pass should be done on the rest of the art assets. There should be a basic but complete level as intended to appear in the final game. This build can have bugs.
Milestone 3: Beta Build: The main mechanics should no longer have any bugs. Most of the art assets should be completed and in the game. The game and its levels should be mostly complete. This build needs to have a certain level of polish; having a few small bugs and incomplete minor assets is fine at this build.
Milestone 4 (showcase): Release Build: Finished Project. The game should be complete, and in line with the original pitch. It should be polished, playable from start to finish, and mostly bug free.
At each milestone, team members will fill out team evaluations that will be factored into your grade.
Labs
In the first few weeks, students will work through instructor made, CS-style labs that are focused on teaching a particular aspect of Unity that will aid students in making their projects throughout the semester. Labs will be assigned in class and due the following week.They are completed upon answering check-off questions with a facilitator. Each lab is graded by completion.
WRITTEN RESPONSES
Students will be responsible for several written assignments. One is a reflection for project 2 to journal their progress within the week that they develop their game. The second is a game design document for the final project that details the design of your game as well as a week by week breakdown of tasks. Lastly students will be required to submit a short write-up detailing their thoughts on the project and the course as a whole.
REQUIRED READINGS
Students will be required to read one article on game design concepts and principles every week. Basic questions will be asked to the students to ensure that students have been keeping up with the required readings. A link to each week’s reading is provided in the syllabus below and also posted on the course website.
REQUIRED MATERIALS
Every student will need a laptop capable of running Photoshop, Illustrator, and Unity3D. No textbooks are required. Two recommended resources are articles from www.gamasutra.com and videos from www.gdcvault.com.
Grading
Labs | 10% |
Project 1 | 10% |
Project 2 | 10% |
Project 3 | 60% |
Written Responses | 10% |
Project 1 and 2:
Graded on completion of project specifications
Grading will consist of a P/NP and some feedback on your project
Project 3 (Per milestone):
Mentor evaluation: 40%
Peer evaluations: 40%
Project score: 20%
Project score is based off of progress made not percentage of pitch completed
A minimum of 70% is required to pass the course.
General Policy
Attendance matters! If you cannot be at class, you must let an instructor and your team lead know. Only two unexcused absences will be allowed, and any further absences will result in your grade dropping 10% per absence. If you are in danger of not passing come the end of the semester, the instructors will let people know what can be done to remedy that.
Week | Day | # | Lecture | Reading | Lab Links | Project | Office Hours |
---|---|---|---|---|---|---|---|
1 | Tue 1/31 | 1 | Intro to Unity | Game Design Principles | Intro to Unity Basics | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |
Thu 2/02 | 2 | Intro to Game Design | Programmers Lab: Intro to Programming Artist Lab: Spriting |
Project 1 Part 1: Artists Art/Programmer Hybrid Music/Programmer Hybrid Programmers |
Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
2 | Tue 2/07 | 3 | Intro to the Art Pipeline and Character Design | Good Graphics V.S Good Aesthetics | Programmers Lab: Advanced Unity Programming Artist Lab: Animations |
Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |
Thu 2/09 | 4 | Fundamentals of Animation | Programers Lab: Colliders and Rigidbodies Artist Lab: Tilesets |
Project 1 Part 1 due Project 1 Part 2: Artists Art/Programmer Hybrid Music/Programmer Hybrid Programmers |
Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
3 | Tue 2/14 | 5 | Game Loops | Basic Principles of Gameplay Design | Programmer Lab: Animator and Blendtrees Artist Lab: Animator and Blendtrees |
Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |
Thu 2/16 | 6 | UI | Programmer Lab: Unity UI Artist Lab: UI Asset Creation |
Project 1 Part 2 due Project 2 Assigned |
Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
4 | Tue 2/21 | 7 | Git | How to Pitch your Project to Publishers | Programmer Lab: Coroutines Artist Lab: Environment Design |
Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |
Thu 2/23 | 8 | MVP and Design Docs | Project 2 Due | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |||
5 | Tue 2/28 | 9 | Pitch Day | How and Why to Write a Great Game Design Document | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 3/02 | 10 | Project 2 Showcase | Project 3 Teams are Assembled | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |||
6 | Tue 3/7 | 11 | AI Design | 5 Tips for Better Playtesting | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 3/09 | 12 | Game Feel | Milestone 0: Game Design Doc Due | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |||
7 | Tue 3/14 | 13 | Music & SFX | Team and Corporate Structure | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 3/16 | 14 | Milestone 1 Delivery: Demo and Feedback | Milestone 1 | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |||
8 | Tue 3/21 | 15 | Accessibility | Insightful Playtest Questions | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 3/23 | 16 | Potential Guest Lecture (TBD) | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||||
9 | Tue 3/28 | 17 | Spring Break! | 4 Layers, A Narrative Design Approach | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 3/30 | 18 | Spring Break! | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||||
10 | Tue 4/04 | 19 | Implementing Tutorials / Project Work Meeting | Xbox Adaptive Controller | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 4/06 | 20 | Milestone 2: Demo and Feedback | Milestone 2 | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |||
11 | Tue 4/11 | 21 | Programmers: Workday Artists: Critique |
A Brief Note on Games and Narratives | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 4/13 | 22 | Potential Guest Lecture (TBD) | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||||
12 | Tue 4/18 | 23 | Tutorials/Project work meeting | The Many Ways to Show the Player how it's Done with In-Game Tutorials | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 4/20 | 24 | Milestone 3 Delivery: Demo and Feedback | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||||
13 | Tue 4/25 | 25 | Potential Guest Lecture (TBD) | Game Design in Real Life: Gamification | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | ||
Thu 4/27 | 28 | Game and course postmortem writeup due | Course Postmortem writeup due | Location: Discord, Mon 4-5PM, Wed 7:30-8:30PM | |||
15 | Mon 5/01 (tentative) | 31 | Showcase | Location: Jacobs Hall |
Programming Labs
-
Advanced Movement Dive into the finer details of movement. In this lab you’ll be learning more about advanced movement mechanics and how your design choices in game might impact your movement decisions. Also learn about aerial movement, friction, and bounciness levels. Finally, you’ll be learning about some design philosophy regarding aerial movement and jumping.
-
Advanced Scripting Remember basic scripting? This is level 2. Complete a fruit ninja like game by implementing a number of things such as a spawner and the “fruit.” Also, you get to learn a number of ways to keep your code organized and clean so that when you work in a team, other programmers do not have trouble working with your code.
-
Audio Ready to have your collective brains blown out by awesome audio? Good. This lab covers the built in Unity tools for audio mixing and effects. The lab covers an audio manager script for managing various audio sources, and the lab will also cover audio mixers. Audio mixers allow for different effects and sounds to have different output volumes and various adjustments such as lowpass, reverb, and more. This lab does not cover spatial audio, audio editing, or music composition.
-
Basic Scripting By jove, this is it. This is your first lab in Unity which will implement various gameplay mechanics with using public variables and the inspector. Enemy attacks and player health are affected using code and the inspector in this lab. Coding will not be covered in this lab, but programmers should read the additional passages for more information on the code itself. Prefabs, a base for various kinds of GameObjects, are covered in this lab from their creation as well as their use. Enemies will be derived from a base prefab called Enemy, and students will create a new enemy based off of the Prefab.
-
Colliders In this lab you’ll learn all about colliders - the part of Unity’s physics engine that lets objects actually interact with each other. By the end of this lab, you’ll have learned the difference between physical and trigger colliders, become familiar with all the functions you need to know to use colliders effectively, and have used colliders to create a basic platformer and a simple motion-activated boss.
-
Coroutines In this lab, you’ll learn all about Unity coroutines! Coroutines are an amazing tool to make cool looking transitions, smooth out your movement and animations, and improve the performance of your game, so they’re definitely worth learning! Through the course of this lab, you’ll implement color fading, enemy spawning, and smooth movement and develop a solid understanding of coroutines that will allow you to apply them in a wide variety of situations going forward.
-
Delegates and Events Complete a top down survival shooter by implementing delegates and events. You will learn about what they are, how to use them and most importantly, why to use them as you create the game.
-
Lighting This lab covers the basics of Unity lighting in 3D, from the different types of lights to how lights interact with objects and materials. It touches into different lighitng effects and model materials and shaders. Lighting can change the entire mood and by the end of the lab, you'll know how to manipulate the basics to achieve the desired effect in Unity.
-
Raycasting Here we explain the basics of raycasting in 2D. We go over how to use a few different types of shapes and how exactly they work in comparison to the default ray. At the end, you will have completed a very small and basic game all about shooting down circles with your lasers.
-
Rigidbody Basics In this basic lab, you’ll be learning all about Rigidbodies, the component that controls an object’s position through physics simulation. Through Rigidbodies, you’ll learn about all the components necessary to achieve basic smooth movement. There will also be an introduction to input settings! Extremely important unless you plan on making a text based adventure game.
-
Transitioning, Saving, and Building Scenes In this lab we introduce you to transitioning from one scene to a new scene, saving data so that it persists both between scenes and between game sessions, and building an executable to test everything.
-
Unity Basics Most basic introduction to all things Unity. This lab goes over the format, object structure and most general information of Unity. This does not require any knowledge of Unity, coding or art. By the end of the lab, you’ll have made a simple space game moving around to get collectibles.
Art Labs
-
Animator/Blend Tree In this lab, you’ll create smooth transitions between 2D animations using Blend Trees. Blend trees are a must for organizing complicated animation transitions in Animator. They’re used to quickly handle transitions between animations when the player provides new input. In 3D games, they actually interpolate between the two animations, creating a smooth transition. We will only be going over the 2D version, but all the concepts apply to 3D animations.
-
Particle Effects Learn about the thought process that goes into creating a lightning effect as you create your own customizable lightning effect. By going through this lab, you will gain a basic understanding over a few of the particle system modules and moving forward, you will have the ability to use those modules to create your own unique effects.
-
Pixel Art Spriting In this lab, you will cover the basics of pixel spriting. It will teach you some of the technical ideas such as jaggies and dithering so that you are able to create your own game ready sprites and assets. It also covers the basic workflow as well as useful resources in learning even more. This lab is in Photoshop; however you can use any other pixel sprinting software. Unity is not required for this lab.
-
Sprite Animations In this lab, you will be getting a preview of the game animation pipeline, from a Photoshop sprite to a finished Unity animation. Along with introducing the basics of animation principles, we will be introducing two methods of creating animations: a sprite-based method, and a puppet-based method that uses many of the tools that 3D animations use.
-
Tilemaps In this lab, you’ll learn how to use Tilemaps to create a level. It will go over the process of cutting a spritesheet and assigning sprites to specific tiles. The Unity implemented Tilemap is able to easily create new levels with specific tiles that contain rules, animations, randomizationndom generation, and tile setting conditions. It is an easy way to make many levels and, once set up, easy for everyone of all programming levels to do. With more programming, more unique brushes, rulesets and randomization can be created to generate dynamic levels without the hassle of gameobjects and prefabs.
-
User Interface (UI) This is a lab to get you acquainted with UI in Unity. You will create a basic shop using all UI elements. It will cover everything step by step from what a canvas is to implementing masks. This first half of this lab goes over the Unity components you need and the second half is split, where programmers learn the scripting required for events and artists learn about the design behind UI.
-
3D Rigging, Skinning, and Animating This lab covers how to rig, skin, and animate in Maya. Rigging is the act of deciding where the various joints and bones of a model will be placed, skinning means to merge the bones and joints with the actual model so that the model can be manipulated, and animating is the actual animation of the model using the joints and bones.