Another week, another post, here’s what we’ve been doing lately :)
If you’ve opted into the experimental builds, you probably know that all the UI has now been ported over to Unity’s native UI system. It’s all functional, but not complete. A lot of animations and effects are missing.
I had a fun issue the day of uploading our latest experimental build. I had finished porting over all the UI and went to test it in the standalone build. The menus were not appearing or they were at random locations on the screen. I managed to fumble around and start a new game, and then quit back to the main menu. The menus were now appearing correctly. Huh?
Unity’s UI system has an option to render a UI “canvas” as a screen overlay, through a camera or in the game’s world space. We’re rendering our UI elements as a screen overlay so we don’t need additional cameras or culling layers for them. In the main menu scene, there’s no need for a camera at the moment – it’s just the menus. What’s not immediately apparent is that if you don’t have ANY camera in the scene, overlay canvases will not render correctly. A Unity tech explained that without a camera, the screen overlay canvas has nothing to “overlay”. Uhh.. makes sense :P So chucking in a dummy camera rendering nothing was enough to trigger a clear and tell the canvases to overlay that and do their thing. It was an odd one, and I’ll put it down to a long day, but the 0.04.E2 build ended up being released a day later because of it. It happens.
A lot of materials were broken with the move to Unity 5 for the experimental branch. Don’t be surprised if you see objects with incorrect specular, missing normal maps or odd colors. Anything that’s meant to be glass or transparent will also display as a solid color as we haven’t gotten around to writing a glass shader compatible with the new lighting model. Handling materials in Unity 5 is also a bit buggy, which hasn’t been helping. Bug reports and repro projects have been submitted, but no news so far.
As mentioned in recent posts, we’ve incorporated Speedtree into our workflow with the move to Unity 5. It comes with its pros and cons.
It’s fantastic for our early access workflow to have full control of wind parameters, LOD’s, billboards, ambient occlusion, and texture atlasing inside the one program. Before Speedtree, this process took much longer and relied on a number of different programs, which in some cases had worse results and made it nearly impossible to make fast edits without repeating the whole process again.
Speedtree is great software but it could definitely use some improvements with its Unity integration, such as the lack of physically-based shader support and nit-picky duplicated material exports. We’ve also had issues with getting funky results for vertex normal directions for leaf meshes which we’re looking into.
We’re starting to look into coop. Co-op isn’t a high priority on our list as a feature – we’ve always said that we’re focusing on a solid single player game first – but we’re going to be rewriting a lot of existing systems, so now’s the time to get the basics implemented as a lot of the new systems will need to build on it. Basically, if we don’t lay the foundation for co-op now, we’ll end up needing to rewrite a lot of code to support it, or even worse, tack on or duplicate existing functionality for coop gameplay.
There are some problems and choices to be made. If you’ve played the game, you’ve probably noticed that Stranded Deep relies on a lot of physics, picking things up, throwing them around, etc. In general, physics and networking is a pain. We’re still looking into it, but there might be some compromises and changes. Right now we’re running tests and looking into the best way to synchronise everything.
The world in Stranded Deep is currently procedurally generated and infinite. This has worked great for development; features have been easy to add and everybody has gotten around to testing them. Soon though, we’ll be creating a large hand-crafted tile-based world. This will allow us to slowly “create” the world as we progress, adding a new tile with a new island or landmark as that part of the world is designed. There will be small tropical atolls dotted around the world (similar to now) and larger, more interesting islands as landmarks, where you might prefer to setup camp.
We also have plans to implement world building tools for the community. So potentially, you would design your tile’s terrain externally in World Machine, etc and then import your terrain data and create your own island tile with our provided tools. Other users would then be able to download your island and assign it to a free tile in their game. It’s in conceptual stages at the moment, but that’s essentially the idea.
Larger islands and coop are two of our most requested features, so we’re pretty excited to be working on both of them :) Between the new terrain system and coop, this is where most of our time is going. So hopefully you can understand that the next experimental build might not be released until we have something that’s playable. But we’ll always keep you updated on our progress on our blog :)
:: Beam Team