[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)
    Still working on this, but I'm doing boring technical stuff with the NBT format for loading/saving rooms.
  2. Offline

    Adondriel

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Yay it is good to hear :)
  3. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Working data export (room schematic) from the in-game editor!
    [IMG]
  4. Offline

    Zeroth

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    :O I'm so glad you're still working on this!
  5. Offline

    Mukrakiish

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    My thoughts as well. Been watching since this thread first popped up. Now that bukkit supports some new chunk manipulation options I'm really excited to see where this goes.
  6. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @Mukrakiish I've actually chosen not to use the built in world generation features for now (they're not entirely suited for what I'm doing), but I'm excited to see what other people come up with as well. :)

    I'm going to try to record a video shortly showing off a little bit of the editor functionality. No voiceover but it should give an idea of how the new/save/load operations work.
  7. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
  8. Offline

    HSAR

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Looks like it's working well!
  9. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    didn't want the video to end >.> looking good :)
  10. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Some more progress (image gallery continuing from http://timberjaw.imgur.com/dungeonator_wip#BWSop). Performance is pretty bad. The server seems to be generating chunks just fine, but the client is unable to handle it for some reason. It may be related to lighting updates, which are probably unusually extreme based on the data set I've put in the library (torches everywhere!). Hopefully that means this is a worst case scenario.


    Glitchy Library Test
    [IMG]

    1-Room Library
    [IMG]

    1-Room Library
    [IMG]

    2-Room Library
    [IMG]

    2-Room Library (Interior)
    [IMG]
    TAT, dak393 and Professor29 like this.
  11. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    I've been trying to get a good video of the current generator, but I'm not having much luck. Any video tool and/or codec suggestions are welcome. I've been using CamStudio and a variety of codecs, but I'm getting lousy quality and lousy framerate (though my in-game framerate is ok).
  12. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    I use my built in quicktime screen recording >.> not much help past that but your screenshots look very cool. Glad to se progress on this :)
  13. Offline

    loganwm

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    I used Fraps to record some high quality video from Minecraft [albeit, in 30 second chunks due to the free version limitations.]

    Here's how it turned out qualitywise after compression (Filesize: roughly 22.4 mb):
    http://www.youtube.com/watch?v=U9jjCC_RICc
  14. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @loganwm Fraps seems to work pretty well. $37 is a bit steep though.
  15. Offline

    loganwm

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Use the free version. The watermark and the 30 second limitation can be worked around relatively easily.
  16. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    wow too of my favorit WIP plugin devs in one thread :p Ya most people I know use fraps
  17. Offline

    TAT

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    I also use Fraps, I even have 5 licenses for it xD
  18. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @TAT why the heck would you have 5 licenses for Fraps? Just curious.
  19. Offline

    HSAR

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    I'm sure if you wanted to give an IP address on limited distribution we could find some people to try and get a video up. I'm running FRAPS myself, and it works pretty well (apart from the huge filesizes I end up with, bloody AVI).
  20. Offline

    TAT

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Just to be sure I got enough for all my computers xD (and in case a friend wanted to borrow)
  21. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    v0.0.2 PREVIEW version is now available for download.

    Warning: This is a preview build for people interested in getting an early look at the Room Editor and basic world generation features. It may trash your world(s). It may crash your game. It may unexpectedly eat up all of your memory and max your CPU(s). It has certainly done all of the above to me on multiple occasions. Use at your own risk!

    Now that that's out of the way, if you're still interested, you can download it here: v0.0.2-PREVIEW.

    Getting Started:
    Full notes are available below, but here's a basic Getting Started guide. This assumes you're an OP and running CraftBukkit RB 1000 or higher. You'll also need Graham Edgecombe's JNBT library (place it in your libs/ folder).
    1. Place dungeonator.jar in your plugins folder. Please please please run this on a test server, preferably one for this purpose only.
    2. Start your server. You should see some startup messages related to initializing the database, data store, etc.
    3. Join. You'll be in what seems to be a normal MC world. You can start walking to reach newly generated (Dungeonator) regions, but they'll just be flat right now because you haven't created any tiles (rooms).
    4. Run "/edit new" to initialize the Room Editor.
    5. Place some blocks.
    6. Run "/edit save name:MyFirstRoom library:true" to save your creation.
    7. Place some more blocks (you can run "/edit new" again to reset the editor if you want).
    8. Run "/edit save name:MySecondRoom library:true" to save your creation.
    9. Start walking! You should soon encounter newly created chunks built from your saved rooms.
    Things That Work + General Notes:
    • Chunk flattening - the plugin does not currently include ANY tiles (rooms). By default the Dungeonator will simple flatten all new chunks. Note that this does NOT include the starting chunks. You'll have to walk a bit to get out of the normal MC chunks.
    • Named arguments for commands. This means you can specify command arguments in any order, e.g. "/edit save library:true name:MyName" OR "/edit save name:SomeName library:false". Arguments can be boolean values, integers, floats, strings, or comma-separated lists of these data types.
    • Permissions are NOT supported. Everything is based on OP status.
    • Dungeonator currently places OPs in a simple god mode.
    • I set my view-distance=4 in server.properties for performance reasons. I'm still working on performance issues, so you may want to try this if you're noticing a lot of generation/loading lag. In the long term this may be worthwhile anyway since most if the dungeon interior will give relatively short LOS.
    • /edit new - initialize the Room Editor. Arguments: flatten (bool, default true), hint (bool, default true). I highly recommend simply using "/edit new" and leaving the arguments at their defaults; I have done almost no testing of the Room Editor without flatten in particular.
    • /edit save - save the contents of the Room Editor to the tile folder (plugins/dungeonator/tiles/). Arguments: name (string, required), library (bool, default false), path (string, defaults to the tile folder). I recommend leaving 'path' alone for now. Use 'library:true' when you're ready to add the saved room to the database (for use in the generator).
    • /edit load - load a saved tile into the Room Editor. Arguments: name (string, defaults to a timestamped generic name), path (string, defaults to the tile folder). I recommend leaving path alone. Note that the *.nbt file extension will be automatically added to names, so you don't need to specify it when saving/loading. Important: you MUST run "/edit new" before loading a room.
    • /edit exits - specify exit (doorway) locations for the current room. Arguments: reset (boolean, default false), delete (string list, default null), add (string list, default null). Doorways are specified by their compass directions. Valid directions are: N,NNE,ENE,E,ESE,SSE,S,SSW,WSW,W,WNW,NNW,U,D. Long names (northnorthwest, down, east, etc) are also accepted. Example: "/edit exits delete:n,ssw add:west,u" will remove the north and south-southwest exits, and add exits to the west and up. Important: this command is essentially useless right now. Exit data will be stored in the saved tile, but will be ignored by the generator (for now).
    • /edit teststack - flattens an adjacent chunk and randomly selects tiles from the test library to populate it. The test library includes all rooms you've saved in the current session. Arguments: none.
    Things That Don't Work + General Warnings:
    • Doorway matching. The generator assigns rooms randomly to each generated chunk. It will not pay any attention to doorway locations, so you may see a lot of dead ends if you have tiles with few exits.
    • You can't remove individual tiles from the library without manually accessing the database. If you delete the database, it will be recreated (empty) on next startup with no tiles. The actual tiles folder will be unaffected.
    • Don't delete a tile from your tile folder without also removing it from the library. I assume the results will be bad. Note that unless you've specifically added the tile to the library, its presence in the tile folder does NOT mean it's in the library.
    • Don't get too attached to your tiles. In all likelihood they will NOT work in future versions of the Dungeonator. Backwards compatibility is not a priority for me at all at this stage.
    Feedback:
    Let me know what you think!
    dak393 likes this.
  22. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    AWESOME! will try it out now!!!
    getting errors :(
    on start up:
    Code:
    19:51:49 [SEVERE] Error occurred while enabling Dungeonator v0.0.2 (Is it up to date?): org/jnbt/Tag
    java.lang.NoClassDefFoundError: org/jnbt/Tag
        at com.aranai.dungeonator.Dungeonator.onEnable(Dungeonator.java:136)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:126)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:878)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:272)
        at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:162)
        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:146)
        at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:284)
        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:271)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Caused by: java.lang.ClassNotFoundException: org.jnbt.Tag
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:36)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:24)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 11 more
    
    attempted command "/edit new" :
    Code:
    org.bukkit.command.CommandException: Unhandled exception executing command 'edit' in plugin Dungeonator v0.0.2
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:37)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:129)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:320)
        at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:713)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:677)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:670)
        at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:85)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
        at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:451)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Caused by: java.lang.NullPointerException
        at com.aranai.dungeonator.Dungeonator.onCommand(Dungeonator.java:172)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
        ... 12 more
    
  23. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @dak393 So...when I said it had no dependencies...I lied. Oops.

    You'll need the JNBT library. Credit to the fine Graham Edgecombe for JNBT. Place the jnbt jar file in your libs folder.
  24. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    ok cool gonna test it again now :)
    Edit: looks like same errors :(
    Edit: grabbed every dependency I had in my main folder in an act of desperation and still no luck XD
  25. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    So anyone else have any luck with this?
  26. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @dak393 Where did you put the jnbt file?

    To elaborate: it looks for jnbt-1.1.jar in the libs/ folder.
  27. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    /Users/****/Desktop/Test_server/lib
    also tried renaming (to jnbt.jar) and re-downloading to no avail
  28. Offline

    Timberjaw

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @dak393 should be libs, not lib.
  29. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    :confused: ok will try that everything else worked in lib...
    Edit well seems to be working XD testing now
    @Timberjaw soo I created a few rooms saved them and well its not auto generating the rooms I walk (even into a new chunk and nothing happens)
  30. Offline

    dak393

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Getting this:
    Code:
    21:16:34 [INFO] Call to getOrCreateChunk(10,30)
    21:16:34 [INFO] Call to getChunkAt(net.minecraft.server.ChunkProviderServer@1d71bc3f,9,29)
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number2.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number2.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number2.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number2.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number2.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/MyFirstRoom.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number3.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/Number2.nbt
    21:16:34 [INFO] Cache hit for /Users/DAGR/Desktop/Test_server/plugins/Dungeonator/tiles/MyFirstRoom.nbt
    

Share This Page