Search Unity

[RELEASED] Dungeon Architect

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

  1. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    312
    @AliAkbar here are examples of houses/custom blocks spawning in a park:
    upload_2017-11-14_14-20-46.png

    Here is a larger view, all large houses are facing the same direction. Note that InsertHouse90() has been commented out to generate this layout:
    upload_2017-11-14_14-22-14.png


    With InsetHouse90() untouched (uncommented) we get this:
    upload_2017-11-14_14-25-25.png
     
  2. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    I've fixed the issue and it will available in the next build shortly

    Before:


    After:
     
    hopeful likes this.
  3. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    You can make them spawn only on rooms if you like. How are you currently spawning your enemies? If you are spawning them from the theme file, you can add a selector logic and restrict the marker to run only on rooms.

    If you are spawning them from an external script, you can query the grid model. I can provide a sample for this.

    As for the AI, you can have the NPC follow the player and return to the spawn point (or the patrol path) like in the Survival Demo in the samples
     
    Glenndroid likes this.
  4. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
  5. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    @Sehee26 like @tcz8 mentioned, you can check the model. I'll add spatial constraint support in the future builds so it should make it easy for you to specify the road configuration from a theme node
     
    Sehee26 likes this.
  6. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    @tcz8 I haven't added support for that yet in the city builder. I'll add it in the near future
     
  7. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    @tcz8 I've fixed the issue with larger house spawning inside the parks. I'll have a look at the rotation not facing the road side
     
  8. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    194
    Can't wait ^^ !!!! Thanks a lot! Thats exactly what i wanted,, grid based diablo like generated dungeon ^^

    And if you have time, since we can't use Unreal Engine's Awesome Free Assets, Can you make a theme file for this too?

    https://www.assetstore.unity3d.com/en/#!/content/65780
     
    Last edited: Nov 15, 2017
  9. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    312
    To think I spent hours diving in your code to create a transform and select rule scripts that are now useless HeHeHe. At least I understand DA's innards much better now.

    The Transform Rule I put together fixes the rotation but I had to disable InsertHouse90() from within SimpleCityDungeonBuilder.cs otherwise some building ended up with an extra 90 degree rotation. It'll be interesting to see how you handle that in the builder.

    EDITED cause: /ineedtolearntoreadproperly

    QUESTIONS

    1- When do you plan to publish the next update?

    2- EDIT: Never mind question 2, It somehow started working.... I hate it when that happens.
     
    Last edited: Nov 16, 2017
  10. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    312
    Here is the result using my debug theme.

    Gray = regular street
    White = crossroards/others
    Red = Normal House
    Green with Magenta marker= Custom Block Dimenssion aka Large House aka House2X (marker = front)
    Dark green = Park
    Blue = Ground

    upload_2017-11-15_22-57-46.png

    As you can see I am left with 2 issues:

    1- Unselected spaces are not reverting to what they should: Normal house or Park.

    In my Select Rule I set all unselected cells to SimpleCityType.Park (dont mind losing a few regular houses) but it doesn't work.

    2- Some large houses are placed right in front of road intersections (or Ts) which im not sure is allowed in real life.
     
    Last edited: Nov 16, 2017
  11. FricoRico

    FricoRico

    Joined:
    Aug 31, 2015
    Posts:
    1
    I'm sorry if this has been asked before. But does your asset also support runtime painting? I'm looking to make a runtime tool to generate maps that would then be serialised and saved in a database.
     
  12. Glenndroid

    Glenndroid

    Joined:
    Sep 13, 2017
    Posts:
    21
    @AliAkbar Thank you for the update. currently don't spawn any enemies yet. But I will probably do it with your example scene.

    What about the final room? Is it possible to give it a custom size?
     
  13. Jasper1hu

    Jasper1hu

    Joined:
    Mar 21, 2015
    Posts:
    11
    I am working on a projec with single side walls. Is there a way to enable the overlapping fence / walls fixed in this patch?
    Could you please let me know which file and which line or function?

    Best,
    Ran
     
  14. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    Hey Ran, please update to the latest version (1.6.0). It should have that fix.
     
  15. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    Runtime navigation generation now support terrains


    If you want to bake the navigation on your terrain along with the other dungeon generated meshes, enable Bake Terrain and supply the terrain game object

     
    laurentlavigne, antoripa and SSL7 like this.
  16. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    194
  17. dearamy

    dearamy

    Joined:
    Mar 17, 2015
    Posts:
    68
    Last edited: Dec 1, 2017
  18. maxaud

    maxaud

    Joined:
    Feb 12, 2016
    Posts:
    162
    Will this script example be put in a future release? If not, is it something you can send me? Thank you!
     
  19. Culrich

    Culrich

    Joined:
    Sep 24, 2014
    Posts:
    17
    I was just curious if there was a way to check to see if I wall was an interior wall, so to speak. In my current dungeon we use a snow shader and I would like to turn it off for interior walls by swapping prefabs. I'm not sure if this can be done by selection rule or maybe it could be done by constraints.

    example.png

    In my example you can see walls that 'point,' to the outside, where snow would be found. I'm trying to figure out how I can change / turn off the walls that are on the inside, where the snow wouldn't be found.

    Any help will be appreciated, thanks!
     
  20. Shawn67

    Shawn67

    Joined:
    Jan 2, 2014
    Posts:
    2,196
    Hi @AliAkbar! I still hadn't got around to picking DA up yet and was just looking at it again. In scrolling through the files, I'm not seeing the DungeonArchitect_Samples_Thirdparty (or Thridparty as spelled in PDF :p ) containing the 3DForge, Gaia, and MK4 themes from the Quick Start Samples guide. Are those still in the pack and I missed them? Or are they available for download after we register purchase with you?

    Also I noticed mention of a cave creator. I would also link to ring in a YAY vote for this. It would be awesome for both MK4's Underworld, MotoProprio's (sp?) Cave System, 3DForge's Cave Adventure System, and all the other cave assets that I can't recall at the moment. lol With what you have shown with DA, I can't even imagine what kind of awesomeness would come from a cave builder!
     
    hopeful likes this.
  21. Shawn67

    Shawn67

    Joined:
    Jan 2, 2014
    Posts:
    2,196
    I guess it helps to read through ALL the docs. lol.. Leave it to me to go backwards and get stuck trying to figure something out that is stated in the one I should have read first. lol Found the sample content with third party themes. :) Now I'm off to get lost in videos to figure this thing out. Wish me luck!
     
    hopeful likes this.
  22. Shawn67

    Shawn67

    Joined:
    Jan 2, 2014
    Posts:
    2,196
    Has anyone been able to get the 3DForge Exteriors + Gaia theme to work since June? I just grabbed DA yesterday and I'm getting the same error reported back in June. I stripped all three DA folders from my project, then reimported DA, and copied the third party samples pack back in and end up with same error again.

    @AliAkbar, were you ever able to figure out what was causing this? I see where you responded to the above-quoted user you were going to have to look into it. But I can't seem to find a post where you figured it out. :(

    Using Unity 2017.1.1p4 on Windows with DA in a new project after importing 3DForge Interiors & Exteriors, Gaia, Script Inspector 3, and standard assets.

    I only have four errors on the console. All four are this error for different methods within the StrongholdLandscapeModifier.cs script.

    The first is for line 35 where UpdateTerrainDetails is defined.
    The second is for line 48 where UpdateTerrainTextures is defined.
    The third is for line 59 where UpdateDetailTexture is defined.
    And the last is for line 87 where UpdateBaseTexture is defined.

    Code (CSharp):
    1.             var cityModel = model as SimpleCityDungeonModel;
    2.  
    Also, I'm not getting an error in the Unity console but I noticed line 25 also references the type SimpleCityDungeonModel and both "var" and "SimpleCityDungeonModel" have red lines under them. So I'm wondering if there is a missing namespace or something wrong where SimpleCityDungeonModel is originally defined that is causing the issue. Maybe a change between making the videos and June?

    I'll try to play around when I have some time after getting up later to see if I can figure it out but wanted to check and see if you found the issue or not in case I'm unsuccessful. For now, my brain needs sleep. lol
     
  23. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,393
    Help! I am having trouble running number of the examples

    I have latest Dungeon Architect and I am using Unity3d

    When I run CityShooter I get


    When I run CliffSurvivalShooter I also get

    When I run HillSurvivalShooter I also get

     
    Last edited: Dec 4, 2017
  24. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,250
    I just bought this asset but I am running into countless errors when opening and playing demo scene. This ranges from missing scrips on the camera to errors in the console that make the enemy movement very expensive or downright not happening. I am using 5.61
    @AliAkbar is there a fix availabe?

    Marker nodes are great but why can't I just connect the object node to the marker root directly, that would make it visually easier to deypher what connects to what, or at least, when clicking on a marker node that's child of a object node, blink the root market node it stems from.
    why can't i connect an object to an object array node?
     
  25. Guile_R

    Guile_R

    Joined:
    Dec 29, 2012
    Posts:
    53
    @AliAkbar, wondering if I could extend Dungeon Architect to work with radial dungeons like in the image below? If so how would you tackle the problem?
     
    AliAkbar, nunesbarbosa and Shawn67 like this.
  26. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,001
    That's a good question. While it's not a thing I require, it's just optional, I was wondering about how to get the city builder to make some sections of the city in a concentric circle street layout. Or possibly other shapes, like a pentagon.
     
  27. Shawn67

    Shawn67

    Joined:
    Jan 2, 2014
    Posts:
    2,196
    wow... I love that style! It would be awesome to be able to do those types of layouts!
     
  28. Rusted_Games

    Rusted_Games

    Joined:
    Aug 29, 2010
    Posts:
    85
    I apologize before hand if this is a dumb question, I would like to know before buying this assets (which looks awesome on the video tutorials) if it is suitable to build actual underground dungeons, like the ones seen on bloodborne dungeon chalices, all the demos and screenshots are showcasing outdoor procedural levels.
    Thanks in advance
     
  29. francescobr

    francescobr

    Joined:
    Apr 2, 2017
    Posts:
    45
    Hi, I'm using your asset but there's something I cannot do. I want to place torches on the walls only inside rooms, in a non random way.
    First I started by adding a node connected to the Wall marker. This places torches on all the walls, and while it's not what I want they are correctly aligned once I set the correct offsets.
    Then I wrote a selector script, where I check if I'm inside a room. This just places torches on all the walls in the room, though corners have 2 torches and on is placed uncorrectly. Then I thought about this :

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections.Generic;
    3. using DungeonArchitect;
    4. using DungeonArchitect.Utils;
    5. using DungeonArchitect.Builders.Grid;
    6.  
    7. public class TorchSelector : SelectorRule
    8. {
    9.  
    10.     public override bool CanSelect(PropSocket socket, Matrix4x4 propTransform, DungeonModel model, System.Random random)
    11.     {
    12.         if (model is GridDungeonModel)
    13.         {
    14.             var gridModel = model as GridDungeonModel;
    15.             var config = gridModel.Config as GridDungeonConfig;
    16.             var cellSize = config.GridCellSize;
    17.             var position = Matrix.GetTranslation(ref propTransform);
    18.             var gridPositionF = MathUtils.Divide(position, cellSize);
    19.             var gridPosition = MathUtils.ToIntVector(gridPositionF);
    20.             var cellInfo = gridModel.GetGridCellLookup(gridPosition.x, gridPosition.z);
    21.             var isRoom = cellInfo.CellType == CellType.Room;
    22.  
    23.             if (!isRoom) return false;
    24.  
    25.             DungeonBuilder builder = model.GetComponent<DungeonBuilder>();
    26.  
    27.             IntVector propPosition = new IntVector(position);
    28.  
    29.             List<PropSocket> sockets = builder.PropSockets;
    30.             List<PropSocket> torchSockets = sockets.FindAll(s => s.SocketType == "Torch" && s.gridPosition.Equals(socket.gridPosition));
    31.  
    32.             Debug.Log("=====> " + torchSockets.Count);
    33.  
    34.             if (torchSockets.Count > 1) return false;
    35.  
    36.             return true;
    37.         }
    38.         else
    39.         {
    40.             return false;
    41.         }
    42.     }
    43.  
    44. }
    I wanted to check if a torch already existed in that spot (as I expect corners to add a torch twice to a tile, since there are 2 walls on that tile). I was expecting to log something like 0 0 0 0 then a 1 on the first corner, then more zeroes until the second corner, and so on. It turns out I get all 1 and 2 on corners, like torches are already placed before the selector runs. Is this correct?

    Then I though about using a DungeonMarkerEmitter, like this :

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections.Generic;
    3. using DungeonArchitect.Utils;
    4.  
    5. namespace DungeonArchitect.Builders.Grid
    6. {
    7.  
    8.     public class CornerTorches : DungeonMarkerEmitter {
    9.  
    10.         private List<PropSocket> sockets;
    11.  
    12.         private GridDungeonModel model;
    13.  
    14.         private DungeonBuilder builder;
    15.  
    16.         private int wallCount = 0;
    17.  
    18.         public override void EmitMarkers(DungeonBuilder builder)
    19.         {
    20.  
    21.             this.builder = builder;
    22.  
    23.             if (!(builder is GridDungeonBuilder))
    24.             {
    25.                 Debug.LogWarning("Unsupported builder type used with marker emitter CornerLamps. Expected GridDungeonBuilder. Received:" + (builder != null ? builder.GetType().ToString() : "null"));
    26.                 return;
    27.             }
    28.        
    29.             model = builder.Model as GridDungeonModel;
    30.  
    31.        
    32.  
    33.             foreach (var cell in model.Cells) {
    34.            
    35.                 if (cell.CellType != CellType.Room) continue;
    36.  
    37.                 wallCount = 0;
    38.  
    39.                 IntVector[] borderPoints = cell.Bounds.GetBorderPoints();
    40.  
    41.                 foreach (var border in borderPoints)
    42.                 {
    43.                     //are we on a wall?
    44.                     sockets = builder.PropSockets;
    45.                     List<PropSocket> cellWallSocket = sockets.FindAll(socket => socket.SocketType == "Wall" && socket.gridPosition.Equals(border));
    46.                     if (cellWallSocket == null)
    47.                     {
    48.                         continue;
    49.                     }
    50.                     else
    51.                     {
    52.                         wallCount += cellWallSocket.Count;
    53.                         EmitMarker(builder, model, border, "Torch");
    54.                     }
    55.                 }
    56.            
    57.                 Debug.Log("Found a total of " + wallCount + " walls for room with id " + cell.Id);
    58.             }
    59.  
    60.        
    61.         }
    62.  
    63.         void EmitMarker(DungeonBuilder builder, GridDungeonModel model, IntVector point, string markerName) {
    64.             var gridSize = model.Config.GridCellSize;
    65.             var position = point * gridSize;
    66.             position += Vector3.Scale(new Vector3(0.5f, 0f, 0.5f), gridSize);
    67.             var transform = Matrix4x4.TRS(position, Quaternion.identity, Vector3.one);
    68.             builder.EmitMarker(markerName, transform, point, -1);
    69.         }
    70.  
    71.     }
    72.  
    73. }
    74.  
    This seems to work, but torches are not aligned. They can be correctly aligned on one wall but they'll inevitably be misaligned on the other 3 walls, since they are not point inside the room, but all on the same directions.

    So I have a few questions :

    1) Docs don't really tell what APIs do. For example, what does cell.Bounds.GetBorderPoints() return? I can now tell that it returns the border tiles of a room, but why not write it?
    2) How can I know how something will be placed? Does DA uses wall normals? Does it know automatically to point torches INSIDE the room and not outside?
    3) builder.EmitMarker(markerName, transform, point, -1); what does it do with the transform? does it override offsets set in the visual node configuration? Why is the last parameter, the cell id, -1? Why not the cell id we're into right now? If you use the transform what is the point for?
    4) it looks like sometimes you work in points (that I presume are points inside the grid, while a cell is a finite aggregation of points, like a room or a corridor), sometimes you translate them to unity transforms coordinates, what's the right way of trying to navigate a dungeon model?
    5) I had to access PropSocket list in the GridDungeonModel to know what markers were supposed to be in a certain spot, is that right? Is that the only way of doing it?
    6) Trying to navigate cell.Bounds.GetBorderPoints() looks like those points do not unfold in a line, but follow another pattern, like this :

    |-6--4--2--0-|
    |-9---------8-|
    |-7--5--3--1-|

    for a 4x3 room. Is this right?
    7) I took a look at UE docs, and it looks like it's got more feature, like dungeon streaming, and also much more utilities functions! Are those in unity version too? If not can we have them? Especially something to know what adjacent tiles in the same room contain, that would be great.
    8) Blackboard, what is it for?

    I hope I'll get some answers, as this tool seems so powerful, but it looks like I'm not using it to its full potential. Thanks.
     
    Last edited: Dec 7, 2017
  30. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,250
    I'm getting a lot of redline in the console in the hillsurvivalshooter
    run of the mill navmesh problems after I spacebar regenerate the map a few times
    that's in 5.6.4
    any fix coming up?

    Code (CSharp):
    1.  
    2. "GetRemainingDistance" can only be called on an active agent that has been placed on a NavMesh.
    3. UnityEngine.AI.NavMeshAgent:get_remainingDistance()
    4. DAShooter.AIStatePatrol:HandleFrameUpdate(Single) (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/AIController.cs:381)
    5. DAShooter.AIStateBase:Update() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/AIController.cs:37)
    6. DAShooter.AIStatePatrol:Update() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/AIController.cs:363)
    7. DAShooter.StateMachine:Update() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/StateMachine.cs:78)
    8. DAShooter.CharacterControlScript:Update() (at Assets/DungeonArchitect_Samples/Game3D_SurvivalShooter/Scripts/AI/CharacterControlScript.cs:28)
     
  31. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,250
    @AliAkbar please keep adding tooltips, they're super useful
     
    Last edited: Dec 6, 2017
  32. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,250
    questions regarding the graph editor:
    1. how do you delete a link in the graph editor? I tried selecting it, nada
    2. how do I duplicate a bunch of nodes?
    3. how do I move a connection from one node to another? click on the arrow then drag the arrow doesn't do anything
     
    Last edited: Dec 7, 2017
  33. francescobr

    francescobr

    Joined:
    Apr 2, 2017
    Posts:
    45
    1. right click on the node where the arrow ends
    2. select them and ctrl+c ctrl+v
    3. delete it and then make it again

    at least this is what I understood.
     
  34. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    @Culrich, Spatial constrains can be used for this but I found a bug which I'll fixed

     
    hopeful likes this.
  35. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    Hey @Shawn67 Welcome back! I'll have a look again at the third party assets and get back to you

    Edit: You can find the download link in the quick start guide
     
  36. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    @im Looks like the navmesh is not created. Which unity version are you using?
     
  37. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    @im 5.6.x builds seem to download the 2017.x builds :| (or something wrong with the way I uploaded). I'll re-upload a hotfix by tomorrow

    You'll need to use the Unity post processing stack to avoid camera missing scripts issue
     
  38. AliAkbar

    AliAkbar

    Joined:
    Jun 30, 2014
    Posts:
    671
    @francescobr it can be done with code like this, but it requires a slight change in DA. I'll have this fixed by tomorrow.

    Code (csharp):
    1.  
    2. using System.Collections;
    3. using System.Collections.Generic;
    4. using UnityEngine;
    5. using DungeonArchitect;
    6. using DungeonArchitect.Utils;
    7. using DungeonArchitect.Builders.Grid;
    8.  
    9. public class RemoveDuplicateMarkersWithinCell : DungeonEventListener {
    10.     public string markerName;
    11.  
    12.     public override void OnDungeonMarkersEmitted(Dungeon dungeon, DungeonModel model, List<PropSocket> markers) {
    13.         var config = dungeon.Config as GridDungeonConfig;
    14.         var gridSize = config.GridCellSize;
    15.  
    16.         var SpatialPartition = new HashSet<IntVector>();
    17.         var markersToRemove = new List<PropSocket>();
    18.         foreach (var marker in markers)
    19.         {
    20.             if (marker.SocketType == markerName)
    21.             {
    22.                 // Check if a marker with this name has already been encountered before in this spatial cell
    23.                 var markerLocation = Matrix.GetTranslation(ref marker.Transform);
    24.                 int sx = Mathf.FloorToInt(markerLocation.x / gridSize.x);
    25.                 int sz = Mathf.FloorToInt(markerLocation.z / gridSize.z);
    26.                 var spatialKey = new IntVector(sx, 0, sz);
    27.  
    28.                 if (SpatialPartition.Contains(spatialKey)) {
    29.                     // We have found a marker within this cell before. remove it from the list
    30.                     markersToRemove.Add(marker);
    31.                     continue;
    32.                 }
    33.  
    34.                 // Register it so we can remove duplicates later
    35.                 SpatialPartition.Add(spatialKey);
    36.             }
    37.         }
    38.  
    39.         // Remove all the markers that were marked for removal
    40.         foreach (var markerToRemove in markersToRemove)
    41.         {
    42.             markers.Remove(markerToRemove);
    43.         }
    44.     }
    45. }
    46.  
    47.  
     
  39. francescobr

    francescobr

    Joined:
    Apr 2, 2017
    Posts:
    45
    @AliAkbar thanks, I was just working on a OnDungeonMarkersEmitted function, but it looks like only standard markers can be found in List<PropSocket> markers at that stage, as I couldn't find any of my markers in the list.
    This was my script

    Code (CSharp):
    1. using DungeonArchitect;
    2. using DungeonArchitect.Builders.Grid;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5. using UnityEngine;
    6.  
    7. public class TorchRemover : DungeonEventListener {
    8.  
    9.     public override void OnDungeonMarkersEmitted(Dungeon dungeon, DungeonModel model, List<PropSocket> markers)
    10.     {
    11.         if (model is GridDungeonModel)
    12.         {
    13.             GridDungeonModel gridModel = model as GridDungeonModel;
    14.             GridDungeonBuilder builder = dungeon.GetComponent<GridDungeonBuilder>();
    15.            
    16.             int removedTorches = 0;
    17.  
    18.             foreach (var room in gridModel.Cells)
    19.             {
    20.  
    21.                 if(room.CellType == CellType.Room)
    22.                 {
    23.                     IntVector[] roomBorders = room.Bounds.GetBorderPoints();
    24.  
    25.                     foreach (var borderPoint in roomBorders)
    26.                     {
    27.                         List<PropSocket> torches = markers.FindAll(marker => marker.cellId == room.Id && marker.gridPosition.Equals(borderPoint) && marker.SocketType.Equals("Torch"));
    28.  
    29.                         Debug.Log("Found " + torches.Count + " torches in room " + room.Id + " on position " + borderPoint);
    30.  
    31.                         if (torches.Count > 1)
    32.                         {
    33.                             removedTorches += markers.RemoveAll(marker => marker.gridPosition.Equals(borderPoint) && marker.SocketType.Equals("Torch"));
    34.                         }
    35.                     }
    36.                 }
    37.  
    38.             }
    39.  
    40.             Debug.Log("Removed " + removedTorches + " torches");
    41.         }
    42.     }
    43.  
    44. }
    When you have time could you please also answer my other questions? Thanks a lot.
     
  40. Shawn67

    Shawn67

    Joined:
    Jan 2, 2014
    Posts:
    2,196
    Thanks! It has been a long wait to pick the asset up. Luckily I had a few extra bucks when the Mega Sale came around. Just couldn't put it off any longer! Great product and a lot of great thought put into it. Still trying to wrap my head around it though.

    For clarification, I think the error may have just been for the 3DF + Gaia stronghold theme. The farm and simplecity ones seemed to work fine. The only issue I had was it only retextured for the road/path which eventually left me with a big dirt circle for the area after recreating a few times to look at how things randomized. I'm wondering how well this might work setting these up as a Gaia POI and having several DA villages/dungeons to spawn across the map. In your videos, it appears as if when you create, it creates a new random dungeon layout for all the dungeons in the scene. Is this correct or did I misinterpret what I was seeing? If I were to do something like that and have DA dungeons spawned as POIs, could I then walk through each of them individually using create to regenerate a different layout without affecting the others? Is that maybe where having different seeds would come into play? Same seed value regenerates all for that seed whereas different seed value allows individual regeneration?

    I did find the download link. I originally was looking at the docs included in the package. They appear to be an older version where the third party themes were maybe included in the package as well? But I eventually looked at the ones from the product page on asset store and was able to find the third party themes package.

    Speaking of which, in addition to the errors with the 3DForge Exteriors + Gaia theme, I also noticed some issues with the 3DForge Interiors theme and upon taking a second look at that theme video on YouTube, it looks like they were present there as well. Some oddities with the steps and doorways of rooms where steps go around the walls. I'm wondering if that is a simple kind of fix or if it might just be better to have some of the more complex rooms like that be premade and spawned that way instead of built totally on the fly. Maybe spawn the room as a single spawn and then have the node coming off of it which would contain a tree of furnishings. (I'm sure my terms aren't correct. Memory retention of the names of the different kinds of nodes and structures just isn't happening at the moment. lol But hopefully you understand what I'm talking about.)

    Sorry for so many questions. I've been looking forward to digging in and trying DA out for a while now. So I guess they kind of accumulated! lol
     
  41. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,250
    Thanks!
     
  42. FionaWalker

    FionaWalker

    Joined:
    Jul 31, 2017
    Posts:
    1
    Hi,

    I'm interested in creating 2D side scroller platform games and using DA to randomly generate the levels. I thought that the method used in Spelunky could make a good dungeon generator for DA.

    Here is a link to an article that explains how the random generation works: http://tinysubversions.com/spelunkyGen/

    Any chance on getting a DA generator created for this type of 2D platformer???

    Cheers
     
    Last edited: Dec 7, 2017
    AliAkbar likes this.
  43. Snotface

    Snotface

    Joined:
    Jun 3, 2015
    Posts:
    7
    Hi @AliAkbar
    I recently started a project using your asset and A* Pathfinding Project. Using the FloorPlanBuilder demo, when i generate the level and build the nav mesh using A*PP, it scans all areas successfully, but seems to think some of the areas are unreachable and doesn't link them all together. It links any rooms that are "vertical" (north to south), but won't link any that are "horizontal" (east to west). I have posted on Aron's site as well, but can you think of any reason why this would happen?

    https://ibb.co/nLPpCw

    Thanks.

    Edit: Sorted out my problem with Aron's help. It was my A* settings that were messing things up.
     
    Last edited: Dec 9, 2017
    AliAkbar likes this.
  44. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,393
    I'm using the latest version

    Unity version 2017.2, released 12 October 2017
     
  45. Arganth

    Arganth

    Joined:
    Jul 31, 2015
    Posts:
    280
    I am wondering how you guys go about welding together the constructed game world?
    Any Tools/Scripts?
     
    AliAkbar likes this.
  46. Naughtykyuubi69

    Naughtykyuubi69

    Joined:
    Dec 4, 2015
    Posts:
    2
    I have purchased this asset when it was on sale after careful consideration and so far I've been pleased with how it works. It's a powerful tool, one I'm still busy learning how to use, but I feel it can add something special to my project. So I'll be keeping tabs here and see how it evolves further.
     
    AliAkbar likes this.
  47. emperor12321

    emperor12321

    Joined:
    Jun 21, 2015
    Posts:
    50
    I am getting errors that there is no navmeshbuilder in the unityengine.ai namespace. I use the latest version of unity. empty project
     
  48. Culrich

    Culrich

    Joined:
    Sep 24, 2014
    Posts:
    17
    Looks good! Thanks for posting that. I'll wait for the bug fix then.
     
  49. Naughtykyuubi69

    Naughtykyuubi69

    Joined:
    Dec 4, 2015
    Posts:
    2
    a quick question to anyone who might know. Would this asset be able to work with playmaker, will they play nice with each other?
     
  50. jaybennett

    jaybennett

    Joined:
    Jul 10, 2012
    Posts:
    165
    Wow, I am first hearing about this project now after 2 years!

    The amount of different variations you have been able to do with this same engine is very impressive.

    What I noticed quickly while building my custom terrain generation in Unity is that tons of work goes into the Editor UI scripts and managing all the prefabs. I would so much rather pay some money and get a nice package that does this well already!

    How well does it work with customization of the layouts?

    For example I am working on a dungeon algorithm that has a more organic shape. Here is an example bitmap that I am using as the input to my current Unity terrain + prefab generation:

    wallmap_9.png

    Each pixel is one tile and the white areas are walkable, black are walls. This is just the wall map and there is more work done later to generate the lower level of detail such as where the different towns and NPC spawn areas might be placed.

    I would love it if I could piggyback off this asset for generating the smaller, less game-critical details (such as fences, brush, stairs, etc like your videos show so beautifully). But I still want control over how the walls and zones / spawns are placed.

    I was reading the documentation and this seems possible based on the two phase approach. Neat.

    What do you think, @AliAkbar?
     
    Last edited: Dec 11, 2017
    AliAkbar likes this.