Course Info
Dates and Times
We hope to see you at our in-person lectures and labs every Monday and Wednesday 8:00 - 10:00am PST at SCI L113
Welcome to IMGD's Game Development for Designers course. This resource provides the information you will need regarding the structure of the course, technical considerations, and support available to you for the duration of the course.
This page provides an overview of the policies for this course as taught at USC Games within the University of Southern California, School of Cinematic Arts. We meet Mondays and Wednesdays 8:00am- 10:00am PST at SCI L113. If you have any questions before enrolling, please direct any questions you have in the # landing-page
channel in the CTIN 583 Discord. Enrolled students will be manually added to the private Discord channels.
🧜♀️ Staff
- Course Instructor: Deborah (Debbie) Yuen
- Student Assistant: Nile Imtiaz
📅 Section Dates
- First day of classes: Monday, January 8, 2023
- Last day to add: Friday, January 26, 2024
- Last day to change to Pass/No Pass: Friday, January 26, 2024
- Last day to drop without a mark of "W" and receive a refund: Friday, January 26, 2024
- Last day to withdraw without a “W” on transcript or change pass/no pass to letter grade: Friday, February 23, 2024
- Last day to drop with a mark of "W": Friday, April 5, 2024
- Last day of classes: Friday, April 26, 2024
- End of session: Wednesday, May 8, 2024
📇 Course Description
This course teaches the art of creating digital game prototypes and introduces the world of game engines. The class briefly introduces industry standard game engines such as Unreal Engine and Godot then dives deep into Unity game development using C# scripting. In class, students will be creating two games with Unity 3D and Unity AR while learning the fundamentals of C# scripting.
This course provides insight into how to create various experiences or realities while focusing on programming rather than visual scripting, which are fundamental skills for game development. It will engage you in lab activities that allow you to make personalized and actionable prototypes, rather than just the theoretical aspect of game development.
Unity is a professional tool in widespread use, including on award-winning, high-profile games such as Monument Valley, Hearthstone, Threes!, and Pokémon Go. It can be used to create games for many platforms, from desktop to mobile to consoles. We will also discuss the role of prototyping in the creative process and introduce the use of version control systems in developing code.
Throughout the course, you will not only be provided with the necessary technical skills to create your projects, you will be challenged to apply this game theory principles through hands-on projects. Hopefully, by the end of the course, you will have attempted and challenged yourself to achieve a project of your choice.
💡 Course Rationale
All designers need the ability to communicate their ideas to others. Because games are interactive, a functioning prototype communicates the designer’s ideas more clearly than any static description can. A game designer’s ability to prototype is thus equivalent to a cinematographer’s ability to sketch – while the skill does not directly appear in the final product, it allows the designer to refine his or her ideas and communicate them in a direct way to both team members and test audiences. In addition, the rules, patterns, and behaviors that form the game experience are a direct reflection of the underlying code. Code is the raw material with which interactive experiences are built, as pottery is made of clay, and paintings are made of paint. The designer who understands code, therefore, has a much deeper understanding of games as a medium.
📚 Assignments
🥼 Labs
There will be weekly lab assignments that consists of homework assignments including readings, videos, and computer set-up instructionsthat will be completed individually or with a lab partner. These assignments will help inform your two projects later on down the line.
⭐️ Project 1: Advocacy
The first project will be an individual individual project to create a 3D Unity game.
The intent of this project is to build, run, and publish a 3D Unity game that tackles a social justice issue. You will be implementing your own version of a WebGL single-player video game with multiple levels. Please feel free to start with the 3D Unity project we have been working on in class as a starting point. I recommend making a copy of the class project to avoid confusing our class project from your project 1. If you would rather not use the 3D Unity project we have been working on in class, feel free to create a new 3D project from scratch. You may use any packages and assets as you see fit; however, please review the project requirements to ensure that you have integrated all required features. Last but not least - make sure the game is created with the Universal Render Pipeline (URP) and supports Perforce integration.
⭐️ Project 2: Outside the Box
The final project can be an individual or paired project in which you work on developing a game of your choice.
There will be a lot of freedom for you to decide on what you want to work on for your final project. Please take this final project as an opportunity to grow your soft skills of why you love and chose to learn game development. Find something you want to dive into that will challenge the state of the art and enable you to advance through your career. Here is the opportunity to create an experience that excites you with any game engine of your choice in addition to the mentorship of your instructors. Carefully consider what your needs are and what you are trying to accomplish when deciding to develop with Unreal, Godot, Unity, or maybe some other game engine.
☎️ Communication
We will be using our Discord channel to communicate. If you have not joined our Discord channel yet, please reach out to the Student Assistant via email or during class. They will be able to provide you the link to join. Within our Discord channel, the main channels we will be using are the # sp24-general
. This channel is for students who are currently enrolled in the course. Following the course, you will then be added to the # alumni
channel of students who have taken the course previously. Open online office hours will be via Discord's Voice channel in # office hours
and remote, individual office hours will be hosted via Discord Call, Zoom, or Google Meet.
🛍️ Materials
- Unity 2020 or higher
- Unreal 5
- Godot 4.2
- Mouse
- Perforce
- GitHub
- Visual Studio
- Visual Studio Code
💯 Grading
Assignment | Percentage |
---|---|
Participation | 10% |
Labs | 10% |
Project 1 | 30% |
Project 2 | 50% |
Total | 100% |
🏫 Absence Policy
Students are expected to attend every class. This is for your own sake – we will move quickly, and it is easy to fall behind. The following guidelines, from the Interactive Media Division handbook, apply to all students:
- Two unexcused absences: lowers course grade by one half grade point, e.g. from A- to B+
- Three unexcused absences: lowers course grade by one full grade point, e.g. from B to C
- Four or more unexcused absences: request to withdraw from the course (instructor’s discretion)
You must contact me as soon as possible regarding your absence. Generally, I will expect to hear from you before class; in exigent circumstances, I would expect to hear from you within 24 hours. If you are sick, stay home. You need to be healthy to learn, and so do your classmates (and instructors). I also do not distinguish between mental health and physical health. If you cannot complete an assignment on time or come to class because of mental health issues, you must contact me promptly, just as with physical health problems.
👌 Incompletes
The only acceptable reasons for taking an incomplete course are personal illness or a documented family emergency. Students who wish to take incompletes must present documentation of the problem to the instructor before final grades are due. Incompletes are not available before the Week 12 withdrawal deadline.
❤️ Conduct
In this class, we make a commitment to foster a welcoming and supportive environment where students of all identities and backgrounds can flourish. This means that we will issue content warnings as appropriate, use preferred pronouns, and respect self-identifications. While debate and discussion are welcome, please remain aware of the implications of your words and the images that you include in your work. If the instructor or another student points out that something you have said or shared with the group might be offensive, avoid being defensive; this is a valuable opportunity for us to grow and learn together.
If you have a concern about any aspect of the class, you are encouraged to speak with the instructor. If you feel uncomfortable speaking with the instructor, you are also welcome to speak with either the undergraduate or graduate advisor for the division, who can discuss the issue with you directly or point you toward other on- and off-campus resources for addressing your concern.
Behavior that persistently or grossly interferes with classroom activities is considered disruptive behavior and may be subject to disciplinary action. Such behavior inhibits other students' ability to learn and an instructor's ability to teach. A student responsible for disruptive behavior may be required to leave class pending discussion and resolution of the problem and may be reported to the Office of Student Judicial Affairs for disciplinary action.
Discrimination, sexual assault, intimate partner violence, stalking, and harassment are prohibited by the university. You are encouraged to report all incidents to the Office of Equity and Diversity/Title IX Office and/or to the Department of Public Safety. This is important for the health and safety of the whole USC community. Faculty and staff must report any information regarding an incident to the Title IX Coordinator who will provide outreach and information to the affected party. The Sexual Assault Resource Center webpage fully describes reporting options. Relationship and Sexual Violence Services provides 24/7 confidential support.
🏄♂️ Academic Integrity
Plagiarism – presenting someone else’s ideas as your own, either verbatim or recast in your own words or code – is a serious academic offense with serious consequences. Please familiarize yourself with the discussion of plagiarism in SCampus in Part B, Section 11, “Behavior Violating University Standards”. Other forms of academic dishonesty are equally unacceptable. See additional information in SCampus and university policies on scientific misconduct.
General principles of academic honesty include the concept of respect for the intellectual property of others, the expectation that individual work will be submitted unless otherwise allowed by an instructor, and the obligations both to protect one’s own academic work from misuse by others as well as to avoid using another’s work as one’s own. All students are expected to understand and abide by these principles. Students will be referred to the Office of Student Judicial Affairs and Community Standards for further review, should there be any suspicion of academic dishonesty. The Review process can be found at USC Student Affairs.
For this class, you are encouraged to copy and modify code from online sources and from class demonstration projects. You are also welcome to work together on individual assignments. However, you must always label and provide attribution for work that is not your own, using a credits screen in your game or a credits.txt
file delivered with your build.
You must provide attribution:
- If you use more than 3 lines of code from an external source without substantially modifying it
- If you use any assets (images, textures, sounds, etc.) that are not your own work
- If you pair programmed with another student, give credits to both you and the other student
- If you use references from a resource such as a paper, remember to include citations
You may use any code presented in class without attribution. If you are not sure whether you need to document something, document it. If you are uncertain about what constitutes plagiarism, it is your responsibility to ask the instructor for clarification.
🐶 Support Systems
A number of USC’s schools provide support for students who need help with scholarly writing. Check with your advisor or program staff to find out more. Students whose primary language is not English should check with the American Language Institute, which sponsors courses and workshops specifically for international students.
The Office of Disability Services and Programs provides certification for students with disabilities and helps arrange the relevant accommodations. If an officially declared emergency makes travel to campus infeasible, USC Emergency Information will provide safety and other updates, including ways in which instruction will be continued by means of Blackboard, teleconferencing, and other technology.
💐 Acknowledgments
Some course handout material were derived from previous terms, professors, and GSIs. Firstly, I would not have been able to teach this course without my Student Assistant, Haocheng Liu. Thank you to Professor Sean Bloom and Professor Margaret Moser for sharing your past lectures, resources, and assignmments with me. Thank you to Professor Sam Roberts for showing me the way from day one. Last but not least, thank you to Professor Peter Brinson for welcoming me into the VLab and sharing your knowledge, expertise, and wisdom with me throughout the entire semester.
This course was heavily inspired by how courses are structured, run, and organized at UC Berkeley's Computer Science and Industrial Engineering and Operations Research departments. It was at my alumna matter where I learned how to make teaching content more accessible through course websites, Gradescope, Jupyter Notebooks, Labs, and much more. The following courses websites listed below significantly improved my learning experience at UC Berkeley and influenced my website's design.
INDENG 135/235
: Applied Data Science with Venture Applications: Data-XCOMPSCI/STAT C8
: The Foundations of Data Science: Data-8COMPSCI 61A
: Structure and Interpretation of Computer ProgramsCOMPSCI 61B
: Data StructuresCOMPSCI 61C
: Great Ideas in Computer Architecture (Machine Structures)MECENG/NWMEDIA C205
: Critical MakingCOMPSCI 70
: Discrete Mathematics and Probability Theory
Thank you to my own professor, Professor Björn Hartmann (EECS), whom taught me so much about the AR/VR space, how to navigate the Unity Engine, and make custom Unity packages. Thank you for responding to my messages in providing guidance on my curriculum and in selecting guest speakers for the course. And thank you to Professor Emeritus Dennis Lieu (MECENG) for mentoring me in what it means to teach at the college level.
The content here is far from complete and I am always seeking ways to improve my teaching skills and content. Please feel free to reach out if you have any suggestions! I am always open to feedback as I develop my own curriculum.