Overworld Animation: Save It or Shave It?

So, I have kind of a pivotal question for the community. I’ve been spending some time mastering the manipulation of overworld animation movement, anticipating the need for added paths as we open up the game. However, after a DM convo with SmashManiac, I am thinking it would be more convenient (and faster for the player) if I stripped out overworld animation altogether in favor of menu-based system where you choose a valid destination and just warp there.

Trouble is, I’m conflicted because I am such a fan of the stylized overworld movement style, and while the rational part of me agrees that such an approach would be superior from the perspective of granting options to the player, the nostalgic/artistic side of me worries that such a move would be too great a blow to the charm of the game.

All things being equal, I would leave in the travel animations (though I would certainly speed them up a bit). However, given the previously discussed 37-path limit, insisting on keeping those animations will likely force other inconveniences, such as having to travel twice to get to a relatively nearby location. And of course not getting to go as fast as one might want.

I’m really on the fence on this one, and settling on a strategy is actually pretty critical with regards to how I progress with development. If anyone has a strong opinion on the matter, please share it in the comments: Would you rather have flexibility in world movement, even if it was at the expense of overworld animations? Or is that price too high, in your opinion?

Can We Make Seth Less Horrifying?

I’ll admit it — when I was a kid, I didn’t know what the HECK Seth’s face was supposed to be.  This picture I found on the Internet pretty much sums up my childhood experience:

Image result for illusion of gaia seth

So, this is such a petty thing, but do we have any objections to making Seth’s sprite less monstrous-looking?  Here’s my suggested version — with a few minor pixel edits, I think it looks like he actually has human eyes and glasses (instead of being a glowey-eyed demon spawn):

SethSprite.png

Here’s a screenshot of what it would look like in the context of the game:

SethScreenshot.png

Thoughts?

(Shoutouts as always to ManaFreak for his excellent IoG editor tool that allowed me to make and showcase the sprite edits.)

Saving NPCs

I just came to the realization that Will does something to save each of the important NPCs in the game: he rescues Kara from Ishtar’s painting; he rescues Erik from the slavers in Freejia; he rescues Lily from the Seaside Palace (sort of); he rescues Lance from the Great Wall; he rescues Neil from his parents in Euro (sort of); he saves Seth… well, sorry Seth.  But he turns into a sea monster, so that’s cool too?

Would be cool if we could use that in the randomizer somehow.  Like, if you rescue an NPC, it opens up overworld movement from that NPC’s home to where they were rescued.  Like this:

  • Rescuing Kara allows travel from Edward’s Castle to Angel Village
  • Rescuing Erik allows travel from South Cape to Freejia
  • Rescuing Neil allows travel from Neil’s Cottage to Euro
  • Rescuing Lily allows travel from Itory to Seaside Palace
  • Rescuing Lance allows travel from South Cape to the Great Wall
  • Again, sorry Seth.

Dumb idea?  Or is there potential there?

Overworld Movement

Let’s talk about overworld movement, baby.  Let’s talk about you and me. *ahem*

Back here, I included a rough drawing that showed my initial ideas for how to allow movement through the overworld.  Aw heck, I’ll just put it in again:

progression

So, here’s the thing:  The game has some limitations.  I would love, for instance, to be able to go back to the Diamond Coast from Freejia — you’ll notice on the drawing that it’s only one-way, which is how it is in the vanilla game.  And I can code it to do that, 100%, no problem.  Issue is, I’d have to delete another arrow elsewhere to make room for that.

Turns out, the game can only support 37 movement scripts.  These are blocks of code that describe the path taken by the player’s overworld sprite, and in high-level language it looks something like this: “Go north for X frames, then turn clockwise for Y frames, then go NE for Z frames, then turn counter-clockwise for Y frames, and you’re there.”

The game code only has room for 37 of those.  This is not enough to open up the game as much as I would like, so trade-offs have to be made.

