Sunday, November 30, 2014

Gameplay - Skill Variance

Before I get started with the title, let me post a picture showing the update so far.

The second prototype, focusing on the RPG elements.
Finished features:
Elemental spells system and skill template.
2 modes, cursor mode and FPS mode. (Left ctrl to toggle between the modes).
Targeting, HUD, bunch of windows with stats and icons that does things accordingly + various methods of interactivity.
All stats that is shown in the screen shot works. MAtk (magic attack) affects the strength of your spells, MDef decreases incoming spells, vit affects max hp, dex affects cast speed, agi affects movement speed.
Items work, consumables and equipments.
Damage mechanics affected by stats, element of the spell/the target, various application of damage method(projectile, apply to target, area, cursor or crosshair targetting, etc)
Etc

Remaining to do list:
NPC and npc dialogues
Quest, story progression elements
Figuring out saving game method
Melee system
Moving NPC and monster AI (wish me luck on this one...)

I'll release the 2nd prototype when everything is done and I've put a simple "complete game"(that consists of some battle, some picking up items, some NPC talking, some monster/NPC navigating and doing stuff, and a quest).
So, since I'm not gonna release it yet, and I happen to need an input about this certain problem I'm having now. Just writing down the problem instead of just thinking about it in your head often solves it, but if by the end of this writing I still can't make the decision, then I guess I'll work on something else and leave this here for a while.

The issue I'm having is about a certain feature:
The Adjustable Skills!(Name to be decided)

First of all, I don't like how most skills/spells in games have very bad progression. I'm not saying all games are like that, but it pains me to skill up my Bash to max skill level, just to find out, by lv 30, I get this other thing called Greater Bash.

Greater Bash
Description: This skill is just there to make you regret skilling up your bash.
Requirement: Lv 1 Bash.

Ragnarok Online 1(on which this game will be very influenced from) has simple skills, some can be skilled up to lv 10, some up to 5, etc. But they let you use lv 1 Fire Bolt even if you have maxed it.
This means you'll use lv 1 Fire Bolt to go around, lure some non-aggressive monsters with its fast cast speed, then after you've made 10 monsters chase you, you then cast a strong AoE(area of effect) skill to finish all of them.
This is basic mobbing method in that game.

The versatility of being able to use the Lv 1 version of the skill opens up many nice, situational skill use, and they've added that level of gameplay from a single skill.

Other example from the game:
Casting lv 1 Increase Agi gives less agi stat bonus, but still gives the same movement speed bonus.
Casting Improve Concentration gives less buff stat, but it has an additional effect of revealing invisible units around you. And it cost a lot less to cast.
Provoke has a +Atk and -Def effect on the target. This effect is of course less on lower level of the skill, but if all you're doing is to, well, provoke them, then Lv 1 of it is enough.
And so on.


Well, I'm implementing my version of it.

The Idea is to have a slider that you adjust(or leave it at the default 1, or max) before you drag the skill icon to the hotkey and use it.

Skills have a cast time. A basic Light spell called LightBeam have 1 second cast time. This means, after you've assigned LightBeam to the hotkey, assign it to your left click, you have to press it for 1 second before releasing it. If you release it before 1 second, the cast will fail, and you'll still lose the corresponding ether cost while casting it.

I want every adjusted version to be controlled by a slider. So it can be on the extreme right or left. I call the right version, 1, and left, 0. You can also have it at 0.5 or whatever else in between.
For any of these adjusted version, however, I'm limiting the number of parameters to be adjustable to 2 parameters. This way each skill will have its own typical use variety. If there's another variant of the adjustable, I can just make another skill for that. Definitely with another name that fits more with the adjustability.

Some examples:
LightningBolt 1: 1x damage, 1x ether cost.LightningBolt 0: 2x damage, 3x ether cost.

StormGust 1: 1x damage, 1x field area radius.
StormGust 0: 0.1x damage, 10x field area radius.

FireBall 1: 1x projectile size, 1x projectile splash radius(on hit).
FireBall 0: 0.1x projectile size, 5x projectile splash radius(on hit).

I use "1" as default and "0" as the "modified" because anything multiplied by (or to the power of) 1 is the number itself. Anything to the power of 0 is 1, and anything multiplied by 0 is 0, so "0" has more "changing the number" taste.
Of course, this is also not final. Maybe "0" can be "Bright" variant, "1" can be "Dark" variant, or Left-Right, and so on. But I reckon if you're gonna talk about something in between, you'll be saying "Oh, I killed this boss with Thunder.3(Thunder point 3), FlashMotion.8, and a bunch of SummonFireSpirit.0. Gets the job done." This sounds cooler, IMO.

