• Register so you can experience the greatest RPG server ever! Use the keyword "Herocraft" when registering!Register! Enjoy the server @ play.hc.to !
  • Guest, Make sure to use our LAUNCHER! Read more here!

On class design.

Dewyn

Retired Staff
Joined
Oct 23, 2014
Likes
29
Location
dewyn#2005
#1
been OOTL for a few years now but a couple of old friends gave me the heads-up that this place was attempting a redo and, to my total lack of surprise, most of the classes are fundamentally unchanged and the majority of the skills are the same shit I remember from 2015.

I'm not going to go too much into detail about how most of the classes are just cobbled together from individual skills that are 6+ years old and tweaked slightly to match the "theme" of the class (e.g. giving Druid a renamed version of ChaoticVisions with absolutely zero other changes). I'll just explain how I design classes, since people always seem to like my designs.

Some groundwork for what you need to consider:
  • Complexity: How difficult a class is to comprehend and play at a basic level. Complexity ties into the skill floor of a class - how good do you need to be before you can use it at all?
  • Depth: How complex a class has the potential to be. Depth ties into the skill ceiling of a class - at what point does continuing to hone your skills become moot?
  • Interplay: The degree to which a class's abilities synergize or otherwise interact with one another. Some existing classes do this on a very basic level, e.g. entangle -> bolt. Not every ability necessarily needs high interplay, but as a general rule, I try to make sure every part of a class's kit fits into the rest of that kit in some way or another.
  • Counterplay: The degree to which abilities can be skillfully outplayed/played into by other players. A very basic example of counterplay is being able to interrupt the warmup of a powerful ability.
  • Role: What does the class do on a fundamental level? Is it a sturdy melee fighter? A fragile spellcaster with high damage output?
  • Specialization: How does the class fulfill its role in a unique way? What would draw a player to that particular class given other options within the role? Existing classes sort of manage to make this distinction already, but it's clumsy and there's overlap (e.g giving Beguiler a bunch of burst damage skills when its role seems like it should be CC-based). I'm not saying there can't be overlap at all, but I'm talking "these classes have some of the exact same skills" here. Don't do that.
  • Theme/Identity: What is the class based on? What does it revolve around? Pyromancer in particular seems to be having an identity crisis; it poses as some sort of caster-melee hybrid with a focus on fire, but for whatever reason it can shoot a wither skull and its other abilities may or may not actually tie into melee combat. And no, I don't count a fire tornado with the potential for some CC as "synergy".
  • Rewarding skillful play: A huge problem I've always had with HC was targeted abilities. Sometimes this is fine; basic healing abilities come to mind. Most of the time, it is not; there is no skill involved in mashing the button for Entangle until you get a free root. Inflicting harmful status effects, gaining beneficial ones, and dealing large amounts of damage should be the results of skill. On a very basic level, using skillshots/ground targets rather than targeted abilities accomplishes this. Replacing Entangle with a ground-target that leaves a rooting field (think a field of vines springing up, or some shit) would make players think carefully rather than spamming commands in an opponent's general direction.
  • Consistency: Don't give your classes different amounts of abilities! Being able to do large amounts of damage with melee weapons doesn't mean you should strip away a class's abilities, it just means you should design its abilities with that high melee damage in mind. I noticed that the classes on the current testing server have this issue; Samurai has next to nothing going for it, while the casters have quite a few abilities at their disposal. It's entirely possible and well within reason to keep your designs consistent across archetypes.
  • Other notes: Not every class needs to be a PvP or PvE jack of all trades. It's okay for one class to inherently counter another due to their abilities matching up poorly.
One of the first classes I designed back in 2017 was similar to Dragoon in terms of "warrior with lots of mobility". Applying these principles, I was able to stick to the general concept and keep its ability set simple while raising the skill ceiling and rewarding high-skill play in a way that didn't involve sticking to someone, mashing left mouse, and spamming every damaging ability you were able to.