I wanted to put down some of my thoughts on the matter.  Feedback is appreciated.  Here’s an overworld map for reference:

  1. I haven’t investigated this thoroughly, but just by eyeballing it, some paths look like they might end up being roughly the same overall length and direction.  Even finding one situation like that could open up as many as two new paths, and there are a few that at first glance look like they may be close enough for government work.  Check out an overworld map and compare the paths Freejia -> Neil’s Cottage to Natives’ Village -> Ankor Wat — worth looking into, at least.  Others worth testing might be Moon Tribe -> Inca vs. Neil’s -> Nazca; Edward’s -> Itory vs. Itory -> Moon Tribe; Nazca -> Diamond Mine vs. Watermia -> Great Wall; etc.  Outside the box thinking is encouraged here, even for paths that don’t exist in the vanilla game — for instance, we could draw a path from Babel -> Euro that looks to be pretty similar to Diamond Mine -> Sky Garden.
  2. Assuming, after considering this first point, we still want more possible paths in the game, we could consider creating “loops” rather than “hubs”.  What I mean by this, in illustration: Check out my drawing of the south-eastern continent.  Freejia acts as a sort of “hub” that can access all other points — meaning, if you want to go from say Nazca to the Diamond Mine, you’d first go to Freejia, then you’d go to the Mine.  In the game, this would have to be coded as four unique paths (Freejia->Nazca, Nazca->Freejia, Freejia->Mine, Mine->Freejia).  In this example, we could instead code them in a “loop” and use up only three paths — for instance, Freejia->Mine, Mine->Nazca, Nazca->Freejia.  This frees up a path that can be used elsewhere in the map, but could be argued to sacrifice some local mobility.  This would really come down to a trade-off, and I’m curious what prospective players of the game would have to say about this.
  3. Another solution for getting around would be to use a “warp” mechanic instead of overworld movement.  For example, in the vanilla game, there’s no overworld movement that has its origin or destination at Mu or Seaside palace — you just end up there as part of the game’s cutscene progression.  We could do a lot of that to “fill in the gaps” of the limitations of overworld movement animations — this mechanic has its own limitations as well, but we definitely have room to work here, especially if we take away some of the hard-coded vanilla progressions to make room for new ones.

Another limitation worth mentioning:  As the game is in its original state, you can only have three outbound choices for destinations, because the text box that comes up only has room for four choices (one of which is “Quit”).  Now, I haven’t looked into this yet, so this might be easily modified — however, since I notice that there’s a special script that handles just bringing up text box choices for map movement, it might not be so easy.  Time will tell.  For now, I’m assuming the 3-destination limitation (at least for overworld movement animations), but am cautiously optimistic that we can break that restriction somewhere down the road.

So, I have some homework for you, O noble reader:  Give me your wish list of where you’d like to go, in a way that would make sense in the randomizer.  For instance, I’ve already resolved to add a path from Inca -> Diamond Coast, which would manifest if you hired a ship to take you along that path from Larai, allowing you to escape the southwest continent without having to complete the Inca Ruins.  We can also think outside the box as well — as I mentioned before, there’s an overworld movement sprite that shows Will being carried by birds, so we could use that animation to get Will literally anywhere we want.

So, from a gameplay as well as a storytelling perspective, which paths would you like to see coded in the randomizer?

Statues and Stats

Thanks to all who have contributed to the various discussions about the IOGR on Discord.  Some interesting points were brought up, and I thought I’d summarize them here.

How Do You Beat This Thing?

You would think that the game is all about collecting the six Mystic Statues so that you can use them to climb the Tower of Babel and defeat Dark Gaia.  Except not really.  The vanilla game is so linear, it doesn’t even bother to check if you have all (or any) Mystic Statues before your final battle.  So, how do we want it to work for the randomizer?

Lots of good solutions were discussed, and I think it would be interesting to give the player some control when they generate the seed.  Below are five basic potential modes I could see being available to the player:

All Statues

You have to acquire all six Mystic Statues in order to fight Dark Gaia.  (The check would happen after you speak to Olman in Babel — or, alternately, another location if we decide to make Babel an optional dungeon, see below.)  Given the number of key progression items in the game and how we are currently planning to utilize them, I could see this leading to some pretty tedious seeds — double-dipping several map locations to get all the items to unlock and clear all the dungeons can be daunting.  However, for some people that’s their thing — I think I would enjoy it.

XX Statues (Any)

The player can choose the base number of Statues required fight Dark Gaia.  They can be any combination of statues they happen to get.

