What is VINES?

VINES is a first-person procedurally-generated horror game where you are tasked with documenting the horrifying and mysterious creature that resides in the overgrown Underground Facility 17. VINES takes inspiration from titles such as Alien: Isolation and Five Nights at Freddy's.

I was one of 11 team members working on this project for the first 3 months of its' development. VINES uses the Unity engine and is playable for both Windows and Mac.

My Contributions

My main contribution to VINES was development of an algorithm that procedurally generates a randomized layout of the game's playable space. I also created the inventory system that keeps track of what items the player has picked up throughout the game as well as mechanics relating to the Personal Video Test Monitor (PVTM) and the Ground-Fault Circut Interrupter.

Procedurally Generated Playspace

VINES features a procedurally generated playspace made possible by an algorithm that I developed. The basis of the algorithm (AKA Warehouse Maker) is to randomly populate and connect "rooms" within an internal 2D array. Warehouse Maker handles populating the array, determing a few extra details, and then instantiates prefabrications into the world, creating an entirely traversable Warehouse. This was an incredible experience as adapting a feature I had previously developed into a new langauge, engine, and dimension proved to be a serious challenge.

Setting Up Warehouse Maker

As mentioned previously, Warehouse Maker randomly fills a 2D array with "rooms" and then places them in the world, but a bit more is necessary beforehand. VINES features notable "Landmark" rooms that contain items, have special interactions, or are necessary for progression. Warehouse Maker randomly places these rooms first to ensure that their existence isn't left up to chance when running the bulk of the alogrithm. Precautions were put in place to guarantee that "Landmark" rooms that had already been placed would not be overwritten when placing others and when filling out the array.

The Algorithm Itself

After placing necessary Landmark rooms, Warehouse Maker populates the 2D array from a parameterized point typically at the center of the array. It works outwards from this point by creating a random number of exits for the current room (either Up, Down, Left, or Right). A new room is made if necessary and the corresponding exits are made for the adjacent rooms. It then accesses the rooms for which the current room has exits towards and repeats the process above. Rooms whose exits have already been made will not be regenerated and bounds checking has been put in place so that rooms do not have exits leading outside of the array.

The Final Stage

Lastly, Warehouse Maker will clean up any dead ends by attempting to connect them to nearby rooms. If a room only has an upwards exit, it attempts to connect to a room either to the left, right, or below it in the array. If successful then we find the next dead end; if not then it chooses an exit direction it doesn't have and creates a new room with the corresponding exit thus forming a new dead end. The new dead end now replaces the current one and the process above repeats itself. After all dead ends have been fixed, Warehouse Maker iterates through the array and instantiates prefabrications in-game creating a procedurally generated Warehouse.

Inventory and Item Mechanics

I created the technical backing requried for the inventory along with item-related mechanics pertaining to the Ground-Fault Circut Interrupter and Personal Video Test Monitor (AKA PVTM). The inventory system is completely cycleable and is able to handle adding, removing, and switching between items. I created the Ground-Fault Circut Interrupter's mechanics such as interacting with Traps and the Generator. I made various features of the PVTM such as visual effects, detecting end-game conditions, and camera linking, switching, and removing.

Get in touch