Announcement

Collapse
No announcement yet.

Dungeon Architect

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by MiDri View Post
    Having a weird issue with the SnapDungeonBuilder

    Modules, Start modules, and End Modules work fine. However; adding branch end modules results in being unable to save the current map (the one with the dungeon in it) with this error:

    Can't save F:/Projects/Unreal/M8/Content/M8/Levels/Ships/Cortex8.umap: Graph is linked to object(s) in external map.
    External Object(s):
    ShipDoor001_3

    Try to find the chain of references to that object (may take some time)?

    I've tried deleting and readding the snapdoor to the specific levels used for the branch end modules, but it does nothing but increase the _# appended to the error message...


    Also, would it be possible to have the negative volume work for the SnapDungeonBuilder? I'm trying to build starship interiors with this plugin and it works well, other than the fact that some times halls wrap around the bridge of a ship and put a room infront of the window... which is kinda funny... but not practical.
    [MENTION=26180]MiDri[/MENTION] This should be fixed in the latest version. There was a build error in the version I submitted to epic on one of the platforms. I've resubmitted it yesterday and it should be available soon.

    Adding negation volumes should be straight forward. I'll add it in the next build
    Dungeon Architect | Prefabricator

    Comment


      Originally posted by sazigirl View Post
      This is awesome! I just started creating a VERY basic producedural builder the other weekend and after seeing this yesterday I immediately bought this! No point in reinventing the wheel when you've already made such an awesome plugin! You're youtube tutorials are great, though the volume is really low in quite a few of them. Just thought I'd mention that to you. But the tutorials themselves are really great for explaining how to do things and showing what's possible. I can't wait to learn more about how to use this plugin.
      Thank you [MENTION=576919]sazigirl[/MENTION]! I got a good quality microphone a while back and I'll re-record the videos soon. Feel free to ask here if you need any help
      Dungeon Architect | Prefabricator

      Comment


        Originally posted by teak421 View Post
        Hi.

        Not in my library... Could you check please? Thanks.

        teak
        Originally posted by DrFrancky View Post
        Hey Ali, I still don't have the DA in my Vault.
        I've sent a mail to Epic asking for the status. I'll let you all know when I hear from them
        Dungeon Architect | Prefabricator

        Comment


          Originally posted by uced View Post
          Hello Ali,

          Do you know if it's possible to access a marker emitter local variable from c++ code ?
          EDIT: hmm, this formulation might be misleading, what i mean is "can the emitter BP see a variable from my code ?" (then i could "set" the local BP variable with my code variable in the event graph)

          To take a concrete example, in your adjacent cell emitter, you have defined a "distance" variable to fill empty space more or less.

          I'd like to drive this variable from my code (and other variables i have created in my own marker emitter BPs).

          But the marker emitters are UObjects, so they do not have any access to their ADungeon owner, or UWorld, or the engine, or GameState, or any actor i could use as a proxy.

          And as they are declared as a TArray in the ADungeon, creating a class inheriting from your emitter class would be useless as far as i can say (as it wouldn't be used by your code).

          So i'm a bit stuck here, the emitters BP seem to be inside an isolated bubble which i can't enter.

          I have pretty much no experience with BP so maybe i'm missing some big thing.

          Any idea ?

          Thanks a lot
          And again, 1000 bravos for DA, a real piece of brillant work, i really hope one day we'll see Terrain A. and City A. in UE4, you'll have one enthusiastic customer for both of them !

          Cheers
          Cedric
          Cedric, the emitter BP can see your variables from code. You need to add a reference to your C++ actor that drives this variable and read it from there

          Here's an example where from the BP, I'm grabbing the distance (random value between 1-6) from C++

          C++ code that drives the distance variable:
          AMyDungeonController.h
          Code:
          #pragma once
          #include "AMyDungeonController.generated.h"
          
          UCLASS(Blueprintable)
          class AMyDungeonController : public AActor
          {
          	GENERATED_BODY()
          
          public:
          
          	UFUNCTION(BlueprintCallable, BlueprintPure, Category = MyDungeonController)
          	int32 GetMountainDistance();
          
          };
          AMyDungeonController.cpp
          Code:
          #include "DA413X.h"	// pch
          #include "AMyDungeonController.h"
          
          int32 AMyDungeonController::GetMountainDistance()
          {
          	return FMath::RandRange(1, 6);
          }

          Add a variable in the emitter BP that takes a references to your controller code and make it public






          Grab the distance from your C++ code




          Finally, set the reference of your C++ code in the marker emitter when you register it in the Dungeon actor. (The assumption is that you have it somewhere placed in the level, which you probably do)



          Clicking build now randomly generates rocks that are 1-6 layers deep
          Dungeon Architect | Prefabricator

          Comment


            Originally posted by sazigirl View Post
            Hey Ali I'm loving this plugin! I do have a couple questions.

            In the tutorials you show that you can easily unconnect a marker and its mesh. I can't for the life of me figure out how to do that. I didn't see this explained in any of the documentation. Is there a keyboard shortcut or something that quickly allows you to disconnect the marker and mesh without deleting the mesh?
            [MENTION=576919]sazigirl[/MENTION], You can disconnect a link using Alt+Left click on the node's pin. I'll add this in the documentation

            Is there a way to detect if the marker is a corner of room or hall? That seems like something lots of folks might want to know when customizing their themes.
            You can do that with spatial constraints. The tutorials for it are missing. I'll add it soon. Here's a quick overview:



            And again thank you for this great tool!
            Thank you for using it
            Dungeon Architect | Prefabricator

            Comment


              Originally posted by uced View Post
              Hey Ali,

              I purchased the ultimate rock pack yesterday and get a crash when trying to use it on an instanced dungeon.

              I could use their meshes to paint foliage on a landscape, so those meshes can be instanced in UE4.

              Strangely enough, the instanciation works very well in DA preview windows, but crashes in UE4 preview windows (and in game).

              Here a short video to show you how it goes.



              Thanks !
              Cedric
              Cedric, Thanks for the video. I'll have a look
              Dungeon Architect | Prefabricator

              Comment


                Originally posted by Ali Akbar View Post
                I've sent a mail to Epic asking for the status. I'll let you all know when I hear from them
                Ali,

                All good, in my library now... Thanks.

                teak
                "A little bit of nonsense now and then is cherished by the wisest men..."
                -- Willy Wonka

                Smooth Zoom Camera Plugin for 4.24 here.

                Comment


                  Originally posted by Laurentius View Post
                  Hi Ali,
                  I just bought your plugin and I have some questions. My game should use DA to generate dungeons at runtime using the grid builder approach where the dungeon level has one entrance and one or no exit.

                  1. How do I let DA place an entrance (e.g. a special wall) and an exit that are far away from each other?
                  2. How do I player the PlayerStart location and orientation at the entrance (or exit if going upwards from a lower level) of the dungeon?
                  3. Can I place special prefabricated rooms in the runtime dungeon? (like exit, entrance, jail etc.)

                  Maybe I miss something obvious as I'm new to Dungeon Architect?

                  Thanks for your great plugin,
                  Lars
                  [MENTION=121838]Laurentius[/MENTION], [MENTION=504934]DrinkThisPotion[/MENTION]

                  1. The latest version 2.2.0 (soon to be updated in the marketplace) has an API and samples to find the furthest rooms in the dungeon

                  2. You can use the Query API (in the examples) to orient the playerstart away from the entrance

                  3. [MENTION=504934]DrinkThisPotion[/MENTION]'s suggestion would work but it requires some work for properly wrapping theme override volumes around it. You can do that with a dungeon event listener (will work for dynamic runtime dungeons too) where you listen for dungeon layout build event (where the layout is built but the theme is not applied) and place the volume around it. I have a sample for this in Unity. I'll add a demo soon
                  Last edited by Ali Akbar; 10-18-2016, 10:29 AM. Reason: formatting
                  Dungeon Architect | Prefabricator

                  Comment


                    Originally posted by DrinkThisPotion View Post
                    Hey fellow DA enthusiasts - does anyone want to share notes on what we've learned? I've gone through all the videos and done quite a bit of experimentation on my own. I have some learned some pretty neat tricks, but I'm also up against what seem to be some limitations. I plan to make some tutorial videos on some of the finer points I've learned. I'll share those here when I finish them.

                    Has anyone gone advanced with building your own marker emitters? I built one to emit in the center of rooms which is working very well. However I'm very interested in going deeper as it seems the possibilities are powerful.

                    Specifically, when getting the bounds of rooms and corridors, does anyone understand that model very well? I'd love to chat.

                    If anyone's interested, here's a blueprint marker emitter I made for the center of the room. It is based on one of the DA author's demo emitters with few a very minor tweaks. [ATTACH=CONFIG]114150[/ATTACH]
                    [MENTION=504934]DrinkThisPotion[/MENTION] Great work! There's a lot you can do with marker emitters. You can also use it to decorate the empty space around your dungeons (unity example but also applies to UE4)

                    Before


                    After



                    Dungeon Architect | Prefabricator

                    Comment


                      Originally posted by RedSaturnSix View Post
                      Does anyone have a video or written tutorial for SnapDungeonBuilder functionality? I checked on Ali's youtube page where he has a demo of it, but no explanation or set up. MTIA.
                      [MENTION=18451]RedSaturnSix[/MENTION] I'll add detailed video tutorials soon. In the mean time, the snap builder section in the user guide has info to get you started
                      Dungeon Architect | Prefabricator

                      Comment


                        Originally posted by MiDri View Post
                        Transformation section of SnapDoor:Closed Mesh is not working. Location, Rotation, and Scaling are not affecting the generated meshes... I understand why it would not make sense for it to work with the Open Mesh (as it's placed in between 2 snap areas and which one it used as it's relative location would be arbitrary.) I do think it should work for closed mesh though, as there's no ambiguity when it comes to where it should be oriented and what it's relative space should be associated with.

                        It would also be nice to be able to associate a closed mesh per door and not just per SnapDoorAsset as the door between the two locations can share a mesh/blueprint, but the closed mesh might need to be different for different rooms.

                        Example: I have a space station I generate where the doors are set back 20cm from the wall (helps prevent hallway/adjacent room meshes from bleeding through to current room) it looks fine for doors used in the open mesh, but the closed mesh are put 20cm back and look sunken in. Also most rooms do share the same closed mesh, but a few rooms have different themes and should have different closed mesh when no door is placed.
                        [MENTION=26180]MiDri[/MENTION] please test with the new version (2.2.0) which will be updated in the marketplace in a day or two. I sent the request yesterday. As for removing the one of the two closed mesh between modules, I got this request from others as well. I'll add a flag to remove or retain it
                        Dungeon Architect | Prefabricator

                        Comment


                          Originally posted by Ali Akbar View Post
                          3. [MENTION=504934]DrinkThisPotion[/MENTION]'s suggestion would work but it requires some work for properly wrapping theme override volumes around it. You can do that with a dungeon event listener (will work for dynamic runtime dungeons too) where you listen for dungeon layout build event (where the layout is built but the theme is not applied) and place the volume around it. I have a sample for this in Unity. I'll add a demo soon
                          Is there documentation anywhere on the dungeon model and dungeon layout? A diagram showing how the XY grid works and how the rectangular bounds are formed and stored would be very helpful.

                          Comment


                            Originally posted by DrinkThisPotion View Post
                            Is there documentation anywhere on the dungeon model and dungeon layout? A diagram showing how the XY grid works and how the rectangular bounds are formed and stored would be very helpful.
                            The new version (2.2.0) has a new query system that will hide the low level data structures in the model and give you a easier system to work with. Here are a list of functions in the query object of the grid builder which you can call from a blueprint


                            GetCells
                            GetCellsOfType
                            GetCellDimension(int32 CellId, FVector& OutCenter, FVector& OutSize);
                            GetPathBetweenCells(int32 CellA, int32 CellB, TArray<int32>& OutResult, bool& bOutSuccess);
                            GetFurthestRooms(int32 &OutRoomA, int32 &OutRoomB);
                            GetCellAtLocation(const FVector& WorldLocation, int32& OutCellId, bool& bOutValid);
                            GetCellType(int32 CellId);
                            GetRandomCell();
                            GetRandomCellOfType(FCellType CellType);
                            GetRandomCellFromStream(FRandomStream& RandomStream);
                            GetRandomCellOfTypeFromStream(FCellType CellType, FRandomStream& RandomStream);
                            ContainsStairBetween(int32 CellA, int32 CellB);
                            ContainsDoorBetween(int32 CellA, int32 CellB);
                            GetStairBetween(int32 CellA, int32 CellB);
                            GetDoorBetween(int32 CellA, int32 CellB);
                            GetOpeningPointBetweenAdjacentCells(int32 CellA, int32 CellB);


                            I'll add more on request
                            Last edited by Ali Akbar; 10-18-2016, 11:37 AM. Reason: code
                            Dungeon Architect | Prefabricator

                            Comment


                              Originally posted by Ali Akbar View Post
                              [MENTION=121838]Laurentius[/MENTION], [MENTION=504934]DrinkThisPotion[/MENTION]

                              1. The latest version 2.2.0 (soon to be updated in the marketplace) has an API and samples to find the furthest rooms in the dungeon

                              2. You can use the Query API (in the examples) to orient the playerstart away from the entrance

                              3. [MENTION=504934]DrinkThisPotion[/MENTION]'s suggestion would work but it requires some work for properly wrapping theme override volumes around it. You can do that with a dungeon event listener (will work for dynamic runtime dungeons too) where you listen for dungeon layout build event (where the layout is built but the theme is not applied) and place the volume around it. I have a sample for this in Unity. I'll add a demo soon
                              As I bought DA from your website I already have version 2.2 - those Query API example blueprints look very promissing. I'll have a look into those to learn from them. Very nice!

                              And I'm really looking forward for the dungeon event listener sample. It sound like the solution for getting control over prefab rooms.
                              A mix of the snap builder algorithm (creating the prefab room inside a separatly themed level with door indicators) and the grid builder algorithm to connect to the random level with those prefab parts would be more convenient, I think.
                              But maybe this workaround with the dungeon event listener is enough ...

                              Thanks for your fast answers and this outstanding plugin - there are so many things hidden inside it and I really dig the samples and videos you provide!

                              Comment


                                Originally posted by Ali Akbar View Post
                                The new version (2.2.0) has a new query system that will hide the low level data structures in the model and give you a easier system to work with. Here are a list of functions in the query object of the grid builder which you can call from a blueprint


                                GetCells
                                GetCellsOfType
                                GetCellDimension(int32 CellId, FVector& OutCenter, FVector& OutSize);
                                GetPathBetweenCells(int32 CellA, int32 CellB, TArray<int32>& OutResult, bool& bOutSuccess);
                                GetFurthestRooms(int32 &OutRoomA, int32 &OutRoomB);
                                GetCellAtLocation(const FVector& WorldLocation, int32& OutCellId, bool& bOutValid);
                                GetCellType(int32 CellId);
                                GetRandomCell();
                                GetRandomCellOfType(FCellType CellType);
                                GetRandomCellFromStream(FRandomStream& RandomStream);
                                GetRandomCellOfTypeFromStream(FCellType CellType, FRandomStream& RandomStream);
                                ContainsStairBetween(int32 CellA, int32 CellB);
                                ContainsDoorBetween(int32 CellA, int32 CellB);
                                GetStairBetween(int32 CellA, int32 CellB);
                                GetDoorBetween(int32 CellA, int32 CellB);
                                GetOpeningPointBetweenAdjacentCells(int32 CellA, int32 CellB);


                                I'll add more on request
                                These functions look great. I need some basic info before I can use some of them, though.

                                Some basic questions I couldn't find docs on:
                                What do Grid X and Y refer to in terms of the grid structure? Would (0,0) be the bottom leftmost cell on the grid?
                                What does Grid Cell Size refer to?
                                How would I determine how many cells are in the entire grid?

                                Is there a function which tells which dungeon floor a cell belongs to? I could use that to adjust the positions of the door into a runtime dungeon. Not elegant but it would work.

                                Comment

                                Working...
                                X