Spellcaster Studios

Make it happen…

RPG system – Part II

This weekend I’ve worked more on the RPG system of Grey.

The health and resource system I managed to complete last week.

In my RPG system, you can think of “resource” as fuel for abilities. Mages have “mana” as a resource, life-shapers “resolve”, warriors have “bravado”, and so forth.

Currently, I’ve only worked on the mana and resolve equations:

image

The total amount of resolve is lower than the total amount of mana (for a character of the same level) because resolve has faster regeneration (since the amount of time you can keep creatures up depend on having resolve, so this is drained the whole time, so you have to have a faster regeneration to compensate for it).

So now I already have a spell system working (for instant cast spells) with 3 spells: “Sacrifice Health” (recovers resolve by expending life), “Sacrifice Resolve” (recovers health by expending resolve) and “Summon Imp” (self explanatory). The first two aren’t probably going to make it to the game, since Grey can’t casts spells (it’s part of the story), but it’s good to test the systems at the moment. In the process, I got combat text working:

image

Hard to capture a screenshot of that, since it moves pretty fast (or else the screen would be filled with numbers), but in this case, I pressed “Sacrifice Life”, so it reports the amount of health loss and the amount of resolve gained.

I also almost got “Summon Imp” working… It is a “terrain cast” spell, which means that after I press the “Summon Imp” button, I have to select a place in the terrain to place the new unit:

image

This has some issues now, since it only allows you to target the underlying navigation mesh for the object, which causes the cursor to disappear when you’re outside of that; think I have to indicate that in some other way, but I can work on that later, since this is a generic system, not tied to a specific spell.

The only things missing from the “Summon Imp” spell are the summoning itself (and the effect that goes with it), which I should be able to do tonight (most of the code is already done in the spawn system) and to try to decide how much resolve the spell itself consumes (if any, that’s also an option, since there is already a cost associated with the creature, which is the “upkeep”).

This weekend I also managed to implement the cooldown system of the game. There’s two cooldowns: the global cooldown, which applies to all spells (so you can never cast more than one spell per global cooldown cicle – currently set at one second), and the spell cooldown, which is a part of a specific spell.

Both of these should be able to be modified by one of the derived attributes: haste rating. Haste rating indicates how fast your character can use abilities.

Here I’ve been having a conceptual problem:

Let’s imagine the player has 0 (zero) haste rating, which means that his spells cast at normal speed. Now he finds a magic ring that gives him “+10 haste rating”… First, I have to find a meaning for this in terms of actual speed improvement. If it is too low (cast speed improves by 0.1% or something like that), the player will no longer feel the reward of getting such a ring. But if it is high (like 10% speed increase), after 10 levels of gear improvements (because subsequent gear needs to give more to the player), the player will have a cast speed improvement of 1000% (which makes the game either unplayable, too easy or just silly!):

image

This example is just something simple… Assuming that the player will get progressive improvements to the haste rating (by getting better gear), although the base damage is linear, the haste makes it exponential, which is something to definitely be avoided (because the health of the enemies scales linearly as you can see in the blue line). Note that this graph is just illustrative of the problem.

A way to compensate for this is to keep the “haste rating” constant, but that removes a part of the accomplishment of finding better gear, etc.

The other way (which is probably the one we’re going to follow) is by adjusting the meaning of the haste rating: instead of a direct correlation between casting speed at haste rating, make it a function of the level. This means that (for example), a player that has 100 haste rating at level 5 has a 50% bonus on the cast speed, but the same 100 haste rating at level 10 only represents a bonus of 10% or something… That makes the player need to find better gear to keep his bonuses up:

image

This way, the damage becomes a linear progression again, even if the haste rating increases. The only problem with this approach is that it can lead to an actual loss of apparent power when the character levels up (if the bonus from the haste is bigger than the bonus from the base attributes):

image

This graph describes the evolution when the gear level is locked at level 5. At level 5, the character was a bit overpowered, but if he doesn’t grab any better gear after that, at level 7 it starts losing power and seems to be weaker.

Of course, this is just a theoretical consideration (done with very simple graphics that aren’t exactly an accurate modeling of the combat system), but one that has to be taken in account, specially because it affects no only haste rating, but also a lot of the other secondary stats (critical chance rating, hit rating, dodge rating, armor rating, etc).

Basically, we’ll have to balance out the perception of the player (he wants to get loot, and wants that loot to feel meaningful) while keeping the game hard enough for the player not to just faceroll everything in his wake…

Anyway, this is the fun part of the RPG design!

Comment