joyellealina / VRGame

A small VR RTS-style game that involves managing resources and handling natural disasters

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CS 4331-002 - Virtual Reality Project 2/3 - Disaster Force Rescue Simulator

For Project 2, we have created a game which simulates a city being flooded. The player is put in charge of the rescue operation, where they must collect resources and build rescue units to retrieve the civilians safely.

For Project 3, we have expanded the scope of the original game by adding two additional scenearios that simulate acid rain and a tornado. Improvements have been made to character models and AI, allowing for more immersive behavior before and during these disaster scenarios. Civilian demographics have also been added, allowing the user to specify between several categories that impact the characteristics of the rescue targets. Finally, a time-based scoring system has been implemented that allows for you to keep track of your fastest rescue times.

Table of Contents

Standalone Download

Link to download our game's standalone build (Project 2 Version)

Link to download our game's project directory (Project 3 Version)

Link to download our game's standalone build (Project 3 Version)

Video Demo

Link to our short video presentation (Project 2 Version)

Link to our short video presentation (Project 3 Version)

Project Report - Project 3

Project 3 Proposal

Project 3 will serve as an improved version of Project 2 with an expanded scope. Some of the additions we plan on making are as follows:

Note: Additional features may be added as suggestions arise. Complete implementation of the following depends on time constraints.

  • Greater differences in functionality between rescue units
  • The ability to specify various aspects of the civilian demographics (age, profession, race, etc.)
  • Additional weather scenarios (acid rain, huricane, etc.)
  • Improvements to civilian modeling
  • Implementation of civilian AI
  • Scoring system that allows for competition

This game is fit for VR implementation as it allows the user to dynamically experience the disaster scenario as it happens, as well as observe first-hand the effects of their gameplay decisions.

Tools/Devices Used

We learned...

  • How to collaborate as a team on a larger project
  • How to use more advanced Unity features
  • Advanced C# scripting
  • How to integrate VR controls
  • Basic AI Implementation

Contributors

Work Distribution

Note: For original responsibilities for the Project 2 groundwork, find the Work Distribution section under the Project 2 Report

  • Joyelle Woodson:
    • Expanding functionality of nav-meshes
    • Design and implementation of civilian modeling and AI
  • Derek Fritz:
    • Design and modeling of acid rain & tornado scenarios
    • Expansion of UI features (options, game modes, scores)
    • Implementation of scoring system and demographic functionality

Screenshots

With Project 3, we added two additional scenarios, simulating acid rain and a tornado in addition to the flooding scenario.

In the acid rain scenario, the town has expanded their factories which resulted in greater pollutants. In this game mode, the player is subject to gradual damage from the acid rain over time, slowly draining their resource points and restricting their rescue options.

In the tornado scenario, the town finds itself in a drought which has resulted in a more barren terrain and leaving the civilians exposed to harsher elements. In this game mode a tornado roams the play area, destroying any rescue units or civilians that comes across its path.

With these two new scenarios, additional rescue units have been added. These include two tiers of land-based rescue cars and a helicopter, featuring high mobility but low capacity.

Finally, large improvements have been made to the civilian modeling and AI. The civilian rescue targets are now fully modeled as individual people. These civilians roam between set waypoints (the red spheres you see in the image below), and then seek safety once disaster strikes.

Timeline and Tasks

Week 1

  • Expand main menu to allow for new features (Completed 4/26/2018)
  • Begin planning new scenarios to simulate (Completed 4/29/2018)

Week 2

  • Improve character models (Completed 5/2/2018)
  • Add AI pathfinding to character objects (Completed 5/2/2018)
  • Add pathfinding to new weather scenarios (Completed 5/6/2018)

Week 3

  • Implement time-based scoring system (Completed 5/7/2018)
  • Establish functionality of new weather scenarios
  • Implement civilian demographic features

External Model/Asset Sources (In Addition to Project 2 Assets)


Project Report - Project 2

Project Planning

The majority of our research and planning is located on our Wiki page.

Tools/Devices Used

We learned...

  • How to collaborate as a team on a larger project
  • How to use more advanced Unity features
  • Advanced C# scripting
  • How to integrate VR controls
  • Basic AI Implementation

Biggest issues

Merge Conflicts

