Procedurally Generated 3D Dungeons

Procedurally Generated 3D Dungeons

Vazgriz

2 года назад

277,500 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

Glenn Clark
Glenn Clark - 03.10.2023 16:10

One cool modification you can do is that you can modify the minimum spanning tree algorithm to used weighted distances instead of straight Euclidian distances. That way you can make rooms that are supposed to be well connected in fact have more connections instead of being leaf nodes. For instance you give the great halls an artificially small Euclidian weight and the closets a high weight so that they are the last connected and thus act as leaf nodes.

Ответить
Dhieen
Dhieen - 21.09.2023 15:21

How many times did it took you to do that?

Ответить
GameDev Gerry
GameDev Gerry - 28.08.2023 21:25

This awesome!!!

Ответить
Ben Mora
Ben Mora - 20.08.2023 14:59

How did you then get it to know where to place doors and walls? (Ie, how does each hallway cube know where to connect to other hallways and to rooms?)

Ответить
DerryChip
DerryChip - 10.08.2023 06:07

How do you go about turning the colored cubes into hollowed rooms, hallways, and stairs

Ответить
SooT Guy
SooT Guy - 07.08.2023 13:15

before watching the video
and I Don't want to complete it
he will use wave function collapse

maybe lol

Ответить
İsim bulamadım o beni bulsun
İsim bulamadım o beni bulsun - 02.08.2023 23:54

I did same thing inside Unreal Engine, that's also could be used for 2D and 3D maps totally works same as enter the gungeon procedural map generation. I wonder if I convert this to plugin, would people be insterested.Rooms are premade and corridors to connect one room to another if overlapping is involved is procedural.

Ответить
Bobby Clips
Bobby Clips - 24.07.2023 23:26

I REALLY WANT TO KNOW HOW TO DO THIS IN UE5 WITH BLUEPRINT!!!!

Ответить
Chad Williams
Chad Williams - 22.06.2023 09:28

"if you'd like to see more, dont get your hopes up", lmao. love the vid, interesting work.

Ответить
BlinkSun
BlinkSun - 29.05.2023 16:41

Nice done !

Ответить
Drakmour666
Drakmour666 - 24.05.2023 22:12

How this is implemented in the game engine itself? All those red, green and blue squares and the filling pathfinding process. :-) Was it already made in Unity or external soft?

Ответить
5313da8b
5313da8b - 14.05.2023 13:11

neat, i tested that game a little, if im not wrong its that in the works magic and swordplay battleroyale

Ответить
Scott Mc Fadden
Scott Mc Fadden - 12.05.2023 21:06

Amazing breakdown of a way to automate a 3d layout . I have ideas for better generation but it's very much beginner thoughts on how to achieve / transition : I basically used multiple counting loops example you have a 500 room maze setup a matrix then for room = 1 to 500 ---then used a matrix check in another loop that counts like room but we will call him loop to see if the room has data if yes see if finished tagged no ? then run a loop test for a hit (the test can always be a variable /prior set ) oh it hit what number we on ? room 1 loop 12 well now room 1 and room 12 should be linked... That is about all I can recall of the old program I wrote in basic but it was a text adventure ai that I made back in 1995.. I kind of got out of computers and wouldn't try programming again for years oh I exited the loop for the room if the loop had more then 2 to 5 hits (it was rng) but yeah this structure was memory intense and on the slug 486 pc it would take a whole 30 to 40 minutes to just figure out how to write the text adventure , so the code even when it was complete was pretty awful. Still it could easily combine with the given concept happy trails and don't go making a terminator or do, I no longer care.

Ответить
Void lon iXaarii
Void lon iXaarii - 10.05.2023 18:24

Thanks, that was interesting

Ответить
Patrick Da Silva
Patrick Da Silva - 25.04.2023 15:58

I am working on a game and I will definitely revisit this video a few times! Thanks a lot for the content! I just gave you a subscriber.

You sounded from the video that you "hacked" a variant of the A* algorithm. But the abstract A* algorithm is implemented on a mathematical graph, not on a 2D grid. Did you think of adding a specific edge for staircases with its own distance weight that would be used to connect cells that are 2 across and one up and then implementing the classic A* algorithm for graphs? It's mathematically a bit more involved but you might recover your performance you were looking for.

In other words, each cell would have 12 neighbors instead of 4 (minus obstructions): the four cells adjacent to it, and the 8 possible staircases that can connect to it (all four directions, but going up and down are options). Then you just give staircases the appropriate weight for the distance they take and you run classical A*

Ответить
Eric Tripps
Eric Tripps - 15.04.2023 13:27

Im attempting to recreate this (with the same asset pack.) I'm making a room using all blank walls, then using ray casting to find/swap out walls for doors, and finally building a path from door to door. Eventually I want a logic script that will look at the room's "type" and size and the auto fill with appropriate assets.

Ответить
davidson2727what
davidson2727what - 30.03.2023 20:50

dont get my hopes up? I can taste the PTSD in your voice when you say that 😆

Ответить
Jkauppa
Jkauppa - 27.03.2023 09:02

or just pre-fab wave function collapse (block matching generator in 3d, or just pipe fitting simulator)

Ответить
isodoublet
isodoublet - 17.03.2023 00:20

Couldn't you have just removed the "straight up" direction from the A* adjacency list?

Ответить
Von Doodle
Von Doodle - 12.03.2023 18:41

I would so play a stylised dungeon game like this that’s random generated

Ответить
Von Doodle
Von Doodle - 12.03.2023 18:32

I think the basic style tickles me most

Ответить
GameMaker Rob
GameMaker Rob - 11.03.2023 02:04

Great video!
I've done 2D procedural generation a fair bit and my latest approach was similar in some ways. I randomly placed buildings and then used A* path finding to make connections between them, but these are not corridors, they are roads which npcs use to get from place to place.
I made the generator calculate a path from each building to every other one, but favoured road tiles, so I end up with a fairly decent looking settlement + roads.
Sometimes it means that a building has a longer path to another one than if I just took the shortest route and I'm not decided on if that's a good or had thing yet.

Ответить
Nicolas GRANIER
Nicolas GRANIER - 03.03.2023 14:34

Where are my hopes D':

Ответить
ct2034
ct2034 - 20.02.2023 15:24

If you use a Manhattan Heuristic in astar, you won't end up with as much zigzag hallways

Ответить
Luke Aps
Luke Aps - 10.02.2023 07:16

Cleverwork.

Ответить
Oz DeVil
Oz DeVil - 10.02.2023 03:30

Tastes like daggerfall

Ответить
rodbot
rodbot - 09.02.2023 00:01

Does anyone know how to generate wider hallways? What I've done is change the A* cost function so it's more expensive to join existing hallways, then I made the hallway generation between two given rooms run a certain amount of times to create wider hallways. This works most of the time but has the obvious side-effect of creating some very bizarre corridors. Is there a better way to implement this?

Ответить
brandon keller
brandon keller - 08.02.2023 21:43

would have been nice to know how to implement the walls and floors if you're not going to tell anyone throw a package on the asset store people will buy this but keep the room implementation instead of just the cubes its got me stumped trying to get everything to generate right all the walls I add either get stretched or stacked on top of each other

Ответить
HalfLife2Beta
HalfLife2Beta - 24.01.2023 01:50

hey which assets for textures and 3D Models did you use please ?

Ответить
Vinicius Donadio
Vinicius Donadio - 11.01.2023 12:47

This must've been used in Pixel Dungeon

Ответить
Lachee
Lachee - 04.01.2023 06:26

i would've just checked the difference in y and determine if there is no path next to us make it incredibly expensive to move up

Ответить
Jared Seeders
Jared Seeders - 04.01.2023 02:12

Very cool.

Ответить
Samuel Hugo
Samuel Hugo - 31.12.2022 13:52

too bad there are very few good tutorials for writing the code for this especially in godot

Ответить
Krampus
Krampus - 14.11.2022 22:35

The great thing with this is, with the MST, you can define the critical path and as a result, add keys and/or puzzles to make sure that the player is always able to traverse from the beginning to the end.

Ответить
Principia Libertatis (The Principles of Liberty)
Principia Libertatis (The Principles of Liberty) - 09.11.2022 01:35

cant stop thinking about the phrase "degenerate tetrahedra"

Ответить
SKYRIXDreamer
SKYRIXDreamer - 23.10.2022 07:47

Step one should be "learn code" :'')

Ответить
Lucas Ackman
Lucas Ackman - 22.10.2022 11:09

I realize this is nearly a year old now, but I went ahead and started recreating it (trying to use the repository as little as possible) and I noticed in a console log that it thinks there are a lot more edges than there actually are after completing the Bowyer Watson algorithm. I assume this gets taken care of automatically by the MST search, but I would be curious as to why it's happening here as if I could, I would prefer to clean it now for performance reasons.

Ответить
Joseph Luce
Joseph Luce - 16.10.2022 06:33

good stuff but the algorithms used are far too complicated, you can get the same result by just using BST rooms method.

Ответить
Tomfoolery
Tomfoolery - 11.10.2022 04:53

*Vazgriz when researches don't outline an algorithm for the mathematically complex procedure he needs*: Fine, I'll do it myself

Ответить
OrangeBanana
OrangeBanana - 05.10.2022 17:17

Very cool! I like it a lot.

Ответить
Martin Tørnby
Martin Tørnby - 30.09.2022 17:55

I like your content, but the music steals too much focus.

Ответить
Shaun Bradley
Shaun Bradley - 27.09.2022 21:14

This is all well and good but what about the reality of the how and why of the where of any facility. Nobody (ever to my knowledge) has ever just randomly designed a layout and built it. There is always an original purpose for the why, where, and how.

Ответить
kevnar
kevnar - 25.09.2022 19:12

I like this video and want to see the final game produced.

Ответить
Mr. Omen
Mr. Omen - 17.09.2022 01:58

I think you could have simplified the problem in 3D by doing it first in 2D and then adding vertical offsets. Not sure, if that would run into issues but just a suggestion.

Ответить
x
x - 16.09.2022 10:18

Some seriously good content here, thanks for sharing, Vaz. Loved the ending too!

Ответить
King Blubber
King Blubber - 11.09.2022 06:28

I thought your tone would be too offputting, but the content of the video is actually really good.

Ответить
zepelin.101
zepelin.101 - 09.09.2022 14:58

bro you are fucking smart. I did not think of using spanning trees

Ответить
Kayleigh Ohler
Kayleigh Ohler - 25.07.2022 06:23

If you like this video and want to see more like it don't get your hopes up - subbed!

Ответить