Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411502 Posts in 69373 Topics- by 58429 Members - Latest Member: Alternalo

April 25, 2024, 03:26:44 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperDesignProcedurally generated Metroidvania
Pages: 1 2 [3] 4
Print
Author Topic: Procedurally generated Metroidvania  (Read 23263 times)
Terrorbuns
Level 4
****

Bluh bluh.


View Profile
« Reply #40 on: February 05, 2010, 07:49:13 AM »

Parthon: Cool stuff. Just to be nitpicky, you should have it generate a single space room (for like, save spots and random dead ends and stuff) in certain spots. You could also attach a variable to some rooms to see if it requires finding a secret passage and have the game generate accordingly. You seem to know what you're doing, and I absolutely love it  Kiss

Also, to add the to general subject of the topic, an idea for generating enemies in rooms is to have a "Strife" Level like in Birdyworld. Each Sector could have a max strife level, the starting sector having the lowest.

I love this topic  Smiley
Logged
Parthon
Level 1
*


View Profile
« Reply #41 on: February 05, 2010, 08:00:00 AM »

That's definately the plan in the long run. The current format for generating the level doesn't nicely allow single square rooms in the sequence, but that will change. Right now it's a 'attach new room to existing room randomly' type system. The next iteration will be more path and zone based with save points, powerups and similar. Smiley

But tomorrow is making the world -> room generator and creating the physics engine for the player to run, jump and shoot stuff in.

Once it's playable, I'll start a devlog and release an exe.
Logged
shig
Guest
« Reply #42 on: February 05, 2010, 03:26:16 PM »

This is from my MSN right after reading this thread and the sequence break article:

Quote
Leandro diz: also you know what ALSO would be great?
 SEQUENCE BREAK: THE GAME
 a metroidvania that encourages sequence breaking and rewards you for it
 and in fact you can only win by sequence breaking your way past the boss
 there is a proper path to beat the metroidvania and reach the boss except most of the stuff is completely unreachable
 if you beat the boss all it does is reset the game
[c=4]but y not sweety??[/c] diz:
 ahaha I was actually reading that thread today
Leandro diz:
 but you get to keep one item
 so you restart with something you werent supposed to have at the beginning
 the goal is to keep fucking the scripted parts up and the general sequence until you can bypass the boss completely
Logged
X3N
Level 6
*


View Profile
« Reply #43 on: February 05, 2010, 07:36:11 PM »

Nice screenshots mate!
Procedural power-ups sounds interesting. I've been thinking about procedurally generated weapons for a SHMUP or platformer/shooter ala "bullet type / blast type / spread type / special effect". For the meantime just doing semi-random bullet patterns & movements and keeping static weapons  Embarrassed but it's fun.

What is the gameplay going to be like? Shoot enemies / dodge them / bash into them / roll?
Logged

destiny is truth pre-op
Parthon
Level 1
*


View Profile
« Reply #44 on: February 05, 2010, 11:21:50 PM »

I think it's going to be mainly shooting enemies and jumping gaps.
Logged
Parthon
Level 1
*


View Profile
« Reply #45 on: February 08, 2010, 03:33:06 AM »



This is where I'm up to. Rooms + minimap + moving + jumping.
Logged
SirNiko
Level 10
*****



View Profile
« Reply #46 on: February 08, 2010, 07:32:33 AM »

This is looking good. The ball-like avatar has me imagining Within a Deep Forest.

I'm interested in seeing how you get the obstacles to randomly generate.

-SirNiko
Logged
Parthon
Level 1
*


View Profile
« Reply #47 on: February 13, 2010, 07:22:47 PM »

Un-hijacking thread to here -> http://forums.tigsource.com/index.php?topic=11092.0
Logged
JP
Level 0
***


vordhosbn brezhoneg


View Profile WWW
« Reply #48 on: February 21, 2010, 12:07:38 AM »

Hi folks.  Interesting topic; I've thought about it a bit but always chicken out because making a plain ol' Metroidvania is a HUGE undertaking and making a procedural one is probably an order of magnitude above that!

The approach for designing lock and key arrangements is an interesting problem.  There's a relatively new random level generator for Doom called Oblige, which seems to have a fair amount of code for generating good nested red-yellow-blue key progressions.  Maybe take a look at that.  Theoretically, a procedural Metroidvania would just be more keys and using prefab (designer-built) or rule-based bits for each kind of blockage.
Logged
Bremze
Level 0
***


View Profile
« Reply #49 on: March 01, 2010, 01:33:02 PM »

Speaking of Metroidvanias and sequence breaking, some of you might know of a game called Bunny Must Die / Chelsea and the 7 Devils.

Kinda off topic, but I didn't know there was a translation patch for it, thanks for reminding me about that game.
Logged
phr00t
Level 0
**


View Profile
« Reply #50 on: April 25, 2010, 05:10:03 PM »

Hey guys,

I'm thinking on taking on such a project. I've made a handful of procedurally generated games before:

http://people.umass.edu/jvight/3059/
http://sites.google.com/site/free3069/Story
http://www.dsource.org/projects/freeuniverse/

...and I loved Super Metroid and played Metroid Prime. I've read this forum and I like the ideas :-) My laptop is currently in warranty repair for another week... but it will give me time to flush out ideas.

I also took a look at Parthon's project, nice start :-) I'd plan on making powerups, tree-based level generation with varied enemies and different special abilities. Graphics would be 2D, side-scroller, tile-based probably. Of course it would be freeware / open-source Smiley

- Phr00t
Logged
baconman
Level 10
*****


Design Guru


View Profile WWW
« Reply #51 on: April 25, 2010, 10:43:05 PM »

I think this would make for a rather interesting concept, as well. In fact, part of what I'm tinkering/brainstorming with isn't too far away from it; it just involves other elements to it as well.

The procedural key generation approach is a novel perspective, but what I think would keep a game like this fun and fresh for longer integrates a couple of other ideas along with them:

-Multiple Hubs
Basically, you begin at an initial hub, collecting some of the first 3-or-so items that will enable you to reach the second "hub." You could procedurally arrange for shorter or longer games (2-5 hubs, variable boss battles and all) this way.

-Alternative (and also secret) passageways
This idea springs from the notion that each keypoint/item should have at least 2 ways of getting to it; so you don't have to deduce the exact order of going about it - but there's an easy way and a hard way to get everything. This may include secret items, too.

-Loop the corridors!
Nobody wants a big game of fetch, where you go one way through a passage, and then come back out the same way. Give a nudge in a different direction by allowing exit corridors that kinda branch around.

-Abundance of bosses, gimmicks, and items
Ideally, a game like this should have a different feel to it every time you play it, right? Isn't that the idea behind procedurally-generated content, after all? So what if, say... each game only utilized 5-20% of the "key" items, and maybe 10-25% of the enemy types or bosses each time you played it? The natural result would be totally different puzzles, obstacles, and sequences to learn and play over a lot of different times.

You can make a few possible varieties of passages/sequences available, but the main point is that the game should NEVER feature 100% of it's content on any given playthrough, even on it's longest setting. Maybe not even 50% of it.

-Keep it simple, silly
The game doesn't have to be incredibly groundbreaking in what the items all are, or what they do. Things that are already fun will continue to be fun, and games like MegaMan, Sonic, and present staple Metroidvania games are full of that. Where the groundbreaking design comes in is in making them each useful and necessary - as well as fun and occasionally incredible to pull off well. This goes back to that "alternative passageways" part; both ways will be somewhat challenging to reach an item corridor, but for different reasons, and with different goodies attached to them (to up exploration potential* as well).

*By "exploration potential," I basically mean choice. It's parts that players who want high completion can play with, and players who want fast times can skip through the game more quickly by using such things. But the idea is that it allows for more non-sequencial gameplay possibilities; while keeping some core sequencing intact.

