Sunday, bloody fucking Sunday. Waiting the whole day for work on Monday to start so you can’t really enjoy everything. Saturdays are better; though, after enough time passes, you get anxiety about Sunday’s anxiety, so increasingly I prefer Fridays to Saturdays. And then, of course, eventually, you get anxiety about Saturday’s anxiety about Sunday’s anxiety, and Thursday becomes the favourite day of choice…

Today I finally implemented a levelling and stat system to my game. It functions in a very similar way to cyberpunkdreams and Fallen London: you draw a challenge card and are given a percentage chance of success or failure if you attempt the challenge. Each stat, of which there are currently 11 (which I might streamline later), levels independently of one another; however, theoretically, I could challenge one stat, and also give XP rewards for another, though I’m not sure when I’d ever do that (with one exception, of which more later).

The maths behind the curve are currently 100 x (1.06 ^ level). With a target of maybe 500 challenges throughout the game (which is possibly very, very ambitious) you could potentially get to level 80 in a single stat. But these numbers might change, as might the balance - I simply don’t have enough content to know whether it’s fair at the moment. My big problem with cyberpunkdreams and Fallen London was that they feel very grindy, especially for games that have an action system: if you only have twenty or fifty actions, and you fail half of those, the game begins to feel like a waste of time. In my system, if you really want to, you could grind levels and make the later game a cakewalk. I’m actually okay with this: if you put the effort and time in, you can make the game really easy. If you don’t bother to grind, the game will be more challenging (i.e. how it’s meant to be played).

Multi-stat challenges are possible: you could have a challenge which requires both sneak and fighting (not their actual names at the moment), and if you have different levels in each of these, the success chance will be an average. XP gains will be weighted by the requirement ratio - for example, if sneak difficulty is 60 and fighting 40, sneak gets 60% of the XP gains.

Success chances initially started with flat penalties, but it felt broken, so I changed it to an experience scaled system:

const SUCCESS_AT_LEVEL = 85 - Base % at your level const SUCCESS_PER_LEVEL = 12% change per level difference

Basically, if you’re level 80 in sneak, and the challenge difficulty is sneak 85, you’ll have a better chance at success than if you’re level 1 sneak and the challenge difficulty is 6, even though the actual difference between your level and the challenge difficulty is the same. To give some percent examples:

Level Difficulty Success %
1 5 37
5 5 85
20 15 100
40 45 73
50 70 37
70 65 100
80 85 82
85 85 85

At the moment, it feels fair, but as I said, I’ll know more when I test after I have enough content.

The other main change compared to Fallen London and cyberpunkdreams (as far as I can tell) is that failure gives you more XP than success does. I could be wrong, but I think a difficult challenge in those games gives you more XP if you succeed, or in Fallen London’s case, the same XP regardless of whether you succeed or fail. I never liked this system - first, it doesn’t correspond with reality; almost always, you learn more from failure than from success. Second, rewarding failure gives players the incentive to try riskier challenges, and (hopefully) have more fun and reap more rewards, rather than playing it safe, grinding, and getting bored.

The system I used to have simply gave flat level increases when you picked certain choices, and there was no challenge element to the game; frankly, it was fucking boring. Obviously I’m still at the beginning stages of creating this game, but nonetheless, it needed changing. Now, the flat level increase still exists in case I want to just reward a player with a full level jump. I control this manually within each card - I’m using .json files for my stories AKA storylets. And, I added a new system, which gives a flat XP gain. This is less ideal, because I won’t necessarily know (though I could roughly predict) the level a player is at when they attempt a certain challenge, but still, it felt easy to add and it’s better to have the option. I can always remove or just ignore it if I never end up using it in cards.

I have some special stats which are only used in certain locations and in storylets. I call these ‘tracking stats’, and they are, for example, ‘searching for someone’. These stats level in the same way, but with an XP buff - at the moment it’s x2, but to balance this, you can fail checks and gain no XP or lose XP. (They’re the only stats that work this way.) For these, you HAVE to succeed to increase the XP of the stat, and when it hits the required level - say, 10 - it resets to zero, you get an added effect (found XYZ!) and the storylet continues.

Let me clarify with an example. You’re searching for James. You need 10 searching_for_james for him to appear. You do challenges and you increase your searching_for_james stat only when you succeed. It hits 10, and you get an effect added to your character - found_james - after which searching_for_james resets to 0 (or 1, or whatever), but the card ‘You found James’ appears due to its previously having been hidden by NOT having the found_james effect. Hope that all makes sense. Also, to return to my point from earlier: with this system, I can have a challenge which checks sneak, and along with sneak XP, you get looking_for_james XP. This means I can have as many tracking stats as I want, and just check for them using other stats, which makes sense, especially when looking for someone. (E.g. maybe you use your charisma skill to ask around where James is. (Also, please don’t constantly go around asking where I am. Leave me alone.)) This was another huge problem I had with cyberpunkdreams - actually, wait, let me start a new paragraph:

Fallen London couldn’t be slicker: you only have four stats and a health bar. cyberpunkdreams did the opposite - you have something like fifty different stats for various things which require different ways of levelling them up. It means there’s, in practice, more content, but more does not equal better, and in cyberpunkdreams’ case, it really suffers from content and stat bloat. For example, in the late game, you can become a pimp. Pimping: probably need security, maybe charisma, intimidation, and business, right? Wrong: now, on top of all five of those stats, all of which already exist, you have a new ‘pimping’ skill. Oh, and a ‘pimping security’ skill. Oh, and a ‘girls’ happiness’ skill. Uhm - why? If I’m already an experienced businessman, and I’m already at a high intimdation and security level, why the fuck is there a NEW SKILL for pimping? This makes no sense to me. It’s why I was wary about even having 11 different stats, and why I’ll most likely cut it down to a nice round 10, or maybe even fewer: because certain stats can be used in contextually varied ways. At least, in my world. Not in cyberpunk Cincinnati.

Anyway. I tried a lot of different formulae out before I found the one that worked best (for now). A flat penalty for success felt far too punishing at higher levels, as did linear and exponential experience scaling. Initially also, one failure at a 65% challenge meant you levelled up three times - this felt like way too much in the early game. The XP curve was also sort of hilarious: Claude explained how in Dark Souls, you can theoretically hit level 350 or something like that, but realistically nobody gets over 140 or so because the XP requirements get astronomical. Initially, I had a 1.5xp multiplier (for how much more XP you need to get to the next level), and to hit level 100 you needed several billion XP, which is practically impossible. So I changed it 1.06 for now, and, as I keep repeating, I’ll test, test, test.

So it’s all working out, basically. I have stats and xp and levels, a stat-based challenge system, an inventory, your success chance listed on cards (though I’m considering taking this out, and using plain text to tell a player whether they’re likely to succeed or not; not sure abot this yet); basically, all the core systems for my game are now in place. My final job before I stop putting off actually writing the story is to do a rough design of the UI, and see what Claude manages to spit out based on my shit sketches.

Remember to wash your hands.