DESMA 158: GAME ENGINE

Course Name & Number: DESMA 158
Course Title: Game Engine
Academic Term: Spring 2024
Location: Broad 4240
Day and Time: Tuesday and Thursday: 9 – 11:50am

Instructor: John Brumley (he/him)
Office hours & Location: Thursdays 12-1pm / Room 4240
Email: jtbrumley@g.ucla.edu

Teaching Assistant: Hua Chai (they/he)
Office hours & Location: Tuesdays 12-1pm
Email: chai.callmehua@gmail.com

Online Spaces

Discord GroupMe

Course Description

This course introduces the fundamentals of programming interactive projects in game development software. Classwork focuses on familiarizing students with game engines, computer programming concepts, player experience, and other skills that are foundational to making digital games. Lectures, exercises, and class projects teach skills needed to create digital games including custom rules, interactive physics systems, vectors, generative or randomized levels, save data, custom input systems, score-keeping, and sound. This course is offered in parallel with the concurrent courses, Game Design and Interactive Animation.

Prerequisites

DESMA 24 Interactivity.

We will revisit many of the same concepts covered in Interactivity, but using the C# scripting language and the Unity scripting API. If you haven’t taken DESMA 24, but have prior experience with Unity and C# please let me know.

Learning Outcomes

By the end of this course, you will be able to create a real-time, interactive software with custom rules, generative or randomized levels, save data, responsive controls, physics, sound, and simple animation. The skills you will learn in this class translate well to immersive media, generative animation, and other modes of human-computer expression.

Course Outline

See the schedule for a more detailed breakdown of each class. Note: Schedule and daily contents are subject to change!

Weeks 1–2
Introduction to game development tools, Unity Editor, C# introduction, visual language, and level design.

Project 1: Worlding (Due: Week 3)
Remix of the Roll-a-ball tutorial game that explores the possibilities of environment and spatial narrative. Roll-a-ball is a quick tour of the Unity Editor, but also provides the foundation for something more expansive.

Weeks 3–6
Alternative Engines. Working in 2D. Creating assets/sprites. Vector fundamentals, physics, and persistent data.

Project 2: Zine (Due: Week 6)
Create a zine using Unity or an alternative game engine. Experiment with custom asset creation and collage techniques. Express ideas through game mechanics, assets, text, and structure.

Weeks 7–10
Refinement, remix, sampling, streaming, custom input, mods.

Project 3: Game as Engine (Due: Week 10)
Starting with either a previous project or a completely new idea, consider alternative ways of engaging with the project using novel input systems, custom graphics/shaders/vfx, cameras, multiple players, sound, procedurally generated content, etc.

Readings and Homeplays In addition to readings that we will discuss in class, you will be assigned games to play outside of class which are relevant to the our projects.

Micro Jam We will have at least one micro jam where teams will attempt to create an entire game within a single class period.

Assignments & Grading

Grading Breakdown

  • Project 1: 20%
  • Project 2: 30%
  • Project 3: 30%
  • Participation / Attendance / Readings: 20%
  • Extra Credit !✨%

Evaluation

Approach each project with your own level of skill and comfort in mind. You should work to expand your technical skills, but also lean into your strengths. If you’re good at drawing, use a bunch of 2D drawings - even if the world is 3D! If you’re into photography, use photocollage to build your game world!

Creative projects and proposals are graded based on these parameters:

  • Submitting on time.
  • Completing project deliverables.
  • Attention to detail/craft. Does the project run? Are there unintended bugs, glitches, etc.
  • Project scope / ambition / aesthetic and technical ambition. Are you doing the bare minimum, or are you pushing yourself technically or aesthetically?
  • Creative risk taking and resourcefulness. Are you pushing the limits of the tools? Hacky solutions a perfectly acceptable and encouraged!

Reading and homeplay responses are pass/fail. As long as you thoughtfully complete/participate you’ll get full credit.

Submitting Projects

See submission guidelines for more details

LATE WORK

Projects should be ready to play prior to the beginning of class on their respective due date. The submission of the documentation of the project can be done by midnight of the due date.

After this, a full letter grade will be deducted from the project grade for each class day that the assignment is late. For example, if an assignment due on Tuesday is submitted the following Thursday, an A grade would become a B. If it isn’t submitted till the following Tuesday, the A would be marked down to a C.

Unity projects are complicated and can be annoying to backup. Make sure to save often and occasionally create a backup of your scenes. I recommend exporting a unitypackage of your project and storing the package on an external drive or cloud backup. If you are comfortable with version control, there are a number of options (1 , 2).

If you anticipate that you won’t be able to complete the work by the due date, please contact us before the due date so we can discuss options.

ATTENDANCE

Please come to class on time at 9:00am. If you are more than 15 minutes late, you will be marked as late. Three late marks results in an unexcused absence. Any disputes should be discussed with the TA within two weeks.

If you must miss class, email the TA prior to the class. Absences will not be excused after the fact except in extreme circumstances. You get one unexcused absence without it affecting your grade. Each unexcused absence after that will result in one full letter grade deduction from your participation / attendance score.

APPROPRIATION, FAIR USE, AND GENERATED CONTENT