-Devil is in the details
You don't have to change the environments to make a different experience, you can change minor details about them. A (good/bad) example would be the disappearing blocks on IceMan's level - you can simply reorder some sets of them, and where the positions would remain fairly constant, the trek through them would be different every time. You can also combine this with a variable that makes some of them never appear at all, too; changing up elements even more. In fact, you might even try "overloading" the stages with elements, and then selectively trimming large portions of them out, too.

You can also have a "landmark puzzle" where doing a few different things there nets you different results, and opens different variable passageways depending upon "which solution" you present - a perfect example being Van Pookin's room in MegaMan 7 - but only have one way available there (at least to begin with).
Logged

phr00t
Level 0
**


View Profile
« Reply #52 on: April 26, 2010, 04:53:08 AM »

Quote
-Multiple Hubs
Basically, you begin at an initial hub, collecting some of the first 3-or-so items that will enable you to reach the second "hub." You could procedurally arrange for shorter or longer games (2-5 hubs, variable boss battles and all) this way.

+1 This will be planned -- you can play the "default" game, or tweak some of the constants to make for a longer or shorter game (requiring either more items or zones [or both]).

Quote
-Alternative (and also secret) passageways
This idea springs from the notion that each keypoint/item should have at least 2 ways of getting to it; so you don't have to deduce the exact order of going about it - but there's an easy way and a hard way to get everything. This may include secret items, too.

-Loop the corridors!
Nobody wants a big game of fetch, where you go one way through a passage, and then come back out the same way. Give a nudge in a different direction by allowing exit corridors that kinda branch around.

This will be part of the level generation... I expect to have it :-)

Quote
-Abundance of bosses, gimmicks, and items
Ideally, a game like this should have a different feel to it every time you play it, right? Isn't that the idea behind procedurally-generated content, after all? So what if, say... each game only utilized 5-20% of the "key" items, and maybe 10-25% of the enemy types or bosses each time you played it? The natural result would be totally different puzzles, obstacles, and sequences to learn and play over a lot of different times.

The trick to this... which I have done in my other games... is to also procedurally generate the enemies. Generate enemies based on movement type (wall crawler, flyer, walker etc.), health, size etc. You can also use this generation function to make random (but balanced) bosses!

Quote
You can make a few possible varieties of passages/sequences available, but the main point is that the game should NEVER feature 100% of it's content on any given playthrough, even on it's longest setting. Maybe not even 50% of it.

+1

Quote
-Keep it simple, silly
The game doesn't have to be incredibly groundbreaking in what the items all are, or what they do. Things that are already fun will continue to be fun, and games like MegaMan, Sonic, and present staple Metroidvania games are full of that. Where the groundbreaking design comes in is in making them each useful and necessary - as well as fun and occasionally incredible to pull off well. This goes back to that "alternative passageways" part; both ways will be somewhat challenging to reach an item corridor, but for different reasons, and with different goodies attached to them (to up exploration potential* as well).

The first few iterations will be "just the basics" to make sure they are solid.. and then would come the interesting things :-)

Quote
-Devil is in the details
You don't have to change the environments to make a different experience, you can change minor details about them. A (good/bad) example would be the disappearing blocks on IceMan's level - you can simply reorder some sets of them, and where the positions would remain fairly constant, the trek through them would be different every time. You can also combine this with a variable that makes some of them never appear at all, too; changing up elements even more. In fact, you might even try "overloading" the stages with elements, and then selectively trimming large portions of them out, too.

You can also have a "landmark puzzle" where doing a few different things there nets you different results, and opens different variable passageways depending upon "which solution" you present - a perfect example being Van Pookin's room in MegaMan 7 - but only have one way available there (at least to begin with).

I'm going to start with full procedural generation, so no two rooms should look too similar.

