• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Random Dungeon Generator

Status
Not open for further replies.
Level 2
Joined
Jul 5, 2005
Messages
19
Here is a thread that used to be in Wc3Campaigns.com, but since it shut down, it needs to go somewhere else. If you want to help, suggest, yadda, yadda, yadda, feel free to do so.

----------------- THREAD --------------------

SuperDuperGuy Sat, 23 Jul 2005 - 04:28
I'm designing two different maps that will be different everytime you play them, one with an dungeon setting using doodads for walls and one with an outside setting using trees. I'm starting by completing the dungeon one first, and seeing how it plays before doin the second.

DungeonofDoom and Warcraft Rouge are two maps that are different everytime you play them, but my idea is consideribly different. Exploration in these maps will have greater empasis that just cleaning out the creeps. A character like a thief might be able to go though the dungeon, collect tons of treasure, and win with only killing one or two monsters.

The Dungeon map is a 25x25 room map (320x320, can go 256x256 if nessisarry)

(paste this in a text editor with curior font to get a better idea)

OOOOOOOOOOOOOOOOOOOOO\OOO
OOOOOOOOOOOOOOOOO/\/\/OOO
OOOOOOOOOOOOOOOOO\OOOOOOO
\/\OOOO/\/\OOOOOOO\OOOOOO
OO/OOO/OOO/OOOOOOOO\OOOOO
OO\/\/OOO/OOOOOOOOOO\OOOO
OOOOOOOO/OOOOOOO/\OO/OOOO
OOOOOOOO\OOOOOO/OO\/OOOOO
OOOOOOOO/OOOOOO\OOOOOOOOO
OOOOOOOO\OOOO/\/OOOOOOOOO
OOOOOOOOO\OOO\OOOOOOOOOOO
OOOOOOOOOO\...OOOOOOOOOOO
OOOOOOOOOOO.X.OOOOOOOOOOO
OOOOOOOOOOO.../\/\OOOOOOO
OOOOOOOOOOO\OOOOO/OOOOOOO
OOOOOOOOO/\/OOOOO\OOOOOOO
OOOOOO/\/OOOOOOOO/OOOOOOO
OOOOO/OOOOOOOOOO/OOOOO/\O
OOOO/OOOOOOOOOO/O/\/\/O/O
OOOO\/\OOOOOOOO\/OOOOOO\O
OOOOOOO\OOOOOOOOOOOOOOOO\
OOOOOOOO\OOOOOOOOOOOOOOOO
OOOOOOOO/OOOOOOOOOOOOOOOO
OOO/\/\/OOOOOOOOOOOOOOOOO
OOO\OOOOOOOOOOOOOOOOOOOOO

the O's are empty rooms, the / and \ are rooms that have a river running though them, and the X and .'s is the big center room. Initially all rooms are connected, and the random generator generates walls, locked doors, secret doors,and doors to connect the rooms in different ways. Secret Doors and Walls both use an invunrable rolling stone door, and the secret doors will have an invisible lever in the room that players will have to detect that will trigger the door to open.

Monster lairs will be randomly placed thoughout the dungeon, and the treasure hoards will be at the heart of each lair. You will know if you are close to a hoard if you find the outer rooms of the lairs have guards. (so if you find a few rooms close together all with orcs, you likely found a orc lair with a hoard nearby)

There are two types of items, normal and treasure. Treasure items are collected and displayed on a multiboard, and they each have a gold value accociated with them. Gold can be collected and used if you find a wandering merchant or from mercenary camps at the starting corners, but treasures cant be used as gold, only add to your net worth for winning the game. All units can hold items, and all items are dropped on death. this will make the steal ability easier to program for stealing from creeps

PLAYERS:

The map will be between 1 and 8 players, split into four teams. each team starts in a different corner of the dungeon.

GOALS:

The goal of the map is to collect the most treasure and leave the dungeon before time runs out. If you are in the dungeon after the time runs out, you lose!

COMBAT:

Combat will use warcraft 3 style, with alterations to the armor/attack table.
will add pirceing attacks, slashing, and blunt (or piercing, melee, and missle havent decided) The Caster System will be used to get elemental damage from spells in the game.

SPELLS:

Spells will be found from books instead of having them preset. There are five types of spells with a different color book to represet the school of magic. each spell will have level accociated with it, and depeding on the characters level in that school, depends if they can use it or not. Characters will get points to put what ever school thier character can use.

Wizard Spells: various magical effects, sleep, bufs, negative bufs, moderate attack spells (firebolts, firewall)

Scorcery Spells: Summoning and large area of effect spells

Necromancy Spells: Black magic, harming spells, raising dead, death coil, ect.

Nature Spells: the living tree spells, healing spells, entangling roots

Divine Spells: Turn undead, healing spells, bless spells

CHARACTERS:

Captin: Normal fighting class. Can switch his weapon type be equiping a different weapon, Has high charisma so he can aquire mercenaries easier. has buf aruas for troops.

Beserker: One of the stronger fighters, can go beserk

Dwarf: A cross between fighter and rouge, this guy can disarm traps, find secret doors easier than other classes. Gets a bonus when attacking mechanical units.

Paladin: A fighter that can use level 1 divine spells.

Beast Master: A good fighter, and able to tame animals of the wild kingdom.

Dark Knight: A fighter that can cast level 1 necro spells

Cleric: Less of a fighter than the paladin, but can cast nature and divine spells and gets 4 points to distribute

Theif: This character can disarm traps, find secret doors, hide, pick locks, steal from monsters and other players and gets a back stabbing bonus.

Ranger: the ranger is able to cast nature spells and hide.

Ninja: The ninja casts wizard spells, can hide, and disarm traps. can create posion healing potions

Hobbit: The hobbit cant fight very well, but can listen to creeps on other sides of walls, disarm and set traps, find secret doors better

Druid: The druid can cast nature spells, and transform into animals. a decent fighter when in bear form.

Necromancer: the necromancer can cast necromancy spells and socery spells

Witch: the witch can cast necromancy spells and wizard spells

Mage: the mage can case wizard and socery spells

MONSTER LAIRS:

I have designed an algoritm that can generate lairs (series of rooms connected with one or two exits) randomly in the dungeon with specific properties. Some may not even get generated in teh dungeon.

Dark Elven Lair: If you are allied with the elfs, you might be able to hire some

