Search Unity

GAIA - AAA terrain generator, procedural texturing, planting and scene creation

Discussion in 'Assets and Asset Store' started by AdamGoodrich, May 21, 2015.

?

Would you pay an upgrade fee for Gaia 2 so that we can hire to accelerate its development?

Poll closed Sep 3, 2018.
  1. Yeah super cool - I would pay a $15 upgrade fee to get it faster!

    83 vote(s)
    80.6%
  2. No way - you promised free and i am happy to wait!

    20 vote(s)
    19.4%
  1. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    PlayWay Water.(I took Ceto out in favor of this.)
    I'm using Tengoku Dynamic sky, as well in this shot.


    I wish I could get my grass to spawn like your guy's, mine is only spawning sporatically, and around the edges of my island.
     
    ZenMicro, S4G4N, AdamGoodrich and 2 others like this.
  2. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,816
    Neither do a great job of creating rivers and lakes. You have to fudge around with them a bit. I use Suimono and it is okay but it is not perfect and it has some issues. A new one is out and I haven't tried it but friends say it still has issues. :) Probably to be expected. Basically, none of them are perfect. So..pick the one that is best for you or use Water4 until someone actually makes one that works for rivers.
     
    twobob likes this.
  3. DCTShinobi

    DCTShinobi

    Joined:
    Jun 23, 2014
    Posts:
    20
    I'm not sure exactly why, but this made me think of something that may or may not exist in Gaia already. And please forgive me for asking about it... as you have spoiled me, so I may be feeling lazy...

    Does (or will) Gaia have the ability to control what objects a single "cluster" is made of? Or does a cluster only relate to a single object/prefab?

    Let's say that I do have an "asset pack" such as 3DForge's Village Exterior Kit. I create prefabs of the following...

    House A
    House B
    House C
    Tavern
    Blacksmith Forge

    In Gaia's spawner settings, can I create a "cluster" based on specific numbers, a range of numbers, or a ratio of each prefab? For example...

    3-5 House A's
    2-4 House B's
    5-7 House C's
    1-2 Taverns
    1 Blacksmith Forge

    Haha, yes, I guess I'm thinking too much about a procedural city building system using Gaia's spawner/cluster rules. Perhaps with even more control over clusters such as shape/orientation (a circular village with all buildings facing the center of town... or a larger rectangular city with all the buildings at right angles). While I'd love it for buildings and structures, I suppose the same concept could be used for plants and such also... like clusters of red flowers with some blue flowers and a few yellow flowers mixed in. And again, this may already exist... and I'm just missing it :p

    Ps. Oh, and one other question. Does the selected shape of the spawner have an effect, or is it only visual? I selected a spherical spawner for spawning textures on a small part of my terrain, but when the textures were actually spawned, it appeared to "paint" in a square section instead of a circular one. I'll try it again when I have the opportunity, but just found it odd, so I thought I would ask.

    Have a wonderful day, and thank you so much for everything! :-D
     
    S4G4N and TheSeawolf like this.
  4. TheSeawolf

    TheSeawolf

    Joined:
    Apr 10, 2015
    Posts:
    267
    Thanks kurotatsu, I'll take a look at Playway water. Good screenshot by the way.

    @Teila...thanks for the feedback, that was exactly the reply and feedback I was looking for.

    @Adam, have you any intention of adding a terrain stitching tool to Gaia, or should am I ok to to ahead and purchase this asset; Terrain Stitcher by NatureManufacture?
     
    kurotatsu likes this.
  5. montyfi

    montyfi

    Joined:
    Aug 3, 2012
    Posts:
    547
    I plan to buy the latest one: PlayWay Water System soon. Looks better than anything else.
     
  6. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    This is a bug. I posted fix earlier in thread. Or if you can wait another week new release sorts it.
     
    S4G4N and twobob like this.
  7. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    If Gaia create the terrains then they will be stitched. The code is there already but not exposed yet because everything needs to support this. It won't stitch 3rd party terrains tho.

    If you need this now then sounds like terrain stitcher might be useful.
     
  8. ksam2

    ksam2

    Joined:
    Apr 28, 2012
    Posts:
    1,001
    Hi, first thanks for this cool asset, second I'm waiting for Multi-Tiled terrains support
     
    S4G4N likes this.
  9. AlanOToole

    AlanOToole

    Joined:
    Sep 7, 2013
    Posts:
    126
    Amazing looking asset for sure! I also want to throw my vote out that having it support multiple terrains (tiled) would be one seriously really great!

    Edit: Just bought GAIA and all I have to say is WOW... this is what I've been missing with terrains for a long time. Thank you!
     
    Last edited: Nov 25, 2015
    S4G4N likes this.
  10. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    1st effort controlling some details to spawn sub-aqua on Splat 0 only (slope controlled), decent.
    SubAquaCoral.JPG

    I am struggling with the detail distance required for bright coral to not look too "poppy" versus the detail density required on dry land for good ground coverage but perhaps some more intelligent choices with the Spawn paramaters will eventually pay dividends.
     
  11. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,816
    Try moving the failure rate up for the coral or making a separate spawner for the coral and setting it to cluster. :)
     
    twobob and Shawn67 like this.
  12. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Thanks, however the distance required to see the coral is 250. but the grass et al would be better at 120.
    perhaps 2 terrains.... I will think on it.
     
  13. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,816
    @twobob Not sure you have to do that. Also, in the DNA for the coral, you can adjust the density by adjusting the scale.

    Ahh, never mind, you mean distance. I see. Do you use Speedtrees? If so, just have them cull out. Probably could do that with Unity trees too. Make an LOD Group and add your tree to LOD0 and then just delete the ones you don't need...and set it to cull at a specific distance. Works great. :)

    I use the LOD groups and culling all the time. Other idea is to use layers and have one layer cull out. Can't remember how I did that though. lol
     
    John-G likes this.
  14. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    I use just regular trees and they are fine. I can have trees to 2000 no problems as we only use a couple of hundred over 2km² - however the bushes and low ground items do max out a little at 200 distance, however the coral tend to pop at anything under the max.

    We did dig around in the DNA code and are playing with custom spawn stuff at the moment to do the sea bed.
    We were thinking about switching the detail distance when underwater but that can cause big resource hangs when leaving the water. Hey ho. I will work on it :)
     
    Shawn67 and Teila like this.
  15. TheSeawolf

    TheSeawolf

    Joined:
    Apr 10, 2015
    Posts:
    267
    Thanks Adam, there is no rush on the stitch feature from my project, I'll bide my time and perfect the terrain creation until the future becomes the present :)
     
    AdamGoodrich likes this.
  16. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    HI,

    I hane a workflow question.

    When we add new detail meshes to the terrain.

    And then choose UPDATE FROM TERRAIN.

    We then Delete our old Detail Spawner and make a new one.

    The settings (Default) for the new detail spawners Min Viable Fitness and Failure rate are not the old settings of the old spawner - so - where do the defaults get set?

    and is our workflow correct.

    upload_2015-11-26_3-16-57.png

    Also. When you have quite a few detail meshes to deal with the current interface is a bit cumbersome, could we have like "Groups" or "Something?" (Insert detter designed suggestion here) so the our list is not so painful to edit.

    upload_2015-11-26_3-18-8.png

    Thanks!

    :)

    Also . most of our min Viable Fitnesses are ending up as .98 is there not a way to give us an EXP range (or something) in these instances - or do I need to change the curves in some way...

    Ta.

    Further to this we suppose it may be because of the placement - or bounds - of the DNA(?) which causes tons to be placed in one spot

    mantPerZone.JPG
    we would like to tame that down to "one per spot" - And - ideally we would like to simply set a maximum count (of 1000 total for example) and then have that 1000 "spread" over the availble spots.

    This could help limit the DREADED 65k vertices count warning that kills the editor so readily...
    cheers

    However it does look nice... so any help to make this MORE EFFICIENT IN GAME would definately be appreciated by everyone :)

    upload_2015-11-26_4-10-45.png
     
    Last edited: Nov 26, 2015
    S4G4N and Shawn67 like this.
  17. Shawn67

    Shawn67

    Joined:
    Jan 2, 2014
    Posts:
    2,196
    THIS is one of the reason that I adapted the workflow of NEVER making changes within the terrain object. It seemed like every time I updated from terrain, it reset all of the dna settings of my game objects. Of course that was an earlier beta and I haven't tried to revert to my old workflow since then. For detail objects, as long as you have clicked Apply to Terrain after you made changes to resources, when you later Update from Terrain it should be giving you those same values back. For me it is too much back and forth to remember. So when I add new stuff, I add it to my Resources file, make my settings changes and just Apply to Terrain. A WHOLE lot easier for me to keep straight. :)

    I asked for the same thing in beta. The problem is getting it to work in the custom inspectors. Maybe now that we are past initial launch this would be something @AdamGoodrich could look at again. I was playing around with similar stuff to what you have posted with both above and under water sets. Once you start adding different varieties of coral, shells, wreckage, along with above water rocks, buildings, other objects, it does get pretty cluttered. One thing you could do is use two different Resource files. One for above sea level and another for below. But would LOVE to eventually see subcategories if Adam can work out the magic to make it happen. :)


    Two possible solutions exist for this now. First, in Resources check your object's DNA and increase the Seed Throw. This will add a bunch of spacing between clustered objects. Second, if you don't want your spawner to cluster objects then make sure your spawner Location Selector is set to anything except Random Location Clustered. This is the setting that clusters items by default.

    EDIT: Forgot to mention, loving the looks of your screenies.. And definitely know what you mean about the limitations and performance.. I wish we could create lush environments without totally tanking performance... lol
     
    twobob and kurotatsu like this.
  18. Porto881

    Porto881

    Joined:
    Jul 11, 2013
    Posts:
    74
    I encountered a strange problem today. When i try to make new terrains some of it is dark and not affected by lighting. This doesn´t happen when I make regular unity-terrains, only when i make terrains with Gaia. This is what it looks like:

     
  19. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Code (csharp):
    1.  
    2.   public GameObject CreateDetailSpawner(float range)
    3.   {
    4. //snip...
    5.   //Iterate thru all the details and add them.
    6.   SpawnRule rule;
    7.   for (int resIdx = 0; resIdx < m_detailPrototypes.Length; resIdx++)
    8.   {
    9. //snip...
    10.   rule.m_minViableFitness = Random.Range(0.2f, 0.5f);
    11.   rule.m_failureRate = Random.Range(0.7f, 0.95f);
    12. //snip...
    13.   spawner.m_spawnerRules.Add(rule);
    14.   }
    15.   return spawnerObj;
    16.   }
    17. //snip...
    18.  
    @Shawn67
    LAST NIGHT: Gah! It acts like a pig, it feels like pig, it sounds like a pig....
    TODAY: Oh. its a pig! :D - Thanks for the clarification Shawn, Having now had a quick look at the code it is indeed just "making something up", we are not bonkers.


    So... Backing up "rules" to some sort of snapshot function then, perhaps linked by name? Sounds helpful... or even just the ability to re-set those two values perhaps... I am struggling to conceptualise the best way to "Back link" the Rule/Resource relationship in a non-polluting manner right now, perhaps something will occur in the brainbox eventually.

    We will have a think about superior interfaces in the interim.
    Many thanks for getting back to us we will try to adopt your workflow instead then.
     
  20. smada-luap

    smada-luap

    Joined:
    Aug 22, 2013
    Posts:
    945
    There are some ideas floating around with the beta group that should (he said hopefully :) ) reflect something like this in their operation - assuming we can keep @AdamGoodrich focused (must take away all shiny objects from his vicinity :D )

    I suppose it's one of those things as to whether it's a 20-minute job or a full day :) (although a 20-minute job sometimes morphs into a full day one without you understanding why)
     
    twobob likes this.
  21. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    Yes :) Just create a new spawner in clustered mode and put those objects into to. You can set the rule selector to random to get the effect you are wanting.

    It does - i found a bug in the first release - its fixed in the next release - submitting soon.

    Gaia does not affect lighting in Unity in any way. This is just Unity doing its thing.

    Interesting choice of words ;)

    I have lots of shiny things I am playing with... better focus on getting that release out - there is a lot of new goodness plus a lot of little usability and a couple of bug fixes.
     
    DCTShinobi and S4G4N like this.
  22. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    Bit of a milestone today - woke up to 100 5* reviews of Gaia.. achieved in less than one month on the store!!

    These reviews go a long way to building trust in me and in Gaia... which in turn drives sales... which then makes it easier for me to spend more time developing Gaia into an even better product.

    Thank you so much to everyone who took the time to review and to everyone who purchased - Very happy and looking forward to sharing the next lot of updates to Gaia with you :)
     
  23. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    I am working on something at the moment which should make this easier.
     
    S4G4N and Shawn67 like this.
  24. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    Yep - the purpose of the beta is to remove the bugs before they get to production :)

    The latest release has a whole bunch of code that checks for when your resources are out of sync with your terrain. Some nice new functionality coming along here.
     
  25. DenisLemos

    DenisLemos

    Joined:
    May 1, 2015
    Posts:
    531
    Hi! I created an urban scene.

    I used in this shoot azure[Sky], Synty Studios assets and Gaia.
    For being an urban scene, the buildings were positioned manually to respect the map design.

    I personally prefer first put the buildings in their places and then stamp the mountains. In some cases it may be better to first create the mountains and then position the props.

    Only antialiasing was used in the image.

    This is the image I used as a reference and that also made me want to create azure[Sky].
     
  26. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    Looking awesome!!! :)
     
    AlanOToole and S4G4N like this.
  27. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Here's hoping

    Hi @AdamGoodrich , sent you some code for random positioning better in cheaper scenes.

    Here is using that new idea of random placement for cheap undersea and oversea and detail distances of 180.

    upload_2015-11-26_23-40-58.png

    Overland.JPG

    much cheapness. much random, way easy.

    (Need to add an "early out" clause since 90% of the position processing is now redundant with low max instance values...)

    Code (csharp):
    1.  
    2.  ExitEarly = true;
    3. for (ruleIdx = 0; ruleIdx < m_spawnerRules.Count; ruleIdx++)
    4. {
    5.  rule = m_spawnerRules[ruleIdx];
    6.  if (rule.m_activeInstanceCnt < rule.m_maxInstances)
    7.  {
    8.  ExitEarly = false;
    9.  }
    10. }
    11. //or something.
    12.  
    but it works nicely :)
     
    AlanOToole, AdamGoodrich and S4G4N like this.
  28. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    Incredible!!!

    I wrote a review, for azure sky btw.;)
    Aaaand currently writing one for Gaia.
     
    AdamGoodrich and DenisLemos like this.
  29. DenisLemos

    DenisLemos

    Joined:
    May 1, 2015
    Posts:
    531
    Hi Adam!

    While I create the image I posted above. I noticed a little problem at the time of stamping the mountain.

    I wanted to know how the mountain would be positioned in the scene, so I had to use the "Game View Tab". For this reason I positioned the stamp by Inspector using the "Transform Component".
    Like you can see in this image.
    I know I should use the properties "Position X" and "Position Z" to control the stamp position, but by virtue of habit I always do this by the Transform.


    So when I press the "Stamp" button, the mountain is created in the zero position. I think it's because "Position X" and " Position Z" are with values equal to zero.

    But this only happens when I change the stamp position directly by the Inspector. If I position the stamp by "Scene View Tab" the mountain is created in the right place.

    [Edited]
    Now I understand what happened.

    To stamp the mountain is taken into consideration only the value of "Position X" and "Position Z". When I change the stamp position by dragging in the "Scene View" the value is updated in "Position X" and "Position Z". But when I change the stamp position by the Transform component the "Position X" and "Position Z" does not change. So my mistake.
     
    Last edited: Nov 27, 2015
    AdamGoodrich and S4G4N like this.
  30. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    Hmm... i tested for other two scenarios but didn't test for that - will look into it.
     
  31. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    I'm just teasing now, but this water looks mighty impressive to me even if it is cartoon stylized:
    I tried to paste the Video link @ around 1:45 to get to the meat.. but it doesn't like it apparently.. skip... (teasing as in you can't have it in Unity in case you were wondering)



    Hi @AdamGoodrich, I noticed yesterday on the Asset store... what i am guessing is what you meant by Extensible that other assets on the store are starting to use "GAIA Compatible" ? or is it just power in numbers, teaming up together?

    upload_2015-11-27_20-53-17.png

    In any case i'm sure it is a good thing for everyone to get that piece of mind - it can be a dicey process selecting assets on the store sometimes!

    EDIT: Changed the image to focus on my point alone :)
     
    Last edited: Nov 27, 2015
  32. smada-luap

    smada-luap

    Joined:
    Aug 22, 2013
    Posts:
    945
    That's probably because Gaia creates bog-standard Unity terrains which PolyWorld can work with. I would guess that the PolyWorld author has gotten a copy of Gaia and found that it works well together? Who knows? :D
     
    S4G4N and twobob like this.
  33. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Well i think Adam would! guess we will find out either way. I'm not advocating that product.. is Adam? who knows.. exactly (I know @twobob isn't)

    EDIT: He could have put "Works well with Windows" as well if he wanted I guess you are saying :p
     
  34. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Hi Zen, I actually really like polyworld :) It has a few documented caveats such as geometry doubling but if you want easy poly worlds it is very able.

    There has been more of a focus lately on product brand cross-polination on the Asset store, this is simply an extension of that one would imagine.

    I liked your van. I drove a 67 Split Screen VW once upon a time. Shiny.
     
  35. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Haha.. i had one just like in my screenies.. restored it to almost finished but moved to the city and just needed a car that could jump into traffic... too stressful.

    I guess i am trying to fulfill my nostalgia for the old air-cooled... i had a '71 registered 9x seater Transporter made in Melbourne (Australia).. sold it for pennies.. would easily be worth $15- 20K now :(

    I get to customize it with a click now - not big $$$ and blood sweat and tears lol - It will feature as an important part of my game (i just hope there isn't any kind of infringement) - No one respond to that comment please - I don't want to know! - I'd hate to have to get someone make it least classic and more generic that would suck ass.

    I wish 'my' modeller - the creator of said van knew anything about games as while he has tried he has not been able to do almost anything for making it game ready (some things got worse and now he's gone off the grid)

    So that's where other Unity tools have come into play with i guess limited results working on LOD and stuff like that.

    Here's an interesting film about the 'bug' people get for old Air-Cooled... I bought this video with Steam for $5 or something but here's the trailer - It's called 'Circle the Wagon'


    I know this is all off topic, but you had to mention it didn't you :)
     
    Last edited: Nov 27, 2015
    twobob likes this.
  36. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Usability:

    When pressing PLAY (accidentally) whilst spawning the callback will hang and need manually cancelling.
     
  37. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Working "Early Out" code for the - MODIFIED - Spawner.cs (The one with super cheap random placement) - This basically ditches the current spawn once the candidate instances are exhausted.

    Code (csharp):
    1.  
    2. print(locations.Count);
    3.  
    4. bool ExitEarly = false;
    5.  
    6. foreach (var item in locations)
    7. {
    8. if (ExitEarly)
    9. {
    10. print("Early Exit");
    11. yield return null;
    12. break;
    13. }
    14.  
    15. // We break if this is not reset
    16. ExitEarly = true;
    17. for (ruleIdx = 0; ruleIdx < m_spawnerRules.Count; ruleIdx++)
    18. {
    19. rule = m_spawnerRules[ruleIdx];
    20. // we do it this way since the Maximum is never actually reached.
    21. if (rule.m_maxInstances - rule.m_activeInstanceCnt > 2)
    22. {
    23. // We got one! don't break
    24. ExitEarly = false;
    25. }
    26. }
    27.  
    Saves me a bunch of time.
    Thanks

    Better numbers at 180 draw distance.
    upload_2015-11-27_14-42-39.png

    Above ground
    aboveGround1.JPG

    AboveGround2.JPG

    I think there really is hope for semi-automatic, performant, terrain generation.
    However it would still require further curation to create specific spots of beauty at this stage, but the project is young and perhaps some spawner chaining could indeed create focal spots on top.

    Will play. nice stuff. thanks. and @Shawn67 - the other workflow is better, thanks.
    It is still sometimes a bit klunky at using the new model (or not using as the case may be ) but once I get the process solid I will write it down. :)

    thanks guys
     
    Last edited: Nov 30, 2015
    Shawn67 likes this.
  38. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Hi, Can we request a new type of Rule Test called FirstMatchShuffled

    Basically this is a variation on random except it further guarantees a result, per spot, over the current "Random" which is very unlikely to give a result per spot on larger rule sets.

    It plays out like this.

    Take all the rules and sort the index into a shuffled list.
    walk down the shuffled index (across all the rules eventaully) doing a TryExecuteRule, the first rule that matches breaks the loop and ends subsequent tests for that spot...

    something like:

    Code (csharp):
    1.  
    2. //All rules
    3. if (m_spawnRuleSelector == GaiaConstants.SpawnerRuleSelector.FirstMatchShuffled)
    4. {
    5. List<int> PossibleRules = new List<int>(m_spawnerRules.Count);
    6.  
    7. for (int i = 0; i < m_spawnerRules.Count; i++)
    8. {
    9. PossibleRules.Add(i);
    10. }
    11. // using the shuffle extension helper.
    12. PossibleRules.Shuffle();
    13.  
    14. // setup the test in the negative
    15. bool dontTest = false;
    16.  
    17. foreach (var thing in PossibleRules)
    18. {
    19. // Meh, or break.
    20. if (dontTest) { continue; }
    21.  
    22. rule = m_spawnerRules[thing];
    23. spawnInfo.m_fitness = rule.GetFitness(ref spawnInfo);
    24. if (TryExecuteRule(ref rule, ref spawnInfo))
    25. {
    26. dontTest = true;
    27. } } }
    This really helps to ensure that the dreaded 65k per patch is kept at bay by only allowing one detail per spot.
    And allows for greater overall inclusion of details without horrible slowdown.

    :)

    FirstMatchShuffled.JPG
     
    Last edited: Nov 27, 2015
  39. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    Thank you :)

    I will take a look - the reason for the approach i took with Random was to make it deterministic in terms of time to execute. We discussed different approaches in the beta. I think adding an instance based vs check based approach is worth doing.
     
    S4G4N and Shawn67 like this.
  40. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Ah yeah, good idea, although tag based texture dependant Bounds checks (* 50) is likely slower than 50 point checks with no tricky rules... so deterministic might be a tad on the Blue Skies side ;)

    The creation of the random list for the location points is critical to the "low calorie" designer, the FirstMatchShuffled Method is the perfect support for that. We agreed that the random method you had was excellent for similar detail sets but not ideal for broad - or all encompassing - rulesets. :)
     
    Last edited: Nov 30, 2015
  41. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Hi,

    Since we are just making something up can we have

    rule.m_minViableFitness =0.25f; // Fixed shared number!
    rule.m_failureRate = 0f // Fixed shared number!

    rule.m_maxInstances = 500; // reasonable middling figure


    for all rules as an option or something to save fiddling after each iteration.

    Many thanks
     
  42. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    I customise these based on the type of thing being spawned... and am just about done coding up a very cool new feature - the ability to extend Gaia and integrate your own code in there. This will allow you to generate exactly the outcomes you want - and to expose them via a new GX (Gaia eXtensions) menu.

    More details soon :)
     
    MarcusWatson and Shawn67 like this.
  43. Arganth

    Arganth

    Joined:
    Jul 31, 2015
    Posts:
    280
  44. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    I designed Gaia to be extensible - if you look around you can see some interfaces. They are not all exposed yet but they will be - and then you will be able to extend Gaia without touching its internals - to get exactly the behaviour you want...

    Now if only I had more hours in the day - loving your suggestions btw :)
     
    Shawn67 likes this.
  45. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,666
    Shawn67 and Mr-Logan like this.
  46. smada-luap

    smada-luap

    Joined:
    Aug 22, 2013
    Posts:
    945
    Put down the shiny objects then and you should find yourself able to code :D
     
    Shawn67 likes this.
  47. DCTShinobi

    DCTShinobi

    Joined:
    Jun 23, 2014
    Posts:
    20
    Thanks a lot! :-D
     
  48. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    We set about finding the cheapest, most result rich, path and are pretty pleased with the results.

    the coverage below sea is extremely cheap and really only suffers from billboard burden, random FirstMatchShuffle placement of a mesh/grass set.

    typical undersea area
    upload_2015-11-28_2-43-30.png

    Those sort of numbers say "I will work in a real game" to me.

    However, at maximum detail density and 180 distances we were still managing very reasonable results with around 60k detail grasses and 40k detail meshes. Obviously performance dips when density is higher and the internal billboarding takes a hit in very busy scenes but with prudent rules that cause distinct zonal seperation (we used a single set for the entire detail pass), and the use of hard maximum values coupled to quasi-random placement spots this low-cost easy-spread cover is well within reach.

    We found that the fail rate became a way of deciding on a new random sub-set from our main random and the minimum viable fitness became the scalpel to shape the exactitude of zonal rule constraints.

    Using this method we could generate a new balance of draw calls in each are very simply via maximum instance throttling coupled with the relevant, zonally aware, and locally relevant rulesets. Which sounds complicated and when propely set up is as simple as changing a few max instance values and Fitness sliders.

    throwing in some real-world overhead, 1000+ gameobjects, 150 animations
    birds.JPG

    We used intentionally small detail mesh bushes (nothing higher than 1.5m, think Assassins Creed crouch bushes) to make achieving visual coverage extra difficult. It would have been easier to add camera-obscuring details, however the camera can travel smoothly over the whole of this map with no extra curation. Bonus, game readiness.

    Rough coverage at 180 draw distance with few hundred gameobjects, 100000 details over 2km2

    crouchBushes.JPG

    Results:
    Overall we managed to achieve something like a 500% increase in the total amount of detail geometry we managed to push without stutter from project start to end. 16-20k to 100-120k.
    This was mainly achieved by the jittered FirstMatchShuffle rules path and balancing grasses to detail (or cheap coverage to intricate detail).

    We also increased the total draw range by 50 (from 130 at project start) for the same draw call / batch burden via manipulating the detail mesh and billboarded "grass" objects balance logically in each zone.
    Again the rules path helped but balancing also played a part.

    It was key to have a set of "grasses" and detail pairs for each zone (Beach, Sea, Land for exmaple) and then balancing the maximum instances to get the right geometry versus coverage counts.

    Armed with this knowledge in advance digtal artists could make good decisions about the type of output you might require for a performant title.

    In the end if you throw the kitchen sink at the engine you can still dip it out via 1000 batch calls or hidden billboarding penalities, or garbage burdens, or.... insert sin here.


    Huge draw distance, Many tiny hidden details, 1000+ gameobjects
    KitchenSink.JPG


    Small detail meshes would ideally be broken up by much higher tree counts.
    coverage.JPG

    Non Gaia comment: We did experiment with trees and found the old-fashioned tree creator coupled with a Forst shader to be very cheap - if not super easy to implement.

    Gaia really is not that far from being able to produce a large pecentage of the supporting infrastructure for many decently performant titles in the future if properly loved and coerced.
    It is also capable of utterly mangling your graphics card into the floor with extreme prejudice.

    :) Thanks for the toys.

    EDIT: We improved performance after this test by about 300 draw calls overall by smarter batching and refactoring some non essential gameobjects into detail.
     
    Last edited: Nov 28, 2015
    S4G4N and AdamGoodrich like this.
  49. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    All very complicated sounding.. which is good to know there is a some well thought out and tested algorithms at work (makes the investment feel all the more worthwhile)

    Should use a Mermaid for your underwater shots :) Gill Boy i assume can't drown though :p - throw in an underwater breath script and your users will be laughin! (actually this isn't a water asset so i'm stretching it here :)
     
    S4G4N likes this.
  50. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    The point is, correctly set up this stuff can be simple. I am attempting to help make sure that happens by the time the next devver comes along :)

    consistent game ready coverage is an elusive beast.

    Better numbers (with 3000 trees chucked on top for extra punishment)
    consistentCoverageInZones.JPG
     
    S4G4N and Shawn67 like this.
unityunity