1. Archmage Rises
  2. News

Archmage Rises News

Dev Update Jan 17 - Villains, Threats, & Regions

[p]Good writing has one central focused topic. But, a lot has happened in the last 2 weeks, so this is a triple-topic blog post.[/p][p]These past two weeks mark my first stretch back working full-time on Archmage Rises in quite a while. [/p][p]First, I put out a significant bug fix patch with a lot more fixes than that short list conveys.[/p][p]Then I focused on the most foundational work the game needs.[/p][h2]Turning Down Contract Work[/h2][p]Over the Christmas holidays, a studio reached out to hire me as a consultant. At first I said yes. Certain income is nice! But the more I thought about it, the parameters of the deal just didn’t feel right.[/p][p]One consideration was it would steal energy and attention from Archmage Rises, mainly around mental context switching. The kind of background drain that does not show up on a timesheet. In the end, I passed on the offer.[/p][p]It was a risky choice, but my wife and I feel it was the right one for now. I want my attention fully on this game.[/p]
Macro Game Loop
[p]For our purposes I’ll define a macro game loop as “What am I doing and why do I want to do it?”[/p][p]Starting Jan 5 my main effort is on the macro game loop. I have been working through a systems-driven approach for creating large, persistent problems in the world that the player has to respond to over time.[/p][p]The game must answer this question:[/p]
[p]“What gets worse if the player does nothing?[/p]
[p]Most of the games I play the answer is simple: “nothing.”
Archmage Rises is different and I have to bring that difference to the forefront.[/p][p]To make design discussion easier and more focused, I spun up a dedicated Design Discord channel and started posting questions and design examples there, this pairs alongside the Real Time Dev blog where I’m posting almost hourly as I work.[/p][p]For those that prefer Steam, I posted design discussions on Steam forums. I check these threads each morning as I start work.[/p][p]Threat System[/p][p]Regions [/p][p]Early feedback has been encouraging. The direction feels right.[/p][p][/p]
Threat System Design
[p]For the first time in this project history, I’m sharing an internal design document. I didn’t know Confluence could do that!
You can read the real design doc of what I’m attempting to build (with good formatting!) and it gets updated whenever I make changes.[/p][p]Threat System[/p][p]In software we talk about features as “user stories”. I think a story is a better way to describe a system and convey it’s features and feels better than a series of logical bullets.[/p][p]I think about the threat system through the concrete story of a Spider Queen.[/p][p][/p][h2]The Spider Queen[/h2][p]A spider infestation slowly converts a human region into a breeding ground. The queen is an amoral biological force optimizing for reproduction and safety. The player hunts her by cornering her by destroying her location options.[/p][p]I’m just highlighting a piece of the design here, I think this bit about the Threat Escalation explains a lot.[/p][h3]Threat Escalation[/h3][p][/p]
  • [p] Threat Moves provide progress along the Threat Track Foundation → Aggression → Conquest → Domination[/p]
  • [p]However, Escalation on Threat Track is gated by certain requirements.[/p]
    • [p]Cannot enter Phase 3 Conquest until N sites are Infested[/p]
    • [p]Cannot full assault a Town until a minor attack is performed on it[/p]
    • [p]Queen cannot enter Phase 4 Domination of attacking the capital until she conquerors a Town[/p]
[p]This allows the player to block the Queens progress through defensive actions[/p][hr][/hr][p]After sharing the first macro threat example, I spent the next few days incorporating feedback and testing the design against another scenario, a goblin warband. Once the ideas felt stable, I shifted from pure design into technical design of classes and systems. I think I found a way to implement the threat tracking in a way that avoids keeping data in the save file and instead making it more systemic logic driven. This makes it safer for save file migration across updates.[/p][p]I considered the design phase complete and started to code the Spider Queen threat.[/p][p]Then reality hit.[/p]
Pre-req: Regions
[p]There is no way around it, the threat system depends heavily on a map made up of Regions, which in turn requires reworking how the world map is generated. This is a system I am not deeply familiar with, so there is both learning and refactoring involved.[/p][p]I’ve known I had to implement Regions for a while, you can read the design goals in this dev blog:
[/p][p]https://www.archmagerises.com/news/2024/3/9/developer-update-regions[/p][p][/p][p]This week:[/p]
  1. [p]Created a new, simpler, cleaner way to store map data and render it. All the logic was on the renderer, when it went to draw a hex is when it decided what kind of terrain and features it had. The renderer was hundreds of lines long and overly complex. It is now 12 lines and handles 6 layers of ‘stuff’.[/p]
  2. [p]Moved the logic to when the map is created (where it should have been). This setup now allows the player to modify terrain through world spells. Or state changes like a burned down forest or ruined village.[/p]
  3. [p]Added 12 new terrain types, like shallow vs deep ocean, badlands, volcanic ground, and jungles.[/p]
  4. [p]Created a new region generation algorithm. I’ve only put a few hours into it but I’m already liking the shapes it is making, I see fun in it.[/p]
