Periculum - Final Project

June 14, 2020 Java 9 min

Check out this project on Github!


As I write this, we are well underway to finish our final project, a game called Periculum, by June 15th. The basis was as follows:

The goal of the game is to survive in contagion environment — an ongoing virus exposure in unexpected places and unexpected ways. In order to survive the player first must learn how to navigate the given environment/setting. The player skills will later be tested in a level which will be filled with life endangering traps which he/she has to avoid or eliminate.

Research

The first step in developing our game was to do some research on the setting in which our gave will take place — a miniature university campus. The player will walk around and make choices that will affect the ending of the game.

Age Group & Environment Research

During these tough times, universities are being forced to make decisions like moving classes online (Patil, 2020). This is a difficult decision for many universities to make because many classes require in-person education that can’t easily be moved online, causing them to be postponed (Collie, 2020). As per CDC recommendations (2020), many universities are beginning to increase sanitation rates; however, this requires hiring more workers and using up their already limited budget. In terms of budget, another factor that universities have to deal with is students’ requests for refunds on rent and the reluctance to live on campus for the upcoming education terms (Dolan, 2020). This pandemic also greatly affects the mental health of post secondary students who have to manage high anxiety that comes from education, as well as huge changes in their own lives (McKenna, 2020). The choices that students have to make to balance their mental and physical well being will be a key aspect in making the game both difficult and intriguing.

General Contagion Research

While COVID-19 is a new and continuously developing disease, it has already had millions of dollars poured into its research. The National Health Institute (National Institutes of Health, 2020) has found that the SARS-CoV-2 virus (henceforth called the coronavirus) can survive for several hours on surfaces. This makes it imperative to properly clean surfaces, including one's hands which should be washed with soap and water for at least 20 seconds (unicef, 2020). Because it can spread through airborne particles it is important to sneeze into one’s elbow to decrease the chances of coronavirus particles escaping into the air (Centers for Disease Control and Prevention, 2020). Wearing a mask is also advisable if one is coughing or sneezing (World Health Organization, 2020). Social distancing is also a key factor in preventing spread with research showing that distance of at least 2 meters should be kept between individuals (Centers for Disease Control and Prevention, 2020). Finally, as important as physical health is, mental health plays an equally important role in people’s survival. A study by Qualtrics (2020) found significantly increased rates of stress, anxiety, and emotional exhaustion, alongside a decline in overall mental health throughout the COVID-19 pandemic. The Mayo Clinic (2020) recommends keeping in contact with friends and checking up on people, as well as reaching out to professionals if the need ever arises.

Development

The initial stages of development began with a storyboard where I designed a lot of the art that would eventually make it to the final game. This art included a bunch of tiles for use in the game, as well as the different objects for the game. While a rudimentary player was created for testing, this was later improved significantly by my other team member.

Tutorial level screenshot

Actual development has already taken around 3 weeks. This involved planning work per week and then carrying it out, with a report of how much was done occurring every Friday. I tried to keep on top of the schedule, but there were a few times that I did things a little close for time. However, so far, the game is in a state where we are confident it will be finished for June 15th, although we do have some extra time available.

The main structure of the entire game is guided by game scenes which act as different parts of the game. There is one for the splash screen, another for instructions, a third for playing the game, a fourth for making choices, and two more for winning and losing. The main class manages the transitions between these automatically through a fading in and out effect. Only one scene can be played at once, but a scene can also hold on to the last scene and transition back to it (this is used, for example, for the ChoosingGameScene).

Finally, all of this development is hinged on libGDX, an open source, free, game development framework for Java. Installation of it was a breeze with its installer which automatically installed Gradle and any of its dependencies. Adding on additional extensions (such as those for freetype font support) was relatively easy as well. Most development occurred in Eclipse, a popular Java IDE.

Gameplay

The game starts off by showing the player some instructions on how to navigate the level and activate the choices the player has to make. Options are placed around the map and appear one after the other to give a linear progression. While this often isn't a good approach for good games, it made our game nice and simple for a final project. These options give the player different choices which affect their health, a combination of a mental stability and infection risk. If a player's infection risk reaches the maximum, or their mental stability reaches 0, they die and lose the game. On the other hand, if the player survives all events, they win. After all of this being explained in the "teaching" level, the player is thrown head first into the game to try and survive.

Game over loss screenshot

The main game consists of the same level, except the choices actually have an effect on health. Some options are also so life changing, that making the wrong choice could make the player lose the game instantly. This adds a little more risk, and hopefully skill to the game, as the player needs to understand the choices they are making, instead of blindly choosing an option (this is also why we have a mental stability so that one can't always choose the safest option).

Reflection

This was an extremely fun game for my partner and I to create for a final project. We each learned a lot about game development and Java programming, getting a chance to use enumerators and a variety of other language features. We planned well throughout the project and picked a game which was rather difficult to create. However, while we could have picked a simpler game, this would remove the challenging aspect that often comes with final projects. We also wanted to prove to ourselves that we knew what we were doing and learned a lot during our lessons. Overall, this is a project taught us not only important programming principals, but ideas on version control and communication.