[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.

  1. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Some early work on room theme palettes for automatic material translation: http://dev.bukkit.org/paste/4308/

    Basically the idea is that you can flag a room as available for multiple themes (e.g. "default,wood,frozen"), and Dungeonator will instantiate the room in the generator with key materials converted to their thematically appropriate counterparts. Thus you can build a room once, and have it appear in multiple forms (with different materials) with no extra work.
  2. Offline

    fatmarley

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
  3. Offline

    BioRage

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Got a few questions;

    Would you happen to have some screenshots; also, is this WGEN?

    Idea:

    I had an idea, where if you enter a certain zone with a party for example, it teleports you to a:
    --> New Generated World (Which would be whatever you make the dungeones spawn x-z, or have pre defined areas for dungeons
    -----> So new "world" temporarily, once the map is beaten, they all get teleported back, essentially.
  4. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    @BioRage This version mainly added performance and functionality improvements, so not much visual difference. The full screenshot album can be found here: http://imgur.com/a/C3DZn

    I'll be adding some more screenshots as I build up a more interesting room library. If anyone currently trying out 0.0.3 has added some interesting rooms or has a screenshot to show, feel free. :)

    0.0.4 will have widgets and room sets (and maybe the aforementioned automatic material translation system), so that should be more exciting to look at.

    The zone-based teleport is planned. What I'd like to do is extend the world generator for normal worlds to periodically add ruins that have teleport zones into the dungeon world.

    I've considered instances (temporary dungeons) as well. I'm not sure if a plugin can delete a world; if it can, that's fairly simple. Are you suggesting restricted X/Z bounds on the instanced dungeon as well? That might be more difficult.
  5. Offline

    BioRage

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    @Timberjaw
    So currently it just adds to the WGEN right? Or do you self spawn things?

    What I meant by X/Z is that they are all different dungeons;

    however, if it's possible, you can bound it to the zone based-teleport; for the instances... if instances were applicable.

    @Archelaus


    May have an idea on deleting a world... this way it could be less server intensive...

    This post has been edited 1 time. It was last edited by BioRage Dec 4, 2011.
  6. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    @BioRage It's WGEN, yes. There are some editor commands for loading/editing specific rooms, but it's primarily intended to be an infinite automated generator like any other.
  7. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Here are the planned features for 0.0.4:
    https://github.com/Timberjaw/Dungeonator/issues?milestone=6&state=open

    My goal is that 0.0.4 will actually be roughly playable. The primary features are:
    • Widget support (nodes, widget editing, generator instantiation)
    • Room set support (creation, editing/loading, generator reservation, instantiation)
    • Automatic Material Translation (AMT) (editor previewing, save pre-caching, generator selection)
    • Chest Loot (manual item support, editor loot flagging, generator loot instantiation)
    • Improved starting library (better up/down exits, passage collection, generic room collection, chamber collection, widget collection)
    I'm still proceeding with the assumption that I'll be doing all of this myself, but if any reasonably experienced plugin devs out there are interested in:
    • Room/Widget building for the library
    • Helping out with the coding tasks
    I would definitely be interested in talking to you. :)
  8. Offline

    HSAR

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    I'm interested, but "reasonably experienced" doesn't apply to me. Sorry. :(
  9. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    @HSAR You may be able to help with room/widget building; that doesn't require coding knowledge, just some in-game commands for using the editor.

    I need to finish the AMT, room sets, and widget support before it will really be worthwhile for anyone to add to the library, but if that sounds like something you might be interested in participating in, let me know and I can give you a heads-up when 0.0.4 is a bit closer to completion. :)
  10. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Some pictures from the early AMT progress, converting from the Default theme (mostly stone) to the Wood theme.

    [IMG]

    [IMG]
  11. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    The AMT functioning in the generator:
    [IMG]

    Bonus pic. This is what happens when an uncaught exception occurs in the generator: http://i.imgur.com/1rjEL.jpg
  12. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
  13. Offline

    HSAR

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    First picture reminds me of the Skylands of old.

    It looks like progress is pretty steady, keep it up! I've taken a fork of the main branch, but to be honest it's more to take a look at what you're doing; the probability of me doing anything useful is very slim.
  14. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    @HSAR Yes, I've been trying to be a little more rigorous about making progress every day or two. I had a ridiculously busy fall and will have a very busy winter, but if I don't keep working steadily this will never get done. :)

    I'm documenting my progress on the issue tracker. Anyone who wants to provide feedback on the planned features is welcome to.

    A couple more crazy generator images:
    [IMG]

    [IMG]
  15. Offline

    BioRage

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    This is amazing, hell, that looks like Fjord from WoW :D
  16. Offline

    Boxmen666

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Im having problems
    I put both dungeonator files into plugins folder and created a world using multiverse with the commands
    /mv tp world -g Dungeonator

    when the world was created,it was just a normal world...
  17. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Dungeonator is not directly multiverse compatible at the moment. It overrides the default world.
  18. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Test of the Room Set feature in the editor:
  19. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    A (boring) 2x1x2 room set in the generator!
    [IMG]
    This is a bigger deal than it might look. This feature took about 12 solid hours of coding yesterday and today, an has been one of the biggest technical hurdles since the original room generation process. Getting a room set from concept to population requires:
    1. Editor support. Room sets are semi-arbitrary volumes. A room set can be 2x2x2, 10x1x3, etc. The editor adds full doorway and corner hinting for the entire room set volume. Doorways can be specified per-room (though specifying doorways for internal rooms would be silly).
    2. Saving and loading. Room sets are stored in their own subfolder (per set) with an additional meta data file to store set bounds.
    3. Room reservation. As the generator does its thing, it "looks ahead" for spots it can drop room sets in the future. It does this by randomly selecting a few points at a distance from the currently generating chunk, selecting a few random sets, and comparing the bounds of the sets to the available space around the target chunk. If there's enough room, it stores the room coordinates for each room in the bound, to let the generator know that when those chunks do eventually come up in the generator, it should prioritize the reservations over the random room assignment.
    4. Room population. The generator checks each chunk for reservations before selecting random rooms, and pulls the appropriate set files.
    Widget support is underway. Keen readers will recall that there are three major features planned for the next version: 1) Room sets, 2) Widgets, and 3) a better starting room library. #1 is functioning; #2 and #3 are underway.
    You can see the status of the current milestone here: https://github.com/Timberjaw/Dungeonator/issues?milestone=6&state=open
  20. Offline

    Dec64

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Literally amazed by this project, great to see its still going, and getting closer to being usable!
    Sondre Berntsen likes this.
  21. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Widget progress:
    • Widget editor: new, save, load, multiple sizes, hinting
    • Node editor: new, add, remove, move, autotarget, save, load
    • Generation: random widget selection (not theme-aware)
    This just leaves the starting Library as the last major barrier to releasing 0.0.4 (and a million tweaks and fixes, of course). I'm pretty excited. :)

    Example:
    The leafy bits sticking out of the floor are widgets (they're not a part of the room itself). Not very exciting widgets, but widgets nonetheless. This room has 2 'tiny' (2x2) widget nodes.
    [IMG]

    Feature Cuts:
    I've cut a couple of the technical features from 0.0.4 while I consider options: separate library and active databases, and exact door matching.

    For the databases, it's very convenient to be able to JOIN in results to get the library information along with the active information. There are workarounds, but they're time consuming.

    For the exact door matching, it's just an issue of math. To allow exact door matching, the Library requires 2^14 (16384) rooms, which will require a somewhat unreasonable amount of effort, to say the least. I'm considering how best to approach this, as I want to minimize the number of dead-end doorways. I may prioritize Up, Down, and NESW, and put less importance on NNE, WSW, etc.

    This post has been edited 1 time. It was last edited by Timberjaw Feb 5, 2012.
  22. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    If you're interested in checking out a PREVIEW build of 0.0.4 and possibly building some rooms/widgets, send me a PM.
  23. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
  24. Offline

    doughsay

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    This project is amazing. I really can't wait to use it with Multiverse. I would love to design some rooms, I'll send a PM for the preview build.
  25. Offline

    HSAR

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    How possible would it be to add a few signs with hints about nearby rooms in the waystations?
  26. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Status Update
    I've been devoting a LOT of time to the Dungeonator the past two weekends. Weekend #1 was exclusively repair work. Minecraft switched from a 128-block height limit to a variable height limit, and in doing so broke a large swath of Dungeonator's map generation functionality. I had to do a fair bit of rewriting.

    Weekend #2 was dedicated to performance improvements. The new Minecraft chunk structure was causing some severe performance issues in Dungeonator. I ended up creating an on-the-fly database conversion setup that loads the SQLite database into memory at startup and saves it back to disk at shutdown. The outcome of that is a reduction of per-chunk generation time from about 200 milliseconds down to less than 50. At 200ms per chunk, if you walk in a straight line at normal speed, you'll cause 9 chunks to be generated every few seconds. The server will barely have time to finish the blocks for the last batch before the next comes up. Needless to say, it was chugging horribly. Things are much smoother now.

    With all that boring (but important) junk out of the way, next weekend is all about rooms! The last task before the 0.0.4 release.
  27. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Great to hear you're still working on this ^^ I won't be back in town till about the 24th but I can test then (if 0.0.4 is out ;) )
  28. Offline

    Adondriel

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Woot! Im so glad this didnt die! i'm still waiting! :D thank you so much!
  29. Offline

    Firefly

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    I haven't devoted any API knowledge to Generation but looking at your videos/pictures really makes me want to delve into it. Splendid work.
  30. Offline

    Adondriel

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Minecraft account:
    MCUSERNAME
    Are you a developer of bukkit? or just bukkitdev staff? as in the guy who checks the plugins?

Share This Page