a kinematics driven melee game

Drill

Drill

0.8.0

Combat

One Handed

One handed weapons held without a shield now has their own IK moveset, which at this state is janky but functional. A person wielding such a weapon would adopt a sort of fencing stance with attacks based on wrist movement. It is intended to be a faster but weaker than two handed weapons that can do good damage against unarmored opponents but effectively useless against armored opponents.

Weapons like sabers, rapiers and daggers fall under this category.

Inertia

Force applied needs to have an equal and opposite reaction, otherwise motion just looks stale and stiff, like those Looney Tunes cartoons where someone gets punched but doesn’t move at all while the puncher crumbles into pieces (unless of course you’re aiming for comedic effect which isn’t my intention).

Inertia adds some reactivity to melee combat by knocking the blade around as it is parried, and magnitude is determined by the mass of the attacking weapon compared to the defending one.

Weapon and body sway complements this mechanic by synchronizing animation state to a gentle rocking of the weapon and shoulders as you move your character.

This is a fully deterministic system that does not use physics.

Manual Input

Combat now requires timed inputs to convey real skill. Firstly, parrying is not just holding down the mouse to deflect all swing attacks, as this made combat obscenely boring and low effort. Instead, you hold down the right mouse button, followed by pressing the left mouse button to set the angle, doing so at the precise moment an attacker starts his swing. Beats are also no longer automatic but also require manual input to trigger by scrolling down on the mouse wheel.

Knowing that you blocked an attack because you timed it right is far more satisfying than just having it be done automatically, but the real benefit comes from the fact that it filters out all the filthy casuals and game journalists who thinks they can just pick up this game and master it over a single weekend.

NPC Combat Behavior

The combat behavior of NPCs are also more realistic. Like the player, NPCs can misread attacks and perform incorrect parries, making fights more believable. They are also capable of performing feints, beginning an attack then interrupting it to strike from a different angle, which could trick you into a false parry (for example, they go for a downward cut so you parry up, then suddenly cancel and go for a lateral cut).

Quest

Drill

You’ve been marching for days. Sand works its way into your caligae and dust covers your lorica segmentata as you walk across the desert whilst your legate rides behind upon his high horse, and every night you subsist on stale cornmeal as your commander feasts on roasted turkey in his heated tent.

But your legate knows when his men are reaching their breaking point, and so gave the order to set up camp upon a prairie. You assist in digging the ditches, pitching the tents and whatever duties you are ordered to do, keeping you up late past midnight, and only given rest by early morning.

You wake up around the afternoon still exhausted, and make your way to the cafeteria for a quick snack, maybe they’ll have bison stew or whatever fresh game those on foraging duties could hunt out in the prairie.

But crossing your path is the drill instructor. He is clearly trying to look busy by scanning the area finding someone to beat up under the guise of “training”. You try to turn the other way and look distracted. Unfortunately, you failed.

You are then ordered into a dusty sandpit set up with a pell and some wooden swords and drilled on melee exercises.

It is here that you start the first quest “Drill” (accessed in the Story mode at the main menu), which also serves as the tutorial to familiarize yourself with the melee mechanics of Blade Ballad.

Models

Human

Version 3 of the human body mesh has far more detail and more realistic anatomical features, with back muscles and nipples in the right place. Though it’s not an “ultrarealistic AAAA” production that makes up 90% of the renders on the ArtStation frontpage by premium boosted accounts, it still leans into realism while having some unrealistic features (this is actually a cope because I don’t know how to model ultra realistic characters) to make this model unique to Blade Ballad and one that is 100% not AI generated.

Low poly mesh + baked high poly details + skin texture

Apparel

The tunic, lorica segmentata and manica has been updated to fit the new human model, with improved texturing and UVs. You will notice clipping when wearing these in combination but I will implement a clothing modularization system in the next update.

Scripts

Dialogue

The dialogue system has received some much needed attention after being left on the backburner for half a year. The main change is the removal of the likely abandoned Inkle project in favor of Yarn Spinner which is far more integrated and better to work with. This dialogue system is separate from the quest system but works in tandem with the latter.

Yarn Spinner doesn’t compile everything into .json like Ink, which was very annoying when organizing chained dialogues. Everything is read from a Project which automatically links nearby Yarn scripts, and there are built in callbacks that you can utilize to extend your own. It is intended to work with the old Canvas system, but you can easily write a custom one that works with UI Toolkit which is what I use.

I use it to drive everything dialogue related, from (mostly AI generated) conversations, to subtitles and event triggered modals. Drill utilizes all these as a showcase to the versatility of Yarn Spinner.

Stats

The basic building block of any RPG (also referred to as Rocket Propelled Grenade) is a comprehensive stat system. My stat system is far from finished, but it has been given a basic footing with the Stat-System repository.

There is now a basic leveling system that scales your maximum health and stamina based on your level, but in the future there would be more role playing specific passive and dynamic stats like hunger, thirst, etc.

Equipment

The equipment slots have been expanded to 12 total slots, in this order:

  1. Headwear
  2. Facewear
  3. Shirt
  4. Cuirass
  5. Mantle
  6. Necklace
  7. Right Sleeve
  8. Left Sleeve
  9. Pants
  10. Right Greave
  11. Left Greave
  12. Footwear

Note that the inventory UI displays 6 equipment slots to keep things compact; you scroll up and down in the apparel slot bar to view the first and and remaining 6 slots.

DOTS

I moved as much repetitive math heavy logic into the DOTS Jobs system for a little more performance, but more-so to lay down the groundwork for future DOTS refactors.

For example, the NPC targeting system polls a grid cell and each NPC in it calculates their position and distance relative to all neighboring NPCs. This was quite the bottleneck when implemented with pure monobehaviour. But with DOTS, specifically the Jobs system, the relevant data is converted into primitive values and sent to a Jobs schedule which then calculates and returns all the targeting info from there.

It might not seem important now with just a handful of NPCs fighting in the arena but the performance gain is quite noticeable as the NPC count scales up.

This wraps up the main features of 0.8.0. Next release should see the rework of networked gameplay, and maybe a new arena map called “Cistern” which has been brewing in my imagination for a while now. Let’s see if I can tackle all these goals before my H-1B visa expires.

Leave a comment