Пікірлер
@Name-qd7vh
@Name-qd7vh 14 сағат бұрын
How would you connect navmeshes from different rooms?
@MajikayoGames
@MajikayoGames 4 сағат бұрын
I haven't tried it, but AFAIK there are a couple ways to connect navigation meshes, from looking i think using edge_connection_margin looks easiest, i would think you make sure that is greater than the gap between any dungeon room doors: docs.godotengine.org/en/stable/tutorials/navigation/navigation_connecting_navmesh.html
@kimplll
@kimplll 21 сағат бұрын
How would I change the direction the water moves?
@MajikayoGames
@MajikayoGames 16 сағат бұрын
you could add another multiply in the shader like * -1.0 or * vec3(-1., -1., 1.) to multiply each the xyz components separately
@villainsgame9778
@villainsgame9778 Күн бұрын
🙏🙏plz make soulslike melee combat system...
@Syrdaimons
@Syrdaimons 2 күн бұрын
I've been working on my own source/valorant inspired project for the last couple of months and your channel is exactly what I've been looking for. You've covered everything I could ask for and more, even had the same idea for portals that I did a while ago. Can't wait for more videos!!
@fridge.interactive
@fridge.interactive 2 күн бұрын
Honored to have our game GRIMHAVEN featured! Your plugin is an absolute must-have for anyone in the market for procedural gen -- highly recommend!
@MajikayoGames
@MajikayoGames 2 күн бұрын
awesome!! thanks so much
@robertcosta6891
@robertcosta6891 2 күн бұрын
nice video, what do you use for your ingame console?
@MajikayoGames
@MajikayoGames 2 күн бұрын
thanks, i used my own basic one i made, i might release it at some point, but it's very basic not many features. just made it for the video real quick.
@tyler361t2
@tyler361t2 2 күн бұрын
any ragdoll physics?
@MajikayoGames
@MajikayoGames 2 күн бұрын
im interested in doing a video on this but i have some other stuff planned first :)
@ConnorSaxe
@ConnorSaxe 2 күн бұрын
Is there a way to avoid using 'Engine.get_physics_frames()'? The idea of having a counter that just keeps going up effectively infinitely seems like a bad practice that could lead to issues.
@timmygilbert4102
@timmygilbert4102 2 күн бұрын
Now add cyclic dungeon design😊
@menteirradiante1307
@menteirradiante1307 2 күн бұрын
cara muito bom o seu trabalho, obrigado por compartilhar. desejo tudo de melhor pra vc.
@oddlytimbotwillison6296
@oddlytimbotwillison6296 2 күн бұрын
Very nice! A good primer for rigidbody interactions.
@kulak8548
@kulak8548 2 күн бұрын
Add this line after you declare move_amount: move_amount = min(move_amount, %CameraSmooth.position.length() * delta * 20)
@futursoup9007
@futursoup9007 3 күн бұрын
👏👏👏👏 😎
@DarinLawsonHosking
@DarinLawsonHosking 3 күн бұрын
Any idea how I could add a buoyancy surface to this so I could have a boat float on it and have it "swimmable" both under and on the surface?
@MajikayoGames
@MajikayoGames 3 күн бұрын
I did a video on making a swimming mechanic for FPS controllers here: kzbin.info/www/bejne/fqu0p3xqrNylY5I However, I haven't worked with buoyancy much. I think you might be able to modify gravity for rigid bodies using an Area3D.
@DarinLawsonHosking
@DarinLawsonHosking 3 күн бұрын
@@MajikayoGames I am trying to build a game based around island exploration (majority ocean biome and boat travel) but buoyancy is kicking my ...
@JustinThorLPs
@JustinThorLPs 3 күн бұрын
I like the pre-placed room idea, Would it be a possibility to have several pre-placed rooms that the dungeon could randomly generate to create connections between? So say I have another pre-placed room every 2 or so levels It will connect them.
@MajikayoGames
@MajikayoGames 3 күн бұрын
not sure i fully understand, but it sounds like that would work. you could even pre place rooms in code, then call .generate after. that's what i did in the mansion example. there's also the custom get random rooms function which could work for this.
@livesleyboxing9103
@livesleyboxing9103 3 күн бұрын
Fantastic!! I was making my own but this seems so sophisticated I can already use the rooms I made too 👍👌 I’ll mention you in credits for sure haha 🤣 I have one question tho… how can I generate a navigation mesh after generating the dungeon? I just have a one floor dungeon so just parent all rooms to a nav mesh node and bake after generation?
@MajikayoGames
@MajikayoGames 3 күн бұрын
glad you enjoyed :) i haven't tried nav mesh generation yet. but yeah i assume you could just bake it after if you needed to. or, i think you might be able to pre bake it for each individual room and then the navigation server joins overlapping points. i haven't looked too much into it though.
@livesleyboxing9103
@livesleyboxing9103 3 күн бұрын
@@MajikayoGames oh great yah I thought maybe it would work baking it in pieces, it works for occlusion culling at least! I wonder what you got cooking now ahah this is such an awesome unknown godot add-on! 👍👍🙏
@GrunkleSoos
@GrunkleSoos 3 күн бұрын
Have you heard of Dungeon Architect for Unreal / Unity? I have been dreaming about something similar for Godot for a while now. Like another commenter said lock and key generation would be amazing! Thanks for making this I really think we will see some great games using it soon.
@MajikayoGames
@MajikayoGames 3 күн бұрын
i have seen dungeon architect, it did look pretty cool. would be neat to build this out some more, if i have time :)
@quinnleavitt4105
@quinnleavitt4105 3 күн бұрын
Dungeon Architect was one of the inspirations for my comment. If we even got a fraction of that functionality, I think it'd go a long way for making procedural generation easier in Godot.
@SantiFarina-pd8od
@SantiFarina-pd8od 3 күн бұрын
Man, this is extremely helpful for my game (and my sanity), now I don't have to code it from scratch XD TY!!!!
@quinnleavitt4105
@quinnleavitt4105 3 күн бұрын
Would you be interested in lock and key generation? By defining rooms as having a key and then having farther rooms with locks you can use the room/node order to make sure each key is available before you encounter the lock. The lock could be an enemy you have to defeat to progress or a puzzle or just a locked door. I think that would be the thing that would take this add on to the next step. I'd be interested in contributing to help accomplish that goal since I'd need it for my game's dungeon generation.
@MajikayoGames
@MajikayoGames 3 күн бұрын
Currently planning some other projects so I won't have time to implement this, but you may find the source code overview portion of the tutorial I did helpful. All the code is CC0 so you are welcome to modify and do with it as you please.
@quinnleavitt4105
@quinnleavitt4105 3 күн бұрын
@@MajikayoGames Alright I'll see if I can implement it and if I get something working I'll open a pull request with the changes from my fork.
@MajikayoGames
@MajikayoGames 3 күн бұрын
Make sure to check out the awesome indie games being created with this addon! Grimhaven by Fridge Games: www.youtube.com/@fridge.interactive / x.com/fridge_game Rift of Nostaria: www.youtube.com/@RiftOfNostaria-AFantasyL-nj6lg / x.com/RiftOfNostaria Also check out the full tutorial if you want to use it yourself: kzbin.info/www/bejne/rGabnWNre9iXhtU
@onokoreal
@onokoreal 3 күн бұрын
The gift that keeps on giving! Great work. Anything I should be aware of when updating from older version?
@MajikayoGames
@MajikayoGames 3 күн бұрын
The main difference is that dungeon kits are no longer a thing, but many improvements were made other than that. Instead of dungeon kits now, you just define individual room scenes, and add them to the DungeonGenerator3D's room_scenes property. Also, you no longer need AABBs you just set the room's size_in_voxels property for that. I added a ton of debug info so hopefully the new version is a lot easier to use.
@onokoreal
@onokoreal 3 күн бұрын
@@MajikayoGames Oh I see so I already had this version this is the same one that you showed on your last tutorial video right? I'm guessing I still need to update for a few fixes that happened over the last two weeks? I'll make sure to send you footage when I get a playable version of my game!
@MajikayoGames
@MajikayoGames 3 күн бұрын
@@onokoreal awesome would love to see it! yep i did a few bug fixes and minor improvements in the last couple weeks, it should be stable by now. anything else ill be adding, will probably just be bug fixes if anyone finds any glitches.
@onokoreal
@onokoreal 3 күн бұрын
@@MajikayoGames Awesome thanks. Quick question if you don't mind I just updated my whole addon folder and everything seem to work the same so it went well. But I wanted to try some of your new prefabs to see how they work, notably the mansion. Didn't want to reuse your "debug" spawn tool again since I have my own setup for things so I setup a Dungen3D node with the mansion rooms, then added the HouseExterior prefab around and also added MansionEntranceRoom and aligned it in the editor (did manually what the script does when you choose mansion with your debug tool basically) Despite that I'm getting an issue where HouseExterior stays invisible and never make the "cut" needed for the entrace to be collision free. TLDR I setup a DungeonGenerator3D with HouseExterior scene from the mansion prefab along with the mansionrooms but the housexterior script doesn't seem to load properly outside of being loaded from the debug tool. I'll let you know if I figure out why haven't dabbled too much with your tool lately. thanks.
@MajikayoGames
@MajikayoGames 3 күн бұрын
@@onokoreal ah yeah you might have to adapt the HouseExterior to your own scenes. that one has some setup being done from the demo scene generation script. it's just meant as an example to show what is possible, you can refer to the scripts in the DemoScene and the HouseExterior and create some similar. Also you can check the wiki for more info on how to use the addon: github.com/majikayogames/SimpleDungeons/wiki
@RiftOfNostaria
@RiftOfNostaria 3 күн бұрын
Once again, great job on the addon!
@Darmanarnar
@Darmanarnar 3 күн бұрын
excellent tutorial I appreciate that you take time to show documentation and do more show than tell.
@elilentiart8025
@elilentiart8025 3 күн бұрын
So, I've been playing around with this tool and am having a blast. I have tried several terrain options for Godot and this is by far my favourite and the most intuitive for a beginner. I have a few questions but please forgive my ignorance as I am new to game dev. Is there any way to add further textures to the map or is it locked to 4 (I'm assuming not)? Also, is it possible to use a shader as a texture while still using the splatmap function? A final suggestion, I feel like the one key feature this tool could use is a smooth brush. It could help a lot with sculpting land formations. I realise that is something you have probably already considered but wanted to share my impressions. Thanks again for sharing this!
@MajikayoGames
@MajikayoGames 3 күн бұрын
Glad you are enjoying! All valid questions, and would be very good to add. However, this add-on was more intended as a proof of concept/starting point for anyone to create their own terrain system, modifying mine or referencing my code and this video. For the core of it, I want to keep it as simple as possible. It is locked to 4 textures currently. Shader you couldn't use as a texture. It only accepts Texture2Ds as textures, whereas a shader would be a material (BaseMaterial accepts Texture2Ds to color it). I'm sure if you modified the terrain shader, you could have some interesting setup where for certain colors of the splatmap you could use different fragment shader logic. Smooth brush is a good idea. I wonder does flatten accomplish a similar purpose? I guess not as effectively, probably for smooth you would want to maintain hills. For another pretty easy to use terrain system which has a lot more features such as more than 4 textures, I would recommend hterrain if my SimpleTerrain isn't enough for your needs. Hope this helps :)
@elilentiart8025
@elilentiart8025 3 күн бұрын
@@MajikayoGames Thanks for the reply :) I suspect I'm trying to run before I walk here. If I stick with learning GDScript I could potentially implement these changes myself for my own projects.
@entergamingvn7186
@entergamingvn7186 5 күн бұрын
u can make tutorial procedural infinite terrain 3d generation in godot ? please
@nevespt
@nevespt 7 күн бұрын
is there anyway to use it for 2d roguelike dungeons games?
@MajikayoGames
@MajikayoGames 7 күн бұрын
currently no it just works for 3d. ive thought about adding 2d but moving on to other things than this addon after doing a bunch of work on it.
@UnderGamer_Official
@UnderGamer_Official 7 күн бұрын
When rocket scientist makes game. 💙
@PastaMaster115
@PastaMaster115 8 күн бұрын
I also experienced that problem you had where the InteractableComponent node showed up in the wrong place and I had to place it in the correct node. I didn't notice it until my door wouldn't work and I kept playing parts of the video over and over. It was that.
@PastaMaster115
@PastaMaster115 8 күн бұрын
It took me so long to figure out what "i" was until I heard you say "iterations". That makes more sense. You used i in the RiggidBody3D video too and I didn't know what it was then either. Now the code is clicking in my head lol
@MajikayoGames
@MajikayoGames 8 күн бұрын
interesting i don't think i ever realized i implies 'iterations' haha. i always just used i because that's what all the examples used when i first learned loops. i, then j for nested loops, nested again i think it's usually k for the var name. but yes for i in range(0, 10): iterates our i var from 0 to 9 throughout the loop
@elilentiart8025
@elilentiart8025 8 күн бұрын
This tool is amazing! Thank you so much for sharing this with the Godot community.
@adamthefirst401
@adamthefirst401 8 күн бұрын
Is there a way to not generate diagonal corridors?
@MajikayoGames
@MajikayoGames 8 күн бұрын
i actually just added a heuristic_scale option to DungeonGenerator3D because of this comment. previously i thought euclidean helped with that but upon looking it up it doesn't seem to. you can try increasing heuristic scale to 3 with manhattan or euclidean modes, and also try messing with the corridor cost option, raising this (probably just to 1) can make the corridors more bulky, possibly helping with the problem of zigzagging corridors. it's hard to completely prevent this when using astar.
@adamthefirst401
@adamthefirst401 8 күн бұрын
@@MajikayoGames You are the best, thx!
@futursoup9007
@futursoup9007 10 күн бұрын
v dope my guy 👾
@NubsHai
@NubsHai 11 күн бұрын
How do you go about adding enemies and npcs throughout the rooms in the dungeon? I have been having trouble with making them move towards the player, attack, etc I believe because my player is spawning in a seperate scene (the entrance room)
@MajikayoGames
@MajikayoGames 10 күн бұрын
I think you should be able to put a navmesh in each room scene and as long as they get connected properly, enemies should be able to pathfind through the dungeon. docs.godotengine.org/en/stable/tutorials/navigation/navigation_connecting_navmesh.html
@matthewobrien4140
@matthewobrien4140 11 күн бұрын
Would love to see door "types" for transitional rooms between themes or areas of the dungeon. So you could have 2 different styles of corridors that only connect to a specific type of door. You could then have a room that has both door types that could allow for controlled branching in the dungeon.
@PastaMaster115
@PastaMaster115 11 күн бұрын
It doesn't appear to be working. I don't have the weight shapes you have in the video. But I'm playing with the colored cubes and spheres, which I can see already came with programmed masses. 10s, 7s, 5, and 1s. But it seems they all push exactly the same. I've even increased their masses to 1000 and still get the same result. I even copied your code directly to see if I did something wrong. I could see you got way more resistance from the bigger shapes. With me that's not happening.
@MajikayoGames
@MajikayoGames 11 күн бұрын
maybe because they are spheres, easier to push, but yes it's not a perfect method, it would be very difficult to get perfect physics interaction. this is just a simple method to apply some force when pushing against objects. as i said at the end, for more complex cases you would probably want to program it in yourself.
@HarpDevCo
@HarpDevCo 12 күн бұрын
anyone know anything like this for unity?
@Lily-kv3rb
@Lily-kv3rb 13 күн бұрын
I'm running into some issues with the "Advanced ground movement with friction/bhop" section. I copied exactly what was in the video but unless I decrease the ground_friction var from 6.0 to atleast 5.0 or lower my character doesn't move when I press forward. I even downloaded the starter project file from github and copy pasted the _handle_ground_movement func from their (except for the headbob piece, I didn't want to add headbob) and I'm still frozen when the friction value is set at 6.0. This wouldnt be a problem if setting the friction value lower also made my base speed extremely fast. Any ideas on fixing this issue?
@MajikayoGames
@MajikayoGames 13 күн бұрын
It's hard to say without seeing your code, those accel/decel/friction vars are pretty sensitive though. I would try with my values first, copying exactly from my code. Then adjust one by one. Yes if friction or decel is higher than accel or walk speed, probably you won't be able to move. I don't have a clear explanation for each, other than it's just the quake/source movement recipe. Not super intuitive but it gets the exact same movement style so it's important that these variables are used how they are. So I would try copying exactly from my code and changing one by one adjusted until you get your desired move speed/feel. Also check if the properties are changed in the editor inspector on your character, if you change them once, they will stay the same even if you change them in code I think. If you can't figure it out, you can pastebin your code and message it to me on twitter and I could take a look if you want.
@konstryktor34
@konstryktor34 14 күн бұрын
I can finally implement physics in my game with character bodies. It was a big problem for me, cause I am not a coder, but i wanted it so bad! Learning something new everyday. Definitely like and subscribe.
@SoulofStorm333
@SoulofStorm333 14 күн бұрын
Hello ! how do you flight at 18:40 ? is it special control you implemented for the tutorial ?
@MajikayoGames
@MajikayoGames 14 күн бұрын
The tutorial fps controller has no clip bound to V
@SoulofStorm333
@SoulofStorm333 13 күн бұрын
@@MajikayoGames ye i found it when using your dungeon exemple, thanks !
@user-oy4hk9yr3n
@user-oy4hk9yr3n 15 күн бұрын
Great work, I really enjoyed playing around with simple dungeons!
@topikyllonenn
@topikyllonenn 15 күн бұрын
omg u have no idea how incredibly helpful this was!! i’ve been struggling to find good tutorials like this where there’s actually explanations instead of someone just adding random code without explaining it at all. especially since there’s not that many people that make 3d tutorials of godot in the first place. but anyways, this was amazing and i can’t wait to watch more of your videos :D keep up the good work !!
@PastaMaster115
@PastaMaster115 15 күн бұрын
I did something a little extra. I made it so sprinting isn't used unless there is forward velocity. If you're moving backwards or directly sideways, sprint doesn't work. Only forward. 👍
@PastaMaster115
@PastaMaster115 15 күн бұрын
This water state works absolutely fine with my match state machine. With....once again haha...a minor issue. It works splendidly when there is ONE water block. But if there is more than one in the scene, it doesn't change the state to WATER. So weird. I used your !area.overlaps_body() line and reversed it to change to the water state. So it's like this: if get_tree().get_nodes_in_group("water_area").all(func(area): return area.overlaps_body(self)): states = WATER But if there is a second water block it doesn't work. I just stay in air state and drop like a rock. The .all() function is supposed to handle that, right?
@MajikayoGames
@MajikayoGames 15 күн бұрын
not quite, .all returns true if ALL checks pass. so in that case you are checking if the player is overlapping all water blocks. will only work if there is 1 then. you could use .any which is a similar method to .all on arrays which will check if the player overlaps ANY water blocks.
@PastaMaster115
@PastaMaster115 15 күн бұрын
I kind of want to add in a screen overlay that looks like water running off the screen when you exit the water. That would be cool.
@MajikayoGames
@MajikayoGames 15 күн бұрын
ah yeah that would be a nice effect. last time i played lego fortnite, they had a really nice example of this effect. when you looked up at the rain, it would start accumulating droplets on your screen.
@BKD639
@BKD639 15 күн бұрын
Amazing
@artsmit9545
@artsmit9545 15 күн бұрын
How was the chunking done ?can you explain
@MajikayoGames
@MajikayoGames 15 күн бұрын
The chunking is pretty simple, you can see here: github.com/majikayogames/SimpleTerrain/blob/a074a13789bd64e9a11866fb8fb6d27666145642/addons/SimpleTerrain/SimpleTerrain.gd#L302 _create_lod_meshes and _create_chunks functions create them. It just makes the grid of plane meshes. You only need a number of plane meshes to match the number of your LODs, 5 or whatever, and then all the MeshInstance3Ds can share each mesh. Then in _update_lods each frame, I just set the mesh to use for each chunk, higher LOD the closer to the camera: github.com/majikayogames/SimpleTerrain/blob/a074a13789bd64e9a11866fb8fb6d27666145642/addons/SimpleTerrain/SimpleTerrain.gd#L437 Hope this helps. Let me know if that makes sense
@Kskakakakakkakak
@Kskakakakakkakak 16 күн бұрын
Please show us how to make a hook / Grappling gun
@PastaMaster115
@PastaMaster115 16 күн бұрын
I wanted to add my crouch as a state in the state machine but it was just TOO much code. I would have had to add ground and air physics to the crouch state and that would have been the biggest headache and also my character transforms weren't reverting back when releasing the button. So I decided to make my crouch a single function instead, the way yours is. And it works great! But I did have to edit some values. Even though my nodes are practically identical to yours, my camera kept clipping through the floor. The game would start with my $Head height at 0 instead of 1.79 and when crouched it would move down to -0.7. So I changed my head movement to: %Head.position = Vector3(0,(CROUCH_TRANSLATE if is_crouched else 1.79),0) and now it works. But I don't know why it was different for me.
@MajikayoGames
@MajikayoGames 16 күн бұрын
It sounds like your nodes are positioned differently. What I showed here is dependent on all head/camera nodes being positioned at 0,0,0 and only the HeadOriginalPosition node being moved (to 1.79)
@PastaMaster115
@PastaMaster115 16 күн бұрын
@@MajikayoGames Holy crap you're right. That was the only thing I forgot to change.
@kyniverse
@kyniverse 16 күн бұрын
How would you go about defining custom generation rules? Right now hallways are created by stacking multiple corridors but say I was looking to generate a sewage system that would alternate between placing single small corridors of size 1x1 and attaching longer hallways that are 1x4 in length, would the custom room placement function allow for such logic?
@MajikayoGames
@MajikayoGames 16 күн бұрын
Not really a built in way to make this easy at the moment, it gets complex if you want to alternate 4 length paths in astar, would have to do some hacks to force the algorithm to do that. But you could try just placing some 1x4s in the normal rooms phase and it will connect them. You could for instance place them manually and always have it somehow that it will have 1x4s inbetween rooms where you want them, then it's likely that it will be connected as you want. You could also do something like, just spawn totally empty corridors with no models at all, and then do a final pass at the end where you iterate through all corridors place and replace them with some certain model if there is 4 connected in a line.
@kyniverse
@kyniverse 15 күн бұрын
@@MajikayoGames Bummer to see a small limitation like this but understandable, worth a shot for trying it out though, thanks for the detailed reply!
@stevepine3568
@stevepine3568 17 күн бұрын
It only needs merge with the portals, make some doors spawn as portals, add advanturers and skeletons from kaykit, simple basic multiplayer and simple AI movement, and we have a playable demo for the dungeon, and it would be a great game as is I think.