|Submited on :||Thu, 16th of May 2019 - 17:59:15 PM|
|Post ID :||bpammv|
|Post Name :||t3_bpammv|
|Post Type :||link|
|Subreddit Type :||public|
|Subreddit ID :||t5_2qwj8|
Wow that looks pretty impressive. Looking at your blog you used Aura, Vegetation Studio, World Streamer for those who are curious.
Yes :) There are some assets I didn't specifically mention since they are either exchangable or just not really necessary for larger landscapes specifically:
I used CTS as a terrain shader since it's pretty easy to control and looks good. If I were to do this project again, I'd use something different though, since CTS does not (or at least didn't when I made the project) have POM shading, which IMO is incredibly important for realistic terrain. And reallistic terrain helps a lot as an indy since you usually don't have the resources to create meshes for everything.
For the Sky/Weather System I went with Tenkoku, since it's pretty much the best system out there, but again, this could be replaced with any other system of your liking.
For the Ocean (which I didn't really take any pictures of) I started off with Playway and it's successor, but both of those had way too much performance impact. I then used Suimono since it is integrated with Tenkoku, but honestly I don't really like the looks of it. I whish there were any alternatives that are a bit closer to what you might find in games like GTA.
The player figure is basically a Reallusion Character Creator basemesh upon which I placed a facescan since I did not like how the faces of the old Reallusion characters looked. They did however release new characters that look a lot better in unity, so I don't really see the need to use facescans unless you're doing really expenisve facecapture, in which case you wouldn't be using Reallusion in the first place haha.
Other than creating a system to fly around in the plane I didn't really code too much for this project, since it was more of a test wether I could use unity to create a huge game quickly - so coding a lot would have went against the spirit of the test.
Edit: I completely forgot to mention EasyRoads3D, which is pretty cool and also integrated with Vegetation Studio. It could have a better workflow though, so it wasn't really something I wanted to bring up in the blog post.
Also for rivers I used RAM by naturemanufacture, which again is pretty neat, but still missed some important features like displacing the terrain automatically (which it could do, but didn't do a very good job at, so I had to carve out the river by hand)
For oceans you could try Crest. It's a really good open sourced ocean solution. The only issues I've ran into is GPU instanced terrains break shoreline foam. Other than that its great. https://github.com/huwb/crest-oceanrender
Hey, do you know any weather and sky assets that works with it? I don't wanna spend money to something that doesn't work and no asset I came across mentioned Crest compatibility.
I don't know of any weather/sky assets. I have actually never messed with westher let alone weather assets lol. But the only thing crest needs as far as the sky is that you need to bake the scene lighting (for reflections). As far as weather affecting ocean behaviour, crest is highly configurable and i believe it also (realtime) effectors so if your weather solution has callbacks or something for different weather modes you could change the crest settings to match. Your best bet would just try out Crest and play with it and think of ways to configure it during play.
Thanks, that looks really cool. Will give it a shot :-)
i really need to get aura to work with my projects now
I think they even released aura 2 now, which isn't free though. Pretty amazing asset, I'm using this in many of my projects simply because its so tweakable, fast and just gives everything this amazing atmospheric look.
Definitely recommend picking up Aura 2. They've improved a lot of stuff, and the workflow is much more intuitive. (You also don't need to wait half an hour or more for the asset to import, like the first one 🙄)
I'm just starting to play around with unity and this comment is exactly what I need. Thanks a lot. Your work look impressive.
Here is the link to my blog post if you're interested in some of the tips I've gathered.https://benedikt-kuenzel.com/2019/05/16/massive-open-worlds-in-unity-tips-tricks/
I rencently tried to build the largest map I could in one week's time. I was able to fill about 25 square kilometers with landscape, 2 cities and some special places. It's not anywhere near finished, but I was amazed just how fast Unity allowed me to create an interesting world. In my short post I share some neat little tricks as well as some features that allowed me to greatly improve upon my performance.
One other trick that I did not mention in the post since I didn't actually use it is texture streaming. I think there is only one solution available currently, which is Granite for Unity. What this does is it keeps your grahpics memory footprint low or within predefined ranges and simply streams textures from a prebaked megatexture. This means you can just use 4k textures on everything (or even terrabytes of textures lol) and still have a manageable memory cost. Also, it'll make worldstreaming even faster since it only needs to load meshes and not textures at that point.
Hey! Just want to let you know I get certificate error when I try to open your site! If I try to ignore it I get redirected to the the same error page. Both in Edge and Chrome.
Thanks for the info, I'll check if I can change that. It's not a selfhosted blog though, so I don't know wether wordpress even lets me control that
That sounds like op or op's host hasn't gotten an updated ssl certificate since the changes made to ssl. OP, you may want to look into updating the ssl or contact your host if you don't handle it. We had that issue at my work. It should be free to get it updated if that is indeed the case.
This is really cool (and a fun blog read!) Keep up the good work!
Very cool. Good read!
What was used to create the paths in amongst the vegetation?
Vegetation Studio has that function built in, which is amazing. You can basically create an area and tell it to keep the auto generated foilage out of that area. Then you use the built in paint tool and just paint the plants you want on there.
Would be really cool if you could automatically do this, since the keep-out zones are automatically created by Easy Roads3D - but painting by hand works fine, too.
Amazing, thanks for the reply!
I'm curious why you recommend against billboards for your main grass (not just distance grass). In 2017 I made this using all billboarded grass: https://gfycat.com/carelessimpureenglishpointer
60+ FPS, powered by Vegetation Studio beta (it was not released at the time).
Interestingly enough, I came to a lot of the same conclusions you did about what assets to use. It seems like if you want to go truly open world for Unity, there are a handful of standout assets that have no competitor on the asset store. I didn't use CTS at all though - just plain Unity terrain.
Ah I should have specified that as it was an ambiguous term. My grass is mostly billboard too, but in vegetation studio the grass has a certain range after which it just cuts off. If you treat your grass as a tree instead, VS will generate another set of billboards like it would for trees and will display those in the distance like with trees. I then baked those billboards so they're an actual object. Then switched back to grass mode so it would be Instaned Indirect.This way the grass doesn't stop after that range and is instead replaced by ultra fast billboards.
I only used that for the field of crops though since it just didn't look right if the crops disappeared after 100 or so meters.
Edit: Your demo looks amazing btw :-)
Cts has the cool feature that it can interact with the weather system and display snow and rain on the terrain, which is very neat. But sadly it didn't have POM shading :(
[...] in one week
Ah. Ze German efficienzy. :)
Very good job. And very good blog post, as you reason why this and that is (not) a good solution, and also present alternatives for the readers to explore themselves.
Keep up the good work!
Thanks for your post. I'm not currently working on any openworld projects but it's always interesting to learn something new. Those tools look really helpful especially for small teams.
I think this incredible featureset and the constant evolution is also the strongest point of Unity. It constantly gets easier to build these things and I'm pretty sure we're going to see a ton of amazing games created by even one-man-teams in the next couple of years (as we already have).
Wow looks amazing! Is there any way we could get a download link and explore the world for ourselves?
Really great stuff here and really solid work! This is making me want to blow $500 on all these assets now lol. When you say a week, what do you mean? A few hours after coming home from a full time job? Or working on it full time for a week? Curious to know this.
Another thing I was curious about, I am fairly new to 3D so all these things like LODs and streaming I have no clue about. A bit of your article left me confused. I understand the principles though. Anyway, anywhere you’d suggest I could touch up on these subjects? I’m not currently making an open world game. I’m making one with separate scenes but I want the scenes to be fairly big. Not as big as what you’ve made. Maybe 1/4 in size. Would I still have to utilize these concepts? I want my scenes to really look good. I am a solo dev and so far have modeled everything by hand in blender and imported the scenes. Anyway. Great stuff, and if you see this, thanks ahead a time for any suggestions :)
I am fairly new to 3D so all these things like LODs and streaming I have no clue about.
LOD = Level of detail, involves decreasing the complexity of a 3D model representation as it moves away from the viewer or according to other metrics such as object importance, viewpoint-relative speed or position.
Streaming = load parts of the terrain on a need-to-have basis, instead of loading the whole terrain at once. This means that you - theoretically - can create the whole world in Unity and have your player explore it. It would take more than a week, though. :)
Full time for a week. I made this mostly to explore what both I and unity could accomplish - so I was pretty happy how this turned out. Currently I'm still making shitty mobile apps though, just to get a better understanding on analytics and creating something that's actually fun, as opposed to something that just pushes my limits. Turns out the former is much harder ;-)
Yea you'll definetly want to learn about LODs at some point, since it's rather important for optimizing your game. When I talk about LOD in the post it mostly reffers to simply having multiple versions of a mesh, for example a house. I'll have a very high-quality version for when the player is standing right next to it, and I have lower quality versions for when the player is far away and won't notice the difference. Thus your computer will have a much easier time if it can replace everything that is far away with it's low quality counterpart.
Streaming is mostly a concern for when you're doing really large scenes, although it can be used for smaller stuff, too. What it basically does is it divides the scene into a grid, just like a chessboard. Then it instantly knows where the player is standing in the grid. It will then load a really high quality version of the world in the that part of the grid. Further out it'll maybe only load the terrain, without trees or buildings on it, and only load those once the player moves into the next grid square. Streaming helps if your world is so big that it just won't fit into the ram of your computer, simply by only loading those things into ram that are needed. Also it helps with rendering somewhat, since far away stuff might not even get loaded, so it won't need to be rendered.
For starting off, the Unity documentation is all you need, and most things are explained really well and they have a lot of topics on optimization that you can read before getting into the more advanced stuff like streaming.
I'm not doing open world stuff, but this made me want to try some!
Thank you for a great post!
What assets are you using for buildings and vehicles and such?
The vehicles are either from packages I bought from Reallusion or from the Assetstore. I think the car in the screenshots is this one: https://assetstore.unity.com/packages/3d/vehicles/land/generic-car-old-86690
The construction site is this one: https://assetstore.unity.com/packages/3d/environments/urban/construction-buildings-51332
The farm is this one: https://assetstore.unity.com/packages/3d/environments/industrial/farm-pack-110703
(Be careful, I think it was missing normalmaps or something)
Most of the rural houses are made with this pack, which is amazing: https://assetstore.unity.com/packages/3d/environments/house-constructor-pack-117456
The skyscrapers are a mix between some asset that I don't know the name of anymore and some stuff from turbosquid (don't recommend it, spent a lot of $$ there, most stuff is pretty bad quality).
The character is a reallusion basemesh on which I put a facescan since the characters back then really didn't look that great in unity (they do now though).
Other than that most of my textures and decals are from Megascans.
Thanks for the reply, much appreciated. That house constructor pack looks amazing.
thought it was dayz
Amazing work. Looks really great. I assume this was done using the standard pipeline? This is inspiring me to try and use more plugins in my own prototypes. What would the total price be for all the assets you used in this example?
Yes this is the standard pipeline. Can't wait until many of these amazing assets have been transfered to the new pipelines, but the old one can still look pretty.
The total price is a bit difficult to calculate since the whole thing is a mix of a ton of packs that my company bought over the years. My best guess would be that you could probably get a simmilar result with maybe around 1000 bucks if you don't buy any assets that turn out to be bad.
If you only buy the stuff thats absolutely necessary (streaming solution, vegetation studio, some grass/trees and some buildings/props) you can pull it off for way less, especially if you've got some time on your hands to model/code some stuff yourself.
But yea, if I'd recommend any asset it'd probably be vegetation studio, tenkoku sky and aura. Those three will really transform any outdoors scene and can be found in most of my projects.
Hello- thanks for the article- You mention "baking" different things out- what tool or tools did you use to bake meshes/textures etc?
I used Vegetation Studio to bake some billboards for trees and other vegetation. Usually Vegetation Studio will spawn trees based on an algorythm+seed. This is great since it doesn't have to create a huge file where it saves all the positions of every piece of foilage and instead can do it at runtime.
However since the rendering part of Vegetation Studio is so fast, it really motivates you to push the draw distance of billboards to the absolute maximum (like 20.000 units or so). At this point you'll have quite the overhead because the generation runs on the cpu afaik. To mitigate this you can bake these billboards, so they won't need to be generated from the seed anymore, which can help with performance.
(This isn't really an issue in VS Pro anymore, I believe) VS will basically create actual objects that hold the billboards during the baking, which you can then manipulate in your scene.
Grass in Vegetation Studio doesn't have any billboards after it's drawdistance is over (was around 120 units for me), so it just cuts off like the normal unity grass does, too. This is completely fine for normal grass, but I wanted to have a really huge field of crops growing somewhere, which stretched out way beyond the grass-cutoff. I simply imported the crops as a tree into VS, then baked billboards for it. This way you can still see the (billboarded) crops from a plane above and it looks much better than previously.
Before this 'trick' you'd just see some ground texture there, and it just didn't feel like standing in a huge crop-field.
The other time I mentioned baking was regarding prebaking the collisionmeshes. This is an optimization found in unity's player-settings. What this means is that it will calculate the collision-data for each mesh during the build-phase and bake that information into it. When you load this mesh or a scene containing the object in the build, unity won't need to do its internal calculations again (I'm not sure what it actually does internally, I guess something to do with PhysX), making the process of loading these objects much much faster. Which is great for a streamed world, since you're constantly loading objects with colliders.
Thank you so much for the detailed reply _^ very useful information.
Congrats on the feat, man! Def gonna read the blog post as soon as I have time!
How did you manage Unity scenes? Is the entire project in a single scene?
No it's in a couple hundred individual scenes. World Streamer breaks up your large terrain in many small ones in a grid. It also breaks up all the objects in your world into different scenes in a grid. It then loads only those gridsquares that are within a certain radius around the player additively (unity can have display multiple scenes at once).
When you're in edit mode it has a tool where you can just specifiy the coordinates that you want to load, and it will then load those for you to edit. This way you can load a small part of your world, edit it and save it. This makes it possible to work on huge worlds without having to load the whole thing into memory.
It does get difficult though since you never have a complete picture of the world you're working on, which is why I found it helpful to draw a grid-map onto paper and mark all the important landmarks there, so I could easily determine distances and such, without having to see the whole thing on screen.
Wow, that looks awesome. Thanks for this.
I amthe669th upvote. Hmm.
how big is your build size? asset bundles and world streamer works well? what about floating point error?
I would think that it would work with asset bundles, since all worldstreamer does is load scenes additively, so I'd think you could make it work.
I haven't encountered any issues with floating point precision (terrains are 5 x 5 km total, so by placing it on the origin you're only going to be at a max of 2500 in any direction. Worldstreamer does include a feature to move the world back to 0,0,0 though, so it's not an issue.
Build size is sitting at 6.7 gigabytes.
Insane work, I wish we could have this in VR
Fallout 5 confirmed
Would love to see a video of this.
Wow you made a better fallout in a week.
Looks a bit like Miscreated.