• Add Review
  • Subscribe
  • Nominate
  • Submit Media
  • RSS

Progress Report

Several small systems

The gist of the response I got from the guy in charge of DynRPG is that he won't be looking into the bugs I reported anytime soon due to being busy with other projects. That's certainly understandable, nobody has a right to demand work be done on something that was provided for free in the first place. In the meantime, I've had to back-burner the monster map movement aspect of Forgotten Gates and work on other systems.

The first thing I got done was adding a "Look" skill to all heroes. Using Look on a monster causes most of their stats to be displayed in a series of message windows, including their susceptibility to the game's weapon and elemental types and status conditions. This turned out more difficult than anticipated because a limitation in my DynParams plugin I'd forgotten about: when it was used on a Message command, it could only overwrite the first line of the message, due to a peculiarity in how Message commands are handled internally. :/a This prompted me to look into the matter more seriously than I had back when I wrote the plugin, and I eventually was able to work out how to get around it. I ended up implementing the improved message-overwriting in my special FG_Battle plugin so that I could write the data directly from there instead of somehow putting it into RM2K3 scripting (about the only way to do that is the awkward method of renaming heroes that aren't actually used and then referencing those names). I did take the time to update DynParams itself as well, though.

Next I created a system for having defeated enemies drop resource-restoring power-ups (hearts and magic jars). I mentioned in a design blog post about mana restoration a while ago that I intended to give this a try. At first I tried to implement the drops as extra battle effects that happen immediately after the battle animation and damage is applied to the monster, but this proved ticklish because it was hard to determine whether an action was going to KO a monster, especially when multiple effects (i.e. separate damage from dual-wielded weapons) is involved. In the end I went for the much simpler method of recording which monsters are present before each action, then doing a special check after the action is entirely played out to see which monsters were defeated and subsequently deciding which power-up to drop. It's hard to say how effective the drops are at the intended goal of allowing a skilled player to stay more or less afloat against the indefinitely-long ravages of various dungeons, but it sure feels good to see them pop up and cause some restoration numbers on your heroes. :)

Finally, I reworked the system that sets up monster groups to have variations within a group instead of rigidly defining each monster in the group. I intend to go into more detail about that in a design post following this progress report post.

...And then, while I was working on putting together a new release of the demo, I discovered a bug in DynWardrobe. X) See, I noticed that I had two identical BattleCharSet image files, Shield.png and Shields.png, and I figured that was something to tighten up. So I went into my Animation2s in the editor and set all the references to Shield.png to Shields.png...but when I did that, the game started crashing with an error message about memory read access in DynWardrobe. Well that's mighty weird, right? o.O A bug caused by a one-character difference in the file names? Well, after much headscratching, I finally figured out that it wasn't the name per se, it was the fact that the names were now consistent after my fix. Turns out DynWardrobe had a subtle bug wherein if the file name used for the last animation in an Animation2 set is the same as for the first animation in the next Animation2 set used, it will skip loading the image and the crash occurs. So I fixed that, updated DynWardrobe, and still managed to release a new version of the Forgotten Gates demo a few days before the end of the month. Phew!

Announcement

New demo v0.2.1 available!

Just slightly under two months since the last demo release, and here's the next one. :) Big improvement over the previous stretch. X) Of course, the set of changes is much smaller, though I feel it's enough to warrant a new download. Here's the breakdown:

  • Added "Look" skill to all heroes, allowing the player to see details of monsters (stats, weaknesses, etc.).
  • Added Evasion stat for battlers.
  • Added system for dropping restorative power-ups on monster KO.
  • Created new monster group deciding system with random pools of monsters instead of rigidly-defined groups.
  • Various bugfixes.


The monster group deciding system is the main reason I decided to do this release. Just having some variety in the monsters encountered in each group goes a long way toward making things interesting.

Game Design

Character spotlight: Navarre



Navarre is another legacy character who won't be in the story (at least as a main protagonist) and may not show up in the final game period. He's a fairy who decided to become a knight, and we're not talking a knight who handles typical fairy-sized threats like vicious rodents and amphibians -- no, he's intent on fighting moblins and lizalfos with the rest of the heroes of Hyrule. How can he accomplish this? By casting a magic spell called Helping Hand which gives him temporary telekinetic control over a human-sized weapon. He became a squire for Lalaith, the Zora knight I showcased a few months ago, and she carries a longsword around for him in between battles.

