The Dungeonator
Overview
The Dungeonator is, as the title indicates, a procedural dungeon crawl generator. When completed, it will override the native world generation code entirely, producing an infinite expanse of mines, tunnels, caves, and more, packed with mobs, traps and treasures.
Potential future additions include: biomes (lava, ice, forest, aquatic), classes, NPCs, quests, an automated DM (Dungeonator Master), procedural or prefab puzzles, ...
Technical Details
I'm using a combination of pure procedural generation and tile-based prefabs to assemble the dungeon. This allows for a great deal of flexibility and variety, as I can seamlessly drop nice hand-made tiles or sets of tiles into the sea of procedural content.
Underground biomes are also a possibility.
Prefab 'widgets' can be used to decorate tile-based chunks. They can also be used to dynamically populate procedural chunks based on dimensions and tags.
Roadmap
This information is laughably preliminary and subject to significant change. This rough road map comprises the earliest phase of this project. At the end of this phase, the Dungeonator will be generating an infinite (a little birdy told me it was 8 times the size of the Earth) labyrinth of very uninteresting rooms and passages. After that, the real fun can begin.
- [Done] 0.0.1 “Flatland” - Flat, featureless terrain generation with stone base.
- [Done] 0.0.2 “Labyrinth” - Simple NESW tile-based generation and edge/entry matching. Effectively an infinite random maze. Experiment with storage and import mechanisms for tiles. Build basic Chunk Editor.
- [Done] 0.0.3 “Compass Rose” – 12-exit tile-based generation and matching. More complex pathways can emerge. Experiment with exit weighting to vary likelihood of loops and overall difficulty of traversal. Experiment with procedural generation for passage chunks.
- [In Progress - 67%] 0.0.4 “Great Hall” – Experiment with room types, e.g.: storage/cell (1-exit), wide passage (2-exit), hub (3+ exit). Experiment with room weighting vs. passage weighting in overall generation scheme. Multi-chunk rooms. Candidate selection based on exit and wall compatibility. Experiment with size weighting and need for chunk pre-reservation.
- [Not started] 0.1.0 – Revisit design and formulate further goals
Some progress on the AMT system:
http://i.imgur.com/mC7DB.png
http://i.imgur.com/6ilNt.png
This is AWESOME, once finished I may run a dedicated server of this, keep it up!
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:
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:
I would definitely be interested in talking to you. :)
@lawliet555
It's not currently possible, but it will definitely be possible in later versions. I'm intentionally avoiding it for now because I don't want anyone to be using this on a real server yet. The first version I expect to maybe be ok for real use will be 0.1.0. In that version, I plan to offer a couple basic configuration options:
I also hope to have zone teleports in that version (i.e. if you're using the dungeon as an extra world, you can specify zone teleports in the default world that will take adventurers to the dungeon).
As always, I'm open to feedback and suggestions on this or any other feature.
Is it possible to get this as a loadable world though Multi Verse or other such plugin. I would like to look at using this in the future when you have the different types of rooms and such more complete but want to run this along side a couple of other maps.
Thx
Sayomie
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.
Everything is to throw an error but may be able to be here for test server with a few plugins
@PyPKjE
Your folder structure should look like:
craftbukkit.jar
libs/
- jnbt-1.1.jar
plugins/
- dungeonator.jar
- dungeonator/
- - dungeonator.db
- - tiles/ (a bunch of files in here)
- - widgets/
Add to quit the same :/
@PyPKjE
You need to add JNBT 1.1 to your libs folder.
@grindle2000
Did you copy the dungeonator.db file and the library folder as well?
Why quit problem?
[SEVERE] Error occurred while enabling Dungeonator v0.0.3 (Is it up to date?): org/jnbt/Tag
java.lang.NoClassDefFoundError: org/jnbt/Tag at com.aranai.dungeonator.Dungeonator.onEnable(Dungeonator.java:135) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:188) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:957) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:280) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:176) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:159) at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:118) at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:52) at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:141) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:388) at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
Caused by: java.lang.ClassNotFoundException: org.jnbt.Tag at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) 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(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 11 more
@grindle2000
AH i didnt have a libs folder at all . I made one and dropped in the file and it loaded right up :)
I tried it and it generated a world of rooms all exactly the same lol from bedrock to sky :)
@grindle2000
It will be in your base minecraft server folder, e.g. the following structure:
craftbukkit.jar
libs/
- jnbt-1.1.jar
plugins/
- dungeonator.jar
@grindle2000
im sorry to ask what is probably a newbie question but where is the libs folder lol?
@grindle2000
In your libs folder.
where does jnbt-1.1.jar go ?
Please add some screenshots :D
:D Omg this will be awesome ill be putting up a test server soon for it.
New version, 0.0.3 "Compass Rose" is up for download. Still very much an alpha release; use at your own risk, on a server that contains no other worlds. This version adds a better room editing and generation process, improves performance and adds a starting room library.