Or: Trying to not make your eyes bleed at the low cost of $0.00
I wasn't sure if I was going to throw my hat in the ring, but after seeing so many cool submissions already, I couldn't help but to be inspired to create my own environment.
I'll be working on an environment of my own design. I'm not an artist, just a programmer that's been known to hang around artists and has studied a few of the basics.
I wanted to further challenge myself: What can I do using only free software and assets? No subscription software. No paid assets. No commercial software such as Maya. If I were starting with nothing but some gaming hardware, how far could I go? Succeed or fail, I'll be walking away with more experience than I walked in with.
Just me, since I'm using this as a learning experience. I'm a software developer, mostly focused on Augmented and Virtual reality research, with some Machine Learning and art thrown in to keep things interesting.
This environment was created in Unity 2017.1
I set OBS to really high settings to get a nice clean capture, and ran my program as a standalone. I trimmed off about 4 seconds of loading at the start. No other editing. No adjusting sound. No smoke & mirrors. I'm super proud of that.
Unity Standard Assets
Post-Processing Stack V2
Volumetric Lighting / Fog
Unity Particle Pack
SciFi Enemies and Vehicles
Low Poly Combat Drone
Curves and Splines by Catlike Coding (Used with permission)
Textures from GameTextures.com
Rocks Free Pack
Rock and Boulders 2
Heightmap of crater lake by the USGS (http://ned.usgs.gov/) - Public Domain
My music was created by using AmperMusic.com (It uses AI to help compose... which is pretty rad)
Buoyancy Script by Alex Zhdankin (Do whatever you like license)
Concept & Initial Layout
Rough layout in Google Blocks, imported into Unity. This model has all of the major components in the initial design. I know I wanted my pillars to be hexagonal instead of cylindrical, but it was a start. Also, due to scaling, I wasn't able to get much detail on the child watching things (this later became Fiona, the woman trying to escape), so I did a more detailed view of that character off to the side.
At first, I didn't have a story in mind. I had some characters in mind (some of which didn't make it to the actual scene). As I worked through the scene, I found that I needed more of a story or theme to tie things together. With as dark and oppressive as much of the scene was, an escape scene felt a very natural fit.
Screenshots below are after I've brought in the Google Blocks model into Unity. I found it super helpful to put things in VR where I could see the proportion and relationship between elements, and screenshots really don't do that justice.
Final Scene View
Here you can see all the major components of my scene, including models, post-processing volumes, and my dolly track. The volumetric fog provided a lot of the light in the scene, but that isn't visible in the Scene window. As such things were very dark in the scene window. To help me see what I was doing I had a set of "house lights" that I turned on and off so I could see my set better.
This is a pretty powerful and amazing tool. I have a long/sprawling dolly track (which was super easy to edit!). Since I wasn't focused on a single character/entity in my scene, I wasn't sure how I was going to really get the camera to look where I wanted, when I wanted. The first couple of approaches I tried really didn't work. In the end, I found a technique that was both easy to implement, and pretty powerful. I have an object called the CameraTarget, which is just that... A simple sphere GameObject that the camera is aimed at. I animate the location of that throughout the scene. Since the timeline & animation tools use the same time mechanism, I was able to synchronize the movement of my CameraTarget with the dolly movement of the camera. When I tested things out in Run mode, I'd have Unity turn off the target's Renderer so it was invisible. This way the camera looked where I wanted, when I wanted it to look there. There is a good chance that I'll use this approach in the future (although a synchronized target dolly would also be really cool).
I have three main timelines. The below image is my master timeline. Each time you see Fiona, it's a different instance, and Fiona #2 and #3 each have their own timeline which begins when the master activates them. This provided a mechanism for me to easily adjust their appearances in relation to everything else. I really struggled with animating in the Timeline, though as I got used to it, I got much better at it. The most important thing I was missing when I started was the ability to right-click an animation and align the offsets with the previous/next clip.
I have a global volume, plus four local volumes in my scene. At the very beginning, I shift focal length to highlight Fiona. I couldn't see a mechanism to animate a volume's local settings. The way I worked around this, with the camera in place, is to animate the trigger volumes instead! This creates a nice transition from one set of effects to another (the two smaller volumes upper-left). One volume near the cave changes the color there, and the final volume on the bridge provides the fade-out.
Oh post-processing stack... I'm sure someone will say that you may be overused, but I love you. You hide all my ugly edges, make me look like I'm in the movies, and make me look cooler than I really am.
Daily (usually) Updates
Image first, then commentary.
One of the things I'm trying to improve about my scene is to add visual interest and fidelity. Right now, a lot of my triangle budget has been eaten up by the hexagonal pillars. That means I need to get a little creative for the look/feel. A particle system with some lights adds a lot of interest to the tower.
I put in a bunch more workers, and I attached them to a spline along with everything else. It's proven a very reliable way to get characters to move where and when I want them to, while still feeling fairly natural. Trying to aim an animation precisely all the way down that bridge is just too tricky, but the spline makes it a piece of cake.
Gut-check time. I have some basic animations working, the overall look/feel set. What can I change right off to make myself happier with the result? Additional post-processing was the answer. I really like the story, I still mostly like the setting (I'm not deeply passionate about it, but I still do like it), and I really like how all of the elements flow. That's pretty good.
Fleshing out the world, adding more characters, all so that has more depth and interest. This is the kind of task that is fun, but can also be a task that will never really be done.
With a bit of practice, TimeLine can be very powerful. Here it is animating Fiona as she hops across the platforms. I had some issues getting timeline to raise events in a way that I liked. In the end I was able to get things to go via an activation track, but it's a one-shot deal. I'd like to see what else folks find in terms of raising events from TimeLine effectively.
Timeline. You and I are in a fight. It's not as intuitive to use as I thought, and the constant resetting back to the scene origin had me cursing. It takes some practice, and I may end up doing a video on how to use Timeline in ways that won't drive you mad. I don't love all of the results I've gotten with timeline thus far, but it's way faster than my other alternatives.
With all of the pillars, I ran into some very real performance issues. The biggest ones involved too many draw calls. I knew there were methods to combine GameObjects with one another to reduce the number of draw calls. It certainly had a dramatic improvement on my scene!
More learning today... I'm trying to improve the lighting in my scene, but the darn process keeps crashing. Going a bit more hands-on with some of the light baking tools and settings. Ultimately, I ended up using Enlighten over the new progressive lightmapping.
Instead of that simple placeholder bridge, I have something a bit more complex and interesting. At first I was hoping to grow something appropriate with my L-Systems code, but I didn't get anything I felt I could use as a structure out of that code. Plan B, design my own!
Here's the worker, on the placeholder bridge. Aligning him was a real pain. I might have to use a curve to really get this right.
It's time to add some more life to my environment, which translates to people. I spent some time with Fusion / Mixamo to import this worker and his animation. I've also used inverse kinematics for the head movement. I'm not sure I'll use IK in the final product, but it's nice to know I can get that working.,
I wanted a change of pace, so I opted to do some modeling instead of shader coding. Here are some nice new floating platforms!
I've taken the plant from the L-Systems work, and I've added a shader that messes with vertices (much of this shader code is from the Unity shader tutorial)
Here are some other examples from the L-systems fractal generation. I really like the look of the bigger one here. I have one that looks awesome, but it has so many polygons it single-handedly tanks the performance of my GPU. Oops.
Now I've added some more depth and complexity to the L-Systems code, and it's generating some really cool things. I've taken this single tusk, and have put it in a scene to show off how it looks. Very organic, very natural... And randomly generated. I'm happy. :)
Foliage. I want plants that look unique and alien. I also want to revisit some of my L-Systems fractals code... So putting the two together, I've started to code up some L-Systems fractal plants. Some look really cool, others look terrible. We start with some basic generated components, like this.
More refinements on the drones here... Now I've added blinky lights, better thrusters, and refined the payload logic a bit. This gif capture happened right before I also added a particle system any time the block bonks something.
Here's where things have gotten a bit tricky. I wanted the drones to realistically lug these payloads around. The problem is, they stuck to the travel spline too cleanly. For this shot, I've attached an invisible GameObject to the path of travel, and then used a rigidboy & joint combo so that the whole drone/payload system had some dynamic behavior to it.
I took a free drone asset, and added a bunch of volumetric tube lights to it. The effect is pretty darn good. I still have to wait for my lighting to finish building before I can really see how it will end up, but so far, so good.
Now I'm working on the bridges from the center cube off to the side. This is where a person will be running. In hindsight, I should have just used a space-objects or similar free asset for these floating bridge things. Oh well.
Added some volumetric fog, and increased the variety of pillars in the landscape. The terrain is starting to look more like I'd wanted, and the volumetric fog plays so nicely with those lights! Super excited to get some real robots in there. Also, I used AmperMusic.com to help me by putting together some custom music for this scene.
I'm trying to get the pillars to be of a style that I really like. I've tried a couple materials, and haven't really come across something I particularly love. At the same time, I'm making good use of the splines code from Catlike Coding, and my test drones are floating happily about.
This robot is a recycled asset from a series I did on Machine Learning in Unity. I've been talking about using ML for animation, and while there's still a way to go, this at least provides an interesting character for my scene. The robot is trying to get an object that is out of reach, so it will continue to struggle and animate for all time (sorry bud!). I put a collider on the head of the robot, so that when it touches the material it's working on, it emits sparks.
Here I'm making good use of the tube lights from the volumetric lighting & fog asset. I've only used these in experimental scenes before, so it's good to finally use them in something a bit more concrete.
I've used many Unity features, but one that I haven't touched is cloth simulation. The first couple tries were pretty awful, and I've had trouble getting it to behave the way I wanted. The material definitely needs weight in order to move right, especially at any length. I started with planes, but I'm really concerned the single-sided texture would peek through at a really bad time... So, back into Blender.
This took me a couple tries to get the way I wanted it. First I took a plane, subdivided and scaled it. I then applied the scale, duplicated the plane, and flipped the duplicate a small distance away from the initial plane. Then, I stitched the sides together one quad at a time (I didn't know a faster way). Finally, I used boolean operators to create a die to cut the circular shape on the bottom.
After that, I textured it. A simple texture map, a metallic map to go with it, and a normal map... All using Blender, Inkscape and GIMP. The finished banner has an excellent specular highlight action going on when the light hits it right. I'm feeling really good about this one.
I knew I wanted the terrain to look alien, but based off of real data. I got a heightmap from the USGS and set to scripting. The script iterated over the map, getting the height, and putting a simple beveled hex prefab at each height.