Teaching Assistant 2014-2017 - Networked Games, Networked AI, Mobile Games

Graduate course, University of Southern California, Department of Computer Science, 2014

During the academic year of 2014-2017, I was the teaching assistant for Networked Games, Networked AI, and Mobile Games. Mostly under my PhD Advisor Michael Zyda.

  • 2014 Fall CSCI 523 Networked Games with Michael Zyda
  • 2014 Fall CSCI 526 Mobile Games with Scott Easley
  • 2015 Spring CSCI 524 Networked AI with Michael Zyda
  • 2015 Spring CSCI 526 Mobile Games with Scott Easley
  • 2015 Fall CSCI 523 Networked Games with Michael Zyda
  • 2015 Fall CSCI 526 Mobile Games with Michael Zyda
  • 2016 Spring CSCI 526 Mobile Games with Michael Zyda
  • 2016 Spring CSCI 524 Networked AI with Michael Zyda
  • 2016 Fall CSCI 523 Networked Games with Michael Zyda
  • 2016 Fall CSCI 526 Mobile Games with Michael Zyda
  • 2017 Spring CSCI 526 Mobile Games with Michael Zyda
  • 2017 Spring CSCI 524 Networked AI with Michael Zyda

About the Class

CSCI 523

Design and implementation of networked games, from the origins of the supporting technologies in distributed systems, visual simulations, networked virtual environments, and shipped games.

CSCI 524

Networked game communication architectures, protocol development, architecting networked game AI clients/services. Character following, knowledge representation and reasoning, dynamic play strategies, search, learning, and planning.

Instructor for the class CSCI 523 and CSCI 524 was Michael Zyda, my PhD Advisor.

CSCI 523 serves as the introductory project class to making a networked game. CSCI 524 is intended to be a follow-up to CSCI 523, allowing students additional time to work on and polish their networked game by introducing Networked AI.

Student games from CSCI523 Networked Games where Fall 2014, timestamped

Student games from CSCI524 NAI Spring 2015, timestamped

CSCI 526 Advanced Mobile Devices and Game Consoles

Explore the complex engineering process required to design and build a real-time graphics engine to support physical realism on mobile devices.

Instructors for the class CSCI 526 were Michael Zyda or Scott Easley. More commonly, it is simply referred to as the Mobile Games class.

My Roles

In contrast to my previous two years when I dedicated all my time to being a Teaching Assistant for the capstone course Advanced Game Projects, I tried to take a more reasonable approach as I explored and worked on my PhD, leading to Toward the Stars and Arkology

I assisted with the day-to-day operation of the class. This includes the typical audiovisual, software, and hardware management for lecture to go well and for the lab computers to be ready for students. I answer student questions in class, by email, and by direct messages regarding the class, course work, and general curriculum at USC Games. During this time, I continued to coordinate events and amongst different TAs between the different classes in CS games/GamePipe Lab.

Challenges

Students

The students for these classes are different. The majority of the students taking the senior capstone Advanced Game Projects are in computer science with the games concentration or in the cinema school’s interactive media & games division. In other words, students looking to turn game development into their career and are familiar with the subject area.

Students for these classes are general computer science students who may be passionate about games but otherwise lack experience. They could also be someone with no interest or experience, but simply taking the class to graduate. There may be some CS games students that take the class to work on their portfolio. Overall, most students are beginners with little experience or knowledge about game development.

Evolving Industry

The game industry and game academia has also continued to evolve. Unreal Engine 4 released in 2014 and Unity 5 released in 2015. With accessible game engines capable of producing good graphics, some students start to want to use game engines for a quick pay-off while other wants to master C++ and the fundamentals by working on custom engines. It became a challenge to support students developing on different engines.

Different Environment

Furthermore, with general CS students who lack experience, much of what’s expected based on industry standard falls apart. Consider the academic working environment:

  • Students are not getting paid
  • Students are not familiar with the work they are doing
  • Students often do not work regular work hours - e.g., no work done this week because of midterm in another class
  • Students often work when they feel like it, such as starting at 11 pm
  • School lack adequate resources to provide a workspace with sufficiently powerful computers, space, etc.

I recall when students came to an adjunct professor well known in the game industry on how to deal with artists not working. The professor simply said “fire them”, not realizing that these artists are art students or volunteers that are working for free on student projects. Industry practices such as agile/sprint are difficult to implement as the reasons listed above.

Approach

Nonetheless, we have these students in our semester-long, project-based courses that we want to help.

To address these challenges, my focus became taking what I have learned leading and developing in an academia environment and pass it on to my students. Best practices for an academic environment, so to speak. Much of which also applies in any collaborative environment.

For example, it is crucial to set expectations for the group. Consider these different motivations and the possible direction:

  • For a good grade - Make sure your team did all that’s required and be in frequently communication of what’s needed, though really any of the below should also get a good grade if it fulfills their goal.
  • For a game portfolio piece - focus on a vertical slice or a beautiful corner. It only needs to look amazing for 30 seconds. It doesn’t even have to be fun.
  • For a technical portfolio piece - focus on the underlying technology, be able to quantify your results
  • For selling the game/starting a company - depending on scale, larger game may require more time spent on infrastructure
  • For a fun game - rapid prototype and iterate. Art and clean code base optional. These are different goals that will require different approaches. By setting proper expectations, the team can form based on similar motivations and can more efficiently work toward their goals.

With the rise of Youtubers that teach about game development such as Brackeys, there is no shortage of tutorials and information out there. This meant that our role as educator also starts to shift from one of the few that can show you how to do things to curating and presenting students with the most relevant information, again, based on best practice for an academic environment.