Hyper-Velocity

Is a hardcore looter shooter that pulls inspiration from movement shooters, bullet-hells, and rogue like titles.

This project was made by myself and a friend, we both wrote large chunks of the codebase together and collaborated on different systems often. Some systems were made entirely separately with minimal interaction. The core game designs, 3d models, and visual effects were all done by me.

Technologies Used

  • Built in the Unity 3D Engine

  • Programmed in C# using Visual Studio

  • 3D Models created using Blender

  • Sprites hand drawn in Adobe Photoshop

Mobility Based Combat

The core design philosophy of this game is that players must move to stay alive. As such enemies are built to circumvent cover and push the player’s aggressively. Below is a showcase of a flying enemy I built. It uses a custom 3d navigation system I coded that works by generating a cloud of points in a region in an octree structure. The navigation system itself uses the A* Algorithm

Exploring new fps boss territory

I started to design my bosses with a core idea in mind “what if the player had to use their own mobility to survive instead of cover”. With this I began looking into other genres that utilize this type of design philosophy and found immense inspiration from top down “bullet hell” titles such as Archvale and Realm Of The Mad God. In these games rarely is taking cover and option. Player’s are meant to feel overwhelmed by flurries of projectiles. Translating this to first person was much more difficult then I first imagined it would be but found certain design constraints through testing that helped me narrow down how I could design this type of game.

I found that all major projectiles need to originate from the same location that demands the player’s focus such as from the boss itself. Or if a projectile is going to originate from outside of the player’s view it needs to be marked with a danger indictor, or the projectiles need to be very choreographed on predictable. I also found that if I’m going to have enemies that spam out large numbers of projectiles these shots need to not obscure one another from the players view. Its been incredibly fun designing my own ruleset and design constraints through testing.

My Design Methodology

I try to design my boss phases and general gameplay around a loop of “Teach -> Practice -> Challenge”. When introducing a player to a new type of enemy, movement option, or mechanic I think its best to ramp up the difficulty of the new challenge with a method such as this.

I think that truly interesting designs happen when you stack multiple of these challenges together into a loop. For example in a boss fight start the first phase off with a new mechanic, tracking rockets which will curve their path to chase the player. Let the player learn how they work with an easy/ medium phase, then challenge them with a hard phase. Later on in the same boss fight introduce the player to a new mechanic of the fight such as minion spawns which fire slow moving projectiles. Then in the bosses rage phase challenge the player with both mechanics at the same time.

Pushing My Own Limits

This is a prototype rage phase for a boss i’ve been working on for this project. This phase is incomplete but is meant to show what types of engagements are possible in a game built around player mobility being used as a survival tool.

As mentioned earlier this rage phase aims to stack multiple challenges together to act as the pinnacle of the fight. The player is tested on their general movement and dodging skills and their knowledge of the bosses attacks that they have learned throughout the fight.

Custom Octree Based Navigation System

I explored a handful of different methods that other developers recommended for aerial navigation but each solution I found didnt quite fit with how I wanted my npc’s to behave. What I settled on was the idea of generating a cloud of points that mark empty space within the scene, and connecting nearby points together that have line of sight of one another. I did this by generating an octree. The system starts with one large cube, which checks for level geometry within the cube, if any geometry is found the cube subdivides into 8 smaller cubes with one filling each corner of the parent cube. This same geometry check is performed recursively with each geometry containing cube subdividing further until a minimum size is reached. Then I group all of the remaining cubes which hold no geometry together by distance and line of sight to create a 3d point cloud which I use the A* algorithm to generate paths through.

This system also uses a queue based pathfinding manager where npc’s pass in a pathfinding request and wait for a callback with their pathfinding results. When a path is found it is registered in the manager as “Occupied”. I did this so that I can design certain npc’s to either avoid or favor already occupied paths to add more complex group pathing to the game.

Multiplayer

My dream end goal for this project is to launch a multiplayer FPS which pulls from my tens of thousands of hours of FPS experience to create something truly unique. Before pursuing this goal I would like to launch Hyper Velocity as a single player experience to grow capital and attention for the project.

Previous
Previous

Small Worlds

Next
Next

Visual Effects