CSE professor Geoffrey M. Voelker teaches CSE 125 each spring. The course on “Software System Design and Implementation” gave 32 seniors this spring an opportunity to showcase everything they learned in the past four years. The course is a 10-week project to build a large, complex, distributed software system with real-time constraints, but to make it more exciting, the teams of six or seven students spend the quarter building a networked, real-time, 3D multiplayer game (hence the popular reference to CSE 125 as being “the videogame course”). Each final team demonstration doubles as the team members’ final exams.
As finals week was winding down for most CSE students, nearly 200 people showed up on June 9 to see how much the five teams were able to achieve in the 2017 edition of CSE 125. All of the teams completed the assignment, with “varying but impressive results,” said Voelker. In one case, the demo had to be without accompanying audio because of a last-minute glitch in moving the game to a computer in the Qualcomm Institute auditorium in Atkinson Hall. For each demo, at least two players were picked at random from the audience to play against members of the game’s development team. All four players for each demo were positioned at workstations set up on the stage of the auditorium, with video of the game displayed on the big screen above the players—and streamed in real time over the Internet. [Editor’s note: An archived version of the video stream is now available for on-demand viewing here.]
The seven members of Team 9hack Studios produced a game called “Sandma” (originally “Dungeon Party”). Kavin Srithongkham led the presentation, and his fellow team members included Ethan Chan, Daniel Lee, Richard Lin, Christiane Pham, Austin Puk and Joshua Tang. They divided into three teams: networking, graphics and artists. “We wanted to create a game that contains both the sense of exploration and discovery of dungeon crawlers, and the chaotic and competitive interactions of a party game,” said Srithongkham. Players compete with each other in mini games and use the points to collectively build a dungeon full of hazards and treasures. The goal is then to move across the dungeon while avoiding the opponents’ obstacles. During the ‘build’ phase of the game, players place objects around the dungeon grid, but they cannot see where the other players place their objects. All players start with the same amount of gold, and the winner is whoever has the most gold at the end of the game. “The goal of the game is to balance using gold to buy obstacles and structures, and saving gold to win the game,” according to team members.
Team Solarware came up with a game called “Heliocentric”, which the developers call a “space-themed 4X real-time strategy game” to gather enough resources to build a city on one of the game’s planets. The goal is to eliminate all other players, or to end up in control of the most celestial bodies (based on mass). Brandon Milton presented the game with his five teammates Dylan Pereira, Ethan Li, JJ Tran, Raj Kumar and Sylvia Li. Team members divided up development roles, e.g., to handle networking, graphics, the user interface, sound, or algorithms. In the final week of development, “I worked on fine-tuning some key gameplay aspects,” said CS senior Raj Kumar. “I fixed a bug in combat that would cause the server to go down when more than one unit was attacking the same target. Further I made sure that a unit’s client window, which details the unit’s stats, disappears when the unit dies.” According to presenter Milton, “real-time strategy games are very difficult to make, especially when each player may have 20 units or 30 units or 100 units at a time. You start to run into the problem of having the server process all of these at the same time. A new appreciation for this problem was definitely acquired, but not so much a solution to the problem.” Milton worked on user-interface elements, making movement smoother, and finalizing unit orientation, lasers and attack sounds: “I also played the role of jack-of-all-trades as much as I could.”
Outer space was also the setting of another team’s game. Called “MURPH”, it’s a “four-player cooperative space adventure travel game” (modeled somewhat on the commercial computer games Spaceteam and FTL: Faster than Light). The objective is to navigate to a specified destination, while overcoming obstacles by working together as the crew of the spaceship. The ship is made up of various compartments—navigation room, medical ward, engine room, and so on — that can be damaged or destroyed while travelling to the destination through asteroid showers and other events (such as black holes and enemy ships) that hinder progress. (The students ended up having to program 140 asteroids moving independently from each other.) When an asteroid hits one of the compartments, walls begin to crack and the player can patch the fissures if it can be done without the ship sustaining further damage. As the damage worsens, the room is destroyed. The game is lost when all players die or the ship’s final compartment is destroyed. The game is won when the ship reaches the specified destination. Team members included Michael Carroll (who learned Blender from scratch to build all of game’s models), Yuxiang Guan, Amanda Luff, Guillermo Valdez, and Huajie Wu, as well as Anish Shandilya, who led the game demo. Noted professor Voelker: “One thing I like about that game is that you’re running around putting out fires, so it’s a great allegory to software development”—a comment that triggered knowing laughter among the student developers in the audience.
The final team to demonstrate their game showcased a “3rd-person, free-for-all deathmatch.” The game “Heroes Always Die” pits two types of tanks against each other on a field of battle. “We wanted to make it very fast-paced and very competitive, and we tried to implement all that in one game,” said Kevin Cao, who presented the game in tandem with Kevin Duke. Team members split up the development chores: with Shuming Cao, Yicheng Yin, Spencer Huang and the two Kevins all worked on architecture and networking, and three of them also worked on graphics. Shuo Huang and Kevin Cao did modeling, and Shuming Cao and Shuo Huang worked on the user interface. In the final week before the demo, the team opted to add another character, while also fixing bugs, adding a sound system, improving maps and the user interface, and implementing and improving the particle effects (used to highlight the damage when an asset is taken out by a laser).