Giving items extra value to mitigate difficulty.


Over the last few weeks, I've done several things with the game. What people might immediately notice is that I've given the game a proper name and some key art. I will talk about that over time, but I am still very much focussed on the mechanics while I flesh out story and details in the background when little flashes of inspiration come to me (probably a blog post all on its own but will leave that for another day).

My last post mentioned I'd be moving from the randomization, which was successful, to more traditional mechanic building. This has been a brilliant exercise in programming and development. I've largely used A link to the Past as a template here for the items I'm creating but adding little details where I think it'll make a difference.

 

Refactoring item actions in the code

I originally wrote all my movement and action code in a PlayerMovement class, which was doing all the heavy lifting when it came to moving my player, making the player perform actions and detecting the collision with adjacent objects. It very quickly became apparent that this simply wasn't going to cut it if I wanted to be able to swap inventory items and script what each item did. So the class structure had to change.

I've created a few abstract classes to define inventory item actions the abstract class holds abstract functions to call Action and Held Action, These classes ensure the extending classes have this function, and also allow my control script to call a single action - meaning I can interchange what item I am calling from a button press because I know every Inventory item will have an Action function. Extending classes define their actions in the Action class and define what the character does when the button is held down.

For example, my Hammer item creates a hitbox in front of the player which will collide with whatever object is in front of it. If the button for the hammer is held long enough, however, a larger circular collision will expand out from the hammer's origin and have a 'quake' effect on objects within its radius. this takes the original hammer concept from A Link to the Past and gives it extra value.

 

Giving a higher value to simple items

That brings me on to some of the design decisions around the inventory items. Since this game cannot guarantee what a player will get early on, I decided that I wanted progression items to have a more versatile move-set, this allows variance in how the player might play and gives them plenty of options even if they haven't found all the 'optimal' inventory items for that situation. With our hammer example, the wider 'quake' effect allows the Hammer to be more readily used in a combat situation. The hitbox of a hammer might be smaller than a sword, but if a player can stun an enemy first, they stand a better chance of hitting that enemy if it is stationary for a short period of time. This mitigates scenarios where a player might find it difficult to progress without an effective weapon.

Likewise I can do the same to more 'passive' items as well, a lamp in A Link to the Past lights a cone in front of the player, and can be used to light torches, it doesn't really have much value beyond that and sometimes you might see players in A link to the Past Randomizer completely ignoring the lamp-locked requirements and progressing through dark rooms without it, breaking the logic of the randomization. If I implement further functionality to the lamp I can expand its utility. In Outer Wilds: Echoes of the Eye the player uses a lamp to interact with their environment, there are switches which react to bright light, and the lamp can be placed in specific locations to light projectors and if the player walks too far away from their lamp the world changes entirely.

The Lamp's utility can be used in such a way in my game as well - I can create a mechanic to focus a beam of light forward instead of just a cone or area around the player, this has further puzzle utility. I could introduce light sensitive switch, like the Outer Wilds example, or I can have the light interact with magnifying glasses to create fires. the focussed light might also stun enemies, giving the lamp some combat appeal, or I cloud make the flame interchangeable with different flames giving off different effects, stopping time in a circle around the player so they might move safely past dense projectiles. Or a gaseous cloud like effect, akin to lamps used to burn incense.

Expanding on tools in a game where tools might be limited gives the player greater versatility in the way they approach progression; this opens the world further and allows a player to freely explore even if they might not have an optimal setup. The utility of times may still need to be limited as to ensure a linear progression is not broken entirely, but allowing the player to 'feel' like they could go anywhere even with a limited tool set allows their imagination to explore the world and introduces a limited 'open-ness' to the game.

 

Leave a comment

Log in with itch.io to leave a comment.