I derped. Oh well. #122

Merged
StevenRS11 merged 18 commits from mazes into master 2014-01-04 07:15:16 +00:00

18 Commits

Author SHA1 Message Date
StevenRS11
394f92d5fc Fixed rending in pockets for doors
DDoors get a TE when they are generated now. May fix other bugs too, who
knows.
2014-01-04 01:10:33 -06:00
StevenRS11
ed65a75e99 Merge pull request #119 from SenseiKiwi/mazes
Mazes
2013-12-30 16:07:52 -08:00
SenseiKiwi
5e60960661 Completed Doorway Placement
All doorways are placed sensibly now, including vertical passages
between different floors.
2013-12-30 19:59:17 -04:00
SenseiKiwi
3e33b94c98 Minor Change
Changed a comment
2013-12-30 03:29:05 -04:00
SenseiKiwi
70ae2fd407 Improved Doorway Placement
Changed MazeDesigner to prune out some unnecessary doorways at random by
removing edges from the room graph. Previous mazes allowed all side
paths to exist, which resulted in a kind of circular layout. Although
that was disorienting to people at first, if you realized it was a
circle, it became simple to navigate through the maze. This update makes
branching paths more common.
2013-12-30 03:21:42 -04:00
SenseiKiwi
3574b0468b Improved Doorway Placement
Doorways are now placed in different ways, depending on the dimensions
of the walls that they're on. This includes that large walls get two
doorways connecting to the same room.
2013-12-30 02:44:18 -04:00
SenseiKiwi
7afcfedbde Fixed Bug in MazeDesigner
Fixed a bug in MazeDesigner that would connect some rooms with duplicate
doorways. The problem was in how intersections were being tracked to
improve the efficiency of adjacency checks.
2013-12-30 02:09:31 -04:00
SenseiKiwi
27b21f6674 Fixed Bug in LinkedList
Fixed a bug in LinkedList - the size of the list never increased when
elements were added.
2013-12-30 01:22:31 -04:00
SenseiKiwi
d2da74ea76 Minor Change
Adjusted the size of mazes slightly to reign in huge rooms.  If the
problem persists, we can consider other options such as dropping dungeon
sizes a little more, increasing the number of splits, or biasing the
split plane selection toward the middle of the range.
2013-12-30 00:25:08 -04:00
SenseiKiwi
3eaf6cdfb8 Organized Doorway Code
Separated the code that carves up doorways in mazes. Mostly a minor
change in preparation for giving doors smarter placements.
2013-12-29 22:35:13 -04:00
SenseiKiwi
cee4005513 Reduced Floor Doorways
Added code to minimize the number of doorways that involve dropping
through the floor. Added a DisjointSet class as part of the
implementation. I also split the maze construction process into two
classes (MazeDesigner and MazeBuilder) to make it clearer.
2013-12-29 21:31:10 -04:00
SenseiKiwi
22ab4e3639 Improved Second Step
Deleted old function for removing random rooms. Fixed the occasional NPE
described in my previous commit - deferred the removal of nodes from the
graph until after iterating over their collection. Added conditions for
removing maze sections that are too small to be useful.
2013-12-29 03:11:02 -04:00
SenseiKiwi
31f0c1ca0c Completed Second Step of Maze Generation
Completed the second step of maze generation. In this step, a graph is
built that describes which rooms can be connected to each other by
doorways. A maze is created by removing nodes (rooms) from the graph.
The algorithm is incomplete, but it already produces interesting mazes
comparable to DD's hand-made mazes.

A few details for the future:
1. Doorways are currently carved into walls at default locations. This
is just for testing and placement should be improved later. Some
doorways should be removed and redundant doorways should be possible.
2. The size of a section should be assessed and the section should be
discarded if it has too few rooms.
3. An NPE occurs every so often when a maze is generated. It's possible
that it happens because of removing a node from the graph that is
coincidentally the current node for LinkedList's iterator. The solution
would be to add nodes to a list and defer removals until after the
iteration is done.
2013-12-28 22:49:11 -04:00
SenseiKiwi
81bac5d1c2 Progress on Second Step
Made some progress on the second step of our maze generation algorithm:
building an adjacency graph for setting up doorways later. Renamed the
SpatialNode class to PartitionNode to better represent its role.
2013-12-27 21:58:17 -04:00
SenseiKiwi
28cb2e5e74 Merge remote-tracking branch 'upstream/1.6.2-code' into mazes 2013-12-27 03:12:26 -04:00
SenseiKiwi
a9f0bc5069 More Maze Generation
Made some changes to maze generation to prune out random rooms from the
structure. This doesn't look as nice as I'd hoped, so I'm going to try
some other approaches.
2013-12-27 03:11:59 -04:00
SenseiKiwi
82da53b992 Minor Change
Added blank lines to Point3D to space out functions. <_<
2013-12-26 15:29:42 -04:00
SenseiKiwi
820e72f17a Added First Step of Maze Generation
Added classes for generating maze dungeons. At the moment, the dungeons
are generated in place of our pocket dimensions to make testing easy.
We'll need to restore pocket generation later and integrate the mazes
into the dungeon packs later. Currently, the structures are very
incomplete (they don't even have doorways), but this is only the first
step.
2013-12-26 15:29:20 -04:00