I decided to stop some of my side projects to spend more time on Legend.
- Enemy abilities. Enemies are now able to use abilities. Technically, they’ve always been able to use abilities because the player and enemies use the same class. But, the AI had to get smarter to be able to use them.
- Score-based AI. Enemies now have to choose between various abilities, attacking (ranged or melee), moving, waiting, and an occasional situational action such as breaking free from a web. The messy conditional logic wasn’t cutting it anymore. I added scoring to each potential action. The scoring calculations need more sophistication but the framework works.
- New enemies: Spiderling, Spider (Web Shooting). I added these for more variety in spider infested areas. It was boring fighting the same kind of spider in every room.
- New object: Spider Egg Sac, Faintly Glowing Web. Spiderlings hatch from the egg sacs if they’re not destroyed in time.
- New ability: Shoot Web. Some spiders can now shoot webs.
- Snake Lunge ability. Snakes can now lunge at the player.
- Inspect effect trigger. When the player inspects an adjacent corpse, the corpse is searched and the corpse’s inventory is revealed in the Inspect Panel. This action fires a new effect trigger type, Search, for searching the contents of an entity. I used this trigger to cause spiderlings to burst out of certain corpses.
- Improved map generator logging. Investigating map generation issues is time-consuming and mentally demanding because the logs are extremely detailed. I formatted key entries, such as the options the generator is choosing from and the selected option, in bold. This simple change has made it much easier to understand what the generator is doing.
- Context export. In my never ending quest to increase my output, I had an idea to use AI to do the tedious part of content creation, configuring Unity ScriptableObjects. For example, I’d tell the AI “create a level 1 spider that shoots webs with a 4-turn cooldown” and the AI would add and configure the necessary ScriptableObjects. I’d still provide images and write code when the new content required new functionality. However, I couldn’t find a way for AI to create and edit ScriptableObjects. So, I wrote a JSON exporter for the primary ScriptableObjects. And, I wrote a method that, given a list of classes such as actor and item types, uses reflection and the Odin property tooltips attribute to describe the classes.
Next week, I’ll experiment with AI creating new content and I’ll add a JSON to ScriptableObject importer. Also, I’ll continue playtesting and adding content where it’s lacking in the demo levels.

