[WGEN] The Dungeonator - A Procedural Dungeon Crawl Generator [v0.0.3 Preview Now Available!]

Discussion in 'WIP and Development Status' started by Timberjaw, Feb 26, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    dak393

    very nice! You should update the first post with all your great pictures :) give people an idea of your progress at a glance.
     
  2. Offline

    Timberjaw

    Came across this in the dungeon...
    [​IMG]
     
  3. Offline

    Mukrakiish

    Wow Timber, just wow. This is coming along so cool. I wish I understood code so I could absorb all the neat things you've been doing here.
     
  4. Offline

    Timberjaw

  5. Offline

    Requiembob

    I'm sorry to noob this thread up, but would a multiplayer version be possible, however, using the same 12*12 chunk space each time it regenerates the map, such that in the specific enclosed area of the map, the 12*12*128 block, whenever the script is run, it firstly fills in the entire block and then specifically edits out the maze/dungeon from inside it and places the various traps, etc. Note that if it uses worldedit to do it, a few timely delays so that the process is done over 30 minutes or so would be appropriate?

    have you seen the dungeon seed generation code from Pokemon Mystery Dungeon? that could be aquired through ROMS or something.... All that is required is the floorcode, a height and stuff.... anyway, sorry to noob around, and nice work! Do you mind if i try and work out the code so I can attempt to replicate something like this for the aforementioned purpose?
     
  6. Offline

    Hunt800

    Suggestion regarding chests: make them randomly generate items. That way you can have 2 of the same "room" but the contents of the chests can vary slightly. Another idea would be to save the items that are placed in the chest, but instead of loading those exact items, use them as a list of the items that the chest is allowed to generate (pick randomly from the contents). This way players could choose which items they want to be available in the chest without players saying "Okay this room has the glowstone chandelier, that means the chest will have 15 diamonds, 6 gold ingots, and 3 pieces of iron ore."
     
  7. Offline

    HSAR

    Would require external data to be saved in, though. Even more data, yay!
     
  8. Offline

    Timberjaw

    @Hunt800 @HSAR What I plan on doing is giving the room builder some options for the chests:
    1. Exact items (the chest will always have the same items)
    2. Item list (pick X items out of list of N items)
    3. Random from category (pick X items out of category Y)
    4. Random (pick X items out of full treasure list)

    Categories would be things like: tools, armor, food, utility (e.g. torches), resources-raw (ores), resources-refined (ingots), etc. Quality could be specified by the builder and/or increase with depth.

    Later on, I'd also like to add a chance for opening chests to spring a trap or have other effects.

    @Requiembob Should be possible fundamentally; using Dungeonator for that purpose may be more trouble than it's worth though; Dungeonator doesn't have real procedural generation right now. It just selects rooms from a library based on doorway positioning and stacks them in chunks. The source is on GitHub though; feel free to download it and poke around. :)
     
  9. Offline

    dak393

    @Timberjaw What you should do is hook into other plugins like phatloots and a chest to button one (if its not done I wanted to make it so that a chest sends a redstone signal when opened)
     
  10. Offline

    Timberjaw

    @dak393 I'll take a look at them. I'm generally trying to avoid dependencies though.
     
  11. Offline

    HSAR

    It might be easier to have lists of preset chests rather than dynamically populate them.
     
  12. Offline

    Timberjaw

    @HSAR Easier, sure, but it might start to get old around the time you find your 917th duplicate chest. ;)

    Compared to the complexity of the generation system, stuff like chest population is not something I'm very concerned about. I have a huge list of "fun" tasks to start tackling as I finish up the boring, difficult tasks.

    More WIP: Dungeonator.com

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 10, 2016
  13. Offline

    HSAR

    Well, for one thing you may well need to depend on serverside Spout to populate chests then.
     
  14. Offline

    Timberjaw

    @HSAR I'm not sure what you mean. :confused: Chests can be populated server-side via the Bukkit API.
     
  15. Offline

    dak393

    yep and btw I was more suggesting you looked at how they did it in say phatloots :) but I know you have a great idea and will make it awesome :D good luck
     
  16. Offline

    Timberjaw

    Roadmap Changes
    I've merged 0.0.4 "Cell Block" and 0.0.5 "Great Hall" in the Roadmap. 0.0.3 "Compass Rose" already has many of the features intended for 0.0.4, and at this point I'm ready to tackle things like Room Sets and Widgets for 0.0.5. Accordingly, 0.0.4 is now Great Hall.

    Compass Rose Release
    Compass Rose is on target for release next week after 1.8 is released and Bukkit is updated. Features are done, I just have some final testing to handle (as well as any updates needed for 1.8 compatibility).

    Website
    I'd love to get some feedback on the Dungeonator Website. I've been using this development downtime to build the first version of the site and work on some basic tutorials/guides.
     
  17. Offline

    enenra

    Are you planning on allowing hand-built parts into the generation? What I'm thinking of is for example Having an unique hall that is hand built and saved in, say, a .schematic file, to be generated into the dungeon and connected via the generated corridors etc.
     
  18. Offline

    Timberjaw

    @enenra That's exactly how all of the generation works right now. :)
     
  19. Offline

    enenra

    @Timberjaw
    Hm, I seem to have misread your first post then! Nice!

    I actually thought about how a thing like this could work a while ago. Quite extensively, actually.

    My inspiration was Torchlight. I think a system similar to its randomly generated dungeons would be really nice. What I thought would work best was to have a few preset asset-sizes, for example 32x32x16 and maybe 64x64x32, and then assemble dungeons from them according to certain rules dependent on the asset type. That would then work without procedural corridor generation, just with procedural asset-assembling.

    Furthermore, within the premade assets you'd need a way to mark certain places, for example by placing a certain wool colour, where additional smaller premade assets could be placed. For example you'd have a 32x32x16 room with, say, 4 blocks of pink wool in a square on the floor in the middle of the room. The code would then identify these as places where the smaller assets can be placed and would replace the wool with, for example, a few book shelves.
    That way the premade assets can be diversified more. And the whole dungeon would look less repetitive.

    I actually created a room and a corridor asset that time to see how it would look. If you want to, I can send it over.

    Hope it helps. :)
     
  20. Offline

    Timberjaw

    @enenra You've basically described how Rooms and Widgets work in Dungeonator. :) Rooms can contain widget "nodes", which are attachment points for decorative elements. The same room can be added to the world multiple times with different decorations. Right now rooms/corridors are one and the same in a technical sense; they're prebuilt assets that can be matched together based on their doorway positioning. I have some plans to add some genuine procedural elements later on.

    Rooms themselves will have a few criteria for matching: doorway positions (the most important factor), 'theme', and set membership (a room set is a collection of 16x16x8 rooms that go together in some fixed arrangement).

    Also on the todo list is dynamic wear-and-tear to further vary the rooms, as well as material replacement to vary theme.

    I'd love to see what you put together for your project. I've been looking in a lot of different places for inspiration and ideas (including Torchlight, and most recently, the mines in the 1.8 leak).

    @enenra Regarding asset size, my rooms are all 16x16x8, allowing for 16 rooms stacked in a chunk (though I'll likely end up doing something procedural with the top and bottom 8 blocks). The aforementioned Room Sets allow for larger areas, but in a slightly less dynamic way (the relation of the rooms in a set to each other is static).

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 10, 2016
  21. Offline

    enenra

    @Timberjaw
    I've uploaded the two as attachments. You'll just have to rename them to .schematic (it didn't allow for the upload of .schematic files, that's why I renamed them to .txt) and then load them up in MCEdit.

    Sounds great!

    Some more thoughts:

    1. Pretty important IMO, the ability to create those assets in MCEdit (actually, the main thing is that the plugin loads the assets from separate files). For example, the PhoenixTerrainMod uses the ".bbob" format (or something along those lines) for enabling the generation of assets in the world gen. The important thing for me is really that I'd prefer not having yet another format. Would be great if you'd use bbob or directly the .schematic files! :)

    2. Inspired by Torchlight, it would be great to not only support enclosed corridors and halls but also "open" areas (remember the dungeon theme with jungle? The player would walk on these ruins in the water - would be nice if that was somehow possible as well - of course with the whole thing being in a cave.)

    3. Furthermore, this is a long term thing, but it would be great to have Spout support for eventual custom blocks in particular. Currently, especially for creating different themes for dungeons, there are simply not enough blocks to make them look really good IMO. It would also be nice to vary the texturepack per "area" of a dungeon so that the themes could be much more varied. It would also allow for faking new blocks until new ones are supported by Spout.

    4. Lastly regarding the setup of the dungeon "areas": I think a Torchlight-alike approach would work here. Actually, it's really a proposal as to how to set up the entire world: bedrock layers on top and bottom and arranging the themed areas in floor groups. Basically, having a bunch of floors for each theme and then a larger stairway to lead to the next differently themed area, maybe a bedrock layer between them to be sure no one simply digs through everything (although TBH it may make sense to disable building and destroying alltogether in these dungeons anyway - or severely restrict it).
     

    Attached Files:

  22. Offline

    Timberjaw

    @enenra
    1. Too late ;) Dungeonator uses a custom NBT format. Writing a Schematic format importer probably wouldn't be a major task, however, as they are both NBT files storing the same basic data (block array, data array, tile entities...). The intended method of editing is an in-game editor tool. Rooms in dungeonator require specific meta data (such as doorway positioning) that are easiest to manage with some in-game commands. Down the road I would certainly like to offer a variety of import/export options to make life easier for content creators.

    2. Procedural biome zones are on the distant todo list. I'd love to have some underground forests/ice zones/etc. I may also try to tap into the existing biome code to determine the 'theme' for each room, as this would create contiguous zones of similarly-themed rooms with minimal extra work.

    3. Also on my distant todo. For now I'm keeping dependencies at an absolute minimum; when the core features are more mature, there are some other tools/plugins I'd love to integrate with, including Spout.

    4. Floor groups is something I've considered, but don't currently have a concrete plan for. There are a lot of performance issues to consider with a generator of this kind.

    Ideally, I'm pursuing the goal of having a Dungeonator-generated world be fully playable as a Minecraft world. That is to say, players can spawn in the world and find everything they need to build, craft, etc. That means underground biomes, loot, mineable areas, etc. Many people will see it merely as an adventure map, of course (which is fine!), so I do plan on having some options for construction/destruction rules.
     
  23. Offline

    enenra

    @Timberjaw
    1. Ok. Not ideal but with the converters it should work out.

    2. I was thinking more of still premade assets but much larger ones with open areas within them. For example, players walking on walls or over bridges over an abyss or with lava below, a huge cave with the dungeon modules in it as buildings. Might need totally different generation code, thinking about it though. Hm.

    3. Great. :) Especially RPG plugins would be suited I'd say. :)

    4. Good to know. The thing is really that I think that would make use of the available vertical space the best ^^

    5. Not sure whether having it as a fully playable world is the best thing TBH. IMO it would be easier to code and better overall to generally use this WGEN plugin along with a MultiWorld plugin so that you'd essentially have a portal as an entrance to this dungeon but the dungeon itself as just that, a dungeon.

    6. Another thing that might be nice are rare outposts placed within the dungeons. But I guess that can be done with the premade asset system as well quite easily.

    7. How is the mob spawning going to work? Mob spawners? Or do you want to make it so the players have to fight through a dungeon and the area they've cleared stays free of monsters permanently? Or the opposite?
    I think that it would be best to not use the "normal" mob spawners, actually. They're just really inflexible IMO. Ideally you'd have a system that would be able to spawn different amounts of mobs depending on how many players are currently in the area. Also, I think a system with a pretty long cooldown for monster respawn would work best. At the same time I feel there should be a way for players to leave the dungeon and then return to some kind of save points where they can continue the dungeon from after having left the dungeon for a while.

    At least that's the way I feel it would work best. ^^
     
  24. Offline

    HSAR

    Regarding aesthetic design, the dark red/black colour scheme contrasts pretty heavily (and not really in a good way, IMO) with the white background/black text. I would suggest switching to a grey background/black text or go the whole way with dark and move to dark grey background/light-coloured text.
     
  25. Offline

    Timberjaw

    @enenra
    2. Well, the assets are still premade; they're just divided along chunk boundaries for efficiency. Minecraft generates chunks with no regard for what's around them, so you typically only have a guaranteed 16x16x128 volume. If I write a .schematic importer down the line, it would be fairly simple to auto-divide it into the current room sizes.

    5. I plan on supporting both. I have a feeling most people will want to play it just as a dungeon, but I personally want to play it as its own world. We'll see how feasible that turns out to be.

    6. Can you elaborate on this?

    7. I'm leaning toward doing my own monster-spawning, and giving content creators the ability to control how monster spawning works in their rooms. Re: save points: I have a plan for something I've been calling "waystations," which are basically safe rooms with beds/chests/light where the players can reset and set their spawn.

    Thanks for the feedback! I'll have to think about this one; for the primary content of a page, I hate having light text on dark background; it makes my eyes hurt almost instantly. The current design contrast was intentional, but I might tone it down a bit.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 10, 2016
  26. Offline

    enenra

    6. I'm not sure myself TBH! Basically, the idea initially was to have some sort of safe places within the dungeon. The thing I've noticed though is that there really isn't much to do in such "camps" (as I envision them) in base Minecraft. What could be put there are trader NPCs via Citizen or Quest givers, but without those plugins the only thing I can think of on the top of my head are Save points, like you described them in point 6 and possibly some kind of portal to get back to the beginning of the dungeon that have to be activated by getting to that point first and can then be used to quickly get back to that point.

    7. There's a plugin called Death and Rebirth which more or less implements a WoW-like death system. Maybe you could use that instead of having to write your own? :)
    You'll find it here: http://dev.bukkit.org/server-mods/death-and-rebirth/
     
  27. Offline

    Timberjaw

    @enenra
    7. I'm very very dependency-averse. To begin with, I'll probably just have waystations with beds; vanilla MC supports bed respawn so that will act as a reasonable (albeit basic) checkpoint. Later on, well, I currently run a spawn management plugin, so I have plenty of death/respawn code on hand for that sort of thing. :)

    I do plan on exposing a fairly thorough Dungeonator API, however, so plugins that wish to interact with the Dungeonator will have a clean way to do so.
     
  28. Offline

    enenra

    The ideal (end user) solution would IMO be that other plugins could "replace" certain functions of the dungeonator.
     
  29. Offline

    Timberjaw

  30. Offline

    Timberjaw

    Some general biome information I've been plotting out: https://gist.github.com/1210991

    Suggestions/questions welcome. Thanks to PassivePicasso and MageRooster for biome ideas/feedback on IRC. :)
     
Thread Status:
Not open for further replies.

Share This Page