Dwarf Lair: If you are allied with the dwarfs, they might be happy to upgrade your weapons for you.

Spider Lair: Very dangerous, spiderlings keep spawing until you kill all of the eggs. Treasures can be found on dead adventurers in thier lairs, since spiders are more interested in your flesh that your loot. Sometimes you can find adventures that haven't been eaten yet to joint your party.

Kobold Lair: Not very strong, lairs usually protected by traps moreso than warriors. they like to hide treasure behind secret doors.

Orc Lair: Orc warroirs guard all the entrances with barricades, and keep thier loot away from the outer walls. May find Imprisioned elfs and humans.

Undead Lair: The undead need to find flesh to eat, so they spread like a diese killing wandering monsters, transforming them into more undead.

Demons Lair: Demons come though a portal, it will have to be destroyed to prevent more from coming in. They don't keep treaurse, but wander the dungeon in search of prey.

Bandits Lair: A group of badits hoarding thier stolen loot.

Dragon Lair: Usually the only entrances are secret, and the lair is small, but the dragon sleeps with his hoard of loot. Careful though, if you wake him, you will be sorry!

Oger's Lair: Not too concered about treasure, more concerded about licking your bones. The big fat creatures like to eat people. The do keep treasure, although they really have no conception of its value, they just get angry if someone invades what is thiers (which in their eyes, is everything)

Troll Lair: Trolls like to use a combination of traps and warroirs to guard thier treasure

Evil Wizard Lair: Wizards like to hoard magical items moreso than valuables. They have more use for spell books that jewels. Sometimes you will find mana fountains in thier lair. The will have summoned creatures to protect thier loot.

Merloc Lair: Found near water. Carful with these guys, thier ability to swim makes them good for chasing! They will try and carry all the treasure they can with them, leaving not much to be found scattered though the lair.

Harpies Lair: Harpies can fly, so you better be ready to attack air. You find treasure on them instead of hoarded.

Final Lair: Strange Creature that lurks in the middle of the dungeon. Get the most loot from this guy!

WANDERING MONSTERS:

More monsters will be in the dungeon, but won't have a whole section dedicated to them. You might find them in a single room. maybe a family of bears, a wandering orc squad, other various wild life. A wandering merchant that sells magical items and potions can be found in the dungeon.


HERO LEVELS:

There won't be high hero levels, I want to keep the game to strat instead of level up hero race. Small levels max. This is supposed to be a 30-60 min game. I dont want players to spend anytime leveling up, all leveling up will hapen as a result of persuing the treauser goal. I may choose not to have leveling up at all, as long as the map is dynamic is interesting enough without them.


The Generator:

I have a decent generator working right now, but it needs work. Right now it would be difficult to have a area hidden behind a secret door inside a lair. I could only make a lair that is sealed with all secret doors.

I would like anyone to help with ideas on generating these maps. Also I need better ideas to refine the balance and making stratigy the main focus of the game. (for example, if you are a cleric, you should try to locate the undead lair, for they are much easier for you to kill, but need to stay away from monsters you don't have alot of options for. I want to keep the game on a single tier, so monsters really aren't harder than others, just provide different changes based on who you are. There will be harder leader units for hearts of lairs.)

Slugge Sat, 23 Jul 2005 - 04:50
sounds really nice! keep up the work, need a revolutionary map soon :D

Anyways, how about (this may take time) making like, 20 different terrains, then its random wich one they play......because by randomizing a terraing it will be difficult to place doodads and such....

ragingspeedhorn Sat, 23 Jul 2005 - 06:19
Woaw this would be a map people at BNet should play? With all that stuff wouldent it take ages to load? o_O

MeTaCo Sat, 23 Jul 2005 - 08:11
ragingspeedhorn Wrote: With all that stuff wouldent it take ages to load?

you have a good point, how long do u think it'll take to Generate all those doodads?

SuperDuperGuy Sat, 23 Jul 2005 - 12:36
Slugge Wrote: sounds really nice! keep up the work, need a revolutionary map soon :D

Anyways, how about (this may take time) making like, 20 different terrains, then its random wich one they play......because by randomizing a terraing it will be difficult to place doodads and such....



You really can't randomize terrain. Cliffs have to stay cliffs, water has to stay water (if you want the nice visual effects like waves) I am thinking about doing this for the second map, cause there needs to be alot of different types of terrian, and i would want some maps to have water and some not. I'm even thinking about making a map script that can generate doodads for any map, then making a program that makes a file for the terrain, and turns it into the map with the script. This will force everyone to dl every game, but will allow for alot of variety. I think if the script is small, the file size of the map can be small enough for a quick dl (since there will be no units or doodads on it)

And accaully, placing doodads is pretty easy. for the map i have now, its just 25x25 rooms. So i have a function for each room type that places buildings/units and tiles the floor, then i can just pass it parameters for which room. There only needs to be slight adjustments for water rooms.

For the outside map, i broke it into 4x4 tiles. and each tile will have a definition function for them all the terraining will be done with this in mind. So rivers will stay in the 4x4, or might take up 8x8. This way i can have a index that knows what is at that 4x4 tile. (place a house, a forest, ect) this one might suck on bnet with the amount of trees i would have to place. I made some really nice towns this way, with algorithms that work for rouge type games(instead of ascii char, you have a doodad of a building)

I'm not sure how bad it the dungeon will be on bnet. Thats why I'm tring to just make a test map that just uses warcraft 3 units (my units will have to have completely different stats) to see how bad it is. Right now all it does is creates lairs then fills in the rest of the rooms, only setting up walls and doors. It will also depend how full I make the dungeon, which i would like to have setable. It would be nice to have alot of options for making the dungeon, cause there are so many factors that go into it that are adjustable.