You should strive to develop your own assets for your project submissions. If major portions of your project have been borrowed or generated, particularly audio, visual, and textual content, they must be conceptually significant to your project and you should be able to justify their inclusion. While developing early stage prototypes and testing mechanics, it is perfectly acceptable to use placeholder assets.

Resources

  • Unity – We strongly recommend that you install using Unity Hub, and get the latest LTS version (currently 2022.3)
  • Visual Studio – Install visual studio with unity hub while you are installing unity. (If you already have Unity working with VS Code or another text editor / IDE, feel free to use that)
  • A three-button mouse
  • 2D and 3D production software of your choice. Some options:
    • Krita – powerful open source digital paint tool
    • Blender – fully featured open source 3D art and animation tool
    • Piskel – free pixel art app
    • Aseprite – inexpensive pixel art / animation tool
    • Sculptris – “A gateway into the exciting world of 3D.”
    • Crocotile 3d – A tool for creating 3d scenes with 2d tiles.
    • Mixamo – Free, but requires a login- community sourced walk cycles and 3d animations which you can apply to any model that can T-pose.

Exhaustive list of cheap and free tools compiled by Everest Pipkin

Required Reading

We will read a few chapters from Anna Anthropy’s Rise of the Videogame Zinesters and other articles. All texts will be provided.

Getting help with Unity

There are lots of difficulties and bugs that can emerge while developing a project in Unity, and there are just as many solutions to these problems. More often than not, understanding what the problem is will point directly to the solution (keep an eye on that console!). After you troubleshoot a problem once, you should be able to recognize and solve it the next time it appears.

If you find yourself stumped by a problem, reach out to your classmates to see if someone else has experienced the same issue. We highly recommend that you, as a cohort, create a space for sharing and seeking support from each other, as many of you will share many of the same bugs, errors, and glitches.

We have set aside studio time during class for working on projects. If you are feeling a bit shaky with any concepts or technical hurdles, this is the perfect time to get help.

Online resources

Books

These books aren’t required, but can be especially useful if you want to take a deeper dive.

  • Katie Salen Tekinbaş and Eric Zimmerman. Rules of Play : Game Design Fundamentals. MIT Press 2004.
  • Jesper Juul. Handmade Pixels : Independent Video Games and the Quest for Authenticity. MIT Press 2019. (online interviews)
  • Brian Schrank and J. David Bolter. Avant-Garde Videogames : Playing with Technoculture. MIT Press 2014.
  • Steve Swink. Game Feel : A Game Designer’s Guide to Virtual Sensation. Morgan Kaufmann Publishers/Elsevier 2009.
  • Stephanie Boluk and Patrick LeMieux. Metagaming: Playing, Competing, Spectating, Cheating, Trading, Making, and Breaking Videogames (online edition)
  • Robert Nystrom – Game Programming Patterns (ebook)
  • O’reilly books has many books on programming and other technical guides. The online collection is free through UCLA!

Land Acknowledgement

The University of California, Los Angeles occupies the ancestral, traditional, and contemporary Lands of the Tongva and Chumash peoples. Our ability to gather and learn here is the result of coercion, dispossession, and colonization. We are grateful for the land itself and the people that have stewarded it through generations. While a land acknowledgment is not enough, it is the first step in the work toward supporting decolonial and indigenous movements for sovereignty and self-determination. Read more about what land you’re occupying: https://native-land.ca/ 

Commitment to Diversity & Safer Spaces:

We understand the classroom as a space for practicing freedom; where one may challenge psychic, social, and cultural borders and create meaningful artistic expressions. To do so we must acknowledge and embrace the different identities and backgrounds we inhabit. This means that we will use preferred pronouns, respect self-identifications, and be mindful of special needs. Disagreement is encouraged and supported, however our differences affect our conceptualization and experience of reality, and it is extremely important to remember that certain gender, race, sex, and class identities are more privileged while others are undermined and marginalized. Consequently, this makes some people feel more protected or vulnerable during debates and discussions. A collaborative effort between the students, TA, and instructor is needed to create a supportive learning environment. While everyone should feel free to experiment creatively and conceptually, if a class member points out that something you have said or shared with the group is offensive, avoid being defensive; instead approach the discussion as a valuable opportunity for us to grow and learn from one another. Alternatively, if you feel that something said in discussion or included in a piece of work is harmful, you are encouraged to speak with the instructor or TA. *Statement adopted from voidLab at: https://github.com/voidlab/diversity-statement 

COVID-19

It is important that everyone stay safe and avoid coming to class if you have any concerns about your health status.

If you find that external struggles and/or COVID related challenges are affecting your ability to attend class, please reach out to us. We want you to be successful in the class, but we care about your wellbeing more than anything else. Open communication with us is most important in this regard, and we will be very open to accommodating every reasonable request.

Students must adhere to the current campus directives related to COVID-19 mitigation, and refusal to do so may result in the student being asked to leave the classroom or referred to the Dean of Students. For more information about COVID-19 requirements on campus, please visit: https://covid-19.ucla.edu/information-for-students/

Center for Accessible Education (CAE)