Something I have been wondering about... art design. I'm no graphics artist, and I don't want to get bogged down in creating graphics and detailed animations... I want solid level generation and gameplay. I have been contemplating making the player/enemies highly animated stick figures (e.g. line-drawn) and have the environments be cartoony (but still tile-based). Any ideas?

Thanks,
- Phr00t
Logged
jpgray
Level 1
*


View Profile
« Reply #53 on: April 26, 2010, 07:17:11 AM »

Any Metroidvania, if its design is to be efficient, necessitates some backtracking.  In the course of this, if the world is large enough, the player may miss the "obvious" area for advancement and wander fruitlessly in past areas, stumped.  The best way to mitigate this is to fill oft-revisited rooms with secrets.  They don't need to be extremely beautiful or useful secrets, just -something- to satisfy the player that the past hour's backtracking wasn't completely in vain, and to build his sense of how the puzzles in the game work.  Super Metroid did this brilliantly--areas like the Wrecked Ship, which require little to no backtracking through, may be cleared on the first time through of secrets, whereas areas like Crateria, Brinstar and Norfair, which are more frequently visited, are filled to the gills with secrets, some reachable only on later passes through the area.
Logged
phr00t
Level 0
**


View Profile
« Reply #54 on: June 06, 2010, 09:00:55 AM »

Aieet... Gentrieve is out  Grin

I made a post to share it with you guys here:

http://forums.tigsource.com/index.php?topic=13005.0

Thanks all for the input!
Logged
Derakon
Level 2
**


View Profile
« Reply #55 on: June 07, 2010, 02:13:37 PM »

Oh hey, I'm working on one of these! I haven't taken the time to read through this thread yet; will do when I get home.

So far in my project I've mostly been focusing on making an easily-extensible engine for generating procedural maps with good "flow". I haven't touched on items, puzzles, or enemies much at all yet, but I can make maps that have "loose" structure (as opposed to a strict room-based structure) and yet know which areas connect to which other areas and the route the player is "intended" to take.

Right now I'm working on porting my drawing code from SDL to OpenGL; once that's done I hope to invest some time in implementing roadblocks...
Logged
baconman
Level 10
*****


Design Guru


View Profile WWW
« Reply #56 on: June 08, 2010, 01:07:38 AM »

 Grin Impressive work so far, both of you! I really like the art style in JetBlade, and now organic the environments look... and the execution of Gentrieve 1.0 so far is pretty fun, exciting, and solid. I certainly see a bright now-dawning future in these.
Logged

Derakon
Level 2
**


View Profile
« Reply #57 on: June 08, 2010, 08:50:16 AM »

Okay, so here's my plan for how to structure exploration of the map in Jetblade.

First off, you should know that the map structure in Jetblade can be described as a planar graph. That is, it's a 2D sequence of corridors (of varying sizes, some of which can more accurately be described as rooms), each of which connects to several other corridors. It's generated as a tree, largely for algorithmic simplicity, but once generation is done, new loop corridors are added that connect nodes in the tree that are close in space but far apart in "graph distance" (number of edges to traverse to get from one node to the other).

Having placed all of the nodes, I then use a space-filling algorithm to "grow" corridors along the edges of each node. This works very well for creating an organic-looking map, but it has the major drawback that I don't really have any guarantees about the local topography. I've had to come up with some moderately clever ideas to solve accessibility issues, for example. On the whole I think this is worthwhile, though; every other approach I can think of would result in overly-rigid or "chunky" maps.

However, this also means that placing locks (areas that the player cannot bypass without a powerup) is tricky -- how do I know that a particular node is suitable for the high-jump lock? What if the ceiling is too low? What if there's a ledge the player could grab onto to get some extra height? To fix this problem, I plan to modify the graph generator to place lock nodes first, and reserve space for them -- and then to generate the tree around them (changing the node placement from "just place them anywhere" to "if there's a nearby lock, try to connect to it first"). This will allow me to guarantee that each lock room has a known structure, which will be important for ensuring that e.g. the high-jump lock doesn't have an inconvenient ledge allowing the player to bypass it.

