Jump to content
Sign in to follow this  
Bynine

Dragon Warrior Monsters 2 Randomizer

Recommended Posts

hey folks, long time no see! on a whim over these past couple of days i wrote up a little program that can create a randomized version of Dragon Warrior Monsters 2. it can change where monsters spawn/you get in events (for example, you could start off with any monster) and it can even change the characteristics of the monsters themselves. it's pretty simple to use, just check the README if you have any difficulties. enjoy and please let me know if you have any feedback! (note that it requires you already own a ROM file of either DWM2 game.)

 

link to download the program: https://www.dropbox.com/s/88mledpaslua2i3/DWM2Randomizer_v1_0.zip?dl=0

update: it looks like a much more comprehensive randomizer was created by "TheCowness". here's the link: https://github.com/TheCowness/DWM2Randomizer

Edited by Bynine

Share this post


Link to post
Share on other sites

I would totally try this out if I did more on my computer. A randomizer for Dragon Warrior Monsters 2 sounds like fun.

  • Upvote 1

Share this post


Link to post
Share on other sites

Yoooooooo! I haven't seen you in forever!

Share this post


Link to post
Share on other sites

Wow! Bynine, so great to see you back here.  And you brought us a present!  I have been thinking that I am due for another DWM2 play-through, so this might be just the extra push I needed.

 

Thanks!

Share this post


Link to post
Share on other sites

Man,I am late to the party,but you made my day.I enjoy randomising Pojemon games,and you are telling me that I can now do it to my other fave game? WOOHOO!

Share this post


Link to post
Share on other sites

I love this. I was planning on making a DWM1 randomizer and fell through when I couldn't figure out how to usefully parse the GBC data.

 

First runthrough is kind of rough for me because early divinegons and Darcks in oasis are tempting but are not fun to level, so I'm going to be struggling until I get breeding unlocked. An option to replace monsters with equivalent tiered monsters would work I think, since the monsters are already tiered by star level in the library.

Share this post


Link to post
Share on other sites

This needed more testing. Also, you seem to really like High Jump skill)

Share this post


Link to post
Share on other sites

There are several major bugs in this one.

The most prominent are the invalid-family monsters, some of which can cause the game to lock up just by viewing any screen on which their family is stated. Sometimes they can be bred (and give monsters totally not corresponding to any breeding recipe with their base species - I remember something along the lines of a Putrepup giving a Catapila) and sometimes it just makes the emulator hard-lock with an interesting screech.

(Also, bred monsters retain their original families. Only wild monsters get their families randomized.)

Another is that the moves look... buggy, even for a randomizer. As the person above says, HighJump appears an abnormal amount, and several monsters learn advanced versions of moves - not the base moves, just those. For instance, in one randomized file, Gulpple is listed in the library as learning WhiteAir and BazooCall. Not FrigidAir and TatsuCall - it can't actually learn those - just WhiteAir and BazooCall. As far as the HighJump issue, about half the monsters I randomly glanced through in the library learn HighJump - GiantWorm even gets it twice (Informer/HighJump/HIghJump). My best guess is that the randomizer fails to properly set all the moves and HighJump is index 00, but I don't actually know how to check that.

The randomized ROM is incapable of progressing to the postgame - it freezes on a white screen after Warabou says "No one knows how many other worlds exist out there.  You'll never ever run out of other worlds to explore, warooh!" The only way around this is to savestate before that point, load the savestate in an untouched ROM and proceed through the ending sequence as normal, then savestate afterwards and load that savestate in the randomized ROM again.

Finally - and this isn't exactly a bug, but it's painful - there is no consistent source in Pirate World of a Water-family monster or a Dancer. ArmyAnt and MadGopher are also not guaranteed, and may have to be bred manually. I'd say this is almost a bad an issue as the invalid-family monsters, because the playthrough hits a brick wall while the player attempts to accost every single monster in the vicinity in search of the fabled Water-family monster (while dodging invalid-family monsters), then in search of the legendary Dancer. Then the game progresses for a bit, only to hit another wall as the player grinds out the aforementioned two monsters for Ice World. Compounding the issue is the mandatory Arena fights for the Pirate Key, which can often have monsters sporting WhiteAir or similar moves - so the player hits a brick wall just trying to get to Pirate, hits a brick wall IN Pirate, and hits a brick wall trying to get to the key after Pirate. While the randomizer is working as intended, it doesn't quite mesh with the rigid requirements of the mandatory story events.

