1. Archmage Rises
  2. News

Archmage Rises News

Dynamic Quests #4: Expanding, Generalizing, & Rewriting

[h2]Everything is Great! Until it isn’t…[/h2]

When last we left off, before I was interrupted with 10 Employee Reviews, we had a working system able to pop out goal driven text like this:

Quest Plot 1: Alice Kerslake wants Eliminate - Persuade Other NPC - (Underlying reason: ATTACKING US) Template: Find Person, Kill Generic, Deliver Information

Alice Kerslake, Female, Mid wealth, age 21

Player: Do you have any work for me?

Quest Giver: I believe it's critical that we convince [NPC] about the threat of the Skeleton.

Player: Why?

Quest Giver: There have been clashes between the Skeleton and our people. Not long ago my niece was injured in a [enemy] attack. People are going to die unless we get rid of them. [NPC] has great influence in these matters. If he can be persuaded, others will join the fight. Can you help me?

Player: Yes, I'll help you

Quest Giver: Thank you. I'm afraid [NPC] is notoriously stubborn. And with these recent attacks, I know that we can't do this alone. It would be helpful if you could find somebody named [NPC]. I believe they may prove useful.


The C# code takes game context to query excel files for a speech template. One like this:

Quest Giver: I believe [Would You Kindly:Quest Objective] [Quest Objective:objective] [problem] [Stakes:Time] [Stakes:Subject] [Event:problem] [Fear:goal] [Reason For Task: objective :goal]

Anything in square brackets is replaced by the system.

There are reserved words like objective or goal which are replaced by complex variables in engine.

Then there are straight lookup replacements like [Stakes:Subject], with the colon (:) separating the columns. The data looks like this:



Couple of things we like about this:

  1. Super easy to mix natural language with template values and variables. Nolan only has to know a few key words (objective or goal) but the rest is up to him. He chose to make a grouping known as “Stakes” with sub-groups of Time or Subject. Whenever you can remove a programmer from the workflow, yer doing it right! 😛
  2. The system supports 4 column levels of specificity before returning the line or phrase requested. This seems flexible enough to handle our needs.
  3. Case insensitive search! I can’t stress enough how important it is to put the little bit of extra effort into making string compares case insensitive so designers can just do their work. The rule is to allow any form of bastardized input to make the game work. Try to remove as many barriers as possible. I strip out leading and ending spaces, special characters, blanks, and nulls. No one likes being blocked for forgetting a capital S or accidentally leaving a blank row.
  4. Fast iteration cycle. We can change the excel template or dialogue lines while the program is running and see the results immediately.

Everything is looking great, and then human nature kicks in where if you give an inch they want a mile….

Nolan wants 3 more columns of specificity: relationship, goal, occupation



This brings it from 3 named columns to 7. And we’re still in the early stages! Experience says he’ll probably want at least 3 more as we do more with it. This isn’t sustainable. The excel sheet becomes unweildly with tons of blank columns most of the time, except for the few times he needs it.

This leads to errors.

Time for a new solution.

[h2]Hey, You Know That Thing That Works? Rewrite It. Generically.[/h2]

The core of the system is how it looks up and returns randomized lines. This now needed to be changed.

There is always a point in a project/feature where you better understand the problem and can make a generic solution to really solve it and all it’s ilk.

In this case I had to throw away the concept of named columns. Instead, each : (colon) is simply a separator saying “more specific parameter incoming!” As long as Nolan puts the data in the same order as he calls for it, he can have as many columns as he wants.

It also allowed us to flatten the data. Instead of needing to put data in specifically named columns, with spaces all over the place and the easy ability to stick it into the wrong spot, data is always entered from left to right with increasing specificity. The above data is now:



You probably aren’t impressed all we achieved was pushing the alignment left one column, but it’s a sign of how much simpler it is! It’s the kind of thing a programmer can get excited about!

Nolan got his additional columns. And he can have more if he wants them.

The parameter/variable analyzing and substitution code went from 100 lines to 30. By making it more generic, the code became simpler and clearer. The signs of a good system design!

It took just over a day to rewrite this whole thing.

So what did we achieve, well from an output perspective? Nothing new! In fact that was the test for the new system: did it output the same results as before?

Under the hood it is a lot better and now we can continue moving forward.

