a kinematics driven melee game

Flow

Flow

0.9.0

This release is an trimmed down interim version of the regular demo that I usually put out, so only a limited amount of new items being added, while many existing ones are temporarily cut so that they can receive a proper implementation in the next release. The Cistern map is blocked out, but still needs a lot of work. Mechanically however, a substantial amount has been developed, with ChatGPT doing a lot of the heavy lifting.

AI

I’m not going to say AI is worthless, nor will I say that AI is so brilliant that it has done everything based on a 2 sentence prompt while I collected welfare, smoked weed and shitpost.

Like everything else, AI is a tool, and tools perform best when its user knows its limits and not over-rely on it. There are genuinely people out there who told every AI chatbot they could buy to scan an entire repository then push out a single pull request changing 107 files replete with AI generated comments and thinks this is how a normal development process works, and these are “professional AI researchers” too. I’d rather be drafted and bombed by an FPV drone before I make this games codebase public, but I can assure you that telling ChatGPT (or more specifically Codex) to change more than a dozen files and giving it more than one specific scope per conversation and its going to derail and start adding nonsense that you’ll spend more time fixing than if you had wrote it manually yourself. It has no creative intent (meaning it can produce “creative” work but doesn’t understand the underlying meaning behind it), but it can follow instructions very well.

You’ll also know you’ve met an AI vibecoder tech bro when they preach AI as the second coming of God with programming hyperintelligence and omnipotence, but ironically enough, the root cause of this is a lack of competence. They themselves are incapable of real programming, and so believes that if AI is good enough then they can just prompt it to do everything without them having to put in any real effort and be on par with a real programmer. Their excessive use of AI indicates an over reliance of it, that or they’re one of the shareholders.

In my case, each prompt I send is usually the size of a small essay. It’s often not grammatically correct and full of typos but Codex is intelligent enough to understand the general premise without it being perfect so I put less focus on that. But goals must be clearly defined, with explicit requirements on what to implement, the name of the scripts, variables and methods, what it should reference, what other files it can change and what it cannot change, etc, all within a defined scope. I often tell it the exact reason of why this bug is present so it doesn’t really need to come up with any solutions. A prompt is not your personal fantasy written in words, it’s a technical document with restrictive and boring demands. Failure to do so and you’ll just waste time waiting for Codex to think for 20 minutes and then come up with something else entirely.

The expectation for AI must be lowered as well. It doesn’t matter if the model can do a pretty complex job and do it well, you should still treat it like it can’t because expecting too much out of it and you’ll just end up making slop like the tech bros I mentioned above. This is why I only used it for general refactors or very broad changes that I expect to have bugs, and they usually do even on the best models. But for detailed work like fine tuning blade collisions or setting camera weights, it literally cannot get it right even after I asked it to a dozen times.

This is why this is an interim release. I’m still hammering out all the small bugs Codex introduced, but overall most of its work came out pretty nicely for me to decide that its good enough for a demo release. Its also the same time my subscription ended which a sign for me to “pivot” (lmao) to manual coding, I can’t imagine using AI all day every day for developing an entire project without ever switching back to human work, like where’s the fun in that?

And the idea that you have to “disclaim” the use of AI is absolutely idiotic in my opinion. I can confidently say that 95.3% of all people with access to a computer has used AI in some shape or form. It’s basically the successor to using Google, just a bit more personalized, but both serve the same fundamental purpose: gathering information and presenting them to you. It’s so prevalent that asking someone if they used AI in their project is like asking if they used Stack Overflow or the internet, and expecting them to disclose that they searched up “how do I convert a quaternion to a vector3” in Claude instead of Google and not doing so suddenly invalidates their entire work. Just assume it’s AI (and you’ll most likely be right) and if it’s not good for you, but no one really cares because you’d have to be an idiot to not use AI in this time and age. It’s only when the result is so blatantly bad and artificial that AI disclosure might be necessary, but the low quality product is in itself the disclaimer.

Regardless, I will disclaim that not a single word in this blog was written by AI, and I doubt there’s an AI that can write in such a smug and arrogant tone anyway. Now onto the actual changes.

Combat

Melee

Melee weapons are no longer coupled to camera pitch and lean for defense, meaning that if someone strikes your legs you don’t have to physically look down in order to block it. You can’t just look elsewhere when fighting someone because how can you anticipate their next move if you can’t even see how they’re moving? Now you can focus entirely on the shoulders of your target and read attack direction while not having to look down every time they go for a leg sweep as your sword will automatically lower in relation to the attacker.

A few more defend poses are been integrated for handling certain parries at odd positions, one is the so called “ochs” guard which you can sometimes see NPCs perform in which they pull up their sword against their right shoulder and point the tip at you.