[p]A game world is made up of 5-8 regions.[/p][p]Here is a WIP screenshot i pasted together for 30x30 region that won’t impress anyone but my mom 😛:[/p][p][/p][p]Next step is adding forests and mountains.[/p][p]Perhaps it is nostalgia, but the mental ‘goal’ for terrain generation is my fond memories playing Ultima V. I found a cool website that has the whole game map on it you can walk around in it. I printed out some of my favorite spots and put them up on the wall to inspire me
[/p][p][/p][p]Also on the wall is my favorite most inspirational quote from the Steam Forum. What you say matters.[/p][p]That summarizes where the project is at. I’m excited to hit the Region map generation next week![/p]

Patch 0.4.3 - Jan 13

[p]Hi everyone! [/p][p]I fixed the two most reported bugs over Christmas/New Years. [/p][p]There were a lot of code changes, likely fixing other bugs too, but I'm releasing it on the Beta branch first so we can see how well it performs.[/p]
Fixed
  1. [p]Knowledge Picker crashing - Fixed the Subject/Knowledge Picker when talking with NPCs. It was blowing up if there was a quest giver without a Job. I also got rid of the dummy text "hyrule castle" and "ninroot" so it is more clear it blew up, it now just says "error".[/p]
  2. [p]NPCs giving bad directions to Monsters - it now spawns a tracks Event on the map from which you can find monsters.[/p]
[p][/p][p]Not a very long list, but hopefully this will make your game play much more enjoyable![/p][p][/p]

Patch 0.4.3 - Jan 9

[p]Hi everyone! [/p][p]I fixed the two most reported bugs over Christmas/New Years. [/p][p]There were a lot of code changes, likely fixing other bugs too, but I'm releasing it on the Beta branch first so we can see how well it performs.[/p]
Fixed
  1. [p]Knowledge Picker crashing - Fixed the Subject/Knowledge Picker when talking with NPCs. It was blowing up if there was a quest giver without a Job. I also got rid of the dummy text "hyrule castle" and "ninroot" so it is more clear it blew up, it now just says "error".[/p]
  2. [p]NPCs giving bad directions to Monsters - it now spawns a tracks Event on the map from which you can find monsters.[/p]
[p][/p][p]Not a very long list, but hopefully this will make your game play much more enjoyable![/p][p][/p][p](Remember - to play this latest build switch to the Beta branch on Steam by going to the games Properties)[/p]

Patch 0.4.2 - Dec 31

[p]Jan 1: Some players are reporting save game incompatibility between Dec 6 build and this Dec 31 build.[/p][p]For now, I have made the Beta Branch the Dec 6 Build so you can load your saves.[/p][p][/p][p]I carved out some time today to look into a few recently reported bugs.[/p]
  1. [p]Fixed Glassmaker not selling any glass. What was she doing with her time?! ːlaughing_yetiː Well I got them back to work![/p]
  2. [p]Fixed casting Haste on plants makes the plant yield on the FIRST day of the season instead of some date within the season.[/p]
  3. [p]Expanded the text display area for Random Events[/p]
  4. [p]Added Console command: [c]HexEvents.Reload[/c] to allow Events writers to reload their JSON without having to restart the game. This coincides with the documentation I provided few days ago.[/p]
  5. [p]Fixed Dead Body random event where you find a body with a note and no options. Now it has options and rewards.[/p]
[h2]Organic Resources[/h2][p]There were a few bugs reported on plants not yielding their fruit/resources.[/p][p]I investigated and double checked it is all working correctly and as expected. [/p][p]I think the issue is some confusion on how it works, so hopefully here is a better more clear description of the complexity and subtlety of it:[/p][p]My Mental Model[/p][p]It has to do with the 'realism' of the growth cycles of organic resources. My mental model revolves around 'Strawberries' which I just happen to be eating right now 😋 [/p][p]Where I live strawberries ripen late June.[/p][p]If I go to a strawberry plant in May, there are 0 strawberries.[/p][p]If I go to it late June, early July, they are strawberries.[/p][p]How long do strawberries last on the plant after they ripen? I don't really know, so I just made it in game that summer bearing plants have their fruit ruined by pests and rot in Winter. [/p][p]So if I go to a strawberry plant in Fall, the fruit will be there.[/p][p]I go in Winter, it's back to 0. And will continue to be 0 until late June.[/p][p]In Game[/p][p]This is how it works in game: If you ask someone about fireseed, which yields in summer, and go to the plant in Spring, there will be 0 fruit. It all go ruined back in Winter before you even knew about the plant existing.[/p][p]But if you wait until Summer, it will bear it's fireseed fruit.[/p][p]This is also why when you show up at some plants there is resources there, and for others there aren't. It depends on the growth cycle. And I made them somewhat different - snow moss blooms in Winter and is ruined in Spring. [/p][p]Most plants bloom in Spring and are ruined in Winter.[/p][p]Some plants, like Cocoa, bloom in Fall and are ruined in Winter.[/p][p][/p][p]If you still encounter problems, let me know![/p][p]Have a happy New Year everyone! I'm excited for 2026![/p]

How to Make Your Own Random Events - Documentation Page

[p]As a final post this year, here is the documentation page on how to use the Events system to create your own Events (User Generated Content). [/p][p]https://www.archmagerises.com/news/2025/12/29/how-to-write-random-events-ugc[/p][p][/p][p]Thank you for your interesting in the game this year, looking forward to a very bright and exciting 2026![/p][p][/p][p]Before you ask: I don't know how to get it to work with SteamWorkshop if you want to share events. It took me a long while to write all that documentation. It's accurate as of today![/p]