Weekly Dev Update: Dec 4, 2023

[h2]Update 2B: Combat Rewrite[/h2]
WIP of new combat

Combat has been in development for 6+ months. 90% of our resources are focused on it: Mark, Josh, Michel, Tyler, Zach, Jonathan, Jessi, Nolan, and Rubi.

We’re nearing the end of Combat. The pieces are coming together. It’s all working. It’s been real tough to pull this off but it looks like the results will be worth it. Here’s hoping we don’t screw it up with bad tuning! Meaning, we want to ship as soon as we can, but if the tuning is off “it’s bad forever”, so we don’t want to do that.

The major Combat Work:

  • Define combat data in some sort of easy to use way (JSON) ✅
  • Make and cast spells ✅
  • UI - with tooltips and combat log updates based on the data ✅
  • Status buffs ✅
  • Turn system for player and enemies ✅
  • Enemy actions and abilities - Working on it

I’m pretty confident we will announce a release date later this week!

[h2]Dynamic Quests[/h2]

This past week my schedule was totally consumed by employee reviews. The last one is today. This week, I return to the Dynamic Quest prototype.

Don’t know what I’m talking about?

It’s essentially using the simulator and NPC goals to generate interesting quests. The goal for Archmage was to have the game be a GM with the ability to create infinite quests.

Nolan and I are working on it. The first part of Dynamic Quest generation is coming as part of Update #3 Exploration.

[h2]Priority Tasks[/h2]

It’s important to do both BIG things and smaller things simultaneously. A challenge in project management. Phil and Daniel2 are working on these improvements for this Thursday’s patch:

  • NPC: Dialogue: When a new Topic (Person, Location, Quest Object) appears in text, highlight it. This is really hard, which is why we didn’t do it yet. We’re close to being able to do it.
  • Tied to the above, make these new Subject topic options automatically appear without requiring you to click “Tell me more about…”
  • NPC: Dialogue: we’re fixing the ordering of the options to make more sense. It will display in this order now:


    • Quest related
    • Service related
    • Good (compliments, flatter, etc)
    • Neutral (How are you?)
    • Mean (Insult, Kick in the Nuts)
    • General Questions: Tell me more…
    • Leave
  • Flatter now shows a tooltip for difficulty

[h2]And Now For Something Completely Different…[/h2]

These posts are intended as an inside glimpse into the studio. So some might find this interesting and/or entertaining…



Couple weeks back I had some time off. I used to play WoW from 2005-2010. Recent work on the Dynamic Quests got me thinking about my favorite quests in Westfall at Sentinel Hill (Alliance). I decided to fire up WoW Classic and play it again… you know… for research.

Once the spiraling camera of the intro sequence started all the sweet warm memories came flooding in. It was every bit as good as I remembered! A video game is like a time machine, it brought me back to remembering simpler times, before kids, before moving to rural northern Ontario… I was in heaven, playing a game I sudden realized, I still love.

I leveled and got to Sentinel Hill (15) and kept copious screenshots and notes for Nolan and I.

Mission accomplished.

But… maybe just one more level….

I shared my experience with the team just as an FYI. Some of our team members were only 5 years old when WoW came out. I wouldn’t want to inflect 2004 3D graphics on any of them.

Yet, one by one, people started signing up to WoW Classic and playing with me… First Tyler, then Mark, then James, then Zach. Then Zach’s wife, and now James’ wife is considering jumping in. Phil is on the fence. I predict he’ll cave soon after Combat ships!

That’s 6 of us now all playing a 20 year old game in off hours… we just ran Deadmines last night (first Alliance Dungeon Instance) and it was awesome.

We finishing up the employee reviews today and the fact that we enjoy working together all day, then exploring Azeroth in the evening together is a sign the team morale is real healthy. And a healthy sustainable team is what we need to finish Archmage Rises right.

Thank you for the privilege of making this game for you!

Vote For Us for the IndieDB Awards!

It seems as though the video game industry has really hit the awards season. I just received an email about IndieDB's "Indie Game of 2023" awards, and thought how cool it would be to win that award!

Whether we win or lose, this journey has always been about trying to create the best mage simulator video game we can, and getting listed as one of the top 100 Indies of 2023 would be an amazing achievement! Plus, the more people who see the game and buy the game means more content and features we can continue adding.

