Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

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

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

  1. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Very good progress today :)

    Need to optimise the grass growth. Currently takes about 90 seconds on 2km terrain. Reckon I can get that down to about 3 or so.
     
  2. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    Is it something that can be fobbed off to a separate thread so it doesn't tie up the main thread?
     
  3. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yeah it could, but I am also currently doing a bunch of redundant get and set on individual grass patches in the terrain. Its far more efficient do one big one.

    I don't know how unity works under hood, but their may be a bunch of other unity overhead as well that a big update will remove.

    Hmm I am also calling flush. Wonder if that's also injecting lots of overhead. 1.6 m flushes vs 1 :)
     
  4. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    I did have code at one stage that handled the full life cycle of a plant, but apart from being a bit of fun, I can't think of any game scenario in which it makes a huge amount of sense. The growth thing at the moment is just a simple scaling script. It is fun tho :)

    You would need to manage saving the seed state saving yourself. I suspect there would be some interesting challenges to solve there.

    That said, if you give it seed, and hit reset, it will generate the same outcome again.
     
    BackwoodsGaming likes this.
  5. chingwa

    chingwa

    Joined:
    Dec 4, 2009
    Posts:
    3,789
    LOL that might be giving a bit of a performance hit. In my experience you don't even need to use flush... just record all the detail splat layers in your loop and then run the SetDetailLayer arrays and call .RefreshPrototypes() once at the end. It's still slow, but it isn't 90 seconds slow. :)

    I really wish these terrain update functions could be set asynchronously without locking up the main Unity thread... it would open up some amazing possibilities. (are you listening Unity???)
     
    AdamGoodrich likes this.
  6. Wylaryzel

    Wylaryzel

    Joined:
    Sep 13, 2013
    Posts:
    126
    Believe me, if there is a system available, someone could make it as part of design. As several of us here creating fantasy games, maybe use this do design different areas with different timeframes - and based on the aging speed of the vegetation it could be easily identified.
    Or casting a spell to grow a forest fast to block enemys in a grand strategy game.
    Or use a speed-up version of the aging for simulation games were you gather woods and nobody would like to wait for a year to get new wood :)

    BR
     
    AdamGoodrich likes this.
  7. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Oh wow. I have been buried in remodeling/cleaning at my house for the past few weeks so not watching closely. I am amazed at the progress. I plan to do nothing this week except play with Unity...until the weekend when we lay a new floor...sighs.

    That island belongs in MY game! :)
     
    AdamGoodrich and Whippets like this.
  8. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    Mine! Mine! Its all mine! :p

    Slowly, back away from the island.... heheh

    The way Adam flattens things as he is testing, it is probably gone already... lol Gonna be cool to have a tool where it is nothing to throw away and flatten such awesome terrains... lol
     
  9. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yup. It lasted all of about an hour :)
     
  10. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yeah I have found the same. Wondering if it actually does something or is just a left over from an early release.
     
  11. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    Supposed to be a whole new terrain system in the 5.x cycle, so I wouldn't worry overly much. It's already legacy, it just doesn't know it yet.
     
  12. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yeah it would be nice to know when this is going to happen as all of this could be a complete waste of time :)
     
  13. chingwa

    chingwa

    Joined:
    Dec 4, 2009
    Posts:
    3,789
    I wouldn't think it would happen anytime soon, if history is anything to go on. Have they actually said this would happen in 5.x? I would be very impressed if it does. :D
     
    Teila likes this.
  14. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    :( Wow.. Feel free to toss your throwaways my way.. lol j/k But that's really a shame.. You should save some of these and put together a terrains pack. Or save for blueprints addon when you figure out how to do that. I mean, I wouldn't want the same island as everyone else, but to use a terrain like that as a jump start to mold around would be awesome! Maybe even do a pack of starter terrains as a separate companion product.
     
  15. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yep, i think they still have their hands full with this release. I think baking is probably still broken.
     
  16. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yep it feels weird when you create something you like and then destroy it - but that's the purpose of this system and you will have it soon now :)
     
  17. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    :eek:

    You threw it away???!!!
     
  18. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yep - every screenshot in this thread is the same scene, and the same set of textures, grass and trees, just combined in different ways.
     
    Teila and BackwoodsGaming like this.
  19. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    Even when the new terrain system comes out, I don't see this being time wasted - I think this sort of generator will still be needed.

    I have such a large range of zone types, I'm really looking forward to seeing just how far it can be pushed,
     
    AdamGoodrich likes this.
  20. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yep. I hope so :)

    Work has already started on the next thing, which may make it here at some point. It has significant value both in gaming, and in the commercial world.

    I am collaborating with a friend to make an agent based system that brings this all to life - think dynamic living ecosystems of plants, animals and npc's, all with their own agendas and objectives, and all living in the cloud so that it continues even when you aren't online.
     
    John-G likes this.
  21. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    Ditto.. Mainly my islands now but there are going to be different styles of climates within the different islands and eventually, other types of land masses.


    I was hoping to try to do something like this using @TonyLi's systems. The big concern is having everything still be alive when the players aren't online and running it off of a central server. Even on a smaller scale co-op networked level, if a buddy signs off and the rest of the group is adventuring, the world needs to live. It needs to live and evolve even when no-one is logged in.. At least that is what I'm hoping for..

    Are you guys looking at evolving via events and such as well.. Such as a village is attacked and razed by bandits.. Will the players come in then to see a burning village? Is that more of what (or part of what) you guys are looking to do in the next project?
     
  22. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    The server infrastructure is event driven... and i suppose many things will be possible - its based on a merge of research I have been doing for years and my friends ideas and experience in AI. Tony Li's system does have some similarities to the underpinnings, so it was really interesting to see this come out.

    It's early days tho and a long way off. I would love to jump into it full time because I believe we can do something really special, but the challenge is funding us and it.
     
    BackwoodsGaming likes this.
  23. mwituni

    mwituni

    Joined:
    Jan 15, 2015
    Posts:
    345
  24. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    I have that and it is very simple. Not a bad product but it didn't work for me. I ended up with World Machine.
     
  25. witchscroll

    witchscroll

    Joined:
    Jan 17, 2015
    Posts:
    131
    nice tool !
    I have some suggestions:
    1
    adding a feature which means the user can add roughness / bumps to their ready made terrain without ruin the main shape.
    2
    "special zone"
    forexample, Use a drag and drop Zone[it maybe a colored cube that may change the size/shape] to place certain objects only in certain areas; forexample, user use your tool builded a forest with trees, then user want one area of this forest have no trees, and different grass and flowers spawn there. then user can define a zone object[have several option box to choose certain grass/flower and bush objects] in your plugine's gui, then drag this zone object into the forest , and drop it at the desired place that user want, then press a "build/generate" button, it's done. by this feature, user may define where is deep forest, where is farm land, where is city, where is.....and get it very quick.
    3
    make tree/grass/object be placed according to height/density/steepness,
    and
    suggest add 2 optional min and max number box in all all tree/grass/object tab, to let user can either manually type the height in the box, or use slider bar. Do not like using slider in other terrain tool. I judge the height based on the actual height in meters. Kind of guessing with the slider.
    4
    make tree/grass/object be placed not only according to height/density/steepness, but also depend on where a choose-able special texture painted on terrain.
    5
    I'm eager to see your "Wide range of pre-configured feature templates to be used such as mountains, mesa's, hills, rocks" , and want a "special zone" like feature that let user define where a cllif, then choose a pre template of what kind of a cllif. then hit a button and get a cllif. .....

    when you release this plugine?
     
    AdamGoodrich likes this.
  26. mwituni

    mwituni

    Joined:
    Jan 15, 2015
    Posts:
    345
    Yes ... it looks a bit dated / prehistoric ... specially compared to (this) limo
     
  27. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    Sounds like another winning project. I'll be watching for it too. At this point I'm planning to use a combination of Tony's Dialogue System, Love/Hate system, and the new dynamic quest system he is working on. But it still sounds like yours might be different enough to add another facet into the whole ecosystem together for maybe things like migrations of both animals and camps (think Native Americans picking up their camps and moving between summer and winter camps, or similar tribal/nomadic tribes). Something that it sounds like your spawner system might even work nicely with in conjunction with your new system. Or events that reshape terrain.. Again, not sure how much of that you guys have planned, but definitely sounds interesting. I'm wondering if maybe collaborating with Tony might be something worthwhile since he already has some pretty powerful systems to at least deal with the faction/relationship stuff between NPCs. Maybe with your system it could trigger factions/relationships to change based on things that happen within the environment. Or if new predator animals migrate into an area, dynamic quests could be created based off predator populations using the dynamic quest generator that he is working on.

    Just some thoughts....

    Ok.. enough derailing.. Is the terrain system done yet? heheh *hides* :p
     
    AdamGoodrich likes this.
  28. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    The system has this capability - if i get time I will expose it. If not first release then shortly after.

    This is what the Spawners do. They are quite sophisticated.

    This is supported now.

    Will add this to the road map - I can see how this would be useful for preexisting terrains. Its a relatively simple thing to add.

    Can't wait to put them in your hands - aiming to release end of this month.

    Looking forward to seeing what you do with it :)
     
  29. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Happy days - just reduced a 90+ second operation down to 9 seconds :)
     
    Archania, Wylaryzel, John-G and 3 others like this.
  30. John-G

    John-G

    Joined:
    Mar 21, 2013
    Posts:
    1,122
    Roll on end of month, pity is not February then there'd be less days :p
     
    BackwoodsGaming likes this.
  31. witchscroll

    witchscroll

    Joined:
    Jan 17, 2015
    Posts:
    131
    it looks you have done well so far, keep the cog moving.
    1
    by the way, i wonder what's asset include the yelow flower and red flower in this screenshot?

    I just looking for something like that recently.
    2
    one more question
    will you make one single version that support both unity 4.6 and 5 ?
    or make 2 version, one for 4.6, the other for 5 ?
     
    AdamGoodrich likes this.
  32. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    Wondering if that might be the HQ pack that has 25 plants in it... Not sure if it is the same flowers or not but it has both red and yellow flowers and I think it was only like $10 when I picked it up.

    EDIT: The one I have is HQ Photographic Textures Grass Pack and it looks like it is still $10... Is that where you got those flowers Adam?
     
    AdamGoodrich likes this.
  33. MarcusWatson

    MarcusWatson

    Joined:
    Dec 9, 2014
    Posts:
    53
    Happy days! - That's the grass growth taken care of?
     
    S4G4N and AdamGoodrich like this.
  34. Wylaryzel

    Wylaryzel

    Joined:
    Sep 13, 2013
    Posts:
    126
    I have an request / question with regards to the Spawner - and in detail with regards to spawning of objects.

    I don't know how TC is currently doing it - I miss there still an answer - but as soon as you change the size of the to be spawned object or if there are childs which would have an impact of the final size of the object the 'overlapping' option isn't working anymore.

    Don't know how far your spawner class for object is already, but please ensure that we have the possibility to prevent overlapping :) (the system in DunGen worked very well in that regards as an example)
     
  35. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Not sure I understand the question. Spawners operate individually and in their own area of effect, and no further.

    You can overlap Spawners or not to get multiple things happening in the same space.

    For example I have one for trees and one for grass / details both overlapped on the same area, each responsible for a different job.

    Spawners are essentially frameworks in which to run rules, and a rule is something that can make an effect on an environment.

    With this in mind you run all rules, fittest rules, and a few other permutions on an area to get the effect you want.

    Today I added a run all rules capability to an area spawner as it was needed to get the grass mapping I wanted.

    Just reread your question and maybe I misunderstood it. Spawners also have the ability to detect if they hit bare ground or another thing, even if that thing happens to be a terrain tree.

    You can easily adjust the way a spawner rule asseses the fitness of a location based on this, or maybe an even a more sophisticated bounds checking algorithm.

    Hope that answers your question.
     
  36. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Can't remember where I got them. Will see if I can find them again. Unfortunately I can't include them as don't own them.

    Along those lines if anyone has any good suggestions for textures and other open source assets then I am happy to include them and set up demos using them. Same goes with any asset authors who want to do some co-promotion.

    Cobus suggested a good source for textures and I recently had an excellent source of Nobiax textures shown to me as well.

    I don't really want to pay an artist to make them as they will likely cost lots, and then will only be interesting to some people anyway.
     
  37. Archania

    Archania

    Joined:
    Aug 27, 2010
    Posts:
    1,662
    I would just use the standard unity ones for now. People will get or already have what they want to use cause really I don't need yet another set. I have enough stuff already that I can use.
    But this is just me.
     
  38. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Will look the asset up.

    Not sure what the unity process is, but it will run on both.
     
  39. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yep, will do this unless I can find a better alternative. My goal is to deliver something that just works, so the richer I can it make the better.
     
  40. Wylaryzel

    Wylaryzel

    Joined:
    Sep 13, 2013
    Posts:
    126
    Not directly.

    Lets say for simplicity I want do randomly place boxes around the map. Those boxes will be scaled to 10x10x10. Now the minimum rule is that none of those boxes are intersecting with other boxes.
    A bit more complex would be if a prefab consists of an empty parent go and has as childs different 3d objects (eg from the modular kit from cobus) to form a house. The requirement would be that no house intersects with any other house.

    Hope this makes it a bit more clear :)
     
    AdamGoodrich likes this.
  41. smada-luap

    smada-luap

    Joined:
    Aug 22, 2013
    Posts:
    945
    AdamGoodrich likes this.
  42. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Ok i see now. Yeah we can do that :)

    The spawner has various placement modes and one is Random Location. What it does is choose a location and then do both a raycast and a terrain check.

    That info is passed down to the thing that's being spawned and it gets to choose if it wants to be placed there. It can compare terrain height against the raycast hit height to see if it is a clear location.

    In all the sample shots I have showed this is the technique I have used for the trees. Its essentially no different for buildings.

    I might do an example where I check for say the 4 points around a location, check their slope, and if flat enough place the object e.g. building. Been wanting to do that for ages anyway :)

    The cool thing is that the system is flexible enough to add this extension quite easily.
     
    BackwoodsGaming likes this.
  43. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    It took me probably a week of what seemed like very slow progress to design the flexibility I wanted in the spawner, but am totally loving it now, because its just so easy to add new and quite powerful features....

    Here's another idea, another placement mode is Area Location. In this mode it steps through every location across the area the spawner is located in at the distance you select. You could then place your buildings in a grid pattern :)
     
  44. Wylaryzel

    Wylaryzel

    Joined:
    Sep 13, 2013
    Posts:
    126
    Sounds cool :) Most propably you could change it in that way from the center of a spawner (e.g. using a town hall) goes at a defined distance through 360° and place random buildings if enough space is available. Doing it 3 or 4 times and you may get a natural city like in europe - and not the grid like pattern than in e.g. america...

    Someone could dream along :)

    May you can post a screenshot with randomly placed premade buildings from Cobus? :) Would be give the tool an additional breath - and I think alot of potential buyers would instantly throw money through their monitors :)
     
    BackwoodsGaming likes this.
  45. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Yesty I had to go out, and had just completed another cool mode on the spawner in which you could run multiple independent rules on a single location and essentially place multiple things in the same space.

    The problem I was attacking was grass placement. So I had built it, and the supporting game objects and hit Spawn.... And waited.. And waited....

    Had changed one routine but not the other and got an infinite loop.

    The only way out was to terminate unity and that lost the work :(

    Fortunately the important bit was the code and that was saved. Will recreate and show you guys today. Its the last bit I needed to crack awesome and believable grass placement.
     
    BackwoodsGaming likes this.
  46. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    @AdamGoodrich, this asset's development continues to impress. You have some mighty expectations to live up to. :)

    One question for which I couldn't find an answer on this thread, and it looks like it's been asked before: Is the procedural terrain generation seed-based, or some alternative method that can be replicated exactly over and over again? What about Spawner rules?
     
    AdamGoodrich likes this.
  47. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    I have to go out to do the job that pays the bills today :(

    Will create this though. Its just a super cool feature :)
     
    BackwoodsGaming likes this.
  48. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    Hmmm.. That might be a good solution for spawning out different AoI points across the map, almost like a biome for the AoI.. Take the island (that you recently leveled *cringes* heheh) for instance. Around the volcano you would want it to spawn dark lava rocks, burnt trees, very sparse (if any) grass and vegetation. That could be one AoI that has its own spawner. Then you might have a dense rain forest in the middle of the island that has its specific spawns for the spawner. Beach areas would have their own. And on and on.. Is that what you are talking about regarding Area Location?

    Another thought.. How is transition handled between spawn areas? Will there be a perimeter blend option maybe? Something to tell the spawner to sparsely blend stray vegetation around the border at a configurable distance?
     
  49. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    With all the talk of seed generation (which sounds like runtime stuff) will I also be able to save out the generated terrain to use in assetbundles?
     
  50. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,780
    Seed based and therefore replicable :)

    I will do a post on the detail of Spawning sometime soon. With the spawner done this makes many things possible. In fact part of the goal was to have it spawn the complete environment from the terrain features to the texturing to the tree, village and grass placement.

    That's all now possible. I just need to adapt some of the terraforming and texturing stuff to be able to use it.

    Its so massive in its scope that its melting my head a little :)