Unity Dungeon Generator is a Procedural Generation for dungeon creation. It will result a bunch of data for your needs. Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.
This project generates game dungeons similar to the first zelda dungeons with only normal keys (no key items or breakable walls). The code is based on Joris Dormans' work in dungeon generation for Unexplored.
The project consists of two generators:
The Mission Graph consists of 7 different type of nodes that can be found in the enum ObstacleTowerGeneration.MissionGraph.NodeType
. Each node represent different game room:
Every node in the Mission Graph have an access level. An access level is a number that determines how many Puzzle and Lock nodes you passed on before reaching that node. For example: a node with access level of 0 means that it is connected to the start node without having any puzzle or lock nodes in between, while a node with access level of 2 means that there is two nodes of type Puzzle or Lock in between the start node and that node. The access level is very helpful in generating the Layout Map and also for generating Lever nodes.
The Mission Graph uses graph grammar to generate the mission. All the grammar is implemented in grammer/
folder. There is 8 different grammar rules:
addNormal
: adds a Normal node between two nodes of the same level.addPuzzle
: adds a Puzzle node between two nodes of the same level which will raise the second node level.addKeyLock
: adds a Lock node between two nodes of the same level which will raise the second node access level, then add a Key node as a branch from the first node.addNormalToKey
: add a Normal node between two nodes of the same level where the second node is a Key node.addLever
: connects a high access level node to a low access level node using a Lever node.makeLink
: connects two nodes of the same access level using a normal link.makeBranching
: change the structure of three consecutive nodes to make them as branching nodes.moveLockBack
: moves a normal task from behind a Lock node towards before which will decrease its access level.To adjust the generated Mission Graph use the graphRecipe.txt
file. The file consists of several lines where the system applies each line in order for 0 to many times. If any line starts with a # the system will consider it as a comment and ignore it. Each line consists of 3 parts separated with commas:
addNormal, 0, 3
means the system will apply addNormal rule between 0 and 3 times. At any time, the user can remove one or two of the arguments. For example: addNormal, 3
will apply addNormal 3 times, while addNormal
will apply it 1 time.The layout map is the physical representation of the Mission Graph in 2D space. The layout map consists of 2D grid of ObstacleTowerGeneration.LayoutGrammar.Cell
The layout make sure the start node and end node has only one connections while the rest of cells can have up to four connections (North, South, East, and West).
There is two types of cells:
Normal
: are cells that corresponds to a certain node in the Mission Graph.Connection
: are additional cells that were added to facilitate connections in the physical space.Each cell has from 1 door up to 4 doors. Doors are the connection between cells in the phyiscal space. There is 4 different door types:
Open
: means that it is a normal opening between these two cells.KeyLock
: means that it needs a key to go through it.LeverLock
: means it will open using a lever in the nearby lever room.PuzzleLock
: means it will open when solving a puzzle in the nearby puzzle room.You can generate a dungeon using generateDungeon
function in ObstacleTowerGeneration.Program
file. The function takes 3 parameters which identify the number of times the system will try to generate the dungeon. Default values are 100 for each of the dungeon pieces and 100 for the total dungeon.
To generate the public/private key pair, enter this in the Command Prompt: ssh-keygen At the first prompt, “Enter file in which to save the key,” press Enter to save it in the default location. Get ssh key. In the Number of bits in a generated key box, enter 2048. Click Generate to generate a public/private key pair. As the key is being generated, move the mouse around the blank area as directed. (Optional) Enter a passphrase for the private key in the Key passphrase box and reenter it in the Confirm passphrase box. Sep 26, 2019 To generate an SSH key with PuTTYgen, follow these steps: Open the PuTTYgen program. For Type of key to generate, select SSH-2 RSA. Click the Generate button. Move your mouse in the area below the progress bar. When the progress bar is full, PuTTYgen generates your key pair.
The generateDungeon
function returns a DungeonResult
struct. The DungeonResult
struct consists of 2 parts:
missionGraph
: is a ObstacleTowerGeneration.MissionGraph.Graph
object that represents the generated Mission Graph.layoutMap
: is a ObstacleTowerGeneration.LayoutGrammar.Map
obejct that represents the generated Layout Map.Graph object is a list of ObstacleTowerGeneration.MissionGraph.Node
objects that consitutes the full graph. Each node has accessLevel
, type
, and id
properties. accessLevel
is an int that reflects the value of the access level of the node, type
is an enum that reflects the node Type, and id
is a unique integer that identify each node. Node object also have getChildren
function that return a list of nodes that are connected to it.
Map object has a function called get2DMap
that returns a 2D grid of ObstacleTowerGeneration.LayoutGrammar.Map
that consitutes the level layout. Each point in the grid can be a null
if empty or a ObstacleTowerGeneration.LayoutGrammar.Cell
object if it is not empty. Cell objects has type
and node
properties; and a getDoor
function. type
is an enum that reflects if the cell type. node
is a reference to the corresponding node from the Mission Graph if the cell type is Normal
and null otherwise. getDoor
Gta v license key txt download. function takes an x dir and y dir then returns an enum that corresponds to the door type in that direction.
This project provides a level generator that can be controlled by a humanuser to generate tile-based levels as well as episode data that canbe used to train an AI agent for procedural content generation (PCG)through apprenticeship learning.
Open the project in Unity and load the scene Scenes/Editor
. This isthe primary scene used for human-controlled level creation.
This generator is used to create top down dungeon levels in the style ofadventure games like The Legend of Zelda.
Tile-based levels are created by controlling a “digger” character. At thestart of a level creation session, the digger is presented with a grid filledentirely with blocks. As the digger moves from tile to tile, they “dig out” eachspace that they move to, converting it into a traversable open space. Actionsthe digger can perform are:
The following keys can be used for manual control of the digger:
w
, a
, s
, d
or ↑
, ←
, ↓
, →
: movement1
: Create small room (3x3)2
: Create medium room (5x5)3
: Create large room (7x7)j
: Place treasurek
: Place enemyu
: Place keyi
: Place locked door (Note: Keys must be placed before doors can becreated to ensure playability)p
: Place level exitEsc
: Save and quit the current level generating sessionInsert
: Spawn an AI digger at the starting location which executes a concrete set of actionsDelete
: Destroys the AI digger