So, we'd love your support again and 30 seconds (or less) of your time to jump over here to cast us a vote and help Archmage Rises become one of the top 100 Indie Games of 2023 (and beyond)!

Vote here: https://www.indiedb.com/games/archmage-rises

Build 0.2.20 is now live!

This week will be a much smaller patch. We were working hard on a highlighting system to improve conversations with NPCs, but it's taking a little longer than expected, so this is a very light patch this week.

[h2]IMPROVED:[/h2]
  • When picking up loot in a dungeon, you now have the option of whether you would like to take it the loot or leave it. Thanks for the great request!

Weekly Dev Update: Nov 27, 2023

[h2]Update 2B: Combat Rewrite[/h2]

It’s snowing outside, so this Elmore Dragonlance pic inspired by Dragons of Winter Night felt right.

Combat has been in development for 6+ months. 90% of our resources are focused on it: Mark, Josh, Michel, Tyler, Zach, Jonathan, Jessi, Nolan, and Rubi.

Combat is coming along and the team is greatly encouraged. It’s really cool to see new spells being created by text JSON files like this.



A rewarding side effect of this data-driven approach is the quick iteration time on changing and reloading data without having to rebuild the game, saving about 5 minutes per testing cycle.

I wish I had a cool video or screenshot to show but this will have to suffice. It is an example of data driven enemy tooltips.


(Yes I know that isn’t a skeleton, it’s all test data at this point)

[h2]Dynamic Quests[/h2]

Nolan requested more specificity to how the text is chosen and this required a rewrite of the core dialogue selection system. More details to come in tomorrow’s detailed update.

The first part of Dynamic Quest generation is coming as part of Update #3 Exploration.

[h2]UI Redesign[/h2]



We’ve had some good meetings on how we can redo the HUD of the game. The above is just one mockup of many but it proves a couple of points which seem solid:

  • Bust out of the hard frame and allow UI elements to ‘float’ in different zones of the screen
  • Spell selection is bottom center
  • Focus attention when speaking with an NPC
  • The player portrait will always be on display and show damage by filling with red (like Pillars, Baldur’s Gate)

Jessi and Phil are heading up our UI redesign as part of roadmap Update #3 Exploration.

[h2]Priority Tasks[/h2]

  • DeLastOne suggested highlighting Knowledge Subjects directly in the dialogue text. Good idea. We’re trying to implement it.
  • 2009dh pointed out with inventory being precious, provide the option not to pickup loot in dungeons when it appears.


[h2]Other[/h2]



We’re currently doing 360 reviews for our 10 employees.

At a minimum, a company should do formal reviews once a year. A really good company will do them twice a year. I’ve put them off for 18 months marking me as a bad leader. 🙁

[h3]WHY DO THEM AT ALL?[/h3]

How does a person know if they are doing a good job? Meeting expectations?

A comprehensive 360 review gathers feedback from people above (supervisor), beside (co-workers), and below (direct reports) to give a full picture of someone’s performance.

As you work in ‘close proximity’ with someone there are great things you notice and little annoyances that accrue. When do you ever get a chance to share these? Stand-up and project meetings aren’t the right time. Even praise can be hard to share. The words “I’m proud of you.” can sound weird in the wrong context or moment.

What if they are difficult or awkward topics? Like farting too much in the office?

An actual issue I had to address with a programmer at my software company. He didn’t last.

So a purposeful one-on-one time to share the teams thoughts and encouragement in improvements is necessary to healthy team growth.

[h3]WHY DO THEM NOW?[/h3]

I put off doing them because there just never seems to be an opportune time:

  • Jan - Feb we were crunching to get the Demo out for Next fest.
  • Mar - Apr we were getting out the launch of the game to Early Access
  • May - Aug we were crunching on Content Updates
  • Sep - now we’ve been scrambling to get Combat Rewrite done

So it’s happening now. It’s a big time investment for myself, meaning I don’t have as much time for other things like Dynamic Quests or staying up to date on the forums. But I will get back on the forums soon.

That said, if you would like to be involved in the process, go ahead and post on Steam. I’ve already incorporated previous posts in some people’s reviews. Phil and I are the most public facing team members, but if you want to shout out some audio, narrative, gameplay, or art I’ll make sure it gets to the right person.