Pages

Saturday, April 6, 2019

Designing Ys, Vol. 5: Khonsclard

"Among the bosses of Ys I & II's Ys I, there's a very minor boss in Darm Tower called 'Khonsclard.' ('Rock' was a popular name among the staff.) 
In fact, if you ask a player of the PC version to name the bosses, they'll say 'the first boss,' 'centipede,' 'bat,' 'mantis,' and 'face,' but it's rare to hear 'rock.' Instead they'll say 'Dark Fact' for the sixth boss. 
Next to the surprisingly difficult mantis, faces, and maze of mirrors right after it, the strategy is surprisingly easy. Usually it's figured out right away, or with bad luck it might take two tries. It seems to leave a weak impression...or that's the kind of boss I thought it was, anyway. Truthfully in the PC Engine version of Ys I & II I felt it was a complete mistake." 
—Iwasaki Hiromasa, "Game Developer Failure Teacher in Ys I & II"
In a 2016 the hashtag #ゲーム開発しくじり先生 (#GameDevFailureTeacher) began trending on Twitter, with game developers sharing stories of design failures in games. The tag had branched out from #同人しくじり先生 (#DoujinFailureTeacher) where doujin content makers had shared their own stories, which itself was responding to the popularity of the TV program Shikujiri Sensei - Ore Mitai Naru Na!! ("Failure Teacher - Don't Be Like Me!!") a variety show where various professionals showcased their failings as an example for others to learn from. Ys I & II director and main programmer Iwasaki Hiromasa chimed in on his blog, Colorful Pieces of Game, to recount a story from his end—his efforts to rebalance the game's fifth boss, Khonsclard.
"When I was doing debugging and balancing, I was bothered by how weak Khonsclard was. 
It was always a free win. 
But when I looked at the source code, the HP, Attack, and Defense values were fine, so I thought it was just easy because I already knew the strategy. 
Why did I think the numbers were wrong? 
Since you can see the boss' HP in the first place, that couldn't be it. And the damage formula is so simple it wouldn't be easy to make a mistake. 
Except for Darm, the actual damage formula is as follows. (Darm uses a unique process with a special offensive and defensive table.)
  • Damage dealt = Adol's Attack Power - Enemy's Defense Power
  • Damage received = Enemy's Attack Power - Adol's Defense Power
(Defense Power is basically the sum of of equipment. After that ring modifiers and the rest are applied.) 
With this terribly simple formula, standard parameter balance is created by looking up the boss' Attack and Defense Power using Multiplan. The balance between "face" and "mantis," there's nothing off about the numbers there. 
That's why even though I thought 'Doesn't it seem too easy?', since it wasn't a bug, and nobody's going to complain if it's weak, and there were a ton of other bosses and goons to balance...I naturally turned my attention to bugfixing, and reducing the ready-to-burst memory. With so much to do, I just said 'well, whatever' and let it be. 
I feel bad saying that, but I figured that because the strategy being easy wasn't a mistake, and it was such a forgettable boss, it wouldn't be a big deal even if it was a little weak. 
(Actually, the PC Engine version's balance got various complaints from PC version fans, but nobody ever said 'the rock is too weak.') 
So Khonsclard stayed a free win, and the master copy for the Japanese release was submitted."—Iwasaki Hiromasa, "Game Developer Failure Teacher in Ys I & II"
Of Ys I's seven bosses, Khonsclard stands out for its lack of presence. Its basic pattern is to float towards Adol and spew rocks in a radial pattern, with significant gaps between them for the player to weave through. It's the only boss in the first game where Iwasaki felt the need to adjust its actual stats in the transition from Japan to the United States, gaining 6 points of Defense to increase the number of hits the player needs to destroy it.
"And then it was 1990. 
I returned to Hudson in Hokkaido to begin work on the international version, but first I decided on three things.
  • No rewriting the title. Just use all of it as-is. It's already in English, after all.
  • Rewrite all of the confusing parts of the scenario. Since the original isn't sacred, it could be thoroughly revised.
  • Balance it for American tastes—punchy and hard.
It became crucial to discover any mistakes and to rebalance the product. 
We decided to adjust the overall difficulty level for an American audience, adjusting the experience points so that the game would not be as easy as the Japanese version. At the same time, I decided to double-check that weakling Khonsclard. With all that in mind, I read through the source code and found an outrageous mistake. 
In addition to the boss' HP, Attack Power, and Defense Power, they actually have one additional standard parameter. That would be the time between receiving one instance of damage and the next. 
At the same time a boss receives damage, a counter is set for its invulnerability, during the specified VSync. For example, if the counter is set to 30, it will be invincible for approximately 0.5 seconds, and conversely, if it is set to 3 the boss will be damage-able after 0.05 seconds. 
And of course there's no memory available, and no reason to have these kinds of numbers as some easy-to-understand table, so naturally the whole thing was set in a special boss program one at a time, but the variable I set was a huge mistake.
(It would be tempting to say that it's not serious, but it really is. The "IDA address" orders are 3 bytes + the place where the data goes is 1 byte so the total is 4 bytes, but the IDA # variable is 2 bytes. It was incredibly important that we reduce the size by 2 bytes...otherwise there wouldn't be enough memory.) 
Although I don't remember the exact numbers well, I think the standard value was 30 (so, once every 0.5 seconds) while I faintly recall this one being 3. 
The rate of damage received was 10 times normal, so it died it extremely quickly."
—Iwasaki Hiromasa, "Game Developer Failure Teacher in Ys I & II"
The solution to Khonsclard's fight is to run towards its rocks rather than away from them; to chase its clockwise motion and bump along the sides of the boss' shell to damage it, thus staying right behind the boss' line of fire rather than in front of it. Of course that level of precision is extremely difficult with four-directional movement, so the player is likely to take damage while executing this strategy, but even when slightly below the intended the level their output exceeds Khonsclard's. In theory, the boss is meant to encourage the player to chase the backs of attacks rather than run from their fronts, which plays into the boss that follows. But in practice, Khonsclard is kind of a mess.

Khonsclard is made up of a scarlet core and a body of rocks levitating around it. Ordinarily, a player would conclude that a boss made up of a core surrounded by debris would have the core as their weak point. There's a good deal of precedent for this: the enemy ship in Star Castle, the Big Core in Gradius, and Mother Brain of Metroid. With Khonsclard, the solution is completely counterintuitive—the debris is the vulnerable part and the core deals damage, with the optimal strategy being to run multiple complete squares around its body. It's a perhaps-unfortunate reality that games can't just be internally consistent, they have to exist in relation to the world around them, and this is where Ys fails to take into account everything else that's out there. It's not exactly surprising that the battle is so forgettable when it plays out like this and ends in seconds.

Nonetheless, it could be worse. Khonsclard was just forgettable; what follows after is actively malicious.

No comments:

Post a Comment