Kalvorod Fri, 05 Aug 2005 - 12:20
Well, I remember helping you on this before, but I'm afraid that I'm going to keep my mouth shut for now because I just made a Dungeon Generator myself(Flavian came litterally seconds after I posted my map description and told me that there already was one("Isn't there already one of those on the Map Team"board... or something like that)


In short: Mine is better ;P. If you want you can check out my board in the campaign section(not the Team campaign section or w/e this is).

My map is a Diablo style map that also generates a dungeon, but mine is 10x10(plenty of space when you concider the next point I will make), and regenerates into an entirly new one when you reach the stairs.


I've also solved what I think is all of the problems that you are having in mine already. The game currently has 3 different dungeon types(grassy like, rocky like, indoors like) but will be customized to have more. My map does not have random doodads(houses and the like) like yours does, but it still has a ways to go.(And the randomization works like a charm)

And mine has next to 0 load time :emote_dance: with next to 5 dungeon creation time :emote_dance:

Your map does seem different enough from mine that I might be willing to give a few tips, but it's similar enough that I would rather not.

SuperDuperGuy Mon, 08 Aug 2005 - 02:44
Ok, I read the other thread and I think people can get a little silly about map ideas. I just think of the Random Generator as just a feature nessisary for my game type. Randomization is just a FEATURE. Ofcourse it does take alot of hair pulling, so it seems like the main part of the map. If someone made a Who's the were wolf game, and wanted it to be random, you wouldn't look at another map that is wilderness survival that has random generation and say "oh, they are the same. might as well have one stop". sorta silly.

The core of my idea I believe lies in the style of play. I am tring to do a style that is like OpenRPG, but like board games of the past has specific goals for people to compeate against, and not have the game go for more than 2 hours. It will probably have a wilderness survival feel to it, managing your resources and timing will be important. I like games that always keep you on edge for the whole durration. Plus you will get to choose allies and change allies thoughout the game. In fact I have more than one map designed with random generation feature, all different.

His is diablo style play. Keep leveling up, going deeper in dungon, and i bet he will have a hero load feature. two compleatey different styles of play. Plenty of time to hang out in towns. Only similarity is the fact that the layout of certain aspects of the map will be different every time you play. Which is a good feature, so people can't just memorize your maps.

P.S. I have improved my generator very much by experimenting with different algorithms in a program i wrote so i dont have to wait for wc3 to load to test them. once my algorithm is perfect, i will just transfer it to my generator in wc3 (which is very modular, wrote a bunch of tools for it)

Here are some sample maps:

This first one is designed to have players start in the middle, and the dungeon is split up into sections that are different level difficulty. each character would need a different amount of treasure based on how easily they could wipe out the upper levels. (This design is based off of the board game Dungeon!, Just one of the many mazes I was experimenting with) (copy paste to wordpad to see it right)

0's are walls, +'s are doors, *'s are secret doors, #'s are rooms with treasure, and X's are special rooms (fountain of healing, shops, ect)

000000000000000000000000000000000000000000000000000000000000000000000000000
0.......00..........00..........**...................00....**.00....**....0
0.00000.00.00.00000*00*00000000000000+00.00000000.00+00.00000.00.00000000.0
0.00000.00.00.00000*00*00000000000000+00.00000000.00+00.00000.00.00000000.0
0....00.00.00....00................00#00....00....00#00....00.00.......00.0
0000.00.00.00000.00+00.00.00.00000.00000000.00*00+00*00000.00.00000000.00.0
0000.00.00.00000.00+00.00.00.00000.00000000.00*00+00*00000.00.00000000.00.0
0#++.00.00.00....00#00.00....**#00....**.00.**.00#00#++#++.00.00....00.00.0
0000.00.00.00.00000000.00000000000000*00.00000000000000000000.00.00.00.00.0
0000.00.00.00.00000000.00000000000000*00.00000000000000000000.00.00.00.00.0
0....00....00.00....**.00.......00#++.00.00.........X..X......00.00....00.0
0+00.00.00000*00.00000000*00000.00000.00.00+00000000.00.00000000*00000000+0
0+00.00.00000*00.00000000*00000.00000.00.00+00000000.00.00000000*00000000+0
0#00....**.00.00..........00#++...X..X00.00#00....00X..X...++#00.++#00.++#0
0000000000+00.00+00000.00000000000.00.00.00+00*00.00.00.00+00000.00000.0000
0000000000+00.00+00000.00000000000.00.00.00+00*00.00.00.00+00000.00000.0000
0....++#00#00.++#++.00.......00...X..X......00.00.00.00.00#++.00....00....0
0*00.00000+00000000.00000000*00*00000000000000.00.00.00.00+00*00*00.00000+0
0*00.00000+00000000.00000000*00*00000000000000.00.00.00.00+00*00*00.00000+0
0.00....00#00.++#00....00#++.00.++#00..........00.00.00.**.00....00.00.++#0
0.00.00.00000*00000000.00000.00000000.00.00000.00.00.00000000000000.00.0000
0.00.00.00000*00000000.00000.00000000.00.00000.00.00.00000000000000.00.0000
0.00.00.......00...X..X00.............00.++#00.00.00...X..X......00.00....0
0.00.00000+00.00.00.00.00.00.00000000000.00000.00.00000.00.00000.00.00000.0
0.00.00000+00.00.00.00.00.00.00000000000.00000.00.00000.00.00000.00.00000.0
0.00X..X00#00.00...X..X...00.**....++#00.......00......X..X..X..X00.00....0
0.00.00.00000.00000.00.00000+00000.00000*00000000.00+00.00.00.00.00.00.00.0
0.00.00.00000.00000.00.00000+00000.00000*00000000.00+00.00.00.00.00.00.00.0
0...X..X00#++.00....00.00.++#00.......00..........00#00....00X..X00....00.0
0.00.00.00+00+00.00000.00.00000.00000.00000000.00+00000000000000000000000.0
0.00.00.00+00+00.00000.00.00000.00000.00000000.00+00000000000000000000000.0
0....**.00.00#00.00....00.00....00....00.......00#00......................0
0000000.00.00000*00.00000.00.00000.00.00.00.00000000.00000000.0000000000000
0000000.00.00000*00.00000.00.00000.00.00.00.00000000.00000000.0000000000000
0#++....00.......00....00....00.**.......00.......**.++#00#++.++#++.00....0
0000.00000000000.00.00.00000000.00.00.00.00000000.00000000*00000000.00.00.0
0000.00000000000.00.00.00000000.00.00.00.00000000.00000000*00000000.00.00.0
0....00....00#**....00.00....**.00.......00.......++#00.++#00....00.**.00.0
0.00000.00+00000000000.00.00000*00.00.00.00.00000000000.00000.00*00000000.0
0.00000.00+00000000000.00.00000*00.00.00.00.00000000000.00000.00*00000000.0
0.++#00.00#++.......00.00.00#++.00..........00....00....00.**.00.00#00....0
0000+00.00000000000.00*00.00000.00000.00000000.00.00.00000.00000.00+00.0000
0000+00.00000000000.00*00.00000.00000.00000000.00.00.00000.00000.00+00.0000
0#00.**.00....00#++....00....00.......++#00....00.00....**.00.**.00X..X00#0
0+00.00000.00.00000000000000.00000000000000.00000.00000000000.00000.00.00+0
0+00.00000.00.00000000000000.00000000000000.00000.00000000000.00000.00.00+0
0....00....00.**.......00#00....**..........00....00.......**.00#**X..X...0
0.00.00.00000000000000.00+00000.00000000*00000.00000.00000*00*00000000000+0
0.00.00.00000000000000.00+00000.00000000*00000.00000.00000*00*00000000000+0
0.**.00.........X..X00.00..........00#++.++#00.00#00.00....00#00....00#**#0
0.00000000000000.00.00.00.00000000.00000.00000.00+00.00.00000000+00.0000000
0.00000000000000.00.00.00.00000000.00000.00000.00+00.00.00000000+00.0000000
0..........00...X..X00.00X..X......00....00....00....00.......00#00.......0
0.00000000.00.00.00000.00.00.00000.00.00000.00000.00000000000.00000000000.0
0.00000000.00.00.00000.00.00.00000.00.00000.00000.00000000000.00000000000.0
0.00.......00.00.++#00.00X..X......00....00....00...X..X...00....**.++#00.0
0.00.00000000.00000+00.00000000.00.00000.00000.00.00.00.00.00000000000+00.0
0.00.00000000.00000+00.00000000.00.00000.00000.00.00.00.00.00000000000+00.0
0.00..........00#++....00#**....00.**.**.00....00...X..X00..........00.00.0
0*00000000000000000000.00000*00+00.00+00.00.00000000000.00000000.00.00.00.0
0*00000000000000000000.00000*00+00.00+00.00.00000000000.00000000.00.00.00.0
0..........00....++#00.......00#00.00#00.00....00.**.00....00#00X..X00....0
0000+00+00.00.00000+00000.00000+00.00000.00.00.00.00.00000*00+00.00.0000000
0000+00+00.00.00000+00000.00000+00.00000.00.00.00.00.00000*00+00.00.0000000
0.++#00#00.00X..X00....00.00#**.00....00.**.00....00.......00...X..X......0
0.00000000.00.00.00000.00*00000000000.00000000000.00000.00000.00000.00*00*0
0.00000000.00.00.00000.00*00000000000.00000000000.00000.00000.00000.00*00*0
0.00#00......X..X...00.00.00....00#++....00.......**#00.............00.00.0
0*00+00.00000.00000.00.00.00.00.00000000.00*00.00.00000+00000000000.00.00.0
0*00+00.00000.00000.00.00.00.00.00000000.00*00.00.00000+00000000000.00.00.0
0....00.00#00.00....00....00.00....00#++....00.00....00#00..........00.00.0
0.00.00.00+00*00.00.00.00000.00000.00000000000.00+00.00000.00000.00000.00+0
0.00.00.00+00*00.00.00.00000.00000.00000000000.00+00.00000.00000.00000.00+0
0.**.00.++#00....00....++#00.**#00....**.......00#00.......00#++.++#++.00#0
000000000000000000000000000000000000000000000000000000000000000000000000000


This second design is my original attempt, but still has some issues. I think I can work them out using the algorithms i made for the other sample. In this design, the heros start at the corners, and make thier way to the center. All characters need to beat each other in getting treasure (They will all be balanced, not by making them need less treausre to win like the previous sample) This is one design that i was going to make feel like a wilderness servival, only its a dungeon servival. Notice the doors close off the different monster lairs, which will contain higher density of treasure. There are still alot of issues not worked out for this, because lairs will be complicated in thier generation (i.e., a wizard lair can be 2 lairs, connected with a teleporter, I also need methods of generating keys to locked doors so they arent genereated behind them (the thief won't mind, he can pick locks)


0's are walls, +'s are doors, / and \ are rivers, X's are bridges and #'s represent the center room that is full of water

000000000000000000000000000000000000000000000000000000000000000\00000000000
0....00....00....00....00.00....00.............++...............X00.......0
0.00.00000.00.00.00000.00.00.00.00.00+00000000+00000.00000000000.\0.00.00.0
0.00.00000.00.00.00000.00.00.00.00.00+00000000+00000./\0000/\000./0.00.00.0
0.00.00....00.00....00.00....00.00.00.......00....00X..X..X..X00/...00....0
0.00.00.00000000000.00.00000000.00.00000000.00000.0/0000\/000.\/000000.0000
0.00.00.00000000000.00.00000000.00.00000000.00000.0\000000000.00000000.0000
0....00.............00.......00.00.++....00....00.00\...00....00....00....0
0.00.00.00000.00.00000000+00.00+00000.00.00000.00.00.\0.00.00000.00.00000.0
\.00./\.00000.00.000000/\+00./\+00000.00.00000.00.00.0\.00.00000.00.00000.0
0\00/00\00....00....00X..X00X00X00....00.......00.00.00X.........00.......0
0.\/.00.\0+00000000.0/.00+\/.00.\0.00000000000.00.00.000\0.00000000000.0000
0.00.00./0+00000000./0.00+00.00./0.00000000000.00.00.0000\.00000000000.0000
0....00X00.00....../++.00....00/00....00....00.00.00....00X00.......00....0
0000.0/000.00.0000/000.00000.0/.00000+00.00.00.00.00000.00.\0.00.00.00.00.0
0000.0\000./\.000/0000.00000./0.00000+00.00.00.00.00000.00.0\.00.00.00.00.0
0....00X../00X../...00....00X00....00....00.++.00.......00.00\.........00.0
0.00000.\/0000\/.00.00000.0/.00000.00.00000000000000000000.000\0000000000.0
0.00000.00000000.00.00000./0.00000.00.000000000000/\000000.000/0000000000.0
0.++....00....00.......++/00.00....00.++.00....00/..X...++.00X...00....00.0
0.00+00000.00.0000000000/000.00+00+00000.00.00+0/.000\000000/.00000.00.0000
0.00+00000.00.0000000000\000.00+00+00000.00.00+/0.0000\0000/0.00000.00.0000
0.00....00.00............\00....00.......00.00X...00...X../00.++.00.00....0
0.00000.00.00000.00000.000\0000+00000000+00+0/.00000.000\/+00000.00+00.00.0
0.00000.00.00000.00000.000/0000+00000000+00+0\.00000.00000+00000.00+00.00.0
0.00....00..........00...X00.............00...X++.00....00....00.++.00....0
0.00.0000000000000000000/.00+00000000+00000000+\0.00000.00000.00.0000000000
0.00.0000000000000000000\.00+00000000+000/\000+/0.00000.00000.00.0000000000
0.00.++....00....00....++\00.......00.00X..\..X00....++.++.00.00....00....0
0.00000000.00+00.00.000000\0000000.00.0/.000\/000000000000.00.00000.00.00.0
0.00000000.00+00.00.0000000\000000.00.0\.00000000000000000.00.00000.00.00.0
0.......00....00.++.......++X...00.00...X..................00.++....00.00.0
0000.00.00000.00000000000.000\0.00+00.00.\0000000000000+00.00000000000.00.0
0000.00.00000.00000000000.0000\.00+00.00.00000000000000+00.00000000000.00.0
0....00....00....++....00.++.00X.........++.............00..........00....0
0.00.00000.00000.00+00.00000.00.\0.00.00.00+00000000+00000000000000.00.0000
0.00.00000.00000.00+00.00000.00.00.00.00.00+00000000+00000000000000.00.0000
0.00....00.00.++.00.00.......00.............00.++.00.00.++.00.......00....0
0.00000.00000.00000.00000000000.00.00.00.00.00.00.00+00.00.00+00000000000.0
0.00000.00000.00000.00000000000.00.00.00.00./\.00./\+00.00.00+00000000000.0
0.++.00....00....00.......00...............X..\00X..\00.00.00.......++....0
0.00.00.00.00000.00000000+00.00+00+00+00.0/000.\/000.\0.00.00000000.00000.0
0.00.00.00.00000.00000000+00.00+0\+00+00.00000.00000./0.00.00000000.00000.0
0.00.00.......00.00.......++.00...\...00....00....00/00.00.......00.++....0
0.00.00000000+00.00.00000000000.000\0.00.00.00000+0/.00.00000000.00.00.0000
0.00.00000000+00.00.000000000/\.000/0.00.00.00000+0\.00.00000000.00.00.0000
0.00.......00....00....00.++/..X00X++.00....00.++...\00.......00.00.00....0
0.00000000000000000000.00.0/0000\/+00000000.00.00.000\0000000000.00+00000+0
0.000000000000000000/\.00./0000000+00000000.00.00.000/0000000000.00+00000+0
0.......++....00...X00X00/...++....00....00....00.00/...00....00.00.++....0
0.00.00000000.00.0/.00.\/+00000.00000000.00.00000+0/.00.00.00.00.00000000.0
0.00.00000000.00./0.00.00+00000.00000000.00.00000+/0.00.00.00.00.000/\000.0
0.00.......00...X00.++.00.......++..........00.../00.00.00.00....00/..X...0
0.00000000.0000/000000000+00000000000000000.00.0/000000+00.0000000/.000\000
0.00000000.000/0000000000+00000000000000000.00./00000/\+00./\0000/0.000/000
0.00.........X00.00....00.......00.......00.00X00.++X..X00/..X00/++.00/...0
0.00.0000000/.00.00.00.00000000.00.00000.00.0/000.0/.000\/000+\/.0000/+00.0
0.00.0000000\.00./\.00.00000000.00.00000.00.0\000./0.00000000+00.0000\+00.0
0.00....00...X00/..\00.00....00.00....00.00...X00X00....00............\00.0
0.00000.00.000\/0000\0+00.00.00.00000.00.00000.\/.00.00.00+000000000000\0.0
0.00000.00.0000000000\+00.00.00.00000.00.00000.00.00.00.00+0000000000000\.0
0.00....00....++......X00....00.++.00.00..........00....00....00.......00\0
0.00.00000000000.000000\0000.00000.00.00000000000000000.00.00.00.00000.00.\
0.00.00000000000.0000000\000.00000.00.00000000000000000.00.00.00.00000.00.0
0....00....00.00....++.00X...00....00..........00....++.00.00.00....00....0
0.00000.00.00.00000+00.00.\0.00000.00000000000.00.00000+00.00.00.00.0000000
0.00000.00.00.00000+00.00./0.00000.00000000000.00.00000+00.00.00.00.0000000
0.......00.00.00....00...X00................00....00.++.00....00....00....0
0.00000000.00.00.0000000/.00000000000000000.00000000.00.00000000000.00.00.0
0.00000000./\.00./\0000/0.00000000000000000.00000000.00.00000000000.00.00.0
0.......00X00X00/..X00X...00.............00.++....++.00.++.00....00....00.0
0.00000.0/.00.\/+00.\/.00.00.00000000000.00.00000.00000.00.00000.00000.00.0
0.00000.0\.00.00+00.00.00.00.00000000000.00.00000.00000.00.00000.00000.00.0
0.......00X......00.++.00................00....++.......00................0
00000000000\000000000000000000000000000000000000000000000000000000000000000

Kalvorod Sun, 14 Aug 2005 - 15:37
You're right. I was just shocked that someone had beat me to the punch, as it only took about 2-3 days to get working for me. Our maps are quite different, and I'd be glad to help where I can.

And yeah I was thinking of having a save/load code, but it's a little hard to implement that because I don't want a level 69 hosting and slaughtering all the level 1 enemies at the start of the game, and I don't want it have it start at floor 69, and have a new time player get his ass kicked all the time. A difficult balance, so for now there is none.

The enemies are randomly generated (and besides for having to store all the unit groups at the top of the map, there are no problems with that), and I'll be working on Hero groups today. Once that is done I can use that rare occurance for just about any other rare feature that I will add.( I should probobly post this is my own forum, sorry)

Glad to see you optimistic about your map, I'm looking forward to seeing it.

SuperDuperGuy Mon, 15 Aug 2005 - 01:13
New Update: I have decided to continue with the second design. I have drasticly improved the generator, now there is a gareenteed path to the center from every corner, with any character. (I was pretty difficult to do, cause paths are dependent on character, whether a bridge was generated or not, it might be blocked off by walls ect.)

Thats is probably the most difficult part of this design. So much is dependent on character that its hard to make the dungeon work out. Right now I'm deciding how to generate keys to locked doors.

I think that if a lair is locked, I'll create a patrol team for that lair that patrols around the lair with a key. Or maybe make a dead group in a spider den or something. That is where things get complicated, when I start having inner related lairs.

I think what I really need to do now is start making the units, so I know what I have to generate from. Balancing units is accually alot harder than I thought it would be. I'm probably gonna have to make all units from scratch.

What I need are units that offer unique challenges to every character. Like some charactres will have difficulty with flying until they aquire an orb or something. The hobbit will be edible by the lizards, and he can overcome that weakness by using his listen ability that reveals rooms to him on other sides of walls/doors and avoiding them. Then he can find equipment that can help him overcome them to accually defeat them.

Kalvorod Mon, 15 Aug 2005 - 11:34
So your dungeon is separated into different sections for each player, and they don't over lap, is that right? Are the walls that separate perminant or not? And do the rooms vary in size and shape, or are they all square.

Mine are square, but I had an idea to make them different, but this requires making the map about 77% larger, so I'd have to have time to move things and re-do the whole system, and I havn't quite figured out how to do it yet.

If your walls that separate are perminant there is indeed a way to make 1 path that always works. I'd recomend having it generate from the finish point rather than the start. That way it would always work, am I right?

SuperDuperGuy Mon, 15 Aug 2005 - 14:08
Accually I'm very happy with the generator now, it already has a garenteed path to the center.

This is the algorithm I use:

Step 1: Generate Random maze by doing a random walk though the dungeon. If there is nowhere to go, find an already visited room and try again. Once the whole dungeon is filled, every single room is accessable from every other room. This also means the algorithm can't go a direction if a river room is blocking the path (when a bridige is randomly generated, it is allowed to take that path)

Step 2: Since I'm tring to make a dungeon, not a maze, I make the maze more sparse by removing alot of the dead end rooms. Now it is still a maze, but there are sections of unvisited rooms. (I make sure the corners and center are never removed) Every visited room is still accessable from every other visited room.

Step 3: Dead End Removal. Right now there are no loops in the dungeon, and many dead ends. So to remove them, I check all rooms in the dungeon, and randomly choose to remove them by using the first algorithm, only it doesnt stop till it hits an already visited room, thus creating a loop.

Step 4: Generate Monster Lairs. Now I randomly choose an unvisited room and use the first algorithm to make a section with a set number of rooms that is cut off from the rest of the map in one of the gaps. Then I choose how many exits I want it to have, and have them exit to the main maze. Then I can choose if i want it to be locked off, behind secret doors, maybe a tree wall blocking it off, regular doors ect.

Everything is done except the last part of the last step.

These are the web pages I used to make this algorithm. After playing with alot of algorithms, I ended up using a modified version of the last page, which seemed to give what I wanted.

http://www.astrolog.org/labyrnth.htm
http://www.astrolog.org/labyrnth/algrithm.htm
http://www.aarg.net/~minam/dungeon.cgi

Kalvorod Thu, 25 Aug 2005 - 08:37
Cool Links, I'll check them out. My algorithm does basically this: starts with 1 room as the start point and has a random chance that the room will be able to go up, or left(it's in the corner so there is 0% chance it goes right or down). From there it marks the rooms that are connected, and repeats the algorith, this time checking the new rooms as well as the first. I set how many loops it takes, and it goes ahead and generates the maze. Then I just have it pick a random room(checking if it is part of the maze ofcourse, because I have yet to see the full 10x10 grid be all connected in this meathod) and create the end of the maze right there. That way the end of the maze isn't nessicarily at a dead end. Because the way this is done, there naturally are a few loops, but ussually not.

EDIT: That last link is pretty damn cool. Might show it to the guys when we're playing D&D(I'm pretty sure that's a 2nd edition generator though).

SuperDuperGuy Fri, 26 Aug 2005 - 16:28
UPDATE: I might not get to work on this for awhile cause of school, but I'm now designing the units, spells and combat for the game, which is really what I wanted to use to make the game more interesting.

Right now there are plans for elemental resistance, critical hits for physical attacks, and low Range buffers so units can escape attacks after they have started. This way I can have a creep that does uber damage, but is slow so fast units can escape.

The critical hit system works like this: if a physical attack breaks a certain threash hold of damage determined by weapon type, a critical hit happens. It also takes into account things like if they are caught in a net, stunned, sleeping etc. So some attacks will need a high amount of damage to get a critical (breaking the thresh hold represets penatrating armor, weapons that need higher numbers to penatrate arent good at piercing) This way an increase of armor makes critical hits harder.

This way I can make heros that are good at killing big strong units, but bad at killing multiple weak units. and having heros that can kill the multiple weak units, but be bad at killing a single strong unit.

Every creep needs to give unique challenges to every character. For example there could be a fast creep that is harmless to fast heros cause they can escape (maybe not kill), harmless to strong heros cause they can stay and fight, harmless to heros that can hide, but really dangerous to slower weaker heros. Those heros would be equipped with good recon skills to avoid that creature all together, or they might save a staff of slow to trump that creep. (Thats why it needs to be random, otherwize recon skill will be useless after the first play)

This section will take some time, and even more time cause i have to cut down on development when school starts.

Almost got a really good visibility system going. I nearly had it so if a torch was in your line of sight, you gain vision of that torch. And all units would have like no visibility otherwize (except night vision) unfortunatly there is no way to test if a unit is visible to another unit.... there is a way to test visibility to a player, so i used player 12, and granted visibility of a single torch, and tested the units around it. This doesnt work cause visibility doesnt happen instantly. If there was just a way to test if which units are giving visibility of another unit...

***EDIT***: Got the lighting system working, works really nice too! yay. Now if a light source is in your units line of sight, it will be revealed to you (Like real light!) now you can really hide in the shadows.

mogmiester Tue, 06 Sep 2005 - 12:18
sounds really cool. are you looking for help,or is this just a progress thread? i would like to help, but if you are doiun it solo, cool and goodluck. i sounds really interesting so far. Just a question though - you say that some chars are good at killing big strong units, but bad at killing multiple weak units. and having heros that can kill the multiple weak units, but be bad at killing a single strong unit. doesnt this mean that you will have a critical hit on lower damage weapons?just wondering

SuperDuperGuy Tue, 06 Sep 2005 - 20:01
Ok! After a week of no internet...

Accaully this started out as a recruitment thread, but after I got my generator working, I felt that I was all set and it gradually turned into a progress thread. I suppose I could use help, but I've just started the accual creating of units/systems, still very experimental. The generator alone took me like a month just to get working right, and there is still quite a bit of work to do with it once I define all my units (defining units will prove to be the most challenging)

The critical hit system is pretty confusing, I think I barely understand it myself. It's the only way I could think of getting to work with the systems warcraft already is using (armor class, armor tables)

All weapons can get critical hits. In fact, damage will just represent the weight of the weapon plus the strength of the person swinging it.

For example: A katana isnt that heavy, if someone just tried to chop you with it in the shoulder (without the slicing action) you would probably be ok, with a maybe a bruse. it would be a low damage weapon. But a katana is a three foot razor blade, so it would cut deep into your flesh causing a serious wound.

So there are 4 types of attacks with an example of how it might work

Blunt - these weapons are ususally heavy but they can only crush you not cut you so you wouldn't be cut and bleed to death. the critical hits arent as bad as the other weapons. you are going to get a good thump in or out of armor.
Chop - sort of like the blunt weapons, but not as sharp as a katana. The critical hits are worse, but if you armor holds, the thump isnt as bad.
Slice - can't cut though armor like steel armor, but when it does get though, you are in trouble (unless you are a skeleton and have no flesh)
Pierce - accually wasn't sure what I was going to do with this one, kinda depends where hit. Was going to use the state of the unit (ensnared, sleeping) and move speed and other factors to decide the severity of the hit.


I don't even know if this would create the type of gameplay I'm looking for, still experimenting... I'm just tring to create as many dimentions of gameplay as possible, without making it too complicated ( if thats possible :) ) Might scratch the whole critical hit system.

Really i made this system with cleric in mind, he will use a blunt weapon, and has turn undead, so he would be great for killing undead. I think what I will make one more update thread (I think I got the classes and abilities decided still got to make them though) with a map posted with it, and let anyone play with it while I'm at school (might work on it on sundays, but thats it)


mogmiester Wed, 07 Sep 2005 - 14:01
hmm, ok. how are you going to change weapons? an inventory system? or just "You can hold 1 weapon etc. in your normal inv"? the
first looks better, but the second would be better as most people on bnet dont understand basic maths

SuperDuperGuy Wed, 07 Sep 2005 - 14:46
Thats easy, you don't switch weapons :p Accually I had the idea of doing something like the world of warcraft map where they used models without weapons with attachments. This would be cool, but would probably just complicate things alot more. But the bandit unit will have a change weapon button and switch between axe and spear. As for equiping, I have a spell equiping system and backpack system that is really easy to use. Uses modified channels that target items so it doesn't take up any inventory space. This would translate easily to equiping armor and such.

If you think about it, finding a new weapon that makes you throw away your old one should be a rather rare event. ususally characters have specially crafted weapon for them that they keep in good condition (lord of the rings for example)

But instead of making tons of weapons, I can just make items that augment any weapon to make items more powerful. Like instead of making a flame sword, flame axe, etc, I can just make the flame orb.

SuperDuperGuy Wed, 07 Sep 2005 - 23:08
This will be the last post of an update for awhile, but I think this will be the character system (with minor adjustments if I decide to add an ability)

Each character will start out with points to distribute to different skill sets. Each charater will have different caps for the skill sets, and different skill sets to choose from.

Skills:
listen - choose a door/wall, and reveal whats on the other side
tame - able to tame animals (which animals based on level)
morph - able to morph into animals (which animals based on level)
trap - build traps (which traps based on level)
steal - steal item from unit
charisma - level determines max number of mercs
alchemy - able to create poitions and medicines (which depends on level)

Skill Sets:
Ranger - (1) ensnare, tame 1 (2) tame 2 (3) tame 3
Thief - (1) hide, listen (2) pick locks, sneak (3) steal
Build - (1) repair, disarm, arm, traps 1 (2) traps 2 (3) traps 3
Morph - (1) morph 1 (2) morph 2
Charisma - (1) Charisma 1 (2) Charisma 2 (3) Charisma 3
Command - (1) command aura (2) battle call
Sage - (1) identifty item (2) recharge staff, control magic
Combat - (1) Taunt (2) War Stomp (2) Shockwave
Alchemy - (1) alchemy 1 (2) identify item, alchemy 2 (3) alchemy 3
BloodLust - (1) Bloodlust (2) Metamorphosis (3) Lust Arua

Spell Schools: (gives spell examples)
Necromancy - control spiders, howl of terror, death coil, raise dead, ect
Witchcraft - Polymorph, curse, silence, charm, transmute
Summon - golem, water elemental, lava spawn, pheonix
Socery - volcano, flame strike, blizzard, moonson, earthquake
Nature - entangling roots, force of nature, rejuveniation, roar
Divine - remove plauge, remove poision, heal, resurect, dispell
Illusion - mirror image, invisibility, telekinesis, cloud
Wizard - wall of fire, ice wall, fireball, ice shards, flying rocks

There are three sets of characters, Allience, Horde, and Non-Allied

Each team chooses a race, then they can choose any character from that race or chose Necromancers. When you run into creep camps, if you are horde, you are allied with goblin, orc and troll camps, humans allied with allience allies are dwarf, elf, and human. If both are Non-Allied, you will be allied with no one!

Allience:
---------

Knight (STR): Alliences strongest unit
4 Skill Points: Combat 3, Charisma 2

Captain (STR): Isn't as strong as the knight, but better able to command armies
4 Skill Points: Charisma 3, Command 3

Paladin (STR): Strongest spell casting character
4 Skill Points: Divine 1, Charisma 2, Command 2

Cleric (STR): Weaker fighter, but able to cast more spells
4 Skill Points: Divine 3, Nature 2, Charisma 2

Ninja (AGI): Spell casting fighter able to confuse enemies with spells
3 Skill Points: Illusion 2, Charisma 2, Command 1

Ranger (AGI): Decent fighter able to tame wild animals
4 Skill Points: Nature 1, Ranger 3, Charisma 2, Thief 1

Thief (AGI): Good at navigating the dungeon without detection
3 Skill Points: Thief 3, Charisma 1

Dwarf (AGI): Alliences craftsman
4 Skill Points: Trap 3, Thief 2, Charisma 2

Soceror (INT): Powerful Spellcaster
4 Skill Points: Summon 3, Socerey 3, Sage 2, Charisma 1

Illusionist (INT): Able to cast powerful illusion spells
4 Skill Points: Illusion 3, Witchcraft 3, Sage 2, Charisma 1

Mage (INT): Genaric Spellcaster
4 Skill Points: Wizard 2, Witchcraft 2, Sorcery 2, Illusion 2, Sage 2, Charisma 1

Druid (INT): Caster of the forest
4 Skill Points: Nature 3, Divine 2, Charisma 1, Morph 2

Horde:
------

Chieftain (STR): Hordes strongest fighter
4 Skill Points: Combat 3, Charisma 2

Captain (STR): Horde's version of captain
4 Skill Points: Charisma 3, Command 3

Brawler (STR): Still need to figure out what he does!

Berserker (STR): This character goes made with rage after seeing enough blood
4 Skill Points: BloodLust 3, Charisma 2

Beastmaster (STR): stronger than the ranger
4 Skill Points: Ranger 3, Charisma 1, Command 2

Samuri (AGI): horde version of ninja
3 Skill Points: Illusion 2, Charisma 2, Command 1

Thief (AGI): horde version of thief
3 Skill Points: Thief 3, Charisma 1

Tinkerer (AGI): horde version of the dwarf
4 Skill Points: Trap 3, Thief 2, Charisma 2

Sorceror (INT): horde version of the sorceror
4 Skill Points: Summon 3, Socerey 3, Sage 2, Charisma 1

Mage (INT): horde version of the mage
4 Skill Points: Wizard 2, Witchcraft 2, Sorcery 2, Illusion 2, Sage 2, Charisma 1

Alchemist (STR): specializes in alchemy
4 Skill Points: Combat 2, Alchemy 3, Charisma 2

Witchdoctor (INT): able to cast witchcraft and use alchemy
4 Skill Points: Charisma 1, Alchemy 2, Witchcraft 3

Non-Allied:

Dark Knight (STR): Like the paladin but darker
4 Skill Points: Necromancy 1, Command 2, Charisma 2

Witch (AGI): stronger spell caster
4 Skill Points: Necromancy 3, Witchcraft 3, Charisma 1

Necromancer (INT): strongest Non-allied spellcaster
4 Skill Points: Necromancy 3, Sorcery 2, Charisma 2


I still need to decide how many spells I want chars to be able to have equiped at a time. I could make it four using the main command card ( i could make 4 of each spell this way to make it so you can choose the position and hotkey)

Or i could make a spellbook that holds the spells, but then i would have to make sure there are no conflicts of order strings or hotkeys.

Or i could make a spellbook for each school. I nearly had it so all spells could be equiped at once, with there only being 11 spells in each school. I think I will want more than this though. Could also be that I have three levels of each spell, and all people with that school can use all spells. Right now I'm thinking of making one level of the spells, but giving them a level, preventing lower level abilitied chars to equip them.

----------------------- END THREAD ------------------

The map has been in progress for some time, I had to stop completely for awhile, but I think there is still some life left in it. I completed the generator, and am only working on the unit/ability/trigger part. I'm going make a single generated map thats already made to test the stuff, then readd in the generator, and modify it accordingly. The project nearly died cause my triggers were getting too complex but i think i know what can and can't be done when you start with an empty map. Plus my test gen map shows me its resonable to allow players to wait for genrations as long as they can be picking thier character adn setting them up while its going (it is a bit laggy while generating, but what can you do...)

I switched the map to trees instead of walls which allows for arbitraty sized rooms(before walls had to stay walls cause cliffs cant be generated). Instead of being a maze, i split the map into 4x4 tile sectors that can be a wall of trees or empty (and some smoothing by making tiles with trees runing down the diagonal)

Alot of problems have been gotten rid of once i switched to outside trees based walls. I took out the lighting system, the blunt, pierce, slash system, alot of the elemental system (i will have 3, fire, cold, and lightning) and I won't have as many spells, for creeps can't cast custom spells (DOH!) And i may edit the armor and attack tables to be more like RealCraft, to make units have more uniqe properties. (I never understand the logic behind TFT armor & attack table, except the forification & seige ) but i will have some new ones that players can cast, and some that creeps can as well by cleverly picking the right dummy ability (Ice Wall, Steal and Telekinesis for example. I also made a forest wall ability for the ranger, so they can freely walk though the forest). I think having 4 spells equiped at once will be the best solution, making sure hotkeys are all unique.

Ability system is alot different. Now instead of schools, each ability is classified in different "schools" this way fighters can use a similar system, and its more like warcraft 3 where even fighters are basically spell users. The rouge needed some better abilities as well. So the double image spell would have two classifications, rouge and illusionary (I may made secondary spells of the same type that use less mana, so fighters and rouges have less mana, but can use the abilities, and mana burn wont hurt them as much)

I'm hoping that two of the lairs will be large orc and human city that are constantly fighting, so you could be trying to find some treasure, and be caught in the middle of a battle. I decided to leave experience in the game and the hearts of monster lairs will be the strongest monsters, and they will send weak scouts around for you to xp on. Once the heart is killed, the generation of those types of monsters will stop.

What I Am working on right now is a system so characters can steal from cities during the night. Units garrison in the buildings at night, and have a scout or two aleart the troops to come out if they see you. Then you could put them asleep, avoid thier view, net them, or whatever to steal what you want. Depending on your class, you will be alied with different groups, so you can freely enter thier city and do buisness buying items, units, abilities and what not. Theres also a totally neutral city to buy units.

I may or may not add gates and locked gates, but i might still have lock picking for rouges an have locked and unlocked crates with treasure inside. Then if you are a fighter, you have to break them open, alearting nearby creeps. The rouge could potentially enter a monster lair at night, pick alock, steal, and leave without ever being detected. I want to have gates, but the AI would go a bit insane for the battling cities.

The undead will be interesting, they will constantly attack neutral cities turning pesants into zombies, and if a body decays on blight, it turns into a skeleton that raises at night and is dormant though the day.

As for the goal, I think at the begining players will get to pick thier goals they need to do to win (get gold, kill monsters, finish quests, collect unique items, kill other players, take out the human or hoard city) Then whoever finishes thier goals first is the winner. I want the map to have a compeditive feel and feel like a survival map where you have to be very careful with your resources and use them wisely, not an open rpg where you can hang out.
 
Status
Not open for further replies.
Top