A brief overview:
  • Passive: Sneaking midair would slow your fall.
  • Ability 1: Close-range slash attack that inflicted knockup.
  • Ability 2: Horizontal dash ability that would deal bonus damage and knockback to airborne targets.
  • Ability 3: Projectile deflect/melee parry that would disorient the first person to hit you. Not a particularly great ability.
  • Ability 4: Leap. Pretty much the same as Jump, but dealt a small amount of damage + knockup to targets you landed on, scaling with fall distance.
  • Ability 5: A skillshot that, if hit, would pull a target to your location after a small delay.
  • Ability 6 (Ult): Some anime shit where you would levitate everything around you and hit it with a dash attack midair.
This is very clearly not the pinnacle of class design; abilities 3 and 6 in particular were sort of just...there. The other abilities, however, worked together in a way I hadn't really been expecting - aside from the obvious 1 + 2 slash-and-dash combo, there was also the combo of 4 + 5 + the passive, whereby the player could leap into the air as they cast the skillshot pull and drag the target up into the air with them. At the apex of the jump, they could use the passive to ensure the target hit the ground first, then fall on top of them to take advantage of the damage and knockup from the landing. Between that and the physical control from its other abilities, a good player could effectively juggle and kite their opponent while still dealing melee damage.

As someone who played a fair amount of Dragoon, I can honestly say it was much more mechanically satisfying to play this new class - it felt as if it was focused on the concept of being in the air rather than having a jump alongside a fairly standard "warrior" style kit.

Here's a general outline of how I design classes, using a fairly generic concept as an example.
  1. Start with an identity and a role. This often begins with a thought along the lines of "what if we had a frost mage [henceforth x]?".
  2. Narrow that class's function down to separate it from other classes in its role. "x does large amounts of burst damage. What makes it different from y, which also does large amounts of burst damage?" This can be as simple as differing playstyles; if y involves a hit-and-run playstyle with burst damage on its abilities, then x can (for example) involve a playstyle that rewards staying in combat.
  3. Outline a very low-level list of concepts related to what that identity is capable of. "x is themed around being a frost mage, so it should be focused around slows and freeze effects that come from cold-related abilities. Off the top of my head: icicle projectile, flash freeze, ice block, avalanche, etc."
    1. Something I personally like to do is create classes that revolve around a mechanic enabled by a passive ability. In designing a pyromancer at one point, I decided that it should be able to inflict extremely high damage on crowds; in order to do this without making its abilities deal excessive base damage, I wrote a passive whereby its abilities dealt reduced damage to a single target, with each successive or additional target resulting in additional damage. This meant that the class could obliterate large quantities of adds with ease while keeping its single-target damage lower than other DPS classes to compensate.
    2. Writing that passive actually involved modifying the entire casting/targeting system in order to be able to "scope out" an ability's potential targets/effects and write metadata to individual ability casts, which brings me to this: don't be afraid to push the limits of what you think is possible in your designs! In my case, I was working with my own plugin (for those of you who know me, yes, I wrote another RPG plugin, albeit with 4 more years of experience under my belt than the last time), so I had the ability to just add functionality to the core as needed - but pretty much any design you can think of is possible, including separate balancing for PvE and PvP. You can even use custom models and "entities" if you're willing to do the necessary hackjobs, but it's a pain in the ass.
  4. Design an ability or two as an "anchor" for the class's kit. "x's staple ability will be an icicle projectile to ensure it has a consistent source of damage and slows in combat. This consistency lines up with the notion that the class should be rewarded for being able to stay in the fight rather than kite."
  5. Branch out from that ability based on identity, role and specialization. This is where creativity starts to really come into play. You don't necessarily need to constantly pull completely original concepts out of thin air, but you do need to be able to twist what you do come up with so that it falls in line with what you're designing. Keep the functionality basic for now.
    1. Repeat this until you've developed a set of abilities.
  6. Refine what you have. Create interplay. Our hypothetical frost mage is defensively oriented. Say it has a passive whereby ability damage it inflicts slows targets by 10%, stacking up to 40%. It has an icicle projectile. Off the top of my head, we'll also give it an ice block where it can regain some health at the cost of being immobile for a brief period, an "ice mirror" that can reflect projectiles (tip: don't use minecraft's projectiles, they're shit) if timed properly, a close-range cone of cold (which I totally just ripped from HOTS), maybe some frost armor (melee damage mitigation + chill melee attackers), and some kind of flash-freeze stalagmite. Is this particularly creative? No, I came up with it in the span of two minutes for this post. Does it work for this example? Yes.
    1. No ability should be so specialized as to only find use in certain scenarios - generalize or expand functionality. The "ice mirror" has a single, isolated function and is quite literally useless when facing off against opponents that don't use projectiles. What if we expanded its functionality and gave it a special effect when used during ice block? Maybe casting it during ice block causes you to exit the state and freeze all nearby targets with maximum slow stacks from your other abilities. There's a cost, of course; you use extra mana and now your reflect is on cooldown.
    2. Think about mechanical interplay. Since the cone attack will be fairly easy to hit, maybe it can be used as a setup tool? Hitting a target that isn't slowed by your abilities could apply two stacks instead of one, allowing for an easier follow-up with projectiles. This isn't strictly technical, but it's still effective.
    3. Ensure powerful abilities require skilled play to get the most from. Sure, you could make that ice spike ability hit like a truck, but that would turn it into a one-off that stands isolated from the rest of the kit. Reward setting up using the rest of the class's kit first. Give it a warmup time that makes a strong slow/freeze useful for ensuring you hit, increase damage against frozen targets, etc.
