Skip to content

Dunnatello-DifferentFusion/Visions

Repository files navigation

Visions

Dunnatello-DifferentFusion

Project Objective

Our goal for this project was to design a video game in the Unity game engine featuring weapon physics simulation & game AI programming for our Advanced Game & Simulation Development course project.

This project involved game design, level design, weapon physics simulation, and a light focus on game AI (the AI just follows the player around using the NavMesh).

Our main objective was to simulate gun physics in a game, which we achieved in this project by following tutorials and prototyping our own systems.

Team Members

Team Member Roles


@DifferentFusion

Backend Developer, Game Design, Documentation


@Dunnatello

Backend Developer, UI Developer, Game Design, Level Design, Documentation

Visions

The game, Visions, is a FPS zombie shooter taking place in a futuristic dystopian city. Originally, we were intending to make a multiplayer 5v5 competitive movement shooter, but we discovered how difficult that would be to implement pretty quickly and pivoted to a more reasonable course project.

The game features realistic ballistic physics by utilizing raycasting along with Unity rigidbody motion for bullet gravity.

Figure 1: We wanted our game to feature a chaotic urban environment that takes place in a dystopian/cyberpunk future.

Video Demonstrations

Smooth Staircase Traversal

Visions.1.0.1.Smooth.Staircase.mp4

We utilized the popular level design technique of stair clipping by creating invisible slopes to smooth out staircase traversal for the player. This results in a better experience for the player and can reduce camera jitter.

Gun Physics & Blood Splatter Effects

Visions.1.0.1.Zombies.mp4

This video demo shows how the zombies attack the player and how the bullet physics work. As noted in the Future Plans section, the gameplay can be improved in the future to give the player more feedback to their actions within the game world.

Level Design

The game features an endless wave shooter that will continously spawn zombies until the player dies. Players can use the level design to outsmart the zombie opponents in order to survive longer.

Figure 2: The map center is designed to be a focus point that the player can use to find their way around the map.

Why are the zombies dancing? The real question is: why not? Honestly, at the time, we did not have much experience with creating animations, so we used free animations included in the character package. However, we know about the ample amount of free animations available online now.

Figure 3: We incorporated some open areas for the player to use to their advantage.

Conclusions And Lessons Learned

Weapon Physics & Handling

While making this game, we discovered how game weapons work and how to simulate a hybrid projectile/hitscan weapon accurately. We were able to learn how to create scriptable objects to make our weapon system modular and scalable.

AI Navigation

This project taught us how to effectively use Unity's AI Navigation system fully to make AI bots that follow the player around the map. Our level design features verticality, so AI bots can use all of the available navigation tools to reach the player efficiently. Although the current AI bot behavior is simple (it only follows the player), it can be expanded in the future to feature more complex behaviors.

Figure 4: The Unity AI Navigation system automatically creates fall points for the AI bots to use.

Level Design

We used the grayboxing level design technique of designing the initial map layout before implementing 3D assets to complete the final design. Using this technique, we were able to plan out the level scale and features to ensure that the level would complement the gameplay. This also taught us the importance of using level design to make the game world seem larger than it actually is by using 3D assets to obscure sightlines. We also implemented natural barriers to the level so that players would be able to understand how to navigate through the level intuitively.

Figure 5: We originally drafted the floor plans for the map and then built the map around those initial designs.

Blood Splatter Effects

We additionally learned how to implement blood splatter on the screen to indicate that the player was taking damage. Implementing this feature allowed us to learn how to position UI elements in Unity canvases by giving us a better understanding of the Unity 2D positional system.

Scope Reduction

This project also taught us on how to reduce scope creep to deliver a completed project. Our original idea was not feasible, so scaling down our game design allowed us to deliver a product with all of the functional requirements met.

Future Plans

There is definitely potential for more features to be added to this project in the future.

User Interface Improvements

Currently, the UI is minimal with only information about the weapon state. However, score and time survived information could be added as UI elements to make the game more engaging.

Additionally, a conclusion screen could show the player's final results and lead the player to a high scores menu with their top scores. We could also add a settings menu so that players can change audio preferences, graphical options, and controls.

Zombies could also have health bars above their head, or other visual improvements, to give the player more feedback when they attack a zombie.

Universal Render Pipeline Conversion

The project could be converted to the Universal Render Pipeline to improve graphical fidelity and allow for better lighting/shaders.

✅ Completed: May 4th 2024 - Commit

Weapon Improvements

The weapon could be rendered on a separate camera layer so that the weapon does not clip (stick) into walls. Furthermore, the weapon could be animated to feature weapon shake and muzzle flashes to improve the feedback loop.

Sounds

More sounds could be added to the environment to improve the user's immersion. Currently, the zombies do not make noise, but adding footstep and zombie noises could help the player know when zombies are near.

Animations

The zombie animation controller could be improved to feature zombie walking and attacking animations.

Map Improvements

The map can be improved by creating more interactive elements in the environment. The cop car could feature flashing lights, some cars could be on fire, and there could be some additional improvements to the map's lighting. Any additional special effects added to the map environment could add to the player's immersion and experience.

Unity Toon Shader Conversion for Scene Materials
✅ Completed: May 20th 2024 - Pull Request

Unity AI NavMesh Conversion

The legacy Unity NavMesh system can be converted to the new component-based NavMesh system to provide more control over navigation surfaces. This might also improve the zombie pathfinding.

✅ Completed: May 8th 2024 - Commit

Web Support

Since the project currently has low graphical overhead (since it features minimalistic graphics), it could potentially be converted to run in HTML5.

Known Issues

  • Weapon Reload Stuck After Scene Reload

Unity Information

Universal Render Pipeline
Originally developed in Unity 2021.3.10f1 but upgraded to 2023.2.11f1.

Credits

You can view the list of sources here.