One problem with this mode is that probably no one would ever fight the Mummy Queen (except for the boss rush at the end) — it takes a boatload of items to even get to her, she’s the most powerful boss in the game, and even getting to the Pyramid in the first place requires a lot of progression.  So, an alternative might be…

XX Statues (Assigned)

This one calls out specifically which Statues you need to beat the game — e.g. 2nd, 3rd, 5th and 6th.  I like this because it adds a element of randomness to the seed — “Ah man, I keep rolling Mummy Queen seeds!”

If I were to put on my prediction goggles, I would guess that the “Four Statues (Assigned)” might end up becoming the standard.

XX Statues (Shuffled)

You still have to collect a number of specific statues — however, the statue rewards you get from the bosses are shuffled.  Maybe in this mode we could convert some of the progression items into items that reveal which statue each boss has — for instance, acquiring the Necklace Stones could reveal which statue is held by Sand Fanger.

No Statues

Just get what you need to get to Babel as quick as possible, and fight Dark Gaia as soon as you can.  I could see this one being fun — and difficult, as less searching for items would naturally lead to less leveling.

Speaking of leveling…

Getting Stronger

There is a HUGE range of enemy power and difficulty as you progress through the game.  This makes sense in the vanilla game for a couple reasons:

  1. The player also has a huge range of strength, defense and health that tracks with the enemies encountered as the game progresses.  The player is supposed to gain power-ups for clearing rooms of enemies (attack, defense, and health) — however…
  2. Defeating a boss involves a “catch up” mechanic that adjusts the player’s attributes to keep up with the game, in case they missed clearing any rooms.

This will have to be addressed in the randomizer, since we’re making it more open-world.  If a seed expects you to explore late dungeons early, you could be facing enemies that take 20 hits to kill and could take you out in a single hit.  That’s not fun for anybody.  (Except for the sadists — I guess it would be fun for them.)

There were a LOT of potential solutions that were discussed (again, thanks to everybody who weighed in).  I’ll put them below, with the ones I like the most near the top of the list:

  1. We could drastically scale back the discrepancy of strength between early and late enemies (say to 25% of what it is now — would depend on playtesting).  To balance this, we would also reduce the number of total upgrades available to the player throughout the game.  Also, the “catch-up” mechanic would go away completely, so you would gain upgrades only for the rooms that you clear.  This happens to be my favorite solution, from both gameplay and programming perspectives.  My reasons are below:
    • It would still keep the nature of leveling up true to the original game:  You get stronger as you clear rooms.  You just wouldn’t get rewards for every room you clear, only certain ones that have been randomized.
    • It would be easy to implement.  The game already has flags that are set for each room you clear, so that you don’t get the same reward twice.  We would just randomly set, say, 75% of those flags upon the creation of a new game file, and every fourth room on average would grant you a reward.
    • It would be easy for the player to see which rooms granted a power-up, since that mechanic is already built into the game.  The start menu includes an indicator that shows whether you get a reward for clearing the room you are in.
    • It allows the player a level of strategy (do I clear this room for the reward, or do I go fast?) without punishing them too much for skipping rewards here and there.
  2. We keep the upgrade mechanic as it is:  You clear a room, you get an upgrade.  However, we make the upgrades much more powerful, say 3X or 4X normal.  This would allow the player to grind early for high stats, if desired, and do less room-clearing later in the game.  If you happen to cap out in your abilities, you just plateau out.  This isn’t a terrible solution IMO, and it’d be an interesting game mode to try — and it’d be super easy to implement, to boot.  But it’s certainly a compromise rather than a full-on addressing of the problem, which is why I prefer the first solution to this one:  Some might argue that this mechanic gives the player too much of an incentive to rack up levels with easy dungeons, and depending on the route a player who does this might still be under-powered for a particularly late dungeon.
  3. We could keep the upgrade mechanic as it is (sans boss upgrades) but just nerf the late enemies.  This would work much like the first solution, except it would allow the player to get pretty OP pretty quickly, which I don’t love.
  4. We alter the catch-up mechanic.  The way the game is coded now, the upgrades are hard-coded — meaning, if you go into Castoth with high stats, you get downgraded when you beat him to whatever levels you were supposed to have at the end of the Incan Ruins.  We might be able to alter that mechanic to a script that looks not to the boss that just got defeated, but to the number of bosses you’ve defeated thus far in the game.  Thus, if you do the bosses out of order, you still get a progressive upgrade system that tracks with the vanilla game.  Not my favorite idea, though, because it doesn’t really solve the problem 100% — you might still have to fight OP enemies in order to get to that first boss and get the upgrade.
  5. We could supplement room clearing rewards with item-based upgrades.  In other words, we pull a “A Link to the Past” and throw in a couple “armor” items that grant you significant defense upgrades.  Don’t love this idea — wouldn’t be too hard to implement, but it deviates too much for my taste from the original feel of the game.  It also wouldn’t completely solve the problem of being forced to encounter OP enemies, if you haven’t found (or are locked out of) defense upgrade items.
  6. Enemy abilities could scale based on player abilities.  Hate this solution — it would make leveling useless, plus it would be a bear to program.  But, it is a solution nonetheless, and so here it goes.  (And I’m allowed to say that I hate it because I’m the one who first suggested it.)

