VRBG Prototype

Multiplayer VR Battle Royale Prototype

A fly-through of part of the map I built. I used a mix of DEM data, procedural generation and hand sculpting.

This is a prototype virtual reality multiplayer battle royale game built for the HTC Vive using Unreal Engine 4. I built this prototype entirely with blueprints and no marketplace assets. I modeled, rigged and textured everything in Blender and used blend shapes in UE4 to do animations.

Because I built so much for this project, I'll break it down into sections, starting with the map.

The Map

DEM data used to create a heightmap for the landscape.

I started with some DEM data of an area that looked interesting in Maine, approximately 1.8km² in size. This was then modified in Photoshop to exaggerate and stylize some of the features. I brought the final image into UE4 and used it as a heightmap with the landscape system to generate the terrain.

Custom landscape shader to automatically paint the stylized low-poly terrain as I sculpt.

I created a custom shader to give my terrain a low-poly stylized look and automatically color the surfaces based on their angle as I sculpt. This way I could achieve natural transitions from grass to dirt to rock without having to paint the terrain.

Some of the tree variants I modeled in Blender. These are stylized pine trees.
Oak trees I modeled.

I modeled a large number of trees, rocks, flowers, bushes, logs, etc. to build out the dense forest environment I envisioned. Almost all models use vertex color exclusively which I painted in blender and manipulated in UE4 with shaders. This fit well with the stylized look and greatly simplified the asset pipeline.

A path leading through the forest.

I laid out a system of paths through the terrain and then used Unreal Engine's Procedural Foliage Tool and a lot of fine tuning to generate a procedural forest using all the assets I'd made.

A 360 degree panorama showing part of the map. Tap and drag to interact.

The completed map is approximately 1.8km² with various plains, cliffs, ravines and paths throughout. I learned a lot about UE4's landscape system, materials, navigation mapping, procedural forest system, performance considerations and use of instances meshes, and more. There were many factors specific to VR that guided my decisions.

Now that I'd figured out my map, I wanted to create a unique mini-map system built specifically for VR. That brings us to the next section.

3D Procedural VR Mini-map

The basic concept for my VR mini-map whiteboarded.

How does a mini-map work in three dimensions, with no UI? I could have taken the standard design and just stuck it on a flat object you carry around, with UI on the surface, like a giant tablet. I was much more interested in exploring new ways to interact with games, however. So I set about to design a mini-map unlike one I'd ever seen.

The first version of my mini-map using procedural meshes.

The idea was to build a grid of points around the player, raycast straight down and then use that data to build a heightmap. Then I construct a procedural mesh where the top surface vertexes are supplied by the heightmap. This means the resolution of the surface of the mesh is determined by the density of the raycasted grid of points.

Controlling the FoV and density of the map.

If I kept the mesh I mapped the data to the same size, I could reduce the number of points in the grid and have a lower resolution map, and vice versa. I could also keep the same number of points but spread them out over a larger area to generate a lower resolution mesh but covering a larger area and so on.

Material data reflected in the map's coloring.

The height of the surface wasn't the only data I got back from my raycasts though. I could also get information about the material that was hit. This meant I could determine if it was grass, dirt, rocks or anything else. So I used this data to color the mesh to reflect the materials accurately.

Time to make it pretty.

I was pretty happy with the map at this point, but it still wasn't looking so great. The bottom half was basically just an ugly cube connecting all the edge vertex's I was generating, but building something nice with the procedural mesh system seemed implausible. Instead I wrote a shader to flatten the bottom half and also do a cool ripple effect when it opens.

Updating the surface of the mesh from the center.

In the process of testing my new map I realized that, from a game-play perspective, the way the map update with a scan-line type effect was not ideal. It meant you sometimes experienced the frustrating feeling of waiting a second for the scan-line to get to your position at the center of the map. I had to have some kind of visible update for performance reasons though, so I decided to make it update from the center outward.

World Props: Alchemist's Cabin

A modular cabin in the woods with surrounding props.

I wanted to have several cabins scattered across the map so I built a set of modular cabin pieces and a lot of props in Blender. This alchemist's cabin is one of the variations I planned. Just like my landscape props, these models almost exclusively use vertex color with no textures.

A fly-through of the alchemist's cabin.

The cabin is full of items you might find somewhere an alchemist lives. Players would scavenge these buildings for staves, wands, scroll or potions. Since this is VR everything is a physics object and the lighting is all dynamic so I had a lot of limitations visually.

Panning through the cluttered cabin.

I used cloth simulation in Blender to model the cloth on the crates and shelves and then gave it a low-poly stylized look. Many of these items are usable player items. The potions use a custom stylized fluid shader I wrote and can be drank by the player.

Potion System with Low-poly Fluid

The potion system I designed with bottle variation and a custom stylized fluid shader.

Potions were to be common player items in this game an I wanted them to work like you'd expect in the real world. The fluid moves around in the bottle and to drink it you pull the cork out and tip it into your mouth.

I wanted to support many bottle shapes, fluid colors and states of fullness.

I wanted the system to accommodate many bottle shape variations while correctly simulating the fluid, in a performant way. I also needed to support several colors that would represent the different effects the potions would have, and I wanted them to be found laying around in various states of fullness. This is a blueprint system I created that achieves these goals.

Demo Unavailable
Code Unavailable

About the Project

Multiplayer virtual reality game prototype designed for the HTC Vive. Developed entirely using blueprints. Modeled hundreds of environment and player assets in Blender. Wrote custom fluid shaders for stylized liquid in containers. Built a dynamic 3D minimap using raytracing and procedural meshes.