The type of parameters that can be adjusted are the following(and I'm still open for suggestion for this):


  • Damage(of course), or main number value: Typically with etherCost. More ethercost mode, more damage multiplier.
    3x ethercost, 2x dmg.
    1x ethercost, 1x dmg.
  • Duration, if it's a buff/debuff. Or field duration(like StormGust, Whirlwind, Earthquake, etc).
  • Projectile size/lifetime.
  • Field/Projectile splash range radius
  • 2nd or 3rd effect value. This is like poison, movement speed slow, burn, stun, etc
  • Cast time
  • Ether cost (per 1 charge).


And finally, the problem I'm having.
Which is about the Cast time, and Ether cost.

The dex stat plays the role of determining the cast time of the skill before you start casting.
If LightBeam have 1 second cast time and you have 40 dex, you'll end up only having to hold casting for 0.6 seconds before reaching the minimum cast time. (This means, 100 dex is instant castable).

Every 20 dex also gives a point in CastSpeed, which multiplies the speed of your charge. At 100 dex, holding cast for a second will charge your spell by 5 charge. At 0 dex, 1 second of cast gives 1 charge.
Charge determines skill power, depending on the skill.Also, you can charge however long you want(might change this later). Basically, an over-charge.
Ex:
LightBeam does light element damage of (your Magic Atk * the charge).
FireBall does fire damage upon hit of (your Magic Atk * the charge). Projectile speed is (20 * the charge). Also applies burn damage of (1/5 of initial damage(can be further reduced)), for (the charge) seconds.

Anyway, right now I've intentionally have a very bad and pointless combination for LightBeam:
1: 0.2 ether cost, 1 second cast speed.
0: 1 ether cost, 0.3 cast speed.

So you can either do many small hits every 0.3 seconds that cost a bit more when you charge, or something that you need to cast for 1 second before releasing, that cost less ether when you charge.

Problem 1: LightBeam0 doesn't give me bonus damage or anything. This difference only matters if I want to shoot small hits, but these small hits are all at 0.3 charge each. I can charge this even further, to 1 second, and I'll shoot something as strong as the LightBeam1 variant, with less ether cost.
If I make the difference larger, maybe LightBeam1 has 5 second cast speed and LightBeam0 still 0.3, then it'll make a difference. But really, would you be shooting a 0.3 charged LightBeam all the time? Since it doesn't give any damage bonus or whatever other kind of effect, the only time I see this being used is if you're luring. A very sad fate for a skill design...

Problem 2: The other thing about adjusting cast speed is, what if you have 100 dex already? This means you'll get 5 charge per second, and you want to charge as long as you want and able to release any spell anytime you want. At this point(or earlier), you wouldn't ever want to use LightBeam0. You want to use LightBeam1 all the time because of its lesser ether cost per charge.
The thing is, I don't want any skill (and the variants of it) to completely be neglected just because you reach higher level. It's against my "everything have its use and moments" philosophy.

Problem 3: All in all, bad combinations. I want every (or most) skills to have this variance system, and not have any scenario where they're completely useless. Of course you wouldn't be using LightningBolt0 all the time when you want to also conserve ether if you're in some dungeon without much ether regen methods(check above again what's LightningBolt). You'll still use LightningBolt0 if you're in PvP, or fighting a boss with a party that has some way to replenish your ether, for instance. I'm confident in the usability of LightningBolt throughout the whole game.
Should I just remove the Cast Speed from the list of parameter you can adjust with the variance slider? Or can anyone make me a scenario where this will be useful throughout the game?

The only time when I think this can be nicely designed is if you're a non-dex stat character. Say, a pure support priest. A typical stat for a pure support priest would probably be, at lv 99, uhh, 90 int, 70-90 vit, some dex. (Or to make it simpler, you have 99 int and vit. There!)
I will then have to design a skill that has a long cast time, with a cast time variance. Maybe...

Barrier
 name = "Barrier";
desc = "Casts a barrier that breaks after blocking (charge) number of attacks, or after (charge*5) second." ;
aimType = AimType.Target;
castType = CastType.Button;
release = ReleaseType.Apply;
element = SpiritType.Ether;
Variance 1 = 5 second cast time, 1 ether cost
Variance 0 = 1 second cast time, 5 ether cost

...

Yeah, that's pretty good. I can imagine if it's a pretty well-planned scenario, the priest would cast Barrier1 to allies before starting the battle.
In another scenario, if there's a boss suddenly showing up and about to kill you/your ally(that is low on health), you can probably cast Barrier0, that costs way more ether, but you need that emergency 1 time damage block of destiny.


At this point, maybe I should rename the title to "Cast speed mechanics dilemma", because it seems only the cast speed is having the real issue here. But well, I need to explain this mechanics sooner or later, and maybe you readers can give me some skill ideas(and the variance if you'd like) after reading all this. It seems like all I have to do is to keep in mind the CastTime variance is not for skills that I know will definitely be used by high-dex class.

It'll probably be a lot easier to just put a link to the game here and let everyone test it out. But no, I haven't put any form of user-tutorial or anything in it. Not all of the features are intuitive/easy to understand, simply because there is no effort put in to graphics at all. Zero.
I'll go finish the rest of the features, make a 20 minute playtime single RPG game, make written tutorials and some effects, then I'll post it in.

If you read this until the end and all you get is a headache, I apologize, and I will personally make and give you a Paracetamol item, in game.

No comments:

Post a Comment