"Get slain by a giant death worm AND CRAFT!"
Overall info Info
Project Source on GitHub Download
Download the game! (Build) OST
Original Music of the game!
Frisking Ruins is a procedural survival / bullet hell combining modern indie game elements with a nostalgic retro feel.
You can kill NPCs, harvest items, go into dungeons, get slain by a giant death worm, and CRAFT!
Procedural Map Generation
The map is procedurally generated, in an overall desert environment.
You are surrounded by walls of cacti, and it is your quest to trek through this barren desert, in search for dungeons. These dungeons are retro-themed bullet hell sequences, and act as a big challenge for the player, with their current loadout.
Crafting System & Inventory
The inventory takes shape of the Toolbelt of the adventurous player. Since the pacing of the game is centered around fast and quick, the UI and inventory is designed to convey a quick and easy-to-understand sense to the player.
The player has about 4 inventory slots which are easily scrolled through with the Q and E buttons.
As of yet, you have these crafting recipes:
- Cactus + Sword = Cactus Shank (Melee Item)
- Cactus + Cloth = Bandage (Healing Item)
Above this inventory there are four more slots.
This is the seperated crafting inventory. By pressing the 1-4 buttons the player can combine two specific items to craft them into new items. The Crafting system should work entirely by easy key presses with just the left hand. Like the inventory, it is designed for fast paced action.
Once the player gets used to this control scheme, it allows for quick actions.
Once you craft a new item, it gets placed in the first slot (from left to right) that’s empty in the player’s main inventory.
Bullets, Monsters & Items
The 3D world is littered with procedurally generated 2D tiled dungeons. Once the player enters said dungeon(s), monsters will spawn and a bullet hell sequence will begin. This is either:
- Tetris-like themed dungeon, where you avoid tetris shaped tiles that come from the top to the bottom of the chamber.
- Game of Life recreation within the dungeon, where you have to avoid all living things, that keep evolving and creating other shapes.
The combat works with items. Specific items have different stats such as: Knockback, Range, Damage, Attack Speed and Cooldown. Space (Action button) is used for overall combat.
As of yet there are three enemies/entities:
The Aztec Relic
The Death Worm
A vast, barren survival-bullet hell experience for one player.
For all ages
Death Worm Development!
The entire game is made in the Unity engine.
The concept, all the mechanics, sounds, music, art/visuals and design choices were made by me.
I have created some dynamic sub-systems using the following design patterns:
- Items inherit from ScriptableObject,which allows for the item info to exist in meta file format. All Item files in the ‘Resources’ folder is loaded automatically and put in the game. This way it is very easy to add new items into the game.
- Crafting Recipes use the same principle.
- Object Pool Pattern is used for the cacti and all the (custom) particles within the game. Since these objects come in high quantities, it reduces framerate issues and lag by putting these objects in pools.
- Entities (Cactus, DeathWorm, Mummy, Aztec & Player) all inherit from an abstract Entity class, which handles their most basic behavior (such as Die(), Health management, movement, animation)
- SoundManager handles all the Audio, such as Music transitions between the Dungeon and the Desert overworld. Also handles all the sounds in the game through static methods. Everything is done within this singleton file, which makes it kind of a Facade Pattern.
- Inventory & Crafting this whole system is sort of a unified interface, that is divided into subsystems (Crafting class within the Inventory script, which then has CraftingSlot instances, all handled separately). The Inventory class has the most important public functions in order to control behavior. Therefore, it is a Composite pattern.
- Dungeons (exist as a subclass within the World script) are constantly communicating back and forth with the World instance, to notify any changes/interactions with the player, entities or stats. Also, the world is observing these changes per Dungeon instance. So this is an observer pattern.
- The Cacti object pool uses Frustum Culling, to check which objects need to be updated and which ones don’t, this greatly improves performance.
|W A S D||Move around|
|Space||Use Item / Action|
|L Shift||Pickup Item|
|R Shift||Drop Item|
|1,2,3,4||Select Crafting Slots 1-4|
|Q & E||Cycle Inventory Slot|
The sound design and music in Frisking Ruins was made by me, mainly in MIDI. Here are the files used in this project.
Frisk Dungeon Suspense
Arranged in Guitar Pro 5 & Mixed in FL Studio 12
Frisk Desert Heatstroke
Arranged in Guitar Pro 5 & Mixed in FL Studio 12