1. Archmage Rises
  2. News

Archmage Rises News

Dev Priorities: Dec 11, 2023

Before we jump into today's update, got some exciting news! We received word over the weekend that we made the shortlist of IndieDB's Top 100 Indie Games of 2023, so a huge thanks to all of you who jumped on and nominated us!

Now is the voting round, and our chance to nab the 2023 Indie Game of the Year award and we'd love your support! You can cast your vote for us here: https://www.indiedb.com/games/archmage-rises



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

WIP on NEW Combat.

We set a date! New Combat is coming Jan 19!

Behind the scenes it took three days of work and super long meetings to finally set a reasonable publish date. Mark kept reminding us “I’d love to get it out soon too! But we need time to play, test, and refine it before it goes out.” Finally I just asked for a date he’d be comfortable hitting. This is how we arrived at the 19th. The most tested and balanced work we’ve ever done. Will it be perfect? Nope! But it will be good.

Some details in the screenshot:

  • Spells are now data driven from tiny little JSON legos (combatons) all defining what the spell is and does: how it applies damage, does it apply a status effect and if so how?, how it affects neighboring spots. A standard spell has about 7 combatons, more complex ones could be 15.
  • The casting power bar is back, but now per school, representing player mastery in that spell school. It is unlocked through our new School Progression system (not a quest).
  • New monster race of Crocodons is coming as part of this combat update.
  • New cast box, method of casting, and targeting. The UX is improved
  • New tooltip system. We had to, as it is now all data driven from tiny little combatons.
  • Ara numbers are much larger. We’re still experimenting with the right numbers.
  • We will post info on Ice School later this week.

Combat is basically everyone’s focus.

[h2]Weekly Patch Priorities[/h2]

I caught up reading the Steam forums last week since I was swamped doing reviews. It is important to me: If you take the time to say something about Archmage Rises, I will make the time to read it. Most of the time I will respond. Based on the feedback I saw these are priorities for this week:

  • Ashpeef has a crashing save file we are going to solve.
  • Phileosophos brought up an issue with NPC directions to things. People say ‘East’ but it is more South than East. Super misleading. We’re investigating
  • TakeMyLunch wants the ability to turn off the Rivals. We’re looking into a simple way to do this.

Currently Phil and D2 aren’t on the critical path for Combat, so we think we can do these. But it might change.

Build 0.2.21a is now Live

Hey! This is a super quick patch to fix something that was supposed to be in yesterday's patch but didn't work properly, so we didn't include it in the release notes.

[h2]IMPROVED:[/h2]
  • Added a new option in settings to always highlight interactable objects in dungeons. Thanks Logi Geimgengill for the suggestion!

New Combat for a New Year

New Combat is coming Jan 19 2024

It has to be Good

There is an adage in video games “Games are late once, but bad forever.” We started on NEW Combat in March. Recently, we were pushing hard to get it done before Christmas. For you! For us! Especially the guys who have been on it for 9 months. But we just can’t build, test, tune, and release it in that time. After all this time and waiting I sense it has to be good! So we’re giving ourselves enough time to hopefully get it right and not kill ourselves over Christmas.

With that out of the way, let's jump into a quick overview of some of the things that is coming with the new Combat Update!

Interesting, Thoughtful, Strategic Combat




We’ve rebuilt every spell from the ground up with a new paradigm, system and UX. Combat now asks a multitude of interesting questions for which there are many possible choices.

Five Full Schools of magic for a total of 30 New Spells – Each school has been rebuilt from the ground up to have it's own identity and flavor. Preexisting spells have been remade new. When and which spell to cast matters! Each school of roughly 6 spells is equally valid and valuable. Play your mage fantasy however you want.

Magic Research & Progression System – This whole new system uses XP gained from combat, research, and experimentation to unlock new spells.

We will be sharing more details of each spell school over the coming weeks leading up to launch.

New Mechanics
  • Ara - Adjustments to the Ara pool system, including managing your Ara (Mana) resource across turns. Unused Ara now carries over across turns.
  • Action Points - increase by 1 per round (like Hearthstone) up to 8, opening up more options latter in battle
  • Armor - We removed the two kinds of armor (physical and magical) from monsters, now enemies just have HP and resistances
Enemies


We’ve completely revised our four existing races: Spiders, Wolves, Skeletons, and Goblins. Now we are happy to introduce a new race: Crocodons. Burrowed deep beneath the earth, the crocodons have hibernated some 2,000 years. As temperatures approach those of the years before the Frost, the crocodons stir from their long slumber…



Save Files

Maintaining your hero's progress is super important to us. Yet, we completely redid equipment. What to do? Our solution is to refund the gold value of any existing equipment you have, teleport you to the starter town, and allow you to buy new equipment from the shops. The old equipment doesn't easily translate to the new unfortunately.

Also, because of how world generation works, crocodons will only appear in new games, not existing save games.

We will maintain the latest build before Combat releases as a new Legacy branch for those of you who might not be ready to make the switch yet.

That's what we're sharing for now, but we'll release more details as we get closer to release.

What Questions Do You Have?


Phil (Community Manager) and Mark (Combat Lead Designer) will be recording a Q&A / AMA about combat. Post your questions here and we’ll answer them in the video!

Build 0.2.21 is now Live!

[h2]IMPROVED:[/h2]
  • Highlights keywords in conversations with NPCs for important pieces of information. There may be some instances where key terms don't highlight yet, we're working on fixing those.
  • You can now click on those same highlighted terms to get options in the dialogue to ask about those items, and then return back to the quest-related conversation.
  • Dialogue options now have a consistent order.
  • Hovering over the "Flatter" option in NPC conversations will now show the difficulty check required to succeed on a flatter role.

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.