Hey everyone,
I'm a long time lurker on these forums, and an environment artist. I quit my job to attempt a game that truly capitalizes on its environments. I'm using Unity for its ease of use in the programming department. Here are my initial screenshots:
If you find this interesting you can find out more at
eastshade.com
Thanks for checking it out,
Danny
Replies
Especially when the world looks this good!
All the best
Subscribbled.
In that same third image, the light is very strong - noon on a summer day - but the shadows indicate a late afternoon or early morning.
The railings feel very regular - every post is perfectly vertical, and they are all spaced at a precise distance. Obviously you'll want to use modular assets, but adding two horizontal beams, one slightly shorter and one slightly longer, and allowing some posts to lean (slightly) to the side will break up the regular pattern and make the scene feel more authentic.
About the pink trees..
I think that might be the billboard distance... (where trees become a sprite)... whereas the foremost trees are still meshes.
You can change that distance somewhere in the settings.. I just don't remember right now.
I wish there were more games that actually focused on exploration! Thanks for the kind words.
Thanks! If it all goes belly up (I'd prefer it didn't) I'll have no regrets. I'm learning so much right now.
I'm not using the unity terrain engine. The trees are their own gameobjects and I'm using my own clustering/combining system, but we are indeed seeing far lods. The way I have the streaming for the world set up, at this distance that area wouldn't even be in memory, and only the most distant lods (imposters) would be engaged.
And why you have stars in sky in the morning ?!!!
Thanks ehsan gamer! I'm using advanced foliage shader from the unity asset store. You guys are such earthlings! There is a moon in the sky that is massive, large enough for an atmosphere! We're not on earth. The atmosphere is different, the neighboring galaxies are brighter, axial tilt is zero, and we are tidally locked with the moon because its nearly as massive as us. As far as the midday sun being low in the sky, this happens on earth too at longitudes far from the ecliptic plane.
Thanks guys! This is a bit of a cross post from my unity thread, but I want to have a pulse here on polycount too. I've been working on my Night Day cycle. Its a system that you just choose what values you want to track in the scene, then make presets for each time of day, and it will lerp through them all. You can track anything. It can be linked to properties of any shader as well (for instance its controlling the tint of the water reflections), as long as the property is a float, vector3, or a color.
I'm planning on making a video soon of it in action, but I want to art out a new biome first. I don't wish to keep posting shots from this same little area. Hopefully I'll have more to show soon.
On a more programmy note, I've been working on my inventory back end and menu.
I appreciate this guys.
Got a place in my refrence folder right away !
Just looked at your website and found this : My god this is exactly the kind projects I would like to work on, I hope to see more soon
Performance wise, how are you dealing with drawcalls and instances with such a huge amount of foliage ? Let's take the trees, I believe one tree is one object right ? Even when the tree is far far away, it will be replaced by a plane or a billboard. But it still one single object I guess ?
Is it possible to make 10 trees becoming one "forest billboard" at a distance without noticable artifacts during transitions ?
Kind of thinking out loud, but anyway I'd like to have some info about the way you deal with all of this
Anyway keep up that work, I will follow this thread closely !
It really pumps me up to hear that people are seeking a game like this. I could talk your ear off about foliage and draw call consolidation. I plan on doing a dedicated blog post with a video that goes into technical detail on how I'm doing just that, but in the mean time here is a summary I gave to someone else who asked me the same question:
My trick is I'm using a single texture 2048x2048 sheet and a single shader for all the vegetation. Literally every flower, shrub, tree, grass, color variants and all use the same shader. The other part is I wrote a system that combines every vegetation mesh into clusters and makes a single mesh out of each cluster. Since everything is the same shader, I end up with very few draw calls. It combines a new mesh for each lod level (all the vegetation objects have lods), so each cluster lods together. Even the textures for the lods are baked onto the same texture sheet the lod 0 is using. This allows my to leave certain alpha cards that are important to the silhouette in the farther lods without adding draw calls.
The downside to this is that it uses a ton of memory, since there is absolutely no mesh instancing going on (every cluster essentially becomes a unique mesh). I deal with this a little by being super stingy with texture memory (give me triangle over pixels any day!), but the more important part is the streaming system. I divide my world into a big grid of scenes that load in asynchronously, and I wrote tools to manage and work with all these scenes.
Keep up the good work. I really look forward to seeing more.
From my experience with UE3, increasing the number of instances in one cluster reduce the number of drawcalls (because it allocates more instances in one cluster thus creating less clusters in total), but increase the occlusion system processing time (don't really know why though).
I didn't experienced any issue with memory.
But I only played with what UE3 gave me, I don't have the required knowledge to make such a system by myself. So I'm far away from understanding it completely.
And streaming level is something I definitely need to bury myself in.
Oh man this would be like the most valuable post ever
And some more explanation about your day/night cycle and foliage lighting system would just fill me with hapiness !
I just did a blog post on my site where I summarize all the tools I'm using to make Eastshade. I'd imagine a post like this is only interesting to fellow game devs and 3d artists, so I'm cross posting a shortened version of that here. I'm sure for the 3d tools there's nothing you guys don't already know about, but I do have a couple less known ones in there.
Unity
UFPS - For me, the only price I paid for this asset was the time I spent learning how its insides work well enough for me to implement my own gameplay on top of it. Though I still get the feeling Im not using it totally as intended, its player controller and input system are the backbone of the player controls in Eastshade.
Shader Forge - I actually would have had a really tough time building the look of the world without this extension. Every shader bar the foliage was built with Shader Forge. I wouldnt have the chops to write something like a Y projection for moss and snow, or my own implementation of a global cubemap managing system had it not been for the simple node based workflow this asset provides.
Advanced Foliage Shader - The screen real estate that foliage takes up is considerable, and AFS, in addition to allowing my vegetables to flutter gracefully in the wind, looks beautiful.
DevConsole - A simple but important thing to have, I think, is a way to call certain functions from inside your game for debugging purposes. DevConsole makes it easy to define new console commands, even ones that accept arguments.
FogVolume - For all those foggy, foggy times. Inscattering is has a big visual impact on long site lines (which you should have a tone of!).
SplineBend - I use this for all my roads and paths. I love how simple and open ended this asset is. I prefer it to EasyRoads for sure. Thought I still use EasyRoads sometimes, not for building roads, but to shape my terrain oddly enough.
Shadow Softener - Soft shadows are nice, but nicer is the 10 fps I reclaimed when I started using this asset. Perhaps Unity 5 will negate the need for this asset, but currently soft shadows is essential for performance alone.
Every prefab placement painting tool on the store - Im pretty sure I have them all now, but Im skeptical to endorse any of them because none of them quite satisfy me. Im half tempted to write my own at this point.
Honorable Mentions - I was using skyshop until recently, when I opted to use all my own shaders write my own cubemap controller. There were two reasons for this: The first is that Skyshops cubemap blending was more than I needed, as I found I only needed to tint my cubemap during weather changes, rather than switch to a new one. Lerping between cubemaps is pretty expensive, and I really didnt like the implementation of how you just chose a blend duration and fired it off. I wanted my own night/day controller to drive the change. The second reason is that I found I never needed a full RGBA for spec and gloss (the skyshop shaders dont allow you to pack the spec into an alpha channel). My last honorable mention would be Daikon Forge, which is a great GUI library, but turned out to be a massive mistake since the guy who made it just stopped supporting it. I made the call to switch to the new uGUI before moving forward with any more GUI stuff. Ive been using the 4.6 beta and have yet to hit any showstopping bugs.
Git and SourceTree - This doesnt belong in the Unity section but Ive no other place for it. SourceTree is a wonderful GUI front end for the almighty GIT. It makes working with version control a lot easier for someone like me, who doesnt wish to dabble in a command line console to submit and revert files. You may be wondering, But arent you one person? Why do you need version control? If your spending a lot of time on something its wise to be making iterative backups as you go, and as long as your making iterative backups you may as well be using an application to manage them. Version control is designed for that. I cant tell you how many times Ive needed to look into previous revisions after realizing Ive messed something up.
Content Creation
Blender - I first learned the ropes of 3d with 3ds Max, and then spent my professional career as an environment artist so far using Maya, but despite having sunk so many hours into these other industry standard tools, I prefer Blender over them. I wrote a special exporter to make getting my stuff into Unity as easy and fast as possible.
Photoshop CC - I was using Gimp to save some money, but since Adobe did the 10 bucks a month thing I switched back to the tried and true. After using Gimp extensively, I can honestly say it has a long way to go before comparing to PS. All you have to do is try adjusting the levels of a 2048 and watch Gimp slowly loop through all the pixels line by line each time you nudge a slider to be convinced.
Unorthodox Game Dev Tools - If youre a game artist and havent heard of this Photoshop plugin you should definitely check it out. Its the sweetest texture export plugin Ive ever used, and its author is a nice guy, very responsive, and helpful.
3d Coat - Aside from being an excellent sculpting package, I love being able to drop a totally garbagy mesh (perhaps from a photo scan) in there and convert it to voxels, then convert it back to polygons and decimate it. I also use it for unwrapping organic things like rocks and tree trunks. Its got the best seam making tools Ive ever used.
Lost of other things - I use quite a few other little programs for content creation often for very specific tasks. Among them are CrazyBump for texture creation, PhotoSculpt which can derive a height map comparing two photos of slightly different angles, and automagically tile textures with normal map and all, and fairly obscure (and free) MeshLab for its incredible UV-preserving mesh decimation features.
There's more about the state of the game in the blog post if anyone's interested. I also made this dev lapse:
[ame]https://www.youtube.com/watch?v=CHp97f1yl00[/ame]
Aaaaand I love you.
Keep at it, looks great.
That poor wacom tablet, used as a place-mat.
Hah! I do put a coaster under the bowl, but yeah, prolly should move that out of the way .
Additionally, in an altogether unfocused effort to share my development progress, I present Dev Lapse 2! Its a narrated time lapse of making a building.
[ame]https://www.youtube.com/watch?v=t9kYk3KdtTI[/ame]
I'd love to see how you did it.
Thanks
In my case the lighting is a culmination of tech, shaders, vertex AO/painting, and value tuning in a ton of different places. Working within my lighting model is very much an ongoing process throughout development.
I do a bit of a description in this thread, from a performance angle in any case: