(The lone pillar in this pic is no more, unless enough of you convince me to add it back in.)
Terminology
Cell: a 100x128x100 area in Minecraft.
Room: a 9x9x9 area in Minecraft, often with 10x9x1 sized walls on some sides.
Pillar: Nine blocks stacked on each other.
Braided: A quality of a maze such that you can end up crossing a node you've already crossed without backtracking.
Perfect: A quality of a maze such that you cannot end up crossing a node you've already crossed without backtracking.
Recursive Division: An algorithm for generating perfect mazes.
Infinite mazes in minecraft.
Initial Release targets:
Obsidian walls.
Every cell is a perfect maze created with a recursive division algorithm.
Every cell will connect with the surrounding cells in 2 to 8 locations, making a floor braided on the large scale.
Room types + user-defined rooms.
Rooms are 9x9x9 blocks big.
Persistent generation of rooms, though not room types.
Second Release targets:
Multiple floors. (Entirely braided) [might send it out with just this]
Multi-room room-plans.
Maybe even room-plans that span multiple floors.
Maximum will be 10x10x10 rooms (taking an entire cell).
Future targets:
Cell-door room plans.
Spawn in a new dimension instead of the main world.
Get to new dimension by blinding yourself.
I personally will not be making an entities for this mod. Furthermore, I do not believe I shall be adding any new blocks.
Persistent targets:
Work with ModLoader
(maybe) Work with MC Forge. Definitely want to make sure that new dimension code works before Forge, since the Forge will probably limit my ability to zero out world gen methods.
Persistent labyrinth generation.
Bugs:
The world generates below and above you.
Rare case of trees generating through the floor.
Loading cells will freeze minecraft for a long time. (8 or so seconds on my slow computer)
Removing lone pillars in cell walls (when two openings in the cell wall are simultaneous) gets called to often, but removes an already empty pillar.
Animals generate above the ground, and fall, taking damage...except the unlucky ones which spawn inside walls. I've seen so far:
Props goes to jamis for posting the recursive division algorithm in Ruby. If you want to see the algorithm in java, you can find me in #risucraft.
Looks good! You might want to have a goal to work to, either some new items or a large stash of diamonds, once you've made it into its own dimension. I wonder if you could make it 'wrap around' eventually, so if you go far enough in one direction you come back to where you started. That could stop people getting too lost as they just generate new chunks endlessly, trying to find their way back to the (eventual) portal...
Wrapping around sounds sort of impossible, given the way the game is implemented. The maze isn't finite, but there will be treasure rooms to find. I will probably end up creating new items over time, but I'm not sure what they would be yet. I spent my free time today working on cleaning up the maze generation code so it's not so ugly to look at.
If you can't find your way to a portal, I would just say...create a new portal. But then, new dimension code is a long ways off. First a working random room system.
Today, I made okay progress. I mostly cleaned up the generation algorithms, adding two methods for adding and removing pillars (which combine to make walls). This cut out a lot of replicate for loops.
I also shifted the maze one level down one block, removing a lot of "- 1"s from my code.
These don't necessarily add new features, but it makes code generation easier in the future, and easier to understand what I did.
As for newly implemented features...I have passages between cells. Edge cases are throwing me for a run of my money though (one reason for simplifying and abstracting code)...but as I don't see any new visible bugs, I'm going to leave that alone for now.
Yes, I did remove the glass ceiling. It was interrupting my vision and workflow enough to warrant it. The maze will have a ceiling when I release it.
(The lone pillar in this pic is no more, unless enough of you convince me to add it back in.)
Terminology
Infinite mazes in minecraft.
Initial Release targets:
Second Release targets:
Future targets:
I personally will not be making an entities for this mod. Furthermore, I do not believe I shall be adding any new blocks.
Persistent targets:
Bugs:
Props goes to jamis for posting the recursive division algorithm in Ruby. If you want to see the algorithm in java, you can find me in #risucraft.
Wrapping around sounds sort of impossible, given the way the game is implemented. The maze isn't finite, but there will be treasure rooms to find. I will probably end up creating new items over time, but I'm not sure what they would be yet. I spent my free time today working on cleaning up the maze generation code so it's not so ugly to look at.
If you can't find your way to a portal, I would just say...create a new portal. But then, new dimension code is a long ways off. First a working random room system.
I also shifted the maze one level down one block, removing a lot of "- 1"s from my code.
These don't necessarily add new features, but it makes code generation easier in the future, and easier to understand what I did.
As for newly implemented features...I have passages between cells. Edge cases are throwing me for a run of my money though (one reason for simplifying and abstracting code)...but as I don't see any new visible bugs, I'm going to leave that alone for now.
Yes, I did remove the glass ceiling. It was interrupting my vision and workflow enough to warrant it. The maze will have a ceiling when I release it.
Once I have the custom room code, doing so will be simple.