Overall, it's fun when it works, but when the game can crash for no good reason except Families Which Should Not Be, it can be a slog.

Share this post


Link to post
Share on other sites

I would definitely agree with the comments above, although I have never had any crashes when viewing monsters with different families even when they weren't vanilla. However, I do think not automatically being given ArmyAnt and MadGopher in Pirate is an interesting change and challenge, particularly for speedrunning attempts; it forces you to plan ahead with catching different families of monsters, or consider doing C class early to get a Magic Key (where spawns aren't randomized and you have a decent chance of getting something that helps). Getting a monster with a dance skill is kind of a pain, although I've had pretty good luck with getting something with either Magic Keys or careful Library checking, and the Kid's Class battle can be beaten even with hard skills (maybe excluding things like HellBlast that demand good RNG to dodge) if you find monsters with good resistances. As for the HighJump moves, through some testing I have discovered that they aren't all the same move; for instance, some crash the game when used through the menu outside of battle, and some do different things in battle (most involve skipping the monster's turn in some way). This should probably be remedied in a better randomizer, but it's avoidable. And I would also say that letting monsters have weird moves in the wild (for instance WhiteAir or WhiteFire) makes some parts easier, but also adds another layer of nuance to the optimal strategy; sometimes weak stats prevent monsters with good skills being useful, and the fickle AI makes it hard to exploit unless you get lucky or spend lots of money on Ribs. Overall, it's a fun randomizer, and with some refinements it could be fun for racing (or even in its current state, competing to see who can unlock Ice Key fastest would be interesting); I also know that some other people have worked on their own randomizers, which are also worth a shot maybe.

Share this post


Link to post
Share on other sites

I dont fully understand the appeal of a randomizer. How is it supposed to work? It seems to me that it would almost always been broken/unbalanced. I've completed a hack but I've wondering about creating a tool to shuffle this game. What kind of options would people be looking for in a randomizer? 

Randomized enemy levels would be very difficult. (Level 20 in Oasis would not be fun)
Randomized encounters would be dependent on monster stats (a strong monster may be twice as strong as a weak monster at the same level )
Randomized stats would make a mess of the breeding. 
Randomized skills would need some controls to ensure some skills aren't too common or too rare

I would like to define a sort of randomization that doesn't defeat the point of the monster variety and breeding paths.

The best I can think of it is create some randomness but base it around monster rarity. When you replay this game what is it that you want to rediscover? 

Edited by jonahstrix

Share this post


Link to post
Share on other sites

@jonahstrix

I think especially for a game like this, having the unpredictability is kind of fun, and having Darck replaced with a SpotSlime or having Divinegons appear in Oasis is only part of the fun. Here's a list of features that I kind of hoped to find in a randomizer for this game (some of which may not be too feasible)

-Wild monsters, boss monsters, foreign master monsters, and arena monsters are all completely randomized

-Base stats shuffled around randomly, or perhaps something to redistribute them with the same totals 

