yujiri.xyz

Games

Curse of Onyx

Reflections on Curse of Onyx

written 2025-08-17

Curse of Onyx's main goal was to prove that JRPG-style combat (turn based with no positioning) could be made interesting, and at that it was a resounding success. It was also the first game where I did all the visual art myself, which is not good for the game's visual appeal but makes it an important landmark for me. I actually started learning to draw specifially for this project.

Combat system

First, I wanted to use a dynamic that was in Lost Odyssey (a game that inspired me) but not used to its potential: resource management across battles. In that game, healing costs mana, and mana doesn't restore between fights, so you don't just have to win fights, you have to win them efficiently. Except that game had consumables that restore mana, and its economy was balanced like most other RPGs, meaning: you get practically infinite amounts of gold from all the monsters you kill, so you can buy practically infinite amounts of mana herbs.

I knew my solution immediately: no consumables, no money system. I don't like them anyway. I'll make you get through a dungeon on one mana meter.

My second big idea was the focus system. Each character has a focus meter as well as a health meter, you can spend focus to block attacks, and focus *does* restore inbetween fights. This rewards you for spreading out damage across your characters, and greatly increases the range of quality of outcomes you can get from a fight.

As for spreading out damage across your characters, I give you ways to do that by making every enemy's targeting algorithm deterministic, explained in its tooltip, and manipulable. For example, Golems always attack whoever has the highest strength, so if your strongest character is getting beat up, you can protect them by casting a strength buff on someone *else*.

The focus system also creates decisions because some enemies do more damage to health if they hit while others do more damage to focus if they're blocked, which means sometimes it's worth letting yourself be hit to conserve focus to block a stronger enemy.

A fantasy trope I wanted to avoid was the warrior/mage division. If magic is the greatest novelty of the setting, why do only some characters use it? And why does it just happen to be equally strong as weapons? This led me to a system where each character uses both, and can take 1 weapon action *and* cast 1 spell per turn. I still kind of have the warrior/mage division since some characters are better at one or the other, but I like this system.

The last major feature I came up with was shield, which didn't work out the way I intended. The original vision was that shield was a protection that would only last 1 turn, and enemies would usually react by not attacking the shielded character, so it differed from healing in that you didn't actually avoid or cancel out damage, just delayed or retargeted it. In return, shield spells would be much cheaper than healing for the same amount of hp. But for shield to only last 1 turn, I'd have to keep track of when one was casted, and if there were multiple on one character, they'd have to be shown separately. This UI complication led me to try out shield lasting until end of battle, and I ended up sticking with that. The result is that I don't think shield is very interesting, it's almost always better than healing, it just requires foresight. If I make another similar game, temporary shields will be one of the big differences.

Weapon abilities

Because you're meant not to lean on magic when you can help it, I wanted to have many different weapon abilities. My first idea was to split the basic attack into Light Attack and Heavy Attack. Light would do more focus damage if blocked, but Heavy would do more health damage if not blocked. But this didn't create many interesting decisions because you always wanted to do Light if your target had enough focus to block it, and always wanted to do Heavy if your target didn't have enough focus to block it.

My next idea for a basic attack split, which I stuck with, was Cautious Attack and Reckless Attack. Reckless Attack does double damage, but makes you take double damage until the start of your next turn. I like this idea because on the surface it seems pointless - doubling both sides? How does that change anything? But this one does create interesting decisions, because the game isn't based on 1v1s, it's based on teams, where some characters can use one attack while other characters use the other. You normally have 4 characters, so using Reckless Attack doubles about 1/4th of your damage, and may cost nothing, or may double the entire enemy's damage, depending on who each enemy wants to attack. And even if it does double the entire enemy's damage, there are several reasons you might want it anyway, like if the character has plenty of focus left, or to take advantage of an enemy having a 2x incoming damage multiplier from its own Reckless Attack.

I also came up with 2 abilities that could add damage multipliers to enemies: Feint and Stagger. Feint does a small amount of damage, but if blocked, applies a 2x multiplier to the enemy. Stagger is the same thing but appplies if not blocked.

Originally, I wanted these multipliers to last a full turn like Reckless Attack's does, but for the same reason as shield, I didn't end up doing that. Instead, I gave each character 1 multiplier that resets at the start of their turn. This means Feint and Stagger's duration depends on the turn order: if you use them right before the target's turn, you don't have a chance to exploit them. They're most useful when used right *after* the target's turn. Unlike what I did with shield, I like this; it adds depth to deciding your party's turn order.

After a lot of playtesting, I realized Feint was way overpowered. The tactic of having one character use Feint and then another character use Reckless Attack was too dominant. I didn't feel Stagger was overpowered. Why was Feint stronger when they seem symmetric?

It was for 2 reasons, both ultimately because you can't partially block an attack:

So, I nerfed Feint to only apply a 1.5x multiplier. This was a *huge* nerf, but after playtesting it, I think it was awesome. Feint and Stagger now feel equally useful.

Upgrade system

I hate experience:

Stop doing experience

So I planned to make characters upgrade only from story progression. But when combined with a linear plot, this would mean you'd have exactly designer-chosen stats for each challenge, making it effectively a levels game rather than an RPG. I feared losing the appeal of RPG-ness, so I came up with an innovative experience system that doesn't have the problems of grinding.

Characters upgrade at a fixed rate *vertically* (1 stat upgrade or 1 new ability per level), but *which* upgrades they get depend on how you played the level, the type of combat experiences they had. For example, if one character spent a lot of time attacking shielded enemies, they make progress toward learning the Poison spell, which penetrates shield. If they spent a lot of time attacking individual enemies when there were several, they'll make progress toward learning Wide Slash, which hits all enemies.

The goal is that no matter how you play, you never get behind on upgrades, so you never have to (and can't) go back and grind. But the specific character builds you end up with depend on how you've played, giving you a sense of ownership over them.

Dungeon system

Dungeons are also turn-based and tile-based. I wanted to take some inspiration from the dynamics in Crystal Story where you can try to run past enemies. But I didn't end up using this much. Most dungeon enemies in Curse of Onyx just stand still until you fight them, and for the ones that do move, usually it's only used to create fights where some enemies enter after a certain number of turns.

I think it was too all-or-nothing to use dungeon mechanics the way I originally planned. In a room full of moving enemies, if you got caught by one, you often ended up fighting almost all of them in one giant battle.

I often wanted to design dungeons with choices like "fight any two of these parties of enemies", but there was no way to build that with the mechanics I had, except just making a separate path for every permutation.

I'm not exactly sure how I would do this differently if I made another game in the same format, but I definitly think it could be improved.

Proxied content from gemini://yujiri.xyz/games/curse-of-onyx/reflections.gmi

Gemini request details:

Original URL
gemini://yujiri.xyz/games/curse-of-onyx/reflections.gmi
Status code
Success
Meta
text/gemini; lang=en
Proxied by
kineto

Be advised that no attempt was made to verify the remote SSL certificate.

What is Gemini?