1. Archmage Rises
  2. News

Archmage Rises News

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.

Finally, for no real reason, I'll end today's post with a picture of a goblin from the game cuz i like it. "I named the big one, bitey."

Getting Events Ready for Release

I usually write updates end of the work day, but today I’m excited so I’m doing it first!

Events News


We are working towards a minimum of 30 events. We have 20 so far. I expect to write two more today, leaving 8 left to go.

If you have an idea for a random event, something short, interesting, to be stumbled upon out in the wilderness of the map, (not part of a quest and doesn’t launch a quest - that will come later), post your idea in a few lines. I’ll read em and it may help us finish up the content!

Since we are close, Michel has been focused on the tech side of releasing. Removing the old resources system, shoring things up, working on the event population algorithm.

I don’t want to set a release date yet. But here is what’s required to release:

  • We have the 30 events written and encoded into the JSON.
  • We’ve playtested them together, as a whole, and A) It doesn’t suck and B) It feels pretty good.
  • Our community manager Monster Tamer Bloba has playtested it
  • We’ve made both PC and Mac builds - it’s been a while and we have to make sure our automated build system still works


Studio News


The story of how Psyonix made Rocket League is an interesting one. NoClip made excellent documentaries about it. Psyonix funded the development of Rocket League by taking multiplayer contract work from other studios and having a few people working away on RL in the background.

Since our investor fell through last year, and efforts on publishers lead to dead ends, contracting is one avenue open to us.

I’ve been working a contract for the last 6 months and it is the reason Michel is able to work full time.

Well, this week has been a great week on the Studio side.

Last night I closed a deal that will spin up three people on a small project - pending receiving the deposit.

The big news is we have a sizeable project bid that has strong indications of moving forward! If so, that will spin up 8 or 9 people and really get things moving. Once that is in place and humming along, I’ll be able to get some more people working on Archmage Rises again.

It’s been a long hard road recently, and we aren’t out of the woods yet, but things seem to finally be going in the right direction again! At least right now. At 9:17am.

Oh ya, and that snafu with the website is finally resolved and we’re back up and running again!

Quick Dev Update May 13 2025

Quick update that our website is temporarily down. It doesn't mean anything. I'm working with multiple tech supports to resolve it in the next few days. Just have to wait for fixes to take effect.

On the game side, we are working towards 30 events and have 20 good ones - well, we think they are good, or at least good enough to release! ːhappystar2022ː

Dev Update May 2: Definition of Done for Events

We’re close to wrapping up and shipping the new Events feature. I’ll announce a release date in the next few weeks.

[h2]Events[/h2]

Michel asked, “How do we know when we’re done with Events?”

That innocent question of “how do we know we are done” is surprisingly difficult to answer. It can often go unanswered on teams.

Projects (major features) go through these game dev phases:

  1. Concept - Team decides to do X. Everyone is excited. X is gonna be great!
  2. Formation - Team defines X. What it is, what it isn’t. Where it comes from (inspiration)
  3. Core - Team starts building X. Some parts of X are really hard, so the team backs away from those. During implementation team learns more about X than they expected.
  4. Expansion - X is coming along now. X adjacent ideas bubble up, low hanging fruit really, X would be so much better if we included those. That’s X+. Then after some use of X and some content has been filled in, there is a big meeting and realizations come to light. We’re going to have to add stuff we never considered at the start. Some of the initial X ideas have to be scrapped to make way for what’s truly important. Now the team is building X++.
  5. Release - Release is a process not a date. Team is getting X++ ready to release but with all the changes - what even is X anymore?


This is where the Definition of Done comes in. The Leader has to draw a line in the sand and define for everyone what a finished X looks like. It’s not that people are dumb, forgetful, or can’t read the initial concept document. It’s just that so much has happened and been said around X that its hard to keep track of what was added, cut, and changed. The morphing through development puts everyone into a mental fog.

The original definition is no longer sufficient light to guide the ship into port.


So this past week I had to define done for Events for myself as much as for Michel. I went to Confluence and updated our initial Start page:

[h3]Events are:[/h3]
  1. Something more on the map than cities, patrols, and quest locations.
  2. A satisfactory interruption. A quick in and out taste of something different
  3. A way to test and reward skills the player has been building
  4. Small way to make world feel alive and fantastical
  5. An opportunity for roleplay or morality checks
  6. A way to share lore
  7. System we can utilize later for when anything goes on the map
    1. The quest system
    2. Dynamic quests
  8. System we can layer on top of - once there is a region, we can layer in region related events

[h3]Success Completion[/h3]
  • Minimum of 30 events
  • It works


With this in place we know exactly what we need to do. We currently have about 10 of the 30 events and more are being created every day.

As soon as we get to 30 I’ll set a release date.

[h2]New Community Manager[/h2]
I’m happy to introduce our new Community Manager Monster Tamer Bloba. MTB has been around for a while on discord and forums and shared some great thoughts. He loves the game and wants to help make it a success.

He’s here to help me stay informed and keep you informed.
Thanks Monster Tamer Bloba for helping us all out!

Dev Update Apr 18: Making Nothing Fun

Today is Good Friday and it was a good Friday. I enjoyed writing some events in Archmage Rises. I had to be away from the project for the past 2 weeks to wrap up a teaching semester.

We are near the end of completing the Event tech. We are working on content and feel.