In Forgotten Gates, despite Navarre's determination to be a knight, he's really of more use to the party for his magic. In keeping with the above description, he has to cast Helping Hand in order to use his weapon for a few turns, and even then he's far from the strongest attacker. Being a fairy, Navarre naturally has plenty of healing magic ability, although his most powerful spell, which does a full restore on the whole party, comes at the price of putting him in KO status. His element is Light, making him strong against Water and Shadow, but weak against Forest and Spirit.

Navarre's special ability is Rejuvenate, which restores half of Navarre's maximum MP. If I do include Navarre in the game, I'll probably have to rethink this. e.ea A healing-centric character who can draw on unlimited MP? That's practically a win button in any situation with a reasonable expectation of surviving a few rounds. It might work okay if Navarre himself is extremely vulnerable, say by having so little HP that even low-level mooks can take him out with a couple hits -- which would make sense for such a tiny being. He could also have a very high evasion rate to give him a little survivability, turning him into a valuable but unreliable heal source. Another possibility would be to give Navarre very little maximum MP, which would again sort of make sense -- even as an innately magical being, he's casting effects on a huge scale compared to himself, so it would probably be pretty draining for him. He'd have to use Rejuvenate a lot more often to keep up that way. However you slice it, this would be a very gimmicky fighter with the potential to throw off the game balance.

Progress Report

Reimplementing monster map event movement

This month my primary focus has been on fixing some issues with monster map event movement, particularly the rather complicated case of deku scrubs and their ability to spit nuts at the player. If the nut hits the player, it starts a combat with a random hero immediately being suffering a standard attack from the deku scrub. However, after the combat ends, the sound of the deku nut crumbling was being played, which didn't make sense in context. I was able to fix that by adding in an extra movement statement overriding the one which the nut was in when it hit the player.

Then I discovered a problem between the nut behavior and the map system. I'd had the map system disabled because it wasn't really ready for players to see it, but when I turned it back on to work on finishing it, I found out that going to the map would interrupt a deku nut's flight, leaving it floating in the air when the player returned. I fixed that by having the nut track its own position and detect whether it's been stopped by outside forces; if it hasn't, it resumes flying, even if it has already reached the end of the number of spaces it was initially told to fly.

Past all that, I ran into one other persistent bug I couldn't figure out: if two deku scrubs spat nuts in a close time frame, occasionally one of those nuts would fail to crumble on hitting something and would just sit there. I eventually noticed this only seemed to happen for the first of the possible six monster map events, and I suspect it has something to do with the wrong variable getting changed at times, but still, I don't know exactly what caused it. :|a

So I decided to take a somewhat drastic step: I reimplemented the monster map event movement system in DynRPG. I'd been pondering doing this anyway, because the system as it was showed noticeable lag when there was a lot going on at once. The risk here is that the DynRPG function which simulates the Move Event RT2K3 script command is experimental, so I didn't know if it would work, or if I'll discover some problem with it later down the road when I've invested a lot of work into it. c.c And indeed, I've run into a couple of apparent bugs, which I've reported to those who can modify DynRPG. Here's hoping they'll be fixed, working around them would get verrrrry tricky. c.c

A couple of tips for other coders who might try to map event movement in DynRPG:

  • Use separate string variables for holding the movement data of each map event you want to move this way. I ran into stream read errors and events getting data intended for other events when I used a single string.
  • When constructing the data string, do a += for each step, much like shown in the move function example. I tried doing it as one big expression and wound up with garbage data intermingled in it.

Game Design

Gameplay balancing

This design post is going to be more of general musings than a description of some aspect of Forgotten Gates itself, although it definitely is related to work I've been doing in the game project. One of the things I undertook to do for the new release (yay again for that!) was to improve the statistical gameplay balance a bit. The main thing which tipped me off that things were a bit off was the fact that once Link reached level 2, he could shrug off a basic attack from a lizalfos with no damage at all. e.e; Now, Link does have a defense stat towards the higher end (the highest period out of the heroes currently available in the game demo), and the fact that he uses a shield gives him a bigger multiplier for that stat than most, but still, being all but invulnerable to a mid-tier baddie is a definite warning sign.

