SolarLune / dngn

A Golang library for random map generation for games.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

To-do List

SolarLune opened this issue · comments

  • Add pathfinding to allow the user to be able to ensure connectivity between rooms. To be specific, this should probably be a standalone library that dngn makes use of to ensure connectivity, since pathfinding is pretty useful on its own.

  • Add a new method of Room generation making use of this. It would randomly place Rooms of varying sizes, and connect them. This is now added as of v0.2.

  • Add methods to customize the shape of a Room. This would include skewing a Room, shaving off a corner, and inverting a Room.

  • Room.Outline() should be able to outline a Room's internal values, not just the border of the Room (or at least, there should be a function that does this). Basically, it should be possible to turn:

0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0
0, 0, 1, 1, 0, 0
0, 0, 1, 1, 0, 0
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0

into

0, 0, 0, 0, 0, 0
0, 2, 2, 2, 2, 0
0, 2, 1, 1, 2, 0
0, 2, 1, 1, 2, 0
0, 2, 2, 2, 2, 0
0, 0, 0, 0, 0, 0

This is now done through Selections; you can just select the 1's and then expand the selection outwards.

  • Add method to Crop out a Selection in space using X, Y, W, and H values.

  • Add methods to Add and Remove Selections from each other to easily select just the areas you're looking for.

  • Add method to overlay / copy / place Rooms into each other. This could be useful if doing random generation using pre-made Room pieces.

  • Add method to define entry / exit points to Rooms and have dngn randomly generate a "master" random dungeon map by randomly selecting and copying these pre-made Room pieces together.

  • Fix Selection.Degrade() - it should now degrade all cells, rather than just those of a specific selection, as you can select them using By().

  • Fix Map.GenerateBSP() - it doesn't work well with doorValues of 0.

Not sure if the 1st point is about this, or not, but: does the dngn package allow, or would you consider for it to allow, a "XCOM-2-like/DeadCells-like" approach (i.e. gluing random "fragments" of rooms together, at predefined join-points, to build a room)? Probably more or less similar to how "special rooms" are handled in NetHack/etc.?

Hello! dngn doesn't currently allow it, but the last To-do point would be to make it possible to copy / overlay Rooms into each other to easily allow you to do that.