Having placed the lock rooms, I can now start ordering them. The player starts out at a randomly-chosen non-lock node. Every node adjacent to that node that is not a lock node is marked as accessibility-level 0 (note that I have a platform-placing algorithm that ensures accessibility). Every node that is behind one lock node is accessibility-level 1, and so on. Each lock node then represents a <i>transition</i> in accessibility levels. The higher the accessibility level, the more powerups are needed to reach the area, and the nastier I can make the enemies and room types. Every transition with the same numbering must require the same powerup to traverse (so e.g. I could have multiple high-jump-requiring lock nodes, that all give access to the same connected area).

Now that I know the order in which the map is accessed, I can place powerups. Ideally, each powerup should be "downstream" of a lock node -- that is, the player travels down a corridor, encounters the lock, is unable to bypass it, continues down a different branch, finds the powerup, and says "Ah ha! Now I can go bypass that lock!" However, for the time being it should be sufficient to just place the powerup somewhere in the accessible space. As for choice of powerup, they should be loosely ordered; some powerups are going to be more useful than others, after all, and some powerups may render others obsolete. Each powerup should correspond to one accessibility level of the map. For example, the level 0 powerup could be high-jump, the level 1 powerup could be missiles, and so on.

Actual generation of the lock node terrain is a separate issue. Ideally I should be able to consider the powerup and write an algorithm to procedurally generate locks specific to that powerup. For some powerups this will be easy -- missiles would simply require a barrier that can't be destroyed without them, for example -- and for some this will be more difficult. In the worst case I can make the "algorithm" simply generate a set-piece.

Some lock nodes could be bossfights instead of platforming barriers. The same principle applies, except that the "lock" is simply "there's a monster guarding this door". Bosses could of course also drop powerups on death.

How's this all sound?
Logged
baconman
Level 10
*****


Design Guru


View Profile WWW
« Reply #58 on: June 08, 2010, 09:22:46 AM »

It sounds solid, like Gentrieve, but runs risk of being too linear. While I agree with having that tiering system, I would also allow a couple of additional branches/loops that also contain a complimentary item.

For instance, having a double jump -and- a high jump module; scoring one or the other will still allow for the higher platform to be reached, and while having both is unneccesary, taking the time to score them both results in an advantage to the player. So would having the aforementioned destructible blocks, and multiple types of ammo to take them out with. Players who want more firepower can go for it, and players who try to speedrun/minimalist run games like this can take a more direct (and yet, nonlinear) route to do so. They're players too, and their style of play is no better/worse than the rest of ours.

Then the balance of pro vs. casual players comes down to fine-tuning the latter tiers in difficulty - they should be doable with one of each "type" of item, given a tight/challenging margin of error (for the hardcore player); but having some double-sets of advantages like that should make them accessible (but somewhat challenging still) to "the anyplayer."
Logged

Derakon
Level 2
**


View Profile
« Reply #59 on: June 08, 2010, 10:28:25 AM »

Nonlinearity is a "version 2" feature, in my opinion. I don't think there's anything in the design I proposed that actively works against nonlinearity, but it adds complexity, and this project is complex enough as it is! I'm up to 8000 lines of Python, and Python's one of the more expressive languages out there.

That said, I do plan to have extra powerups that aren't keys to lock nodes, but just make the player more powerful. They'll provide more meaning to general exploration.

I don't think that speedrunning a game like this is necessarily going to work too well; far too much boils down to getting a "good map" and not accidentally taking dead-end side-trails. Then again, I've seen speedruns of Diablo and Spelunky, so clearly some speedrunners are willing to put up with the necesarry gambling.

The game can of course be sized more or less arbitrarily, and the size of the game map will dictate how many lock nodes can be placed and therefore how many powerups are available. Mapgen is, in general, quite configurable.
Logged
Pages: 1 2 [3] 4
Print
Jump to:  

Theme orange-lt created by panic