So, obviously this needed to change...but how, exactly? I could decrease Link's defense of course, but I should probably decrease everybody's defense too then, though perhaps not directly proportionately. I could increase monsters' attack power, which would have a significant impact on the survivability of the game...although frankly, the way things were, the heroes were barely losing any health to anything but the strongest monsters, so that would probably be a good thing. And even once I decided which variables to tweak, there remained the question of how much to alter them by. I spent quite a bit of time on these questions, mostly just paralyzed by mulling over the options and reluctance to lose track of what the numbers were before. e.e;

In the end, I ended up significantly increasing the attack power of all weapons, for both heroes and monsters. After that, I also gave the HP of all monsters a pretty big boost, so that the weakest heroes can't just wipe them out with a single hit at level 1 (although the very weakest monsters kinda are still in that range). I think the gameplay does feel better now than it does before; in general, it takes less time to chew through enemies, but at the same time, fighting enemies does tend to knock off a meaningful amount of health from the party. I wouldn't say I've really reached a good balance yet though, let alone professional-quality. And that worries me a bit, because I don't see a clear road to achieving it.

There are some basic principles to gameplay balancing, and doubtless you'd be really in the soup if you ignored them -- things like comparing the most extreme possible cases and making sure they still provide a satisfying experience, asking yourself how many hits it should take for a typical hero to take out a particular monster and vice-versa, etc. Even if you can firmly decide these goalposts, however, there are a lot of different variables you could tweak to try and make the game line up with them. It gets even more complicated when you factor in things that don't conceptualize neatly as pure numbers, like the effect had on combat by various status conditions. I imagine professional game developers have worked out some techniques and formulas for dealing with the nitty-gritty, but I haven't really run across much advice on such. Part of the reason for this could be that different games require different approaches, so you mostly hear about the stuff that applies broadly -- the aforementioned basic principles.

So how am I going to handle this? Mostly, I suppose I'll just resolve not to worry too much about getting the balance really good. As a (mostly) one-man-band on this project, it's virtually inevitable that there will be aspects that don't play to my strengths. I've already accepted that the art and animations will be simple and flat, and the music and sounds will be the RTP plus whatever similar stuff I can scrounge. Why should I expect that the gameplay balance will be finely tuned enough to win awards? That's not to say I won't put an honest effort toward ensuring it's fun, especially since I'd like to think design is one of my stronger points. I just have to hold myself to eventually saying "Good enough for a fangame that's already taken way more of my free time than I probably should've given it." X)

Of course, if you have any tips, articles to point to, etc. regarding the more advanced details of balancing an RPG, I'd be pleased to hear about them.

Progress Report

Ability changes and balancing

In case you missed the announcement post just before this progress report post, I've released a new version of the Forgotten Gates demo. :) I'd actually been hoping to do so last month, but I didn't manage to get the game into a releasable form before the end of the month, so I decided to put it off for another full month. It's just as well, I came pretty close to the end of this month as well before I was satisfied there were no hugely obvious glitches. X) Of course, I did also fit in a bunch of improvements I hadn't been planning to include in the release before. Here's this month's breakdown:

  • Replaced Link's Pot Smash skill with Spin Slash (basically the level 1 version of his old Spin Slash special ability, but as a regular skill which costs MP).
  • Added skill Goo to Bit and Bot.
  • Made balance changes, mainly increasing physical attack power of all weapons and increasing enemy health.
  • Started using DynDatabaseOverride to control various stats (hero and monster stats, skill MP costs, etc.).
  • Various bug-fixes.

Announcement

New demo v0.2 available!

Woohoo! It's been over six years since the last version of Forgotten Gates was made available to the public, mainly because I put the project on hiatus for a while to work on something else. But at long last, there's an update! :D

So what's new? To be quite honest, most of the changes have been "under the hood" stuff which won't be very visible to you as the player. X) I've been working on reimplementing the hacky, script-heavy combat system of the game into a much more stream-lined system in which a special DynRPG plugin does the heavy lifting of calculating skill effects, deciding enemy actions, and handling special-case scenarios, then feeds the results to RM2K3 to display as battle animations, damage, etc. Still, there are some tangible improvements as well:

  • Changed target-choosing system to use RPG Maker 2003's built-in system instead of the clunky choose-a-number system we had before (woohoo!).
  • Changed Aubrey's Prayer ability to have a "faith" level which decreases the effect of the party's health on the Prayer result.
  • Changed Link's Spin Slash ability to a regular skill replacing Pot Smash and added Tool ability in its place.
  • Added skill Goo to Bit and Bot.
  • Changed Deku scrub behavior to no longer have Hard Sell skill and instead have Hide and Popup.
  • Made balance changes, mainly increasing physical attack power of all weapons and increasing enemy health.