The UCLA Center for Accessible Education (CAE) is responsible for ensuring students with documented disabilities have access to an inclusive, supportive learning environment. Students with disabilities or other needs requiring academic accommodations should speak with me as early in the quarter as possible to be sure they get the support they need.

Students needing academic accommodations based on a disability should contact the Center for Accessible Education (CAE) at (310) 825-1501 or in person at Murphy Hall A255. When possible, students should contact the CAE within the first two weeks of the term as reasonable notice is needed to coordinate accommodations. For more information visit www.cae.ucla.edu

Academic Integrity and Information on Student Conduct

UCLA is a community of scholars. In this community, all members including faculty, staff and students alike are responsible for maintaining standards of academic honesty. As a student and member of the University community, you are here to get an education and are, therefore, expected to demonstrate integrity in your academic endeavors. You are evaluated on your own merits. Cheating, plagiarism, collaborative work, multiple submissions without the permission of the professor, or other kinds of academic dishonesty are considered unacceptable behavior and will result in formal disciplinary proceedings usually resulting in suspension or dismissal. As specified in the UCLA Student Conduct Code, violations or attempted violations of academic dishonesty include, but are not limited to, cheating, fabrication, plagiarism, multiple submissions or facilitating academic dishonesty. When a student is suspected to have engaged in academic dishonesty, Academic Senate regulations require that the instructor report the allegation to the office of the Dean of Students. For more information, see the UCLA Student Conduct Code.

TITLE IX

UCLA prohibits gender discrimination, including sexual harassment, domestic and dating violence, sexual assault, and stalking. If you have experienced sexual harassment or sexual violence, there are a variety of resources to assist you.

Confidential Resources

You can receive confidential support and advocacy at the CARE Advocacy Office for Sexual and Gender-Based Violence, 1st Floor Wooden Center West, CAREadvocate@careprogram.ucla.edu, (310) 206-2465. Counseling and Psychological Services (CAPS) also provides confidential counseling to all students and can be reached 24/7 at (310) 825-0768.

Non-Confidential Resources

You can also report sexual violence or sexual harassment directly to the University’s Title IX Coordinator, 2241 Murphy Hall, titleix@conet.ucla.edu, (310) 206-3417. Reports to law enforcement can be made to UCPD at (310) 825-1491. These offices may be required to pursue an official investigation.

Faculty and TAs are required under the UC Policy on Sexual Violence and Sexual Harassment to inform the Title IX Coordinator—A NON-CONFIDENTIAL RESOURCE—should they become aware that you or any other student has experienced sexual violence or sexual harassment.

Psychological Health, Well-Being and Resilience

UCLA is renowned for academic excellence, and yet we know that many students feel overwhelmed at times by demands to succeed academically, socially and personally.  Our campus community is committed to helping all students thrive, learn to cope with stress, and build resilience. Remember, self-care is a skill that is critical to your long-term success.  Here are some of the many resources available at UCLA to support you:

  • Counseling and Psychological Services (CAPS): https://www.counseling.ucla.edu/ Provides counseling and other psychological/mental health services to students. Walk-in hours are Monday-Thursday 8am-4:30pm and Friday 9am-4:30pm in John Wooden Center West. Crisis counseling is also available 24 hours/day at (310) 825-0768.

  • Ashe Student Health and Wellness Centerhttp://www.studenthealth.ucla.edu Provides high quality and accessible ambulatory healthcare and education by caring professionals to support the academic success and personal development of all UCLA students.

  • Healthy Campus Initiative (HCI): https://healthy.ucla.edu Provides links to a wide variety of resources for enhancing physical and psychological well-being, positive social interactions, healthy sleep, healthy eating, healthy physical activity and more.

  • Campus and Student Resiliencehttps://www.resilience.ucla.edu/ Provides programs to promote resilience and trains students to help support their peers.

  • UCLA Recreationhttps://www.recreation.ucla.edu/ Offers a broad array of services and programs including fitness, yoga, dance, martial arts, meditation, sports, and much more.

  • Equity, Diversity and Inclusionhttps://equity.ucla.edu/ Committed to providing an equal learning, working and living environment at UCLA and supports a range of programs to promote these goals campus-wide.
  • UCLA GRIT Coaching Program: https://www.grit.ucla.edu/ GRIT stands for Guidance, Resilience, Integrity and Transformation. In this program, UCLA students receive individualized support from trained peer coaches to manage stress, foster positive social connections, set goals, and navigate campus resources.

Resources for Students Dealing with Financial Stress 

  • Economic Crisis Responsehttps://www.studentincrisis.ucla.edu/Economic-Crisis-Response provides support and guidance to students who have self-identified, or are identified by UCLA faculty or staff, as experiencing a financial crisis that impacts their academic success at UCLA.

  • Bruin Shelter: http://www.bruinshelter.org/ provides a safe, supportive environment for fellow college students experiencing homelessness by fostering a collaborative effort between universities, community-based organizations, and service providers.

  • The CPO Food Closet: http://www.cpo.ucla.edu/cpo/foodcloset/ provides free food for any UCLA student who may be experiencing hunger and/or struggling to attain food due to financial hardships.