Search Unity

World Building [RELEASED] Dungeon Architect

Discussion in 'Tools In Progress' started by AliAkbar, Aug 9, 2015.

  1. ValBis

    ValBis

    Joined:
    Jul 9, 2017
    Posts:
    50
    Thank you so much for this, that's great! Will try it out and let you know
     
  2. ValBis

    ValBis

    Joined:
    Jul 9, 2017
    Posts:
    50
    @AliAkbar I thought a bit about your solution. The problem is that I cannot add a selection rule to the whole marker emitter. So let's say that I have GROUND->ROOM / CORRIDOR, then ROOM->ROOM1/ ROOM2/ROOM3, do I have to apply the script to the selection rule field to EACH room? Is that what you meant?

    EDIT: nevermind, I got it! :)
     
    Last edited: Jul 30, 2017
  3. ValBis

    ValBis

    Joined:
    Jul 9, 2017
    Posts:
    50
    Ok, I am in the process of placing the corridor prefab... however my corridor prefab is around 3 cells. I understand that I could resize or modify the model so to fit one cell, but it really looks good with 3 cells. Is there a ready-made selection rule that allows me to place a the corridor object and then skipping 2 cells? Thank you

    Also, an incredible addition would be to be able to place a marker emitter whener a prefab (with the same name as the emitter?) is found. After I have randomly generated a level, I would like to place a "table" marker with all the randomly generated stuff on top (which marker I have already set up in the theme). Woulnd't be cool to just place an appropriate prefab at the right place, and all the object will be generated in his place? Hope I was clear. Thanks
     
    Last edited: Jul 30, 2017
  4. Yorlik

    Yorlik

    Joined:
    Sep 6, 2014
    Posts:
    3
    @AliAkbar Is there a way to get access to these scripts in development? I'd like to try them out if possible.
     
  5. ValBis

    ValBis

    Joined:
    Jul 9, 2017
    Posts:
    50
    Soooo a worked a bit to the problem I suggested 2 posts above, that is: what if we want to manually add a prefab in which place a marker is emitted? I think this would be immensely useful, during the stage of refining the level by adding random proprs (which may be connected with other random markers, etc etc).

    I actually managed to implement it. The solution does involve a bit of changing in the Ali Akbar code, but nothing disruptive (just a couple of lines). Anyway if anyone is interested I can post all the changes here, I am not sure how many people would need that. Ali, if you want I can provide you with my solution and maybe you can put it it in the next version?
     
    Last edited: Jul 30, 2017
    AliAkbar and hopeful like this.
  6. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    fixed
     
    Last edited: Aug 4, 2017
  7. claudiorodriguescampos

    claudiorodriguescampos

    Joined:
    Jun 23, 2017
    Posts:
    98
    Hi, I have some problems to use Dungeon Architect, I just use the CandyTheme and change the Ground object for one of my own assets.

    Before I change it

    https://snag.gy/xYqzXl.jpg

    After I change it to use my prefab

    https://snag.gy/EgK2Ca.jpg

    It appears that my ground goes off the limit, why is this happening?
     
  8. LoDx

    LoDx

    Joined:
    Feb 13, 2013
    Posts:
    67
    Hi @AliAkbar ,
    Would like to know if the 2D demo scene , and the NavMesh 2D are functioning/working as it should be ?
    I've tried the below :-
    1. Fresh install/import of DA assetpack into new project, on Unity ver 5.6 .
    2. Fresh install/import of DA assetpack into new project, on Unity ver 2017.1 .

    On both situation, it still throwing alot of error on the NavMeshAgent issue. It seems that the NavMeshAgent was not being generated by the script or so.
    * I did not edit/change anything. It's a fresh import/install into new project.
    da-navmesh2d.jpg

    * is anyone else having the same errors/situation on the 2d demo scene ? it seems kinda odds...

    Thanks
    Sincerely
     
  9. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    How can I spawn a dungeon in a different location than 0. 0 .0 ? I change the DungeonItems object trasform, but the creationis done on 0,0,0

    Also I m trying to use the snap function, with some packages that are dedicated for snapping, and it seems that the rooms are not allign well together in creation, i have gaps etc. How could I fix that? Dungeons and Castles and Underworld are the 2 packages.

    Also could you please tell me how I call the Seed parameter from script to random?
     
    Last edited: Aug 4, 2017
  10. rickyzhang

    rickyzhang

    Joined:
    Nov 16, 2016
    Posts:
    1
    Hi @AliAkbar ,
    I checked out your 2D demo , which named "01-MainScene","02_SciFi","03_Orange_WIP".
    I saw some of marker node from Wall /Ground which has been set the SpatialConstraintGrid3x3 , "ignore,empty,occupied". I don't know what they are exact meaning of "ignore,empty,occupied" in SpatialConstraintGrid3x3 and how to use them.
    Could you please tell me more info or give me any link show how to use it...

    Thanks
     
  11. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @ValBis That's actually a very nice idea. We can have a script that you attach to any prefab that takes in a marker name and it would emit a marker in that place. So like you said, you can have a few child game object attached to your table prefab and positioned on top of it. The marker names you provide here will be picked up from the theme file (candle, books, paper etc)

    It would require some change however, as the prefabs are spawned in the very end of the pipeline, so the process has to be repeated again. We should probably be able to do this with a PostBuild listener script file without modifying the core. I'll experiment with this and let you know

     
  12. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @claudiorodriguescampos it looks like you need to scale down the ground mesh. Select the ground node you just replaced in the theme file and modify the offset transform
     
  13. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @LoDx I've fixed the issue and will have it in the next build. If anyone needs this right now, you can PM me for a copy
     
    LoDx likes this.
  14. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729

    @dlevel You move the Dungeon actor and it would build your dungeon items in that location. If the doors are not aligned, try adjusting the snap connection game object positions in your room module prefabs

    You can change the seed from the script like this:

    Code (csharp):
    1.     public Dungeon dungeon;
    2.     // Use this for initialization
    3.     void Start () {
    4.         dungeon.Config.Seed = 42;
    5.     }
    6.  
     
  15. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @rickyzhang They are conditions for placing a tile. It looks for adjacent tiles and checks if they are occupied, emtpy or if the check should be ignored
     
  16. OP3NGL

    OP3NGL

    Joined:
    Dec 10, 2013
    Posts:
    267
    @AliAkbar

    since you havent replied on discord, maybe you are here also

    1. i used the snap builder, however i wanted the main prefab to be unique as i need other prefabs to build around the unique one.

    2. is there a bounding box to make the DA to generate in that box?

    3. i have different sizes of doors, how to tell DA to generate to their respective sizes?

    4. occlusion culling... how do i do it? theres no document that states that?
    thanks!
     
    Last edited: Aug 18, 2017
  17. v_James_v

    v_James_v

    Joined:
    Feb 13, 2016
    Posts:
    40
    any eta when the next update might be due for release?
     
  18. Culrich

    Culrich

    Joined:
    Sep 24, 2014
    Posts:
    17
    Something I'm curious about that I've been poking around with;

    Is it possible to use override volumes during runtime? Long story short, we have a dungeon where we want interior and exterior rooms, but it's all procedural. I was thinking I could use override volumes to alternate rooms that are either inside or outside, but I can't seem to get it to work.

    Any help is appreciated!

    Edit: Just did some poking around and found your example VolumeSpawnListener. Looks like that'll do what I need, awesome!
     
    Last edited: Aug 22, 2017
  19. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    I'm finalizing the snap builder. Some updates:
    • Added start / end / branch end rooms
    • You can have register different category of doors (snap connections) and your modules will connect with similar doors on other modules. This lets you have doors with different size and shape
    • [WIP] A script that you can drop on your module to override any of the configuration on the module level (occurrence probably, count etc)



    Also some updates on the BSP builder:



    I'm also working on a general level streaming framework that can be used with all the builders (grid, bsp, snap etc)
     
  20. claudiorodriguescampos

    claudiorodriguescampos

    Joined:
    Jun 23, 2017
    Posts:
    98
    @AliAkbar
    In the folder Game3D_SurvivalShooter there's a scene called CliffSurvivalShooter. Inside this scene has a Minimap, I try to use it with another scene, but I can only see the player, I can't see enemies or the map.
    This minimap only works with runtime generated dungeons?
     
  21. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    This sounds really intresting because I m trying to snap dungeons with different "door" sizes and i have problem doing it, i get a lot of wrong results with the connections. It s not easy to have the connectors correctly on this type of "rooms"
    Any advice is welcome.
     
  22. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    What do you mean by "move the Dungeon actor"?
     
    Last edited: Sep 1, 2017
  23. Kanadaj

    Kanadaj

    Joined:
    Aug 11, 2014
    Posts:
    12
    I've managed to fix up the snap generation by filling in the missing parts in the code, but I remember seeing you posting about procedurally generating a cave via cellular automata. Any chance to see that piece of code ported to Unity, or at least get my hands on the UE4 source code for it to translate it myself?
     
  24. djgriff

    djgriff

    Joined:
    May 29, 2014
    Posts:
    279
    @AliAkbar Hi, I seem to be able to crash Architect when i set the room aspect delta to either .9 or 1.
    Also i have an animation issue. I have setup my door prefab to animate when the trigger is fired by the player. The Prefab works fine but when the doors are generated by dungeon architect, it doesn't work.. any idea as to why this is?

    Thanks

    Daniel
     
  25. Astarorr

    Astarorr

    Joined:
    Jan 17, 2013
    Posts:
    41
    This could be caused by static flag on prefab
     
    AliAkbar likes this.
  26. djgriff

    djgriff

    Joined:
    May 29, 2014
    Posts:
    279
    Ok yes you are right, but the thing was on the prefab the static tickbox only applies it to the parent object and not the children object. so had to manually adjust all the placed doors.. The next issue is when you trigger one door it triggers all of them...

    Dont suppose you have any suggestion for this?


    Thanks

    edit. So i have created the animation on the model instead of animating in unity which seems alittle more robust.. however activating door animation on the prefab activates every single door..
    So really not sure why this is.. if any one could kindly enlighten me as to what is going on would be great. cheers

    Edit Again..
    I have been doing some testing with manually triggering the prefabs through the trigger parameter in the animator and all generated prefabs through Architect trigger through the one trigger on a door.
    However if i create individual prefabs in the hierachy then the doors work as they should.. Something is up with Architect. If this could be looked into would be great as it is useless in 2017.1
    Thanks
     
    Last edited: Sep 5, 2017
  27. skrx1

    skrx1

    Joined:
    Feb 23, 2017
    Posts:
    24
    HI! I want to do this function, Dungeon Architect can achieve it?
    After the player enters the game will randomly generate a main scene, when the player hit the enemy, the player will be sent to another scene to fight, when the battle after the return to the scene from the main scene into the battle before the position.
     
  28. djgriff

    djgriff

    Joined:
    May 29, 2014
    Posts:
    279
    @AliAkbar Dude whats up.. been almost 5 days and no response from you.. This isn't a cheap asset and it simply isnt working correctly.. i think we would all appreciate some support
    Thanks
     
  29. skrx1

    skrx1

    Joined:
    Feb 23, 2017
    Posts:
    24
    HI, @AliAkbar, I saw all of your demo video, Dungeon Architect is a very good tool.
    I would like to do this function: Dungeon Architect can achieve it?
    When the player enters the game will randomly generate a main scene, when the player collides with the enemy, save the player's scene location, the player will be sent to another scene to fight with the enemy, when the player at the end of the battle, load the saved scene. I mainly use the ORK Framework to complete the scene to save and load. But in the demo video, the scene created by Dungeon Architect at runtime can not be saved. When using the ORK to load the Dungeon Architect runtime scene, how to save and load the previous Dungeon Architect creates the runtime scene instead of rebuilding a new scene and seed.
    If you help me with this feature, I will buy Dungeon Architect now. Only to achieve Dungeon Architect at run time to save the creation of the scene, and can load the saved scene layout function, in order to do a random checkpoint MMORPG games, such as: Diablo.
     
  30. Astarorr

    Astarorr

    Joined:
    Jan 17, 2013
    Posts:
    41
    I can't say for sure what te root cause of your issue, but i doubt it's about DA.
    Try checking size of triggers and their locations as this is first what comes to my mind. Also - do you use regular MonoBehaviour or some modified version? If you able (and want to) to send me script source it could help figure out what happening
     
    AliAkbar and Arkade like this.
  31. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @claudiorodriguescampos I'll have a look at the mini-map with pre-built dungeons and let you know
     
  32. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @dlevel Could you elaborate on the wrong results? There was a bug I recently fixed with the snap doors, where it was ignoring growth out of some doors in a room
     
  33. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    I'm sorry, I meant move the DungeonGrid GameObject and it will build the dungeon relative to it
     
  34. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @daniel You'll need to set the "Is Static" flag to false in your theme graph's node. By default it will be set to static and will make the generated door game object to be static (and Unity would not animate it)

     
  35. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    @AliAkbar I move both the DungeonGrid and the Items gameobjects, but the dungeon still builds in 0,0,0

    edit: mybad, it doesnt takes Y in account, but x,z only.
     
    Last edited: Sep 12, 2017
  36. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @Kanadaj Here's the C++ code for the cave builder I created about 2 years ago. I'll add this to Unity if you folks are interested. There's more work to be done, like drill passages between isolated areas, close off small areas etc

    Header
    Code (csharp):
    1.  
    2. //$ Copyright 2015 Ali Akbar, Code Respawn Technologies Pvt Ltd - All Rights Reserved $//
    3.  
    4. #pragma once
    5.  
    6.  
    7. #include "Dungeon/DungeonBuilder.h"
    8. #include "DungeonBuilderCave.generated.h"
    9.  
    10.  
    11. DECLARE_LOG_CATEGORY_EXTERN(DungeonBuilderCaveLog, Log, All);
    12. class ADungeon;
    13.  
    14.  
    15. /**
    16. *
    17. */
    18. UCLASS()
    19. class DUNGEONARCHITECTRUNTIME_API UDungeonBuilderCave : public UDungeonBuilder
    20. {
    21.     GENERATED_BODY()
    22.  
    23. public:
    24.     UDungeonBuilderCave(const FObjectInitializer& ObjectInitializer);
    25.  
    26. public:
    27.     virtual void BuildDungeon(const FDungeonConfig& config, TSharedPtr<FDungeonModel> model, UWorld* World = 0, ADungeon* Dungeon = 0) override;
    28.     virtual void EmitDungeonMarkers_Implementation() override;
    29.     virtual void DrawDebugData(UWorld* InWorld, bool bPersistant = false, float lifeTime = 0) override;
    30.     virtual bool SupportsBackgroundTask() const override { return false; }
    31.     virtual void MirrorDungeon() override;
    32.  
    33.  
    34.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dungeon Cave")
    35.     int32 CaveWidth;
    36.  
    37.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dungeon Cave")
    38.     int32 CaveHeight;
    39.  
    40.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dungeon Cave")
    41.     float WallFillRatio;
    42.  
    43.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dungeon Cave")
    44.     int32 Iterations;
    45.  
    46.     UFUNCTION(BlueprintCallable, Category = "Dungeon Cave")
    47.     bool ContainsWall(int32 x, int32 y);
    48.  
    49.     typedef TMap<int32, TMap<int32, bool>> CaveMap_t;
    50.  
    51. protected:
    52.     void Initialize();
    53.     void FillMapRandomly();
    54.     void SmoothMap();
    55.     int32 GetSurroundingWalls(int32 x, int32 y, const CaveMap_t& Map);
    56.  
    57. protected:
    58.     // True if wall, False if empty space
    59.     CaveMap_t CaveMap;
    60. };
    61.  

    Source
    Code (csharp):
    1.  
    2. //$ Copyright 2015 Ali Akbar, Code Respawn Technologies Pvt Ltd - All Rights Reserved $//
    3.  
    4. #include "DungeonArchitectRuntimePrivatePCH.h"
    5. #include "DungeonBuilderCave.h"
    6. #include "Dungeon/Dungeon.h"
    7.  
    8. DEFINE_LOG_CATEGORY(DungeonBuilderCaveLog);
    9.  
    10. static const FString MT_CAVE_WALL = "CaveWall";
    11. static const FString MT_CAVE_EMPTY = "CaveEmpty";
    12. static const FString MT_CAVE_CELL = "CaveCell";
    13.  
    14. UDungeonBuilderCave::UDungeonBuilderCave(const FObjectInitializer& ObjectInitializer)
    15.     : Super(ObjectInitializer)
    16. {
    17.     CaveWidth = 50;
    18.     CaveHeight = 40;
    19.     WallFillRatio = 0.45f;
    20.     Iterations = 4;
    21. }
    22.  
    23. void UDungeonBuilderCave::BuildDungeon(const FDungeonConfig& pConfig, TSharedPtr<FDungeonModel> pModel, UWorld* World /*= 0*/, ADungeon* Dungeon /*= 0*/)
    24. {
    25.     UDungeonBuilder::BuildDungeon(pConfig, pModel, World, Dungeon);
    26.  
    27.     Initialize();
    28.     FillMapRandomly();
    29.  
    30.     for (int i = 0; i < Iterations; i++) {
    31.         SmoothMap();
    32.     }
    33.  
    34.     model->BuildState = DungeonModelBuildState::Complete;
    35. }
    36.  
    37. void UDungeonBuilderCave::Initialize()
    38. {
    39.     GridToMeshScale = config.GridCellSize;
    40.     ClearSockets();
    41. }
    42.  
    43.  
    44.  
    45. void UDungeonBuilderCave::FillMapRandomly()
    46. {
    47.     CaveMap.Reset();
    48.     for (int x = 0; x < CaveWidth; x++) {
    49.         CaveMap.Add(x, TMap<int32, bool>());
    50.         for (int y = 0; y < CaveHeight; y++) {
    51.             bool ContainsWall;
    52.             if (x == 0 || x == CaveWidth - 1 || y == 0 || y == CaveHeight - 1) {
    53.                 ContainsWall = true;
    54.             }
    55.             else {
    56.                 ContainsWall = (random.FRand() < WallFillRatio);
    57.             }
    58.             CaveMap[x].Add(y, ContainsWall);
    59.         }
    60.     }
    61. }
    62.  
    63. void UDungeonBuilderCave::SmoothMap()
    64. {
    65.     CaveMap_t ProcessedMap = CaveMap;
    66.  
    67.     for (int x = 1; x < CaveWidth - 1; x++) {
    68.         for (int y = 1; y < CaveHeight - 1; y++) {
    69.             int32 WallCount = GetSurroundingWalls(x, y, CaveMap);
    70.  
    71.             // Make a wall if we have 5 or more wall cells in the 9x9 surrounding grid
    72.             bool CellType = (WallCount >= 5);
    73.             ProcessedMap[x][y] = CellType;
    74.         }
    75.     }
    76.  
    77.     CaveMap = ProcessedMap;
    78. }
    79.  
    80. int32 UDungeonBuilderCave::GetSurroundingWalls(int32 x, int32 y, const CaveMap_t& Map)
    81. {
    82.     int WallCount = 0;
    83.     for (int dx = -1; dx <= 1; dx++) {
    84.         for (int dy = -1; dy <= 1; dy++) {
    85.             WallCount += Map[x + dx][y + dy] ? 1 : 0;
    86.         }
    87.     }
    88.     return WallCount;
    89. }
    90.  
    91. void UDungeonBuilderCave::EmitDungeonMarkers_Implementation()
    92. {
    93.     Super::EmitDungeonMarkers_Implementation();
    94.  
    95.     ClearSockets();
    96.     FQuat baseRotation = FQuat::Identity;
    97.     FVector baseLocation = FVector::ZeroVector;
    98.     if (Dungeon) {
    99.         baseLocation = Dungeon->GetActorLocation();
    100.         baseRotation = FQuat(Dungeon->GetActorRotation());
    101.     }
    102.    
    103.     for (int x = 0; x < CaveWidth; x++) {
    104.         for (int y = 0; y < CaveHeight; y++) {
    105.             bool IsWall = CaveMap[x][y];
    106.             FVector location = FVector(x, y, 0) * GridToMeshScale;
    107.             location = baseRotation * location;
    108.             location += baseLocation;
    109.             FTransform transform;
    110.             transform.SetLocation(location);
    111.             transform.SetRotation(baseRotation);
    112.            
    113.             FString MarkerName = IsWall ? MT_CAVE_WALL : MT_CAVE_EMPTY;
    114.             EmitMarker(MarkerName, transform);
    115.             EmitMarker(MT_CAVE_CELL, transform);
    116.         }
    117.     }
    118. }
    119.  
    120.  
    121.  
    122. void UDungeonBuilderCave::DrawDebugData(UWorld* InWorld, bool bPersistant /*= false*/, float lifeTime /*= 0*/)
    123. {
    124.  
    125. }
    126.  
    127. void UDungeonBuilderCave::MirrorDungeon()
    128. {
    129.  
    130. }
    131.  
    132. bool UDungeonBuilderCave::ContainsWall(int32 x, int32 y)
    133. {
    134.     if (!CaveMap.Contains(x)) return true;
    135.     if (!CaveMap[x].Contains(y)) return true;
    136.     return CaveMap[x][y];
    137. }
    138.  
     
  37. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @djgriff I've added a new sample that animates the door using an animator component and it seems to work correctly by animating the doors individually
     
  38. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @250951450 You mean something like portals in diablo, which teleports you to another dungeon and then back. I can make a demo for it.
    The SurvivalShooter demo shows you how to load a level when you touch a trigger object (the end goal). You can use that script to load your boss dungeon and return back to the old dungeon. You'd return back to the same dungeon by providing the same seed. Saving the state of the monsters / treasures is game specific and has to be serialized / handled by you.
     
  39. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    Hey @djgriff Sorry for the delay. i've replied to your other mails
     
  40. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    A few features / bug fixes
    • Generated Dungeon Items now retain their correct prefab links. This was not happening before as it was cloning the objects. If the dungeon is built in the editor, it would call the Editor's PrefabUtility.InstantiatePrefab API to create the dungeon game object, thereby retaining the correct prefab link. During runtime, it would call normal MonoBehavior.Instantiate function to clone the object like before
    • Fixed an issue with Stairs connected to doors were missing. This was caused due to a bug with Stair Connection Tolerance that was removing a stair if there was a path from nearby tiles. It always keeps the stair if it is connected to a door
     
    Arkade likes this.
  41. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    @AliAkbar So this works if we change the X and Z, but not on Y, but it would help a lot in 1 scene large worlds to have the dungeons created near 0 float point, so we could build it in 0,-100,0 for example. Any way to have the DungeonGrid Y also taking into consideration?
     
  42. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @dlevel I'll have a look. The Y should also work. The minimaps generated in the survival shooter demo are created somewhere far up in the sky with a large Y value
     
    SSL7 likes this.
  43. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    yes please give it a look but it works only in x and z for me. thank you.
     
  44. kuyote

    kuyote

    Joined:
    Mar 5, 2017
    Posts:
    7
    Has this been tested on 2017? When I apply a theme, I'm able to generate the dungeon, however the them windows always says please select a theme. Nothing I do changes this, including creating my own theme file.

    Update: I've figured it out. you have to double click on the theme, I was trying to drag and drop
     
    Last edited: Sep 13, 2017
  45. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    729
    @kuyote I've changed the wording to make more sense
     
  46. Arkade

    Arkade

    Joined:
    Oct 11, 2012
    Posts:
    655
    Hi! After much deliberation, new owner here! Very excited -- it's a great fun asset :)
    I've watched several of the videos and investigated the demos a bit. I'm working on an outside game so the city-type spawning is of greatest interest to me. I'll also be trying to set it up for countryside types scenes. So that leads me to my question...

    Q1:
    For outdoor (not room + corridor style) generation, what would be best to start with?

    I watched City promo video and think the latter 2 scenes seem like good starting points. I've had a look at SimpleCityDungeonBuilder and see some of what you're doing. I'm a coder so am happy to get stuck in but wanted to first check that's the best. I found the sample content page with the downloads and the "Graveyard Theme (ManufacturaK4)" and "Desert Theme (ManufacturaK4)" (which I recognize are those two demos) but sadly I do not own either of those particular ones of his assets (I do own several of his others!). Consequently I get a load of blank and errors. I'll start fiddling but is there any chance there's a better path? (or that something similar without the asset dependency is available?) And yes, I see the implication is that SimpleCityDungeonBuilder is the best starting place. Still, probably good to ask just in case :)

    Thanks in advance and looking forward to playing more with this!

    P.s. I believe you're already working on my two other desires: streaming and LOD support (perhaps by grouping things and generating at different levels of detail by supplying different info in the theming phase?) On a related note (though maybe not so relevant for outdoor scenes), have you ever considered SECTR support?

    P.p.s. I realize it's early but as FYI since I'm experimenting with 2017.02b11, I see 2 errors and 1 warning when entering play mode:

    Missing MonoBehaviours:
    The referenced script on this Behaviour is missing! (that's it)
    I assumed this was missing the Unity Post Processing Stack but adding it didn't seem to fix. I guess I missed some import instruction step?

    The NavMesh agents give 1 warning and 1 error:

    Failed to create agent because it is not close enough to the NavMesh:

    Failed to create agent because it is not close enough to the NavMesh
    UnityEngine.Object:Instantiate(GameObject, Vector3, Quaternion)
    DAShooter.LevelNpcSpawner:RebuildNPCs() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/LevelNpcSpawner.cs:34)
    DAShooter.LevelNpcSpawner:OnPostDungeonBuild(Dungeon, DungeonModel) (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/LevelNpcSpawner.cs:17)
    DAShooter.<RebuildLevel>c__Iterator0:MoveNext() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/Game/GameController.cs:71)
    UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

    "Resume" can only be called on an active agent that has been placed on a NavMesh.
    UnityEngine.AI.NavMeshAgent:set_isStopped(Boolean)
    DAShooter.AIStatePatrol:OnEnter() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/AIController.cs:330)
    DAShooter.StateMachine:MoveTo(State) (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/StateMachine.cs:59)
    DAShooter.AIController:Initialize() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/AIController.cs:494)
    DAShooter.CharacterControlScript:Start() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/CharacterControlScript.cs:17)

    These don't really affect me at all since I'm not trying to use this stuff yet but thought you might want a heads-up.
     
    Last edited: Sep 13, 2017
    antoripa and AliAkbar like this.
  47. Glenndroid

    Glenndroid

    Joined:
    Sep 13, 2017
    Posts:
    21
    Hi, maybe this question has already been asked many times but are all the models / AI scripts used in the 3D tech demo (The one with the cartoony skeleton) included?
    If not where I'm able to buy/get them?

    It fits the scenery for my game perfectly.
     
    Last edited: Sep 13, 2017
  48. ArturoSR

    ArturoSR

    Joined:
    Feb 21, 2014
    Posts:
    21
    Hello everyone.

    I bought this tool two days ago, I was very interested it to try the 2D options that come inside the pakage (and some other things too), but, to my surprise none of the 2D examples runs, and after checking some of the other examples included, I found this issues:

    1. - Seen the console drops many erros about the NavMesh on the red/blue bots (testing the new 2D tools), and the scenes does not work at all, so, what I can see, there's some bad instructions (or incomplete, I really don't know) inside the developers code (they are not generic code, like "make by myself" to make it to work) and if I hit the build navmesh the warning change but does not fix it at all.

    2017-09-13_1335.png

    2.- When generate the dungeons I notice some "overlapping" objects, bad placing on some props alongside walls with level offset (mostly when there's two adjacent rooms) and not avoidance at all when there's a wall with a window and a down stairs indoor (practically you can see part of the window inside).

    2017-09-13_1343.png 2017-09-13_1343_001.png 2017-09-13_1337.png

    This tool already have more than a year and still need more improvements (I know that's not easy) to make this to be an excellent tool, but now, it's just good enough.

    And something else, there is a better way to make the theme editor more intuitive, something like many other node tools do, just selecting the asset and the theme window editor shows the content.

    Using Unity last version (2017.1.1f1)
     
    Last edited: Sep 13, 2017
  49. Arkade

    Arkade

    Joined:
    Oct 11, 2012
    Posts:
    655
    Hey, @ArturoSR
    I purchased a couple of days ago too.

    Re. (1), I see similar (though not identical) problems with the NavMesh (see my post 2 above yours). I was trying it with 2017.02b11 and assumed something changed since 5.6.x.

    Re. (2) , I didn't see the problem you did with the windows -- they worked fine for me. (odd!)
    I installed the package into a clean new project. Any ideas what the differences could be? (other than the version number -- and I assume 5.6.x worked since it's less bleeding edge than ours :) ) Maybe you could try an earlier/later version? (though I agree it ought to work on latest non-beta!)

    HTH!
     
  50. kuyote

    kuyote

    Joined:
    Mar 5, 2017
    Posts:
    7
    Something that would be real helpful is a user contributed theme db. You might already have it, or maybe it's not possible. You provide some great themes, but they aren't for the assets that I've been able to purchase yet. Thanks again!
     
    AliAkbar and Arkade like this.