Memories
ROLE
Player UI & Interactions Programmer
-
Created an Inventory and Crafting item management system
-
Created a skill tree system to unlock upgrades based on experience gained
-
Created player item usages and consumables to aid the player in various ways
-
Created environmental obstacles, traps, and puzzles
DESCRIPTION
Memories is a survival/horror platformer exploring the trials and tribulations of addiction, both in story and in designed mechanics. The core gameplay is based on escaping various environments while a boss character is in continuous pursuit. The game is also aiming to disrupt conventional gameplay expectations by removing combat, in the conventional sense, from game play in the hopes of establishing a constant low level panic due to the inability to fight back.
I designed a basic player inventory and crafting system that tracks items in Data Tables and item properties in Structures. A player can press a key to open up their inventory, displaying all items in a list with an icon, item name, item amount, and short description. Item properties are stored in various structs that are called upon when the player opens the inventory menu. The UI widget then reads how many items are in the data table of the players inventory, populates the inventory widget with blueprints that are then filled in based on properties stored in the data table and then read over by the item list struct.
Pressing another key opens up a similar looking crafting window on the opposite side of the screen. Items that can be crafted are given a special boolean tag in the data table of all items. The crafting UI widget then reads reads that and populates the crafting window with items tagged as craftable. A player can then hover over an item listed to see what items they need to craft it. If the player has all necessary items, the item will be highlighted and clicking on it will craft the item, adding it to the players inventory and removing items used in crafting from the players inventory.
When a player interacts with an item on the ground it is compared to a list of known items in the item data table. If it matches an existing item, it is then compared to the players inventory data table to see if the player has the item in their inventory already. If the player has the item in their inventory already it simply adds one to the widget already in the players inventory UI. If the item does not exist, it gets the attributes from the data table and populates a widget on the players UI screen with the item information.
Some items have uses such as potions, bombs, and torches. When the player opens their inventory, they can click up an items which brings up two options to either drop the item on the ground or use the item. If the item has a use, its use function is called and then it is removed from the inventory. In this example, the player can use a bomb to destroy certain walls to clear a path.
An item that can be picked up that when used in the inventory, grants the player experience points. These experience points can then be spent at a 'Skill Station' to purchase stat upgrades. The skill tree is split into two branches with either health or stamina buffs. It is a straightforward tree of adding a certain amount to either stat with a single branch off that can add either a double jump ability for stamina, or an increased in health gained from potions for the health tree. Purchasing an upgrade subtracts the the necessary points from the players experience and unlocks the next block in the branch. To purchase a further upgrade, the previous block must be unlocked.
Throughout the game there are small puzzles that unlock doors and other areas. One of these puzzles is a simple rotation puzzle where the player must rotate objects to face a specific direction. When the objects are rotated correctly a door is opened nearby and a message pops up on the players HUD.
Throughout the game there are also various traps the player will encounter to impede their progress. One of these traps is a simple spike trap. When placed in the world it can either be set to 'trigger' or 'cycle'. This means the spikes that pop out of the trap will either pop out on a timed cycle, or will only pop out when the player enters the bounding box of the trap. When the player is hit by the spikes they take damage and are given a short 'bleeding' effect on their character.
Another trap the player will encounter is a simple flamethrower trap. This trap shoots out a small horizontal (or vertical) pillar of fire. When the player is hit by the flame they take quick burning over time damage. When they leave the flame they continue to take 'afterburn' damage, which is a slower damage over time effect. During this time the player is also engulfed in a flame particle effect.