"Hey, why are you writing this?" you might ask. It's for the benefit of anyone interested in game development/design. HC was what got me into it in the first place, and I'm sure I'm far from the only person to come through here with an interest in game dev. That's pretty much it.
 

Kainzo

The Disposable Hero
Staff member
Founder
Adventure Team
Joined
Jan 7, 2011
Likes
7,565
Location
The 7th Circle of Heaven
#2
@Dewyn
So looking back 10 years ago, really outlines the path we took and the struggles and very real feats that we accomplished.

We created a framework of an RPG system that never existed before and did it by scratch. This took a lot of the focus and energy and we never really looked into the design aspect of things as hard as we could because features were flying out so quickly.

I like a lot of this, are you wanting to assist the team with implementation?
 
Last edited:

Dewyn

Retired Staff
Joined
Oct 23, 2014
Likes
29
Location
dewyn#2005
#4
@Dewyn
So looking back 10 years ago, really outlines the path we took and the struggles and very real feats that we accomplished.
Heroes was pretty revolutionary at its inception, especially considering Bukkit's API. Spigot can now easily handle things that ten years ago required a substantial amount of NMS knowledge just to hack together.

We created a framework of an RPG system that never existed before and did it by scratch. This took a lot of the focus and energy and we never really looked into the design aspect of things as hard as we could because features were flying out so quickly.
I can also see this being an issue; just wanting something to work is oftentimes more pressing than wanting to stop coding and ensure you have a solid design. It was an effort to sit down and draw up concrete design plans for the game I'm working on before sitting down to code - I just wanted to see some progress.