Open to other ideas as well.

One more thing about mystic statues…

Statue Locations

There are six Statues in the game.  Functionally in the game, the first five Statues are associated with the five Bosses — however, only three of them are actually given to you upon defeating a boss (i.e. Viper, Sand Fanger, and Mummy Queen).  The other two are actually granted as items: Castoth’s Statue is in a chest on the Gold Ship, and the Vampires’ Statue is actually given to you before the fight by the spirit in the room before.  The last Statue is almost a throwaway, as it is given to you by Olman after you’ve already entered Babel Tower.

So, this begs the question:  How do we want Statue locations to be handled? I have a lot of ideas (such as shuffling some Statues in amongst the items), but what I’m leaning toward is this:

We keep the Statues where they are (or shuffled between themselves), keeping them tied to bosses.  This way you have to fight a boss to get a Statue.  We also find a way for the player to access Dark Gaia without having to climb Babel Tower, provided the required Statues have been collected.  This makes the last statue (the one you get from Olman in Babel) less of a gimme, since Babel (and the boss rush) would essentially be its own dungeon and might not be required to complete the seed.  This is my favorite way to handle the statues, though I am open to suggestions.

That’s it for now.  Thanks again to everyone who weighed in!  I love bouncing ideas off people who also love this game.

To-Do List, v1.0

Below is a rough outline of the tasks and added functionalities I would like to implement.  This is where I am most desirous of input from players and fans of the game — especially now, while we’re early in the implementation process.

Task 1: Revolutionize Game Progression

As alluded to in a previous post, the vanilla progression through Illusion of Gaia is very linear.  You can’t progress to different locations until you’ve completed key plot tasks, and once you leave a continent you pretty much can never go back.  This needs to be changed drastically.

Below is a rough, rough, rough, very rough sketch I just made that shows my preliminary idea for how one can progress through the world map:

 

Progression.png

Yes, I know my handwriting is atrocious.

The solid arrows show travel patterns that are completely open at the start of the game.

Dashed arrows show travel patterns that unlock as items are acquired, or as normal progression sequences are fulfilled.  For instance, the game has an item called “Bag of Gold,” which I don’t believe ever shows up in the actual game — it looks like it was supposed to buy you some Kruks in Watermia, though in the final version they just cut out the middle man and gave you the Will instead.  So, I figured, why not use the bag of gold to unlock passage on the Gold Ship from Inca to the Diamond Mine without having to complete the ruins?  Let’s plop that NPC from the crow’s nest into the Larai Cliffs, offering passage (for a price) between the two continents.  Of course, you can also gain access to the Gold Ship the vanilla way by defeating Castoth — provided you happen to have the items required to complete those ruins (i.e. the Diamond Block, both Inca Statues, and Psycho Dash).

That’s the kind of stuff I’m talking about.