Today I will share a bit of the process and a game design insight I had on “Making Nothing Fun”. I’ll inevitably be sharing some insider info in order to explain it, but that’s part of the payoff reading a dev blog, right?

Starfall


I started writing a fairly basic resource event. You see a meteor in the sky. It is like a regular resource pickup event, but with a twist: the meteor splits into 3 parts creating 3 sub events. At normal foot speed, I expect players to have time to visit 1-2 of the crash sites and get some loot (unless you have flight, or teleportation, fast mount, or other cool things).

I work on the Minor meteor hunks, then get to finding the Major hunk.

You see the crater ahead. Heat shimmers in the air, and the earth hums faintly beneath your boots. The rock in the center glitters with fractured shards of strange luminous metal.


I put that "luminous metal" phrase in there to make it clear you are at the really good crash site. Well done! What options does the player have?

[Investigate]


That’s it. That’s all I came up with for what is basically a lootbox.

I’ll grant it’s not too interesting. So, I thought really hard and managed to come up with a perfectly suited, contextually sound, in-world second choice:

[Investigate]
[Back away]


There. Now there is a choice. I know, I know, very impressive right? And I did it all by myself!

Given this scene and those two choices, how many people would choose #2? I’m guessing close to 0% with +/- 10%.

In class, I specifically teach my students not to do this. This is called a false choice. It looks like choice, but isn’t because it isn’t yet an interesting choice. Whoops! Better no choice than a false choice – why? Because all choice involves some tiny amount of thinking effort on the player and don’t waste their effort thinking through a false choice just to not choose it. See Steve Krug’s excellent UX book Don’t Make Me Think for more info.

How to turn this into an interesting choice? Make both paths equally valid. Not equal in reward, but equal in Satisfying Outcome.

This is when I had my realization – I actually do this a lot: Present the option to do something and another option to do nothing.

[h2]“Nothing is never interesting!”[/h2]

Even super risk-adverse people aren’t happy having nothing. What makes them happy and feel good is not getting nothing, but avoiding something bad. The fear of “bad” or the satisfaction of avoiding a bad outcome is the dopamine reward which reinforces the behavior.

OK, so let’s modify the event a bit and make it clear by showing there is a risk-reward / avoid danger choice here:

The crater comes into view. Heat shimmers in the air. The ground hums beneath your boots, steady at first, then sharp and uneven. At its center, a rock glitters with fractured veins of luminous metal. But the glow within pulses erratically, eerily.

[Quickly investigate]
[Back away and observe]


We’re getting somewhere! If I feel like taking a chance, investigate the space rock that invaded my planet. If not – well do nothing.
There’s that nothing choice again…

[h2]“How can we make ‘nothing’ feel good?”[/h2]

I had to think pretty hard to suss out when, in gaming, does “nothing” feel great?
Then I remembered a very common scenario in D&D.

You are low on health and the enemy is making an attack roll. If they hit, it’s time to roll up a new character.

And they miss! They miss the THAC0 (or whatever it’s called these days) by some number.

Nothing happens and it’s jubilant and wonderful!


What makes this moment sing? It’s:

1. Seeing the danger
2. Knowing it is real
3. Managing to avoid it (even if you didn’t have control over the outcome)

It’s the near miss that is so exciting.

Another example, from Warhammer/40k:
Your opponent makes 3 hits against your character. He’s about to die.

You roll a 6+ armor save – and get three 6’s!

Nothing happens and it’s jubilant and wonderful!


This realization of how to make Nothing feel fun was so exciting I wrote it down as a design rule in my notes!

Empowered with this new knowledge, I revisited the event. I had to make the ‘miss’ clear. I also had to change the first choice into a pass/fail check.



The crater comes into view. Heat shimmers in the air. The ground hums beneath your boots, steady at first, then sharp and uneven. At its center, a rock glitters with fractured veins of luminous metal. But the glow within pulses erratically, eerily.


Now there are three outcomes:

Quickly investigate - Success
You circle the sky rock and find it cracked, its shimmering veins bleeding pure gold into the dust. You gather what gold you can and make your escape. As you stride away, a sharp implosion echoes behind you.
Gain gold size 4


Quickly investigate - Fail
You linger too long. The pulsing light stops. After a few breaths of silence, an explosion rips through the air, scattering knives of glowing stone in every direction. You hit the ground hard. When the smoke clears, there is nothing left but silence, pain, and blood.
Down to 1 hp


Back away and observe – Always succeeds
Wisely, you withdraw and observe. The pulsing quickens, then stops. In the next instant, the rock explodes, hurling glass-like shards in every direction. When the dust settles, you find a small pool of gold gleaming where the stone once sat.
Gain gold size 2


Now the safe “nothing” choice is a near miss with a gain. Not as large of a gain as the risk taker’s win, but that’s just fine – they got a steady return on their stock portfolio and didn’t risk losing it. That is a win! I also put the word “wise” in there as a compliment to this kind of player that they chose the prudent path and it paid off.

(As an aside, there is a difference between reading it here and playing it in game: they won’t know how much more they could have gotten on the risky path.)

So, that is what we are working on. It takes a while to write these events, hopefully we’ll get faster!

A big shout out to Jonathan who reads these updates every time and asks me about them each week. Especially if I don’t write one!

Thanks everyone for your continued interest and support!