Dev Update May 30: More Events

Internal Playtest

Today I playtested the events we have for feel.

Overall, they feel good. It’s the right thing to add to the game, it adds a certain “je ne sais quoi“ to the game to make it feel slightly more magical, mysterious, and interesting.

It doesn’t transform the game, but it’s a solid step forward. It will be really nice when we tie more systems into the Event generation.

The first thing to tune is the timing of event appearance. Right now they appear way too frequently and it sucks. It’s like too much salt in your soup. And Michel loves soup!

Second is how/where the events appear. The placement logic we have ends up creating sucky scenarios where this happened:

  • I exited a town and saw an event to the west. I went towards it.

  • Just as I reached it, another event spawned to the east, right beside the town

  • Just as I reached it, another event spawned to the west, close to where the first one was

This ping ponging between events feels crappy. Like running on a treadmill with no forward progress.

We have some ideas we’re going to explore on the placement algorithm next week.

JSONing Events

We wrote 22 events but they weren’t all in the JSON yet. As Michel translated them into JSON, there were features we needed to add to the game.

There is a difficult balance of when to conform content to the game, or the game to content.

We initially wrote the system with no real content - just some test content we imagined up. Once we started pouring in the content, that is when we discovered the real system needs. Michel went back to programming those features to get the game to conform to the content.

It’s almost like we added a mini scripting language to the game:

  • GOTO support (either jump to a stage or use the options at that stage)

    Blackboard Values / Flags (keeping track of how many goblins died)

  • conditionals support (not true conditionals, but a similar effect can be achieved with random-stages + prerequisites)

  • dynamic text and text variation

  • AnyLairsNearby()

  • CheckBlackboardValue()

  • CustomPrereq()

  • FledBattle()

  • HasFood()

  • HasItem()

  • HasNotSeen()

  • HasSeen()

  • HasSeenAny()

  • HasSpell()

  • HasTool()

  • HasVariable()

  • LacksItem()

  • NeedsTool()

  • WonBattle()

  • AddOutcome()

  • GainStamina()

  • GenerateBattlePlan()

  • GenerateRandomWeapon()

  • Harvest()

  • IncreaseReputation()

  • IncreaseWellbeing()

  • IncrementBlackboardValue()

  • LeaveHexEvent()

  • LoseGold()

  • LoseItem()

  • LoseMagicXP()

  • LoseStamina()

  • MarkSeen()

  • PickFoodItem()

  • PickItems()

  • PlaySFX()

  • QueueHexEvent()

  • ReceiveDrink()

  • ReceiveGem()

  • ReceiveGiftable()

  • ReceiveGold()

  • ReceiveItem()

  • ReceiveMagicXP()

  • ReceiveMonsterLore()

  • ReceiveMount()

  • ReceiveRandomWeapon()

  • ReceiveSkillXP()

  • ReduceToOneHP()

  • ReduceToOneStamina()

  • RestoreHP()

  • RevealLair()

  • SetBlackboardValue()

  • SpawnBattle()

  • SpawnFloatyText()

  • SpawnHexEvent()

  • SpawnPatrolHere()

  • StunPatrol()

  • SwitchToHexEvent()

  • TakeDamage()

Writing 10 Events took about 40 hours.

Converting those events to JSON took about 47 hours.

Total: 4000 lines of JSON

Event Icons

We currently don’t have availability of our UI or Illustrator artists, yet we need something for the Event Icons on the map. I’ve been hearing good things about Midjourney from other people on other projects and so tried experimenting with it today.

While I got cool looking concept art consistent with our art style, I couldn’t make anything I can use in an icon. I have a huge library of fantasy icons, I’ll plumb those depths to see what I can get.