Hopefully I'll be able to release updates a bit more frequently from now on, as much of the mechanical groundwork has been laid. Look forward to more heroes, more monsters, different dungeon types and themes, and eventually even a bit of story. ;)

Game Design

Character spotlight: Impa



Impa is Princess Zelda's former nursemaid as well as one of the few known remaining members of the ninja-esque clan known as the Sheikah (in canon, she's the only known one in her time period, although of course we couldn't resist having a few characters from a cool clan like that on Triforce MUCK/Zelda RPG). She's also the Sage of Shadow, which seems to have almost as much to do with keeping shadowy forces in check as it does being able to use shadows. Impa's steely gaze is always on the lookout for threats against Hyrule, especially those targeting the Princess she protects.

In Forgotten Gates, Impa is slightly toward the physical end as the Sages go, emphasizing speed and physical attack power -- although like all the Sages, she has impressive command over magic in her appointed element, Shadow. Despite the fact that Impa canonically wears a short sword on her back, I decided to make her primary weapon senbon, the double-tipped throwing needles used by Sheik in the Super Smash Bros. series. This allowed me to cover each of the game's weapon damage types with a different Sage (Missile in Impa's case), and I can always give Impa a special skill that makes use of her sword.

Progress Report

Tool and Prayer abilities

This month, I decided to replace Link's Spin Slash ability with a Tool ability, as I mentioned I might in the character spotlight for Drakler. So far I've implemented two skills within that subset. The first is a classic Zelda item that's made appearances in nearly every game since A Link to the Past, the Hookshot. It functions as a lightly-damaging Missile attack which inflicts Stun. The other is the Steel Bit, a drill mechanism that deals decent Pierce damage. I expect I'll turn Spin Slash into a regular skill that costs MP and can be done in a single turn.

After that, I reimplemented Aubrey's Prayer ability. In addition to handling the logic of it within my DynRPG plugin instead of RM2K3 scripting, I changed the way the ability handles increasing its own effectiveness with use. Quick recap, the general way it works is that the lower the party's total HP is, the more likely it is the Prayer ability will have an effect and the better that effect may be. Now, every time Prayer is used, Aubrey's 'Faith level' is increased slightly, up to a maximum of 50. The Faith level decreases how much the party's HP matters in the calculation, so that once it's all the way up to 50, using Prayer even when the party has full health gives a 50% chance of something good happening. The very best effects can still only be reached when the party is struggling, though.

Finally, I updated my DynDatabaseOverride plugin to be able to write values to RM2K3 switches and variables (even though those aren't technically part of the database) and incorporated that in the game. Now I can create quest setups with spreadsheet files instead of needing to write RM2K3 scripting to set the values.

Game Design

Character spotlight: Lalaith



Lalaith is another of the legacy characters who may or may not make it into the final game. She is a Zora knight, serving Zora's Domain and Hyrule in general. And...that's about all I can think to say about her, actually. X) I didn't have a great deal of interaction with her, I'm afraid.

In Forgotten Gates, Lalaith is primarily a physical fighter, with Attack being her highest stat, Defense next, Health and Agility about average, and Intelligence and Mana below average. Despite this, all of Lalaith's regular skills are water-themed magic spells, although they're more about buffs and debuffs than power. Oh, did we mention her element is Water? Yeah, big surprise there. She wields the double-handed swords and axes family of weapons, and her scaliness gives her a little natural resistance to cutting damage.

Lalaith's special ability is Edge Dance. Using a pair of curved blades attached to her forearms, she performs a variety of acrobatic attacks. The different attacks have different damage types (cutting, piercing, etc.), giving her adaptability to deal with different monsters. The catch? To successfully execute an Edge Dance attack, the player must memorize and repeat a sequence of randomly-generated movement inputs, shown by animations of Lalaith performing her dance. The stronger the attack, the longer the sequence.