SRB2 Message Board  

Go Back   SRB2 Message Board > Sonic Robo Blast 2 > Releases > Custom Gametypes

Thread Tools
SRB2 Dungeon Crawler [v2.0.2] - A Rogue-like SRB2 experience Details »»
SRB2 Dungeon Crawler [v2.0.2] - A Rogue-like SRB2 experience
Version: 2.0.2, by Flame ("It's ok, I like you too!") Flame is offline
Developer Last Online: Dec 2020

Version: SRB2 Rating: (4 votes - 4.40 average)
Released: 05-04-2020 Last Update: 05-18-2020 Favourites: 13
Single Player Levels Multiplayer Levels Scripts Re-Useable Content Sprites/Graphics

How fast can you and your friends clear a 50 floor dungeon in this...

SRB2 Dungeon Crawler

Fight through randomly generated levels with increasing difficulty (Max: 5). Most Levels will have randomly generated enemies, and (basic) hazards. If you think this is crazy, or if you think I'm crazy for creating this, you're probably right. Don't believe me? Open up your favorite .pk3 editor and see the level for yourself!

Encounter randomly generated enemies

Experience randomly generated nonsense!

Get to to the goal!

It's also netplay compatible*! Assemble a team together!

You spawn in a random area of the map. Your goal is to reach the spring which will bring you to the next Dungeon Level. At the time of writing, all players must be present on a spring to move on. At the last level, you fight a basic Eggman boss, however he may be accompanied by other enemies to spice up the challenge.

As an added bonus, rings, score and present shield powers are preserved between level transitions.

Helpful Console commands
dng_printlevel <num> - Prints the desired level. Up to the maximum generated levels.
dng_levels <1-999> - Server only. Defaults to 5. Generates this many levels for a given dungeon. (Requires map switch+reload. Will not generate if in a current Dungeon Run)
dng_clear - Server only. Clears the current dungeon, and starts a new dungeon run from Level 1. (Requires map reload)
dng_skiplevel - Server only. Skips the current Dungeon Level. (Does not work for the last floor)
dng_gotolevel <num> - Server Only. Allows you to skip to a specified floor of a dungeon, if one exists.
  • dng_printlevel legend
    • Below is a list for what is visible to the player in a 48x48 grid (matrix).
      Tile.WALL = 0 -- Impassible
      Tile.WALK = 1 -- Walkable
      Tile.CORR = 2 -- Corridor passageway
      Tile.SPAWN = 3 -- Player Int Spawn
      Tile.SPRING = 4 -- Spring (Ascending)
      Tile.RING = 5 -- Ring collection
      Tile.ITEM = 6 -- Item
      Tile.KEY = 7 -- Key space
      Tile.ENEMY = 8 -- Enemy
      Tile.BOSS = 9 -- Boss
      Tile.PIT = 10 -- Death Pit

Problems, bugs?
  • MT_DRAGONBOMBER has been disabled for this release. It has a tendancy to cause an unknown sigsegv with the Eggman boss found on the last dungeon floor.
  • Outside of the MT_DRAGONBOMBER behavior, I have not seen any erratic behavior from any other enemy that would cause an error to happen.
  • Some enemies will be looking away from you when they are spawned. This is expected and I'm actively looking into changing this for the better in a future release.
  • If there are any enemies that DO happen to give an error, or worse, a sigsegv, please report it! I understand the mixing of enemy types can have unexpected results. Please report anything you may be doing at the time of error, if one were to occur. Screenshots and providing your srb2win.RPT file also helps too! Let's work through this together.

Speical Notes
Level generation is random. So don't be surprised if you find a level with a spring next to your player spawn, or a level that has multiple of the same enemy. I've tried to mitigate this as much as I can.

Spoiler: Changelog
- Added a helpful message for dedicated server hosts that identifies what Dungeon Level a player is currently on.

- Fix of Lua error on NONET builds that attempt to find the ALLOWJOIN console variable.
- Additionally, hosting dedicated netgames without problem or error is now possible.

- You will no longer obtain erroneous extra lives caused by going to the next dungeon level with 100 or more rings.

- Added command: dng_gotolevel - Allows you to skip to a specified floor of a dungeon, if one exists.
- Significantly improved networked Dungeon Code for new joiners. [Special thanks to LJ Sonic]
-- Dungeons with less than 100 levels can now safely be joined without host error/sigsegv.
- Default generated levels have been increased from 5 to 10

- First wave of Level clear conditions have been added:
-- Added Level clear condition: Key Search.
--- 15% chance to encounter a Key level in a dungeon. A key must be collected to move on to the next level.
- Existing HUD Element graphics have been modified and new HUD graphics have been added to reflect the addition of this first Level clear condition. [Special thanks to Rubberjig]
- Additional clear conditions will be progressive updates to be added overtime.

