Instant / Alternative Back-And-Forth Level Transitions (Metroid Style)

  • Thread starter Thread starter tushantin
  • Start date Start date
T

tushantin

Guest
So I've been replaying Metroid Fusion recently and something in me wanted to try remaking the game design, and the first thing I realized that OpenBOR was capable of most of it, minus Shinesparking (which would likely require some very EXTENSIVE scripting in any engine anyway). For instance, you can disable Z to one pixel, create walls for platform, enable both-directional movement, etc. Heck, even "Upgrades" can be implemented via scripts, if I'm not mistaken -- even though I'm not really much of a scripter / coder.

But what troubled me was the transition between "stages". Most beat-em-ups have fewer long stages, while Metroid has many short-to-mid stages. The most interesting part, though, is how Samus can go through the door and appear at the other end of the room. There's not even a loading screen. That doesn't even feel like she's going into another "room" or "Level" entirely, and makes the whole game feel incredibly connected and large.

Is it possible to do this with OpenBOR? If so, how do we do that? I'd like to know if there's a possibility to make an almost-identical replica of Metroid, because it opens up whole new dimensions of game-play mechanics for Beat-em-Ups.
 
Welcome to the forum!

Good news: It's technically possible.
Bad news: It's probably not feasible.

OpenBOR was designed for disk loading platforms and treats its stages as such. To make a game made up of all non-loading stage transitions, you'd essentially have to make the entire game one huge stage and script transitions to different points. That's pretty much how the original works anyway since it's all in one big ROM chunk. It can certainly be done, but it would mean a massive undertaking of platform and interconnecting wall work with a ton of planning and pixel measuring involved.

If it were me, I'd use the conventional stage system and style my transitions a little so they look like Metroid. To eliminate the load times, I'd just load all of my resources (including stage images) right from the start. If you play around with that you can effectively eliminate stage loading: The engine only loads what it needs to and skips the rest. If there's nothing that needs loading, the loading screen will vanish instantly.

This does mean you are holding all the game resources in memory at all times, but unless you're trying to author for the lower powered consoles (Dreamcast, PSP Phat) memory consumption is a non-issue anyway.

DC


 
Metroid used tiles so thats a bit different, it would be interesting feature if tiles would be available , maybe it wouldnt take up so much resources to display stage.
 
Tile mapping only helps if you have a) hardware optimized for it and b) direct support for said hardware. With software rendering it just adds extra work for the processor to do.

As Plombo has explained before - OpenBOR's graphic generation is already fully optimized. The only way you're going to do better would a switch to hardware rendering, and that would slap a whole slew of limitations on us in other areas.

DC
 
Damon Caskey said:
Welcome to the forum!
Thank you!  :D Although I've been around since the Lavalit days, so this is more of a "Welcome back".

Damon Caskey said:
If it were me, I'd use the conventional stage system and style my transitions a little so they look like Metroid. To eliminate the load times, I'd just load all of my resources (including stage images) right from the start. If you play around with that you can effectively eliminate stage loading: The engine only loads what it needs to and skips the rest. If there's nothing that needs loading, the loading screen will vanish instantly.
Like Megaman Zero series, right? Yeah, I think that works well too! But how does one control what gets loaded and what doesn't though? I'm also wondering if it's possible to treat different "tinier" levels (probably with "EndLevel" doors, or something else) as part of the same level, which then gets loaded with the main level. So if you go back through that door, you'll arrive to the main-level at the door's spot rather than the beginning...
 
I don't mind the loading screen issue though. It's better to save memory so it can be used efficiently than waste memory storing all rooms only to be used inefficiently

Anyways, for Metroid styled levels you need this setting in level texts:

nofadeout 1

As name implies, it disables fadeout effect normally shown after ending a level. It also makes transition between levels or rooms smooth :)

Ah yes, speaking of transition, you need script to put Samus or hero in defined spot at start of a room. The script is declared in 2 places: hero's SPAWN animation and door's (teleporter too) text. The latter will define which room to go to and at which coords hero should be. The former will take the coords and move hero there

I've implemented that system in D&D mod we're working on and I'm sure it can be implemented to Metroid based mod or Metroidvania mod.

Oh almost forgot, the rooms must use direction both to allow free roaming and everything in the room i.e enemies, effects, traps etc must be spawned at start instead of per scrollpos like in beat'm ups.
 
Back
Top Bottom