Melee controls have also been simplified, although simplified is probably not the best terminology. Parrying is done in combination with the right and left mouse: Hold down the right mouse to be in parry mode, which also locks you to your target if you use Manual target lock, and left click while in parry mode lets you set a parry angle. Same concept applies to beats, which is triggered by the forward mouse button. Without holding down the parry key, a left/forward button click is a swing or thrust attack.

An additional layer of input checks allow for a more accurate and responsive combat action for better combat flow. Take for example, recovering from being hit: Once you get hit, you transition to idle (in the previous version), and then go into a parry or an attack, but that short idle transition breaks flow, and this further extends to other melee states as well, such as recovering from an attack, because it always goes through the idle state before running the intended combat state. You can now immediately switch to a parry as soon as your attack chain ends, or immediately attack from a parry, and of course your enemy can as well. Now combat is fast and brutal, no awkwardly slow windup like Dark Souls or equally as slow attacks like in Mordhau, a parry is decided the split second the enemy starts their attack, which can be several strikes in a matter of seconds, as is real life.

(I might have to file for another copyright before some fraud self-proclaimed game “developer” steal my melee mechanic and use his infinite Kickstarter money to make a vibecoded slop title based on my idea.)

Range

Ranged weapons will not be available in this interim release, but the video below can highlight some basic mechanics related to it. As with all weapons in Blade Ballad, ranged weapons are physically represented as part of the actual character model and driven by IK (inverse kinematics), rather than as a separate component from a pair of floating hands like in first person shooters. A simple bow has draw, release, and aim animations that deforms the bow limbs and strings, though do keep in mind that arrows are not shot from the center of the screen, but based on the actual position of the bow.

The arrow has its own special set of behaviors when fired, such as what surfaces it can stick to and what it bounces off. In addition, melee weapons can take advantage of the existing beat mechanic for deflecting thrusts to swat arrows away, as demonstrated below. This is not realistic per se, but is still a skill based ability rather than an automated mechanism.

Arena

Arena matches have been redesigned to be faster and round based with a simple stat tracker for reviewing arena performance and experience distribution. Armor in the arena is purely visual so combat is more skill oriented, and watch mode allows you to set a dutch angle for a more cinematic spectate.

NPCs are also more aggressive and stamina is increased in capacity and recovery rate.

Models

Cistern

Items

Hannya Mask

Not much in this department, still working on clothing modularization but various currencies have been added for the story when it eventually gets a trade and barter system. I also would like to remind everyone that this game isn’t based only on Western culture. You got the tunics and the lorica segmentata and the Colosseum and you start in a Western oriented society, but you also have katanas and now the Hannya mask which is a new facewear item retopologized from this 3D model.

Currency

Likewise, currencies are item based coins rather than a number in your inventory, and split into 4 different denominations across 4 different cultures.

Western

For Western cultures, coins are named after its real life Roman counterpart in the following structure and value relative to the lowest value coin:

  • Eureus (Aureus, gold) = 400
  • Delorius (Denarius, silver) = 25
  • Sester (Sesterti, bronze) = 16
  • Aes (As, copper/bronze) = 1

A depiction of the Eureus (front & back) can be seen below, rendered and textured on a coin, and yes ChatGPT generated this texture, which was quite impressive because it was able to generate the base color and normal texture.

Middle

Middle cultures are based on ancient Greek/Achaemenid coins and structured as such:

  • Stetar (Stater, gold) = 1,440
  • Dharam (Drachma, silver) = 72
  • Obol (silver) = 12
  • Khalkol (Chalkous, bronze) = 1

Eastern

Eastern cultures have a much simpler denomination system in that each coin is valued in multiples of 5 and named based on their numerical value, following the structure of ancient Chinese coins (the ones with the square holes in them), referred to as “Qions”, based on the historical Qian.

  • 50 Qion
  • 20 Qion
  • 5 Qion
  • 1 Qion

Levant

The final culture would be based on Levant societies and follow the currency structure of the Shekel (renamed as Sheqel in-game)

UI

Inventory

The inventory interface has been reworked to a spatial grid system rather than single cell based. a single item can span multiple cells and are automatically sorted by its type and size.

Config

Keybinds can be changed to your preference, and certain combat settings can be modified to make the game harder for easier. One such option is the “Parry Tolerance setting” which increases or decreases the angular difference threshold required for an assisted parry. As a parry is direction based, it is set via the mouse motion. An easy parry tolerance effectively means mouse direction is irrelevant and the player will perform a perfect parry every time, and hard means the threshold is very low meaning the set mouse direction must be very close to the attacker’s attack vector for it to be a successful parry.

Leave a comment