Weekly Update – January 26, 2024

Before starting on Legend, I was working on a game called World (I like generic titles). World was a massive project that eventually collapsed under its own weight. It became highly complex and unwieldy, a consequence of too many ambitious but ambiguous ideas and the absence of a framework to tie it altogether.

One of my biggest struggles with World was object interactivity. I wanted to build an extensible, data-driven system in which the outcomes of interactions between objects were based not on explicitly defined object combinations but on the underlying properties of the objects (e.g. state of matter, flammability, hardness), and the manner in which an object was being used in relation to another object (e.g. chopping, piercing, shoveling). This system would support infinite object interactions, significantly expand emergent gameplay possibilities, and make it easier to add new object types. Much like the history generator added to Legend last year, it was very challenging to conceptualize the bridge between the vision and the implementation.

Although a high degree of object interaction has always been a major design goal for Legend, I’ve been leery of it after my experience with World. But, as I thought through how I was going to implement a sample list of interactions I wanted to enable, I found myself drawing from the design work I did on World. To avoid the mistakes I made the first time around, I deliberately gave up flexibility in favor of simplicity and ease of development. The benefit I have now, vs when I was working on World, is that there are more knowns. I’ve been working on Legend for over four years now; many design decisions have been made and the systems are in place and proven. I don’t have to try to solve a problem with an overwhelming number of unknowns. 

This week I implemented object/item interaction. Any object or item in the game can now be paired with another object or item to produce an outcome, provided that the item/object combination and the outcome have been defined. Example interactions I’ve implemented include:

  • Dipping an arrow into a poison potion to make a poison arrow
  • Making a healing potion by filling an empty vial with the liquid from a healing fountain
  • Poisoning a fountain by pouring a poison potion into it
  • Purifying a poison fountain by pouring a cure poison potion into it
  • Collecting water from a puddle with an empty vial

There are a number of minor issues that still need to be addressed, for example the UI sometimes doesn’t properly update, and item quantities aren’t handled correctly. Next week I’ll fix these and post a demonstration of how the object/item interaction works.






Leave a Reply

Your email address will not be published. Required fields are marked *