As promised – here's the ANARCHY 0.2.2 (Renaissance) beta.
The flagship addition is the first part of a new chapter – ExtrapolAtion. If you'd like to know what it's about, allow me to gently point you to the Preview from a couple of weeks ago.
There's also a new combat mechanic: Counter. It's born out of a larger rework – covered in this technical post. That announcement also mentioned an overhaul of Variations. There's a high chance we'll take a dedicated look at the what, how and why for that as well.
On the whole, Renaissance is feature-complete. What's left is to test ANARCHY itself and apply the proper polish. If there's time, I'll try to work in more flavour and prep the stage for ExtrapolAtion B.
I'll save that and the bigger picture for the actual release on June 28th. Until then, I wish you a spectacular week – with high hopes to talk to you again very soon. 🥰
I recently announced a triplet of monthly updates. Each of them packs a piece of this year's special event - ExtrapolAtion. I also mentioned that the first part – ExtrapolAtion A – was about 80%-90% done.
Just a week later, we're almost feature complete. This left a bit of room to sit down and finally polish some of ANARCHY's core systems. In this post, I'd like to present these optimizations and also provide a more in-depth technical overview.
From the get-go (i.e. InvAsion), I put a big effort into making the character's visual appearance customisable and scalable. Thanks to Unity's Sprite Libraries, we're able to run all the characters on a single animation tree. We're also using inheritance to derive individual character prefabs from a single base-combatant. This means that changes to colliders, path-finding and many other pieces of logic don't need to be adjusted one-by-one.
However, Variations introduced a bit of a problem. We're running most of the game through ORK, while handling Dialogue separately. Each Variation added a bit of redundancy, since I not only had to make two sets of portraits per Variation – but also create another prefab.
The complexity of this system could also cause desyncs here and there. Switching Variations effectively respawned the character's object. In some cases, the Dialogue System wouldn't recognize that new object as the same character and thus wasn't able to anchor the character's dialogue bubble. In other cases, the camera unhooked itself.
About two weeks ago, I finally came up with a solution. Instead of defining a set of portraits in both ORK and the Dialogue System, I rewrote parts of the latter so it would pull the corresponding portrait directly from ORK. In effect, we now only need one Dialogue Actor per character. That – in combination with a little script handling the different sets of sprites – means we can run all Variations of a character on a single object.
This means less headaches for me and more stability for the game overall. There is an even bigger upside, though! Changing a set of sprites to another is much less invasive than respawning the entire object. In effect, we can now equip Variations almost everywhere.
One result of that is you being able to alter Daphne's appearance all throughout ExcommunicAtion – even while she's in the middle of a dialogue line. The same goes, of course, for ParAdise. As a bonus, there'll be no more camera issues caused by respawning characters. This ties in nicely with another optimization.
Every time you loaded into a new scene, it could be that the camera hadn't adjusted itself to the characters. We diminished that problem by hard-coding about 0.5 seconds of delay before fading in the screen. Since a couple of days ago, the game now properly waits for the camera to be set up – i.e. no more artificial delay.
There's a couple of miscellaneous adjustments, but I'd like to tackle a major one right here. I mentioned ExtrapolAtion A being just about done. Without revealing too much, let's say that the 1926 encounter between Daphne and Ganymede in ANARCHY will be much more physical than AUTONOMY's. I promised it would combine the best of all worlds – and I intend to keep my word.
Generally spoken, ExcommunicAtion is a bit of a tutorial for ANARCHY's basic combat interactions. ExtrapolAtion aims to do something similar for advanced mechanics. One of them is the Knockback we introduced in ANARCHY 0.1.3 (Silhouette). Simply put, the ability tries to push a target one tile away from the user.
That leaves us with three points. An origin (user), a target and a destination. If the destination is an empty cell, the target is pushed back. If something's in the way, the target ends up back where it was – and we'll deal a hefty amount of damage to the target and whatever's occupying the destination. The ability itself is super rewarding, but its implementation has always been a bit undercooked.
You could say the same about ANARCHY's combat in general. Major parts of it were ad-hoc solutions, making the system increasingly hard to work with. To illustrate that point, let's take a look at what happened whenever a combatant uses an ability.
We start in our regular top-down view and gather the combatants involved in the corresponding 'Battle Action'. An 'Action Overlay' appears and so do a couple of HUD elements. The characters, as 'Side-View' sprites, are then placed on predefined spots. There's a couple of animations, sound and visual effects, as the action itself goes through its motions.
Since we're swapping forth between Top-Down and Side-View perspectives, I had to create a custom solution for that. One of the biggest challenges was picking up the right characters, storing their original positions, rotations and scale – all the while making sure it would work both for single- and self-targeted abilities and for cell- and target-based AOEs. Not to speak of special cases like Interception, Construct or Knockback.
At some point, the entire system got so convoluted – I was afraid to touch even a single line. Imagine if you'd like to have a Counterattack where you wanted one or several targets to retaliate. Ideally, we wouldn't close the Overlay between the 'Main Action' and the corresponding Counter. We'd want to open the Overlay, run the initial attack and follow it up with a Counter straight away.
Twelve months into development, I have a much better idea of what the 'Action Overlay' should and shouldn't do. Each Action has a 'User', a 'Target' and a varying amount of 'Collaterals' (for Cleaves / AOEs) at the very least. In addition, there's, 'Intervenors' and 'Assistors'. You've already seen an example of the former. When Icarus sacrifices himself, he's what we now call an 'Intervenor'.
The reason for putting Combatants in abstract boxes like that is to account for all possible scenarios. Going back to our Knockback example, we want to differentiate between entities that are knocked back and those that are in the way. If you think about Knockback projecting a line from the 'User' through the 'Target', we can automatically tell the 'Collateral' has to be on the same line.
In the Side-View, on the other hand, we always want the 'User' on the left and the 'Target' on the right. We thus know that the 'Collateral' has to be placed even further to the right. By creating boxes within boxes, we're accounting for that fact.
To place the combatants, we need more than just a direction – even for simple cases like this right here. We could place them on preset spots depending on what kind of box they're in. Incidentally, that's how we've been handling it for almost a year. It served us nicely, but two major problems became increasingly hard to ignore.
For one, we had to predefine spots for specific abilities. Interception, for example, places the 'User' further to the left. Knockback, as we saw, has a 'User', 'Target' and a 'Collateral' spot. Cleave – hitting the Target and one Combatant to the Target's left and right – thus uses a 'Target' and two 'Collateral' spots along the y-axis.
Now, the last example might have you asking: "Even if you put 'Target' and 'Collateral' in two boxes, how do you know which 'Collateral' is which?". In the scenario above, the 'Collateral' further to the north should also occupy the northernmost spot, right? So why don't we just take their Top-Down constellation and translate it to the side-view?
For every case that works, there's three that won't. In order to represent the original configuration, we have to check the relation between 'User' and 'Target' first. Once again, we can form a line from left to right (x) – and then a line from the bottom to the top (y). Noting the position of the User user(x, y) and target(x, y), we subtract the user's coordinates from those of the target and get a relative position r(x, y). Now we draw a line from (0, 0) to the x and y in r(x, y).
Say the 'User' is one step to the north of the 'Target'. That would be user(2, 2) and target(2, 3). Our relative position would be r(2-2, 3-2), i.e (0, 1). Now draw a line from (0, 0) to (0, 1), and compare it to the line defining the x-axis. The angle would be 90°. If the 'User' is straight to the left of the 'Target', that could be user(2, 2), target(3, 2) – resolving to r(3-2, 2-2) -> r(1, 0). That line would match the x-axis, which means their angle would be 0°.
Now try to rotate the picture in the middle by 180°, and the right one by 270°. We can apply this to every possible configuration to derive an angle by which to rotate the entire thing and end up at the 'User' being left of the 'Target'. Every 'Collateral' is thus placed in relation to its Top-Down position relative to the 'User'.
Simply put: We only need a single preset position as our 'anchor'. With that, we're able to translate Top-Down constellations in terms of their angle and order from left to right. As a bonus we also get their relative distance at the same time. This means that shooting a target from 5 cells away is now accurately represented as well.
The same logic applies to 'Interception'. That means charging point-blank is now automatically shown differently than charging from further away. In the case of 'Knockback', we not only got rid of the 'Collateral' and 'Target' preset spots, but can also scale it up for AOEs pushing Targets outwards from a 'Target', 'User' or 'Cell' – or pulling them in.
All in all, we've made the system more stable and scalable at the same time. Even for simple AOEs, we're now equipped to represent all Combatants in relation to how they're placed on the Top-Down Grid. It's making me so excited – I almost forgot to talk about the catalyst that let me to revisit the 'Action Overlay' in the first place.
I mentioned the Counter, and the way we've reworked the way Combatants are gathered depending on their role within an 'Action'. The good news is: If you keep reading, you'll see a rough but functional implementation of Counteract. It's a Status Effect that makes a 'Target' – 'Collateral' or not – strike back after being hit.
Evidently, we had to consider cases where an attack hits from outside the 'Target's' own range. After rewriting parts of ORK's source code, we're taking that into account as welll. In other words: If a combatant is being shot from two cells away, they need to have a weapon with at least the same range equipped in order to retaliate.
Like Knockback and its abstract class 'Manipulation', 'Counter' adds a whole new dimension to the Combat. It's clear that we'll have to tinker with it over the next couple of months. However, we've effectively transcended the 1-Action-per-Overlay limitation. This opens the door not only for User->Target chains, but could also be refactored into User->User or User->Intervenor sequences.
With our new Ability and a faster, better stronger Action system, we can put our eyes towards the horizon. First off, we'll wrap up the last bits of ExtrapolAtion A. That means putting in the final two or three elements and testing it all. There's a bit of overlap between that and some of the new / reworked combat systems – so the road toward ANARCHY 0.2.2 is already paved.
I'll be out of town for a short work-trip until Sunday. This leaves about a week to polish Renaissance for its beta release around the end of next week.
If you'd like to help make ANARCHY a better game – you're more than welcome to participate. One way or the other, please accept my heartfelt gratitude for reading this lengthy post. I'm learning tons of new things each day – and I consider myself privileged to have you there.
It's been two months since our last dance. The release of Café was followed by – well – just about sixty days of eerie silence. Today I'd like to break that streak. At the core of this post thus lie three major talking points: the state, future and ambition of ANARCHY.
Here's the story so far: ANARCHY was conceived in May 2023. Over the course of ten months, we managed to build the foundation of a tactical RPG. Specifically: we established the segments ExcommunicAtion, InvAsion and – most importantly – the first few hours of ParAdise.
I would have loved to keep that pace until August 2028 at least. On the other hand, a man's got to earn a living. I pushed ridiculous hours into ANARCHY, severely neglecting my PhD. This became undeniable in February – and public knowledge on March 28th. Going forth, ANARCHY couldn't be my top priority.
So where does that leave us? Has ANARCHY drawn its final breath?
Let's face it: I'm obsessed with TRACHI. Sixteen days ago, I dropped a little post on the AUTONOMY-andies, covering the mischief I've been up to through April and May. There's even a bit of ANARCHY in there! Which is the core of the message I'd like to make right here.
Incidentally, TRACHI turns five on August 28th. I've been going back and forth as to what we should do for this super-special day. I dabbled with Discord Bots powered by Large-Language models trained on TRACHI dialogue. I spun up RPGMaker, dreaming about AUTONOMY 1.6.
Eventually, I had to make a choice. It all came down to a single question: Which of the TRACHI projects do I like working on the most? I'll let you in on it – if you promise not to tell anyone! 😊
In 2022, we continued AUTONOMY's story with InvAsion. ANARCHY picked up the pieces and called it ExcommunicAtion. However, there's still a gap between that and the earliest point of ParAdise – i.e. ImmigrAtion. In other words: We need to build a bridge between Ganymede & Daphne singing in the rain to Lorna moving into 'totally-Aion-1913'.
I mentioned at several points that Atlas plays a key role in all of that. We've seen the odd screenshot of him confronting Ganymede & Daphne. However, it didn't sit right with me to throw you into a battle and call it a day. It worked for ExcommunicAtion because Daphne meeting Ganymede on August 28th happens every year.
To produce our favourite trio on the screen, we can't just pick any year. It's got to be a special one.
Think back to the first couple of AUTONOMY scenes. We remember Daphne visiting Ganymede for the third and final time in 1926. Following that, the game transports us to the point where most of the story takes place. That's three people and a city – Trachi 1923.
I'd love to go on about how nicely the numbers match up. On the other hand, I already feel like a walking excel-sheet. So let me just state the following: ExtrapolAtion is 2024's InvAsion/ExcommunicAtion.
The plan is to have three sets of scenes. The Sanatorium in 1926, an undisclosed location in Trachi 1923 and – last but not least – the place we know from ExcommunicAtion. I'll talk more about the latter two as we approach August.
For now, I'd like to focus on the first segment, since that's already 80-90% done.
The scene starts off with Daphne under our control. AUTONOMY threw you into a cutscene, including a conversation with the receptionist. This time, we can move around immediately. There's two reasons for that. First off, interactivity. Secondly, it's our first hint that something's off.
Every part of the tileset is where it used to be. However, the people play it a bit differently. There's small changes in the dialogue here and there. Above all, one of the scripts (let's call it 'D'), doesn't behave the way it (she) used to.
With freedom comes responsibility. In this case, I had to introduce a gate-keeping NPC. After all, we want you to go and have that chat with our friendly but short-sighted receptionist. It's a perfect example of how a cutscene can make it easier on the developer to keep the immersion intact.
Either way, we're on our way to the west-wing. There's the familiar conversation between two guards. One of them asks us to follow, which we do in our own time. We'll eventually arrive in front of a door. Two knocks and we step inside.
Knowing what we know, it's exciting to think about the words they'll say. Then again, which version of themselves are they, anyway? Seasoned RPG-enjoyers might take a look at the ingame or the quest menu. Either way, I believe this scene combines the best of all the previous iterations.
There's the innocence of AUTONOMY, the degeneracy of InvAsion and the absurdity of ANARCHY. It's two people dancing the same dance for the fourth time. Incidentally, it's also the first segment of ExtrapolAtion. A three-parter that'll find its conclusion on August 28th.
Since we're exactly three months away from that, let's revive a little tradition!
If all goes well, we'll ship the first part of ExtrapolAtion with ANARCHY 0.2.2 (Renaissance) next month. I'll try to have it wrapped up around Mid-June and push a beta build at the usual time. There will also be a couple of bugfixes and QoL things in there.
After that, we'll add another segment each month. The full package should hence be ready for TRACHI's 5th. Everything beyond that depends on how hard my day-job is pushing me. Which is the perfect segue into the last couple of points I'd like to make.
In case you're wondering what'll happen with ParAdise – you're not alone! One one hand, I've used my hiatus to conceptualise the rest of the act. This includes both the structure of new-world areas and the main-story fragments showing the turning points of Lorna's old-world life.
Even so, I couldn't get rid of a thought in the back of my head. 'Have I bitten off more than I can chew?' To be honest, I don't know. Maybe ANARCHY proper is one of those games that'll never be completely finished. Maybe it'll take us ten years instead of five.
The good news is: We'll have all the time in the world. The decision to relegate ANARCHY to just 'another thing' ultimately means less content more irregularly. On the other hand, I can let go of monetary ambitions. The first consequence of that is to scrap the fomo-baiting Variation events.
Until further notice, you'll be able to unlock everything whenever you want. This goes both for the current suff, and for the three Variations coming with ExtrapolAtion. I wouldn't expect too many following that – until the 'December' 'update to Stella's Character Generator comes out.
Next to the financial aspect, there's an even more important thing. Let's call it discoverability and player retention. The first part describes how many people start the game, whereas the latter denotes the ratio of players that stick with it.
My focus is undoubtedly on the second metric. A better game means it's more likely for someone to play it for more than just five minutes. At the moment, one out of four players end up spending more than 3 hours in ANARCHY. In AUTONOMY, that ratio was around 1 out of 11. Simply put: ANARCHY does a far better job at keeping people engaged so far.
In regards to discoverability: That's majorly down to Steam's algorithm, driven by reviews and wishlists. We've recently had a major push in players thanks to our fifth review – while being 100% positive across the board. Even though it's not the only reason why I can't let go of ANARCHY, I'd be lying if I said it didn't make me smile for days.
So before I try to do the same for you, let's take a moment to highlight two super-duper special individuals!
First, there's (-_-!). He's almost single-handedly filled an entire thread with bug reports. Please show him his gratitude for making sure that ANARCHY is in a playable state. Furthermore, a massive shoutout to my man and the heir-apparent, Ser! If I one day don't show up anymore, he'll have 20 fictional people in his care.
Last but not least, there's you! If you're reading this, you're a real champ! I know it's been up and down and back and forth. I'm terrible at maintaining things – especially relationships! Nevertheless, I've been writing devlogs for almost five years. Not that it shows, but at least I know it's worth it in the end.