Upon completing work on seperate branches, we ran into several issues when trying to merge everything into the master branch. Various scene aspects such as models, scripts and settings were not present. We were able to successfully merge one development branch into master by accepting all of the development branch changes since the master was a bare scene. To avoid future issues, we had to carefully commit and push our work, making sure to not work on the same thing or wait until something was completely done before moving onto the next feature.

Use of Free Models and Aspects

Due to time constraints and lack of experience, we were unable to produce any of our own 3D models for this project. This led to using free Unity aspects and models found online. The problem with this is limited functionality. We did our best to modify assets and models to best suit the use cases for this project. For the list of assets and models used, please navigate to our External Model Resources section.

Testing

After VR functionality was added, testing was placed onto one person since there was only one Oculus headset. Testing without the headset was difficult and took much longer than expected. Testing even small functionalities and scripts could take large amounts of time.

AI

Implementing the AI for the different tiers of boats was difficult and still does not fully work they way we want. We also had some AI implementation for the civillians: they would wander the town until they came into contact with flood water, they would then rush to safe locations on top of buildings. This functionality was in the game, but was erratic and added complexity that could not be resolved within the time frame. We plan to put this functionality back into the game after more research and testing.

Committing While Exceeding Github File Limit Size

Whe importing one of our assets, we did not realize that it contained a file that exceeded GitHub's 100MB file size limit. We proceeded to make commits and when trying to push them to our repository, it would fail. This caused a snowball effect in following commits and took hours to resolve. The solution was to create a temporary branch at the commit where the bad file was first introduced, rm the file, and perform a rebase. With the file deleted at the first occcurrence, all following commits were recursivley ammended.

Contributors

Work Distribution

  • Joyelle Woodson:
    • Creating Rain and Flood Scripts
    • Initial Boat AI Implementation
    • Initial Civillian AI Implementation (Removed for now...)
  • Derek Fritz:
    • Design of City and Terrain
    • UI Groundwork
    • VR / Touch Controller Functionality
    • Initial Resource Functionality

Screenshots

NOTE: The images below are from a slightly older version of the game that lack certain aesthetic improvements. However, the functionalities demonstrated remain the same.

Here is a look at our player UI, which is anchored to the player's left touch controller. This allows them to look at and interact with the game menu dynamically. The "Begin Operation" button activates the rainfall and initiates the flooding. The three "Build" buttons allow the user to create rescue boat units in exchange for resources, which is represented by the gold bar at the bottom. Resources are obtained as the rescue units succesfully retrieve civilians.

Below we see the player's base of operations, where rescue units are spawned from and return to after a succesful operation.

The following images display the flooding in process, as water levels increase over time.

Here we can see several civilians taking refuge on top of the town's buildings, represented by the noticeable red orbs. The rescue units will target these civilians in need of saving and continue seeking them out until the boat's capacity is filled or all civilians have been rescued.

When the player has enough resources the build a boat, the selected unit will spawn in front of the base.

These units will track down civilians.

And carry on with their mission after retrieving them.


Timeline and Tasks

Week 1

  • Setup Unity environment (Completed 3/20/2018)
  • Submit Proposal (Proposal Accepted 3/21/2018)

Week 2

  • Create Wiki to start planning and reasearch (Completed 3/26/2018)
  • Plan out game idea and basic mechanics (Completed 3/26/2018)

Week 3

  • Setup city environment (Completed 4/1/2018)
  • Created button to start raining (Completed 4/3/2018)
  • Create button to spawn boats (Completed 4/5/2018)
  • Integrate VR functionality and controller support (Completed on 4/6/2018)
  • Simluate basic flooding scenario (Completed on 4/6/2018)
  • Add AI pathfinding to spawned boats (Completed 4/7/2018)
  • Add different tiers of Boat units (Completed 4/7/2018)

Week 4

  • Extend Boat AI to multiple points (Completed 4/9/2018)
  • Add Counter to Canvas (Completed 4/9/2018)
  • Add a start menu to the game (Completed 4/10/2018)

External Model/Asset Sources

About

A small VR RTS-style game that involves managing resources and handling natural disasters


Languages

Language:C# 81.1%Language:ShaderLab 8.9%Language:ASP 8.6%Language:HLSL 1.4%