-Skills shuffled around in a non-buggy way (no HighJump everywhere, and monsters probably shouldn't start with upgraded skills)

-Monster families shuffled

-If possible, randomize the world maps for Oasis, Pirate, Ice, etc. I'm not sure how you would do this while making sure that the map is still navigable and the same order of events is required (no matter how the Ice map is reshuffled, you still need to beat the mine, go back to Norden and beat "AgDevil," then save the other two castles)

-Magic Key monsters should be shuffled somehow, although I'm not sure how (probably in accordance with their new monster familes)

-There should be an option to shuffle breeding paths, or at least rearrange them (e.g. KingSlime+GoldGolem always gets you something specific, but whatever it ends up being is random). For extra chaos, arguably the purpose of randomizers, this should at least be an option

-There should be some difficulty toggles, at least to the point where if I want I can effectively create a new kaizo hack with every playthrough

Just some thoughts. 

 

  • Like 1

Share this post


Link to post
Share on other sites

I missed both posts from September somehow...Oddly, my crappy Meboy emulator only crashed by itself (it does that randomly on roms it considers odd, such as randomiseds), never when viewing stats/screen, or specific points.

Also, I am really weirded out by how few skills, like, say, Infermore, refused to upgrade propery, instead prompting the monster to try learning Infermost as a separate skill. Also, a lot of Xfamily+Yfamily combos refuse to work or me, iregardless of using naturally-typed or randomised mon (so I can't get a Putrepup still). And it seems AI still treats monsters with "normalised" (types are normal if you bred) types as whatever they were randomised into.

Share this post


Link to post
Share on other sites

Hmm, I don't really get the fun of playing through the whole game for an anticlimactic final fight. I mean also if Divinegon is in Oasis at level 40 how do you win? Just reshuffle?

If I were to do this it would be based around rarity. Higher rarity -> better stats, higher chance to get better skills, less likely to appear in story keys

To some extent I would want the random stats to be lore compatible. For example Tortragon should have high def. Monster resistances seems like one of the most interesting things to change but it would also need some sort of pattern to ensure balance.

I wouldn't touch families or breeding

I would give the option to set the difficulty per stage. Hopefully I could configure it well enough that if you loved the Oasis shuffle but hated Pirate, you could reshuffle just that one world. 
I would want it so that once you beat the game you could reshuffle so Oasis monsters are level 80 etc.

  • Upvote 1

Share this post


Link to post
Share on other sites

I also forgot to complain it randomises genders, sometimes in a very annoying way (and it affects ???-family monsters you breed, too, so no more default male-ness and a huge possibility of having to spend gold on blessing) - I spent two days trying to catch a male Roboster, to no result.

Share this post


Link to post
Share on other sites

I'm late to the party. I think a difficulty hack is all this game needs. Perhaps have a cut off for stats for monsters instead of everything going to 999 after 3 to 4 breeds. I'm unsure how good your hacking is but I'd love to replay the game see newer monsters or even events take place. I'd be willing to make sprites of newer DQ monsters just for it!

Share this post


Link to post
Share on other sites
Posted (edited)

I didn't find away to change the difficulty the way you mentioned. Instead I just made the whole game much harder. If it's easy to max out your stats, then wild monsters should be a challenge. If you have a completed game on an emulator you can load up my hack and test your end-game team in the Lonely key. S rank tournament is definitely a challenge now too.

I am able to set the stats of enemies beyond 999 but that seemed like overkill in most cases.

It likely wouldn't be too hard to add new large sprites, the problem is the animated sprites. I don't know how to change the different types of animations. (each have different pieces that flip horizontally)

If I had the assistance of someone quite adept at reading assembly, I would love to create new maps. I'm kind of dependent on values that have already been found. I was only able to find a few things myself.

Edited by jonahstrix

Share this post


Link to post
Share on other sites
On 1/9/2019 at 11:11 AM, jonahstrix said:

I didn't find away to change the difficulty the way you mentioned. Instead I just made the whole game much harder. If it's easy to max out your stats, then wild monsters should be a challenge. If you have a completed game on an emulator you can load up my hack and test your end-game team in the Lonely key. S rank tournament is definitely a challenge now too.

I am able to set the stats of enemies beyond 999 but that seemed like overkill in most cases.

It likely wouldn't be too hard to add new large sprites, the problem is the animated sprites. I don't know how to change the different types of animations. (each have different pieces that flip horizontally)

If I had the assistance of someone quite adept at reading assembly, I would love to create new maps. I'm kind of dependent on values that have already been found. I was only able to find a few things myself.

I haven't given your rom hack a try yet but I saw it on rom hacking. Maybe this weekend. Have you tried that sites tile editors? I've been able to change GBC sprites before although it's tedious. Sad these games never got the Pokemon level of rom editiors. (Map/tiles/events/etc)

Changing the enemies stats beyond 999 is a way to increase the difficulty, but like you said overkill. I recall in my maxed out Sidoh did 1000+ damage on twinhit boosted critical hits IIRC so steamrolling the late game was a breeze. (Twinhits+Focus+Quadhits = win). It's not only the stats but how move-sets stack too. For me replaying the game with a new main story and alternate monsters would be ideal.

Share this post


Link to post
Share on other sites

I tried to make it pretty tough, with lots of variety. Also spent a lot of work tailoring the enemy encounters to be a bit more appropriate than random.

I hope you give it a try and let people know what you think.

I've looked at the sprites using on of those tools. I couldn't make significant changes without also changing animation code :(

I'd love to see enough interest for the modding community to grow. 

Share this post


Link to post
Share on other sites
Quote

As for the HighJump moves, through some testing I have discovered that they aren't all the same move; for instance, some crash the game when used through the menu outside of battle, and some do different things in battle (most involve skipping the monster's turn in some way). This should probably be remedied in a better randomizer, but it's avoidable.

Really? That's very interesting - it means they're not just a commonly-picked address, it means that the game just defaults to calling illegal moves HighJump. So the randomizer must randomize both families and moves through some sort of naive 'pick a number from 0 to F'/'pick a number from 00 to FF' change and the author didn't bother checking that those values corresponded to valid families/moves. 

***

I can't contribute because I'm basically ROMhack-illiterate. I second all comments about rarity being the way to go - it's the closest thing the game has to a ranking system. Pokemon can use Base Stat Totals, but base stats work differently in DWM.

With regard to randomizers, though:

Necessities:

  • Somehow the randomizer would have to be hard-coded to give at least one Water monster and at least one monster with a Dance move in Pirate. Pokemon can be randomized easily because the game bars progress based upon widely-teachable techniques, not on specific types, specific species, or natural learnsets. 
    • Hard-coding it to spawn ArmyAnt and MadGopher in either Oasis or Pirate would make life significantly easier as well. Perhaps that would be a toggleable option for people who enjoy the added challenge of breeding them.
  • Make sure monsters are only being given the base versions of moves. The other randomizer seemingly handed out the most advanced versions willy-nilly, which is how an average playthrough could get atrocities like enemies having WhiteAir in Kid's Class. That was extremely memorable in all the wrong ways.
  • Kid's Class somehow needs to be filtered to prevent monsters with powerful moves from showing up. This isn't a difficulty issue, it's a mechanics issue. Skills generally have set damage ranges. A monster that has enough MP to cast RockThrow will do 75-100 damage before resistances are factored in. At Oasis, this is fatal - you can grind past that, but it's prohibitively tedious.

Options:

  • Randomized levels are a direly bad idea, but it might be possible to implement a slider like the Pokemon randomizer currently has (levels are change to a user-chosen set percentage of the original value, which can be in the range 50%-200%).
  • Randomized stats always make a horrific mess of balance, but that's part of the fun. DWM 1&2 are already somewhat unbalanced during the storyline due to monsters with Growth Type 27 (a.k.a. Grizzly's ATK and WhipBird's HP) - the DWM speedrun focuses heavily on WhipBird to survive the later battles at low level, and the DWM2 speedrun's team consists of Grizzly and something to appropriately buff Grizzly. Reserving Growth Types of 28-31 for high-rarity monsters seems like it would preserve balance decently. Doing the same to Growth Type 27 would make the resulting game more balanced than the base game.
  • The Universal Pokemon Randomizer has a "similar strengths" setting to prevent things like Legendary Pokemon attacking you in the first area and the final boss using rats and pigeons. Perhaps "rarity" could be used here.
  • One thing about DWM is that "families" have stereotypical traits (Birds and Bugs level up quickly, Bosses take forever to level up, Dragons resist fire, etc.), but this is coded per-monster rather than as some sort of 'family' effect. Ideally there would be an option to place different weights on growths, growth speed, and resistances according to randomized family.

Map randomization strikes me as way too hard to do to the base worlds. While DWM1's random map generation has been analyzed, I don't think that would be useful for generating DWM2-style maps, much less ones that could be used for story areas. 

Breeding randomization strikes me as roughly as insane as evolution randomization. I've done randomized Pokemon runs with that, and one of the key ways to exploit that is to take all the weak monsters that evolve early and grind them up in the hopes of getting an early Legendary. DWM is much worse because there are 10 non-Boss families, which gives 90 generic breeds out of the 312 monsters (or 315 with Kagebou, Dimensaur, and Lamia)  - your chances of hitting strong monsters just through throwing enough random monsters at each other are unfortunately high, which wrecks the entire point of the breeding mechanic. There's the added complication that this may make some monsters completely inaccessible, though randomized Magic Keys may fix that.

Anyway, those are just my thoughts. I don't know how to write a program that overwrites values in the ROM, so I'm not qualified to comment beyond this.

  • Upvote 1

Share this post


Link to post
Share on other sites

There's also a real peculiar bug I encountered on post-game gift egg monsters - WhipBird and Lionex: they hatched knowing a set of moves (3, I think) that matched neither their natural moveset, nor randomised one, and never learned anything else. 

Also, I met wild EvilSeed in one of the random key worlds that gave 0 exp (couldn't catch it to look at stats even with Meteorb).

Share this post


Link to post
Share on other sites

As long as we're discussing randomizers, I found one online by TheCowness. It's fully functional and has multiple options. (In order for the %-based 'scaling' options to work, 'shuffle encounters' must be on and possibly 'redistribute monster growths' as well - I haven't tested them separately.) Comes highly recommended.

Quote

Known notable issues:

  • The Starry Shrine's back door opens earlier than intended -- do not talk to the Monster Master before acquiring Slash.
  • A softlock can occur if you walk out the front door of the Starry Shrine before the Pirate key world is completed.
  • Most enemies seem to focus the back monster in your party with all single-target attacks. The cause of this is not known.
  • Enemies with high Int can end up being abnormally strong after stats are randomized.

From my own playthroughs:

  • The author does have fixed ArmyAnt, MadGopher, and "Squiz" as a Water-family monster with LureDance.
  • Kid's Class did not work for me on either BGB or VBA-M if I used "shuffle encounters". While there is a workaround with loading savestates into an unmodified ROM, I recommend using GameShark codes to get Pirate Key. See section 1.3 of Jimeous's GameShark FAQ for details.
  • I suspect Boss Family monsters are banned from appearing in shuffled encounters. In several playthroughs, I haven't seen a single one.
  • I've seen no bugged movesets over several playthroughs, though I did once get a wild ChopClown with Defeat listed twice.
  • "Known notable issue" #3 gets very noticeable if you're playing on higher-percentage scalings, where the monster in the third slot will regularly get pummeled by enemies with high ATK. Make sure whatever you put in the third slot has good HP and DEF, or it will die frequently. (Towards the endgame, it may die frequently even if it has good HP and DEF...)
    • On the bright side, you can run around with monsters that are flimsier than they really should be in the first and second slots, as the enemies will almost never target them if the third monster is alive.
  • Scaling everything to 0% results in an amusing walkover. 
    • Yes, you can scale EXP without randomizing anything else. For a laid-back game, crank EXP to 500%. On the flipside, this opens the way for a 0% EXP run... Is it even possible in vanilla? How do you handle Darck?
  • Scaling everything to 50% results in an noticeably easier game, even with the EXP malus.
  • Scaling everything to 200% or 500%... I'm not sure if this is more a symptom of 'redistribute growths' than anything else, but the wildly distributed stats result in some very strange monsters, including those with ATK to make a Grizzly envious. This leads to your monsters getting sniped without warning, and there's no real counter because the stat scaling results in wild monsters well beyond what breeding can get from anything short of ?-family monsters. I have particularly fond memories of my 999-HP Gasgon with HealAll (obtained in Ice). Lobbing Ribs at everything in the hopes of getting the latest monsters with superb stat spreads is an interesting alternate playstyle, but a money-heavy one.
    • I recommend just using Repellents throughout Sky World after catching desirable monsters, as beating off the legions of turbocharged monsters starts putting a real strain on the team around then.
    • I halfway wonder if it would feel smoother to boost the boss monster one stage higher than the regular wilds (500% for 200%, 200% for 100%).  With uniform scaling, the bosses are generally anticlimatic compared to the mobs you have to slog through to get there. I should try that the next time I try a run.
  • Dark Man should be counted as the true final boss of Limbo, as every team I've had that can beat him can beat the randomized "Darck". Having three randomized (and potentially scaled) monsters is more of a danger than a single monster without vanilla Darck's quirks. 
  • Monsters seem to prefer physical attacks to special moves for whatever reason (I suppose this is related to "known notable issue" #3), which means that Radiant/Surround/SandStorm are suddenly some of the best moves in the game.
  • A side effect of "redistributed growths" is that your best bet for getting good stats is to shoot for the highest BSTs, and some generic breeds have surprisingly high BSTs. I recommend Wyvern (96), MistyWing (87), and Snaily (86) in particular. 

Anyway, again, I highly recommend it.

 

  • Like 1

Share this post


Link to post
Share on other sites

hi guys! i apologize, i completely forgot about this - but i'm glad it sparked discussion! i really only made mine as a fun dive into romhacking, so it definitely was shoddy on the code side, but i figured i'd post it anyway. it looks like TheCowness has created a version superior in every way, so i'll put that in the OP.

Share this post


Link to post
Share on other sites

I wouldn't call it "superior in every way"; his has more features, but yours is playable for the entire game without crashing or any noticeable AI quirks. Ideally a third randomizer for this game would combine the features in both for something that has the best of both worlds. Unfortunately, he has no plans to revise his randomizer in the immediate future, so there's that. With any luck somebody else will look into this game a bit more. 

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...