New Functionality in v0.7.
And now also an equipment system (watch the armor value change on equiping/unequiping):
An inventory system:
ignore the music please.... didn't know it was being recorded.
Changes in v0.6.2:
Predefined rooms are now available.
1 Predefined room added to the map. (Butcher's sound is played if it's spawned)
some minor tweaks to several area's to lower lag and stuff.
New Functionality in v0.4: moving minimap
Changes in v0.4:
Chests can now contain some coins.
More Achievements have been added (5 now).
2 Stats have been added. (Strength and Agility)
Moveable minimap. The minimap now follows you around the map. It does not show the entire map.
The maze is not visible from the start anymore.
Might be some other changes, but I can't remember those.
preview movie (v0.2):
The first bits of my random dungeon map are done.
The rooms/walls/corridors are automaticly randomized generated.
see here the result of my work: (version 0.0)
Current actions still remaining:
fixing minor bugs: spawning of inaccessible rooms, spawning hero in a wall after area reset.
Adding an exit to the dungeon area. -implemented in 0.2-
Spawning other stuff then enemies. -chests implemented in 0.3-
Adding Multiplayer support. -2 player version implemented-
Converting the unit into a hero which can gather gear from killed mobs. -implemented in 0.3-
hmmm luckily I'm not arachnaphobic, but I think I'm not using a spider for it. (wondering what is meant by a spider here ;p )
I got positioning and locationing triggers which generate where the rooms will be and where the corridors will be. (the sizes of the rooms and corridors are also random.)
This I store in a grid(2dimensional array) and that grid is used to generate the map.
In dungeon generation a spider refers to a very basic.. uhh.. AI, I suppose you could say, that 'tunnels' out cells in an array using an algorithm to create rooms, etc. It's how most random dungeons are typically created.
What I do is just about the same as mentioned in the first link.
1. I decide on a starting point (for me it is always a room (position x,y size: width,length)
2. I generate 3 corridors next to the starting room
(a corridor is the same as a room but the the width is limited to 1 or 2 tiles)
3. I generate a room next to one of the corridors
(not checking whether it is at the end of the corridor or linked to 1 of it's sides.)
loop: for 0..X do (X being a set or random value)
4. Generate a corridor.
5. Generate a room.
End of the loop.
6. generate the walls at the positions that I have stored.
7. spawn the mobs on floor tiles.
8. spawn an unit for the player to control in the starting area.
9. have fun ;)
all the above actions are done using the checking technique that is explained. The only difference in my dungeon is that I do not carve out the rooms (remove the walls), but I generate the walls.
I wish a dungeons and dragon map will appear in the community with the full function of actually modifying the terrains to your whim as a dungeon master...
Nice to see the progress on this project, I like it :) I think how the Diablo people did this (was in some symposium), they designed the rooms prematurely and mostly had the connecting bits randomized. It makes sense I guess if you would want to make some sort of larger room with complex bits that may be hard to randomize so that it looks good.
I like the random things. but Dungeon for wondering around only to get out could be boring. More traps or boss should be added. Divide the map into few areas and give a boss into each area would be fun I think.
Doesn't most of the random dungeon generation in 2d games usually have a grid based function? Like a dungeon crawler.
This is the more preferred one because instead of only tunnels, there are Tunnels and Rooms.
The only issue is probably fog of war, and the object used for walls, but if proper texture is used, it'll look like a solid map.
Maybe using black fog of war is good, but leave the fog out of the minimap so players can "explore" and then retrace their steps when lost...
The other issue is minimap showing the "ground" and walls, when in dungeon crawlers you get only tunnels and rooms, with the rest of the area black...
2d dungeon crawlers are usually grid-like so every turn and position is designed to be proper. This random dungeon created weird walls and rooms that seems more like a maze than a dungeon lol... And yes there are differences, as mazes are design to be clausterphobic, while dungeons have multiple rooms and functions.
I played a few DS based dungeon crawlers and yes, you must separate certain levels in the dungeon to some limit...
Say [dungeon 1] is the easiest, so it has 1 floor and "dungeon complexity" would be low.
As for the minimap, you might need to make a button to "view entire map" or something, but I'm not sure how you'd do that... In dungeon crawlers, it's better off not giving players too much view on the area, and best for a 100% top down view so the angle doesn't let them see things they aren't suppose to see.
@dra6o0n:
The way I've set it up is so that it generates everything with rooms and corridors, but I allow it to convert walls it matches into open spaces.
This will automatically result in the weird rooms you've seen so far in my maps. I've added secret passageways to my map now. these are walls through which you can simply walk atm.
Due to the fact that I don't have an animated door yet, the other doors will have to wait. although these doors will be openable or destructable. ofcourse destroying a door will attract attention of nearby units while open the door does not.
I've also concidered the fog stuff. I've now made it so that the walls aren't visible unless you've seen them.this is both for the minimap and when you're playing. so you won't see that there's a corridor hidden behind the secret door unless you've visited that corridor already.
well complexity I can do something about. I can gradually increase the dungeon size. so I'll start off with a 50x50 area. and each floor adds 5 tiles to both sides. so I'd get:
1. 50x50
2. 55x55
3. 60x60
... etc
wonder if this will be usefull for playing.... maybe I should make a mode, or check box to enable this.
Can you let me know which trigger is the mayor cause of the fps drop? (thinking it's the exploration one)
ok I'm now certain that it is that one... I just reverted a change I made after uploading this version 0.45...
and I had 30 fps. when I reapplied the change I had 125 fps.
ok another correction:
It was the viewport. if you view it like it is at the start you've got an entire area of 256x256 that it needs to render.... that is why the fps was so low. if you zoom in and alter the camera position a bit it will be much better for your fps. (Got a Todo for myself. set the default cemera better)
Last update (5-5-2011)
Latest update: v0.11
download location of the latest version: http://www.sc2mapster.com/maps/helrals-random-dungeon-map/files/15-helrals-random-dungeon-map/
Starting v0.10 I exported all my Assets into a Mod: http://www.sc2mapster.com/maps/helrals-random-dungeon-map/files/14-rdm-mod-v0-11/
changes for v0.11:
Known bug in v0.11
Changes in v0.10:
Changes in v0.8:
The inventory system below is now available as an asset:
http://www.sc2mapster.com/assets/dialog-based-inventory/
New Functionality in v0.7.
And now also an equipment system (watch the armor value change on equiping/unequiping):
An inventory system:
ignore the music please.... didn't know it was being recorded.
Changes in v0.6.2: Predefined rooms are now available. 1 Predefined room added to the map. (Butcher's sound is played if it's spawned) some minor tweaks to several area's to lower lag and stuff.
New Functionality in v0.4: moving minimap
Changes in v0.4:
preview movie (v0.2):
The first bits of my random dungeon map are done. The rooms/walls/corridors are automaticly randomized generated.
see here the result of my work: (version 0.0)
Current actions still remaining:
My map can be found at: http://www.sc2mapster.com/maps/helrals-random-dungeon-map/
please try it out, and tell me what you think of the controls, etc.
Comments are welcome.
Do you use an array and a spider to generate the layout?
@Farmrush: Go a spider?
hmmm luckily I'm not arachnaphobic, but I think I'm not using a spider for it. (wondering what is meant by a spider here ;p )
I got positioning and locationing triggers which generate where the rooms will be and where the corridors will be. (the sizes of the rooms and corridors are also random.) This I store in a grid(2dimensional array) and that grid is used to generate the map.
In dungeon generation a spider refers to a very basic.. uhh.. AI, I suppose you could say, that 'tunnels' out cells in an array using an algorithm to create rooms, etc. It's how most random dungeons are typically created.
@Farmrush: Go
I guess that my triggers act like a spider then.
Do you have some links/papers that explain the technique?
A simple explanation of random dungeon generation:
http://roguebasin.roguelikedevelopment.org/index.php?title=Dungeon-Building_Algorithm
A few examples created by other people using other programs:
http://properundead.com/2009/07/procedural-generation-3-cave-source.html
What I do is just about the same as mentioned in the first link.
1. I decide on a starting point (for me it is always a room (position x,y size: width,length)
2. I generate 3 corridors next to the starting room
(a corridor is the same as a room but the the width is limited to 1 or 2 tiles)
3. I generate a room next to one of the corridors
(not checking whether it is at the end of the corridor or linked to 1 of it's sides.)
loop: for 0..X do (X being a set or random value)
4. Generate a corridor.
5. Generate a room.
End of the loop.
6. generate the walls at the positions that I have stored.
7. spawn the mobs on floor tiles.
8. spawn an unit for the player to control in the starting area.
9. have fun ;)
all the above actions are done using the checking technique that is explained. The only difference in my dungeon is that I do not carve out the rooms (remove the walls), but I generate the walls.
@Helral: Go
Wich language of the editor do you use, i can not see any variable/funktion names and when i start the map some text passages are missing.
enGB (seems like the method I use for localization fails :S)
anyone know of a working method to use?
I wish a dungeons and dragon map will appear in the community with the full function of actually modifying the terrains to your whim as a dungeon master...
hehehe ;) maybe I'll throw in a dragon once you've gone down 20 levels in my map ;p
Nice to see the progress on this project, I like it :) I think how the Diablo people did this (was in some symposium), they designed the rooms prematurely and mostly had the connecting bits randomized. It makes sense I guess if you would want to make some sort of larger room with complex bits that may be hard to randomize so that it looks good.
Thumbs up!
very nice indeed.
Doesn't most of the random dungeon generation in 2d games usually have a grid based function? Like a dungeon crawler. This is the more preferred one because instead of only tunnels, there are Tunnels and Rooms.
The only issue is probably fog of war, and the object used for walls, but if proper texture is used, it'll look like a solid map.
Maybe using black fog of war is good, but leave the fog out of the minimap so players can "explore" and then retrace their steps when lost...
The other issue is minimap showing the "ground" and walls, when in dungeon crawlers you get only tunnels and rooms, with the rest of the area black... 2d dungeon crawlers are usually grid-like so every turn and position is designed to be proper. This random dungeon created weird walls and rooms that seems more like a maze than a dungeon lol... And yes there are differences, as mazes are design to be clausterphobic, while dungeons have multiple rooms and functions.
I played a few DS based dungeon crawlers and yes, you must separate certain levels in the dungeon to some limit...
Say [dungeon 1] is the easiest, so it has 1 floor and "dungeon complexity" would be low. As for the minimap, you might need to make a button to "view entire map" or something, but I'm not sure how you'd do that... In dungeon crawlers, it's better off not giving players too much view on the area, and best for a 100% top down view so the angle doesn't let them see things they aren't suppose to see.
@dra6o0n:
The way I've set it up is so that it generates everything with rooms and corridors, but I allow it to convert walls it matches into open spaces.
This will automatically result in the weird rooms you've seen so far in my maps. I've added secret passageways to my map now. these are walls through which you can simply walk atm.
Due to the fact that I don't have an animated door yet, the other doors will have to wait. although these doors will be openable or destructable. ofcourse destroying a door will attract attention of nearby units while open the door does not.
I've also concidered the fog stuff. I've now made it so that the walls aren't visible unless you've seen them.this is both for the minimap and when you're playing. so you won't see that there's a corridor hidden behind the secret door unless you've visited that corridor already.
well complexity I can do something about. I can gradually increase the dungeon size. so I'll start off with a 50x50 area. and each floor adds 5 tiles to both sides. so I'd get:
1. 50x50
2. 55x55
3. 60x60
... etc
wonder if this will be usefull for playing.... maybe I should make a mode, or check box to enable this.
@Helral: Go
Just an update on what I'm currently creating for Version 0.5:
It's a Character Sheet. Currently still in design mode, but here's what I've got setup:
Current state:
the whole dungeon algorithm thing is really interesting. it must have taken been some intense work. nice job dude
are you gonna have boss or mini-boss fights?
@Helral: Go
The drop in fps is considerable though. From 120 I go to 30
@EternalWraith: Go
Can you let me know which trigger is the mayor cause of the fps drop? (thinking it's the exploration one)
ok I'm now certain that it is that one... I just reverted a change I made after uploading this version 0.45... and I had 30 fps. when I reapplied the change I had 125 fps.
ok another correction: It was the viewport. if you view it like it is at the start you've got an entire area of 256x256 that it needs to render.... that is why the fps was so low. if you zoom in and alter the camera position a bit it will be much better for your fps. (Got a Todo for myself. set the default cemera better)
Anyone got some tips for the inventory bit.
I currently haven't succeeded at changing the cursor icon.
Hope someone knows of a way to do it that is not ugly.
I've tried altering the default Cursor using Catalogs. this failed :(
See the inventory movies in the first post.