- Console command dng_skiplevel now properly brings ALL players to the specified spring instead of the person (server) that executed the command.

- Fixed small typo within the code that originally wasn't triggering anything.
- Disallowed joins for *new players* joining servers while in the middle of a run if the number of generated levels is greater than that of it's set default value (5)

- Initial Release

Special Thanks

Lat' - Inspiration to this Random Dungeon Generation script.
LJ Sonic - Code utilization to optimize sending Dungeon data over network buffer.
CobaltBW - Playtester and Brainstormer for enemy difficulty
Ruberjig - Key and Hud Graphics
Tatsuru - Playtester
Amperbee/Rapidgame7 - Playtester
DylanDude - Playtester
Digiku - Community playtester/support

Download Now

File Type: zip (1.70 MB, 667 views)
File Type: zip (1.73 MB, 1727 views)


Click image for larger version

Name:	srb20386.gif
Views:	9964
Size:	2.12 MB
ID:	30706   Click image for larger version

Name:	srb20391.gif
Views:	9841
Size:	1.68 MB
ID:	30707   Click image for larger version

Name:	srb20382.gif
Views:	9785
Size:	909.1 KB
ID:	30708   Click image for larger version

Name:	srb20378.gif
Views:	9841
Size:	1.39 MB
ID:	30709   Click image for larger version

Name:	srb20392.gif
Views:	9855
Size:	207.5 KB
ID:	30718  

Click image for larger version

Name:	srb20383.gif
Views:	281
Size:	528.7 KB
ID:	30720   Click image for larger version

Name:	srb20192.jpg
Views:	128
Size:	76.0 KB
ID:	30729   Click image for larger version

Name:	srb20193.jpg
Views:	155
Size:	118.3 KB
ID:	30730  

Supporters / CoAuthors

Show Your Support

  • The author of this addon has given explicit permission for its content to be re-used and/or reproduced.

Old 05-25-2020   #22

Great mod! There's a small Lua error if you're trying to play this on NONET builds. The Lua tries to retrieve the ALLOWJOIN console variable, which does not exist under NONET. As a result, springs are broken.

Under Lua/1-Library/srb2Functions.lua, line 309, change this line:

allowjoin = CV_FindVar("allowjoin")
if mapheaderinfo[gamemap].dungeon and DNG and #DNG.levels > 100 and allowjoin
to this:

local status, allowjoin = pcall(CV_FindVar, "allowjoin")
if status and mapheaderinfo[gamemap].dungeon and DNG and #DNG.levels > 100 and allowjoin
That fixes it right up. The rest of the mod plays swimmingly!
Digiku is offline   Reply With Quote
Old 05-26-2020   #23
"It's ok, I like you too!"
Flame's Avatar

That's wonderful! What a sneaky find!
Conveniently enough, I think it warrants a patch release considering this also fixes an outstanding unrelated 'dedicated' netgame issue as well. It just so happens to be something I've been trying to solve in my own spare time.

With that said, v2.0.2 of this script is available!
- Added a helpful message for dedicated server hosts that identifies what Dungeon Level a player is currently on.

- Fix of Lua error on NONET builds that attempt to find the ALLOWJOIN console variable.
- Additionally, hosting dedicated netgames without problem or error is now possible.
Thanks again, Digiku! :)
Consider giving me a follow on Twitter!
  〃 ∩ ∧_∧
  ⊂⌒( ・ω・)
  `ヽ_っ_/ ̄ ̄ ̄/
Flame is offline   Reply With Quote
Old 05-26-2020   #24
jameds's Avatar

Could you apply HUD translucency? It was a little out place seeing LEVEL totally opaque to the rest.

Also, you can just attach the pk3 itself, since it's already a zip. =P

I wish there was more progression of difficulty going through the dungeons. That's probably difficult with SRB2's enemies since they're not the most threatening though. It was a pleasant experience though.
Originally Posted by AlamTaz
please directly any issues about to NOTGIVINGAFULLFUCK

Discord: james#8054
jameds is offline   Reply With Quote
Old 06-21-2020   #25
Scorpius_Hedgememe's Avatar

This was really fun! I enjoyed it a lot!
Discord: Scorpius#1065

Fun Fact: 12 plus 5 equals to 17
Scorpius_Hedgememe is offline   Reply With Quote
Old 07-01-2020   #26
Hybrid Kart Mapper/Porter
Latius's Avatar

Not sure if this is intended or not, but I was playing with a bot, and the bot triggered the spring, causing us to go up a floor as a result.
You're giving me a little MANIA.

SRB2Kart Track Mapper
Latius is offline   Reply With Quote
Old 07-14-2020   #27
frozenLake's Avatar

It's also netplay compatible*!
Your post seems to be missing an asterisk paired with this one. For shame.
"ringslinger is more unbalanced than sonics thok" -White, 11/6/2017
frozenLake is offline   Reply With Quote
Old 08-04-2020   #28
Gambit's Avatar

I really like this so far. Here's some ideas & suggestions I have:

  • Clear Condition: Kill all enemies in the level to unlock the exit. This should also be coupled with a new HUD addition underneath Level titled "Enemies", which counts the number of enemies currently in the stage which haven't yet been destroyed. The spring should unlock when this counter hits 0. You could have an icon depicting a Unidus appear next to the Enemies counter when this has been chosen as the clear condition. It could either be in a single number format (like the Rings counter), or it could be in a "0/0" format (e.g. "Enemies: 9/10"). Personally i'd prefer the latter. Now, this could also cause problems w/ Hive Elementals, so you might wanna make it so Bees don't affect the Enemies counter (and for that matter, maybe just don't allow individual Bees to spawn as a random enemy type, only Hive Elementals). Alternatively, you could instead make it so that when a Hive Elemental spawns a Bee, it causes the Enemies number to increase. Doing this might warrant using the single number format for the Enemies counter after all.
  • Clear Condition: Boss Ambush in the middle of the dungeon. The indicator for this condition could be identical to the Key condition, where it's a padlock next to the Level counter, but then when you get to the spring room, you see a boss next to it, where you have to kill said boss to unlock the spring. This would also make it feel like an actual ambush as well, since when you start the level, the player won't be sure whether it's a Key level or an Ambush level. It could be a fun surprise.
    You could also extend the "dng_levels" command to include an extra variable on the end, such as "ambush #", that would allow you to force every Nth level into a boss ambush. For example: "$dng_levels 50 ambush 10" would create a 50-level Dungeon where a boss ambush occurs on every 10th level. Obviously, true end-dungeon bosses should override every other possible clear condition, thus making it so Level 50 is a true end boss that spawns the goal post on death. The default ambush variable would probably be -1, which would cause this clear condition to adhere to its RNG chance instead (like with all the other clear conditions). That way, an ambush value of 0 would cause it to never occur (conversely, 1 would cause it to be on every single level).
  • Expanding on the above, more boss types to choose from besides GFZ Egg Mobile would prove to be very interesting. The easiest ones to implement would be Egg Slimer, Fang, and (dare I suggest) Metal Sonic and even Brak (No ambush flag). Slimer requires an Axis Point in the boss room, and Fang needs his own type of waypoints (literally named "Fang Waypoint"s) that you could dot around the same area as the axis. Metal Sonic doesn't do his energy balls if you don't have any gather points on the map, but to be honest that might actually be for the better imho lol. Putting in Brak as a potential boss would probably require the implementation of pillar walls as a type of random level design tile, in order to give players the ability to LoS his snipe attack (at least if you want it to be fair).
  • I don't recall seeing any S3&K shields among the random monitors. Idk if this is a hard limit set by what the Weak & Strong random monitors can spawn, but it would be nice to see these shields appear as well.
  • Shield monitors should probably be spawned as golden monitors, to make it more multiplayer friendly.
  • A number of enemies I haven't encountered yet that I think would make things more interesting: Egg Guard, Unidus, Suspicious Lance-a-Bot Statues mixed in with regular Lance-a-bot Statues, Crushstacean, Banpyura, Spincushion, Penguinator, Pophat.
  • Death Pits could also be mixed in with Lava Pools that are close enough to ground level that, if the player tries to run over them w/o jumping, they'll get hurt. This would make going through those 48x48 hallways with Sonic more engaging, instead of just using your momentum to slide over all the death pits.
  • In addition to the above, spike traps would be a neat addition to see. Maybe even some wall-spikes?
Check out my Soundcloud here!
I do a lot of Sega Genesis/Megadrive style covers (w/ polyphony limitations) + other stuff
Gambit is offline   Reply With Quote
Old 09-17-2020   #29
CST1229's Avatar

I have a problem.
The level is too easy.
There could be some characters or modes to make it harder, but i'm not sure.

---------- Post added at 04:43 PM ---------- Previous post was at 04:37 PM ----------

Originally Posted by Gameobatts View Post
smh, should've called it SRB2 Dungeon Crawla
Only if your character is forced to be Crawla.
How did Legacy Brak stop me and impossibly damage me? He must be hacking.
(Map) <Retry] /Menu\ |MORE CST|
(mod not mine)
CST1229 is offline   Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT. The time now is 05:34 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, vBulletin Solutions, Inc.