I like a lot of this, are you wanting to assist the team with implementation?
And herein lies the impasse. The part of me that enjoyed (and would still enjoy) playing on Herocraft back in 2014 wants to say yes. The part of me that has had IntelliJ open for four days is raising multiple concerns about workflow. The part of me that is a college senior looking to start working wants to be paid. Loudest of all is the part of me that just wants to figure out what people enjoyed about Herocraft during its heyday and devise a way to reimplement that in a modern context to appeal to a new playerbase (since - let's face it - pretty much everyone still around is an adult now, and most of us no longer have the time to play like we used to, myself included. it actually took me 3 days just to find the time to sit and write this out lmao).

I'm going to have to decline. To put it as bluntly as possible, every reboot past has more or less flopped (if they hadn't, there wouldn't be a need for more reboots). Unless there's a massive influx of new players and enough internal restructuring to make Murray Energy blush, I don't want to put in time and effort only for things to die a month later.
 

Kainzo

The Disposable Hero
Staff member
Founder
Adventure Team
Joined
Jan 7, 2011
Likes
7,565
Location
The 7th Circle of Heaven
#5
Heroes was pretty revolutionary at its inception, especially considering Bukkit's API. Spigot can now easily handle things that ten years ago required a substantial amount of NMS knowledge just to hack together.



I can also see this being an issue; just wanting something to work is oftentimes more pressing than wanting to stop coding and ensure you have a solid design. It was an effort to sit down and draw up concrete design plans for the game I'm working on before sitting down to code - I just wanted to see some progress.



And herein lies the impasse. The part of me that enjoyed (and would still enjoy) playing on Herocraft back in 2014 wants to say yes. The part of me that has had IntelliJ open for four days is raising multiple concerns about workflow. The part of me that is a college senior looking to start working wants to be paid. Loudest of all is the part of me that just wants to figure out what people enjoyed about Herocraft during its heyday and devise a way to reimplement that in a modern context to appeal to a new playerbase (since - let's face it - pretty much everyone still around is an adult now, and most of us no longer have the time to play like we used to, myself included. it actually took me 3 days just to find the time to sit and write this out lmao).

I'm going to have to decline. To put it as bluntly as possible, every reboot past has more or less flopped (if they hadn't, there wouldn't be a need for more reboots). Unless there's a massive influx of new players and enough internal restructuring to make Murray Energy blush, I don't want to put in time and effort only for things to die a month later.
Completely understand.

Though writing up class design wouldnt take too much time ;)

A lot of people have pretty high paying jobs after working/volunteering at Herocraft. Hell, even the job I have now is in part because of my time spent with this community. It's always been a passion project. Even if no one was playing it, I would still enjoy developing and designing things
 

Dewyn

Retired Staff
Joined
Oct 23, 2014
Likes
29
Location
dewyn#2005
#6
Completely understand.

Though writing up class design wouldnt take too much time ;)

A lot of people have pretty high paying jobs after working/volunteering at Herocraft. Hell, even the job I have now is in part because of my time spent with this community. It's always been a passion project. Even if no one was playing it, I would still enjoy developing and designing things
If we're talking just writeups and design, I'd be glad to do so. It's the coding part I'm not keen on ("implementation" is what caught my eye in your previous response).

I'm at a point in my life right now where the main "passion project" I'm working on is less of a true passion project than it is something I'm planning to sell or, at the very least, put on my resume. Trying to get started in CS is shit.
 

Kainzo

The Disposable Hero
Staff member
Founder
Adventure Team
Joined
Jan 7, 2011
Likes
7,565
Location
The 7th Circle of Heaven
#7
If we're talking just writeups and design, I'd be glad to do so. It's the coding part I'm not keen on ("implementation" is what caught my eye in your previous response).

I'm at a point in my life right now where the main "passion project" I'm working on is less of a true passion project than it is something I'm planning to sell or, at the very least, put on my resume. Trying to get started in CS is shit.
Work with HC and we can definitely have you add it to your resume as volunteer/free lance too... sometimes all devs need is experience to land that big job

There is a very real issue of not having a lot of people play on the remaster and so we wanna make sure we're giving it our best and also advertising
@NuclearCouch <<<<
 

Kainzo

The Disposable Hero
Staff member
Founder
Adventure Team
Joined
Jan 7, 2011
Likes
7,565
Location
The 7th Circle of Heaven
#8
If we're talking just writeups and design, I'd be glad to do so. It's the coding part I'm not keen on ("implementation" is what caught my eye in your previous response).

I'm at a point in my life right now where the main "passion project" I'm working on is less of a true passion project than it is something I'm planning to sell or, at the very least, put on my resume. Trying to get started in CS is shit.
Also I could see you writing up class design and then we would slowly work on it with the dev / people we have. Wouldnt worry much about the coding/implementation part, a lot of times all devs need is a good solid design doc
 
Top