Here’s a more detailed list of how the items can be used to progress throughout the game.  There are zero guarantees that these are all going to be doable.  I tried to give an actual purpose to each item in the game.

  • 50 Red Jewels unlock the Jeweler’s Mansion, as normal. (There’s one treasure chest there — God help you if there’s a required item in it.)
  • The four melodies in the game (there’s an unused “Inca Melody” in the code), I’m thinking, can unlock warp points throughout the map, which are accessible to you through any Dark Space.  Instead of Gaia asking you after a save if you want to continue, I figure he can ask if you would like to be transported to an unlocked warp point instead.
  • The ability upgrades you gain from Dark Spaces would also be randomized throughout the map.
  • The Edward Castle Key allows you to progress the vanilla way through the Underground Tunnel dungeon — though you can always access the back way via Edward’s Castle and get a free item, or progress through the dungeon backwards if you happen to have the upgraded Dark Friar ability that allows you to hit the bridge switch.
  • Both Inca Statues are required to access and defeat Castoth in Inca, as normal.
  • The Diamond Block allows progression through Inca, as normal.
  • The Large Roast is required to access Ankor Wat.  I figure, let’s let Hamlet live and have the option to gain the trust of the natives in a less barbaric way. (Oh, and while we’re talking about the roast, the entire raft encounter is gone.  Sorry haters.)
  • The Elevator Key and both Mine Keys allow progression through Diamond Mine, as normal.
  • The Crystal Balls allow access to Viper, as normal.
  • The Mu Palace key allows passage between the Seaside Palace and Mu, as normal.
  • The Purification Stone awakens the NPCs in Seaside Palace, as normal.
  • The Statues of Hope allow progression through Mu, as normal.
  • The Rama Statues allow access to the Vampires, as normal.
  • The Magic Dust frees Kara from Ishtar’s painting and (wait for it) unlocks passage between Inca and Mu.  Yeah, you heard me.  This is a movement progression that’s unused but exists in the code.  There’s also an overworld sprite animation that involves Will being carried aloft by birds, so… I don’t know, I figured Kara befriended some birds in the Angel Village, and freeing her from the painting allows you to call on them to carry you around?  Gotta make the Magic Dust useful somehow.  YOU come up with a better idea! (Shoutout to Raeven0 for their incredibly helpful and detailed work on unpacking overworld movement code.)
  • The Blue Journal is, I believe, another unused item in the game — it was supposed to belong to Lance’s father.  My idea was to make it belong to Neil instead — as in, “I would love to build an airplane, but I lost my design notes somewhere.”  Once you acquire the journal and give it to Neil, he can take you back and forth between Freejia and Euro, as well as from Dao to Babel.
  • Lance’s Letter allows access to Great Wall, as normal.
  • Necklace Stones… allow you to carry Lily in your pocket, which unlocks the coffin in the Seaside Palace?  I don’t know, it’s the best idea I’ve had so far.
  • Will gives you the Kruks and opens passage between Watermia and Euro, as normal.
  • The Teapot… not a lot of ideas here.  Maybe this could free Neil from his parents’ hold and allow for passage from Euro to Freejia.  Thus, the Blue Journal would allow for passage from Freejia to Euro, but the other direction is unlocked with the Teapot?
  • Mushroom Drops allow progression through the Mountain Temple, as normal.
  • The Bag of Gold can be given to the captain of the Gold Ship and opens up passage from Inca to Diamond Coast without having to beat Castoth.
  • The Black Glasses allow “progression” through Ankor Wat, as normal.  Sorry, still largely useless, especially for speedrunners.
  • The Gorgon Flower unlocks an item in the Native Village, as well as possible access to Ankor Wat (provided you have the Roast).
  • The Hieroglyph Plates function as normal and allow access to the Mummy Queen, as normal.  It’s my dream to have the actual order shuffle every time, so even speedrunners who have memorized the normal order need the Father’s Journal to put them in the right order.
  • Aura allows progression in Pyramid, as normal.
  • The Father’s Journal, along with the Hieroglyph Plates, allow access to the Mummy Queen, as normal.  (Again, would be sick if I could randomize the order for every seed.)
  • Crystal Ring allows progression through Babel, as normal.
  • Apple unlocks an item from Ann in Euro, as normal.

Any input at this point is appreciated.

Task 2: Shuffle Item Locations… Obviously

This one shouldn’t be too difficult, though there are a few hurdles that have yet to be overcome.  I can access and modify the contents of any chest, and of probably 90% of the other items you get throughout the game — however, there are a few item acquisition scripts that are called multiple times (such as finding a Red Jewel or a Necklace Stone) that I will need to find a way to work around.

The logic for this shuffle will depend on what gets set in stone regarding game progression (see above), as well as whether the “allow glitches” flag is set (which would remove the Sunglasses as a required item to complete Ankor Wat, for instance).

I may have mentioned this, but ability upgrades from Dark Spaces would also be randomized… provided I can figure out how to do that.

Task 3: Gotta Go Fast!

So much of this game is taken up with long conversations and cut-scenes, which somewhat explains why there’s only a 14-minute difference between the world record runs of any% and 100% for a game that takes roughly 2 hours to run by the best in the world.  This means undertaking the tedious task of stripping out every flag check that prevents progression, removing item acquisition animations, speeding up overworld movement animations, shortening text boxes… ugh.  The things I do for you.

Task 4: Inventory Management

16 item slots is already a little crowded in the vanilla game.  Add to that the fact that in a randomizer, you’ll be expected to carry around tons of progression items until you have the opportunity to actually use them — and you get a game that’s likely unplayable.  This is a major obstacle, and I don’t have one solid idea on how to handle it.

I do have some ideas, though, with varying degrees of confidence in their achievability (that is a word, Chrome, I’ll fight you on this):

  • Several items can probably skip the inventory altogether, such as Red Jewels (which can be sent to the Jeweler as soon as they are acquired) and any other item that doesn’t necessarily have to be used in game.  For instance, the various key items (Prison, Mine, Mu, Diamond Block, Statues of Hope, Inca Statues, etc.) can just open the doors they unlock or get placed in the slots where they belong, and then instantly disappear.  I’d probably have to find a way to add their sprite to the inventory screen somewhere in that case, so you have a way of remembering which locations you’ve opened up.
  • I suspect that I might be able to make the Jeweler a sort of repository for items as well.  Since he shows up everywhere, maybe we can create a sort of faux-inventory for him that would allow you to give him an item for safe keeping to be retrieved when needed.  I’m looking at you, Hieroglyph Plates.
  • It might also be possible to just expand the inventory itself to give the player more slots — however, my instincts tell me that this might be more trouble than it’s worth, if it’s even possible.

Take 5: Enemy & Boss Shuffle

This isn’t a necessity for the functionality of the randomizer, but it’d be fun, so why not go for it?  At least as an optional flag.  I wonder if it’s even possible to plop a boss in a room where it doesn’t belong… would be interesting to see someone fight the Vampires in Castoth’s room, for instance.

That’s all for now.  All input, suggestions, technical assistance, etc. is greatly appreciated!

The Journey Begins

I love game randomizers.  Mostly because I’m an old-school gamer who doesn’t have the time or interest to learn new games, and constantly re-playing the old ones can get old without a little variety.  To date, the only randomizers I am good at am adequate at enjoy playing are A Link to the Past and Zelda II.  But even those can get old after awhile.

So, about a week ago, I remembered Illusion of Gaia, and I thought it’d be really cool to play a randomizer of it.  So I checked out the big list of randomizers — but to my dismay, IoG was not on the list.  Bummer.

Trouble is, I really wanted to play it.  So much so, that I decided to build one myself.

Have I ever coded a randomizer before?  No.

Have I ever done any game coding?  Nada.

Do I know anyone who has experience with game development?  Nope.

Do I have programming experience?… Well, that I do have.

So, armed with my BS in Computer Science and my 15+ years’ experience in programming, I decided to make my mark in the world by adding an entry to the Big List.

“But the game is too linear,” you object.  Yes it is… but it won’t be forever.  You see, ManaFreak has been working on an editor tool for IoG for about five years now, and between him and his community I’ve learned enough about the architecture of this game in the past week or so to have already successfully pulled off the following modifications:

  • Shuffling item locations and acquisition text boxes.
  • Manipulating overworld movement to break wide open the linear nature of the vanilla game.
  • Removing item acquisition cutscenes and speeding up overworld movement animations
  • Summon birds to carry Will to any map location I want. (Really.)

I can’t tell you how excited I am.  (Don’t let my non-use of exclamation marks fool you.)

But I need your help — yes, you, noble reader and (presumed) aficionado of retro gaming and fan of the Quintet series of games.  This is a randomizer that is built from the heart, for the people who love this game — and if that’s you, then I definitely want you to weigh in on what you would like the randomizer experience to look like.

So, thanks for dropping by.  I hope you stick around.  Let’s make this game the best it can be.

Design a site like this with WordPress.com
Get started