Looking for more active discussion? Join our Discord at https://discord.gg/x2s7fY6

So You Want to Make a System


So you want to make a system! Good for you - writing your own system can be incredibly rewarding and, perhaps far more importantly, you'll learn a lot of intracacies and nuance about combat and its mechanics that a lot of people don't.

As someone who recently completed a system of my own, I found it really difficult to find the resources I needed - no centralized list of information or important components. Plenty of people willing to help, sure, but I rarely knew what questions to ask or where to begin. Composition was a slow, tedious process of guess and check, spotty, half-finished work, and constant revision that could have been easily avoided.

That's why I decided to write up this little guide for future system-builders! Hopefully others will find this useful and informative.

First things first, you should be aware of your options. Creating a new curing system from scratch is an arduous thing. Aetolia has a lot of mechanics all working at once and juggling them all is a big challenge. I spent over a week cloistered into a single spot just writing and writing, and that's really not very fun. You should understand from the beginning what an investment in time and effort you're taking on, and have no delusions about its completion.

In the interim, you have a few tools available to you. There's the in-game firstaid mechanic, which is a reasonably effective system and will definitely get you by. If nothing else, you should use this initially just to get a feel for how things work - how quickly combats goes and how many moving parts there is. Firstaid has a few caveats, however. It won't handle many of the class-specific defenses, for example, and is rigid in method priority (it will always use herbs before tree tattoo). It also won't make use of skill-based extras you may have, like fitness.

Second, there's a free system available called Source. It has some of the same minor flaws firstaid does, but is easier to adapt, especially for someone ambitious enough to undertake a totally new system. It does, however, come without the gratification of creating something yourself. Consider getting Source for inspiration, or even just to extract trigger lines.

If you're reading this, though, you're probably ready to move past these initial tools and come up with your own work. So let's move on to that!

Before starting, there are a few key things you'll want to keep in mind as you consider design and structure, before actually creating anything at all. Those include, but may not be limited to:
- Aeon. This is an affliction that delays all actions taken by 1.5 seconds. It won't prevent the actions, but you'll need to do some research to handle this well, without duplicating or complicating things.
- Stupidity, and concussion. Both of these afflictions can cause actions to 'fumble' and be 'eaten', canceling their effects. You'll want to track what you attempt to send, so you can re-send it if this occurs.
- Concoctions vs reanimation. Aetolia features two parallel but distinct sets of curatives, one for living, and one for the undead. Consider making a toggle and associating the related curatives in a table somewhere, or simple making your system specifically for either type.
- Illusions. These may not be terribly common, but keep their existence in the back of your mind as you write. Small, structural checks can prevent a lot of tedium later on as you learn what to watch for. Use color triggers when possible, and multi-line captures when they make sense.
- Use toggles. Not just one, but many. Several things, such as waking/standing, clotting bleeding, and maintaining certain defenses, may be situational. Better to have more toggles than you use than fewer than you need.
- GMCP. It's this awesome thing that silently delivers a ton of information between your client and the game. If you're not familiar with GMCP, look it up! It's definitely worth reading up on.

With these things in mind, here's a largely comprehensive list of features you'll want to work on.
- Curing afflictions. Obviously, this is the primary objective. You'll probably want to account for:
o Eating herbs/organs.
o Smoking (and lighting) pipes or flicking and injecting tinctures.
o Applying salves/poultices.
o Sipping affliction-curing elixirs/serums (like immunity/calmatiive).
o Touching a tree tattoo.
o Using the FOCUS ability.
o Consider CONFIG AFFLICTION_VIEW ON to dramatically simplify tracking what you have and don't.
o Consider CONFIG SIMPLE_DIAG as well.
o AFFLICT LIST is an excellent resource, as is AFFLICT VIEW.
- Handling other conditions. These will include:
o Waking and standing if asleep or prone.
o Writhing from entanglements.
o Pulling out thorns.
o Handling limb damage - this really requires its own sub-section!
o Sipping health or mana elixirs.
o Eating moss as needed.
o Clotting to reduce bleeding (with attention to your mana level).
- Raising and maintaining defenses. A number of these can be gotten from non-specific sources, like concoctions (or organs, etc, if undead) or tattoos.
o The cloak and mindseye tattoos are fairly mandatory to maintain.
o The deafness and blindness defenses require and consume herb/organ balance to raise.
o The thirdeye, instawake, deathsight, and insomnia defenses are granted by herbs/organs that don't take herb balance.
o The hardened skin defense is gained by applying the sileris herb or bone.
o The insulation defense is gained by applying caloric salve/fumeae poultice.
o The venom, temperance, speed, and levitation defenses are gained from elixirs/poultices.
o You may also have other defenses from various skills, both general and class-specific.
- Optional additions - lots of other neat little things frequently included in curing systems.
o A GUI! Consider at least a window to capture chat and one to display the map.
o Some form of targeting and aliases for PvP, as much or little automated as you like.
o Affliction or limb damage tracking, or both - for your target, not yourself.
o Bashing, something that picks out NPC targets and uses your basic attacks on them.
o Echoes, colors, and alerts. Tons of things that are important to spot quickly. You might even consider replacing much of the text you see in combat with easier to read lines, perhaps even coded by color for quick skimming. Fights can move so fast.

There are tons of other things you might include in your dream system, like tracking or announcing important events to your web, handling some trade-related complexities like brewing concoctions, or anything else you can think of. This guide is only intended to compile all the essentials in one place for easy viewing, to get people started and aware of what questions to ask as they get to work.

Hopefully it's helpful!
DristinDraiman

Comments

  • Here's one super important thing to consider before you start writing a system.

    In theory it is possible to write a system that cures better than firstaid does. In practice, latency issues mean that firstaid is almost always going to perform better than a client-side system because it is completely unaffected by intermittent lag and/or high ping times.

    Practically speaking, this is true for everybody, but it is especially true if you've got dodgy internet or if you're not located in the continental US/Canada. Quite simply, firstaid can quite often heal an affliction before your client has even seen that it was delivered. That level of responsiveness means that it will outperform a client-side system the vast majority of the time.

    Your best bet for a healing system is going to be a client-side adjunct system that just dynamically sets the healing priorities for firstaid while letting the firstaid system do the actual healing.
  • KerocKeroc A small cupboardAdministrator, Immortal
    AB SURVIVAL QUEUEING can also work if you're from outside the US and want to make your own system from scratch, but not be hindered by ping times. It is -a lot- more code heavy though.
  • Queuing is still affected by ping times, because this kind of thing happens:
    1. Receive message for Affliction A.
    2. Send command to queue herb A
    3. "queue herb A" received by game.
    4. Receive message for Affliction B, which is higher priority than Affliction A
    5. Send queue herb B
    6. Recover herb balance, eat queued up herb A
    7. "queue herb B" received by game.
    This kind of situation is far from uncommon, and it is the kind of mistake that firstaid doesn't make.

    Latency will affect your ability to dynamically shift your firstaid priorities around, but firstaid itself will never run into a situation where it eats the wrong herb because you got afflicted immediately before regaining herb balance and didn't have the time to cancel a queued up cure. This kind of thing is why firstaid with a support system will almost always outperform a purely client-side system.
  • KerocKeroc A small cupboardAdministrator, Immortal
    Yeah that can happen. Namely it becomes a problem in team fights, but 1v1 the affliction rate is slow enough that the margin of error from latency shouldn't pose too many issues. Firstaid will cure perfectly in all situations, but queues can solve your ping issues somewhat if you're after more control and customization. Depends on what you like.
  • Just chase balance on herb eats/cure attempts/everything and gag it all the server loves it

    Arbre-Today at 7:27 PM

    You're a vindictive lil unicorn
    ---------------------------

    Lartus-Today at 7:16 PM

    oh wait, toz is famous

    Karhast-Today at 7:01 PM

    You're a singularity of fucking awfulness Toz
    ---------------------------
    Didi's voice resonates across the land, "Yay tox."
    ---------------------------

    Ictinus11/01/2021

    Block Toz
    ---------------------------

    limToday at 10:38 PM


    you disgust me
    ---------------------------
    (Web): Bryn says, "Toz is why we can't have nice things."

  • DraimanDraiman Dr. Drai
    There are minor inefficiencies still with first aid when it comes to handling curing methods. At the start of a fight or after a good round of turtling you can effectively control the afflictions cured by renew/tree/focus by handling them purely system side. An example is vs. Teradrim where I would much rather save my tree/renew for mending breaks to apply salves to bruises, but first aid vs. Swelter uses tree/renew where as my system will only ever focus it. An easy fix for first aid users, sure, but this is just an example where system control is better than first aid.

    In the end neither method will be 100% efficient. I do recommend first aid with system side assistance to most everyone though. The only reason I haven't switched myself is because I've already put in the work and it works fine until Keroc finds a way to break it <span>:wink:</span>
    "You ever been divided by zero?" Nia asks you with a squint.



  • Worth noting that firstaid doesn't seem to queue cures, unlike you can do manually. So your herb balance will end up 0.1s faster on the average if you queue the cure yourself. (I think firstaid is on a 0.2s curing tic or something) Might be a fair trade for never failing with the wrong cure, though, due to a passive cure or such having already cured it.
  • DraimanDraiman Dr. Drai
    Also, so we don't completely hijack his thread, this is a really great post for people interested in doing it on hardmode and making their own system. Kudos @Callister
    "You ever been divided by zero?" Nia asks you with a squint.



  • Thank you! I used firstaid for a few days myself but have very little ping and am a bit obsessive so of course I wanted to do my own. It was hard finding all the information, since it was scattered everywhere, so I just wanted to put it all in one spot for other people.
Sign In or Register to comment.