Lacuna Passage - Devlog #60 - Inventory Storage

One of the last major pieces we are working on for the Habitat is the inventory storage modules.  The items in your inventory will be split into three categories: materials, equipment, and consumables.  Likewise, the storage unit will be divided into those same three categories to visually represent the items you have stored away.  Here a few pictures of how the inventory storage area looks right now:

As you can see, the crafting materials and equipment sections are complete and feature many different items you may find as you explore drill sites, supply caches, or other Habitats.  For the most part, we simply use crates or boxes to represent the number of items stored in the materials section.  The module has five variations, from empty to full, and as you store items you will see it change to represent its contents.

The equipment section is a little more complex.  The most important pieces of equipment are visualized individually for quick identification.  This is because we want players to choose what pieces of equipment they can take out on EVA’s, leaving behind potentially important or useful tools that they have to keep track of.  Your inventory will fill up quickly with heavy tools, so it's important to only take what you think you need on long trips.  Here’s a closer look at all the equipment stored away:

Each piece of equipment has it's purpose, and knowing when to use them will be important.  Some are easily identifiable with unique models, but some others are only shown stored in a case.  This was intentional to reduce modeling and allow placeholder art for pieces of equipment that may be added in the future.  Currently our Haz-Mat Kit, First Aid Kit, Soldering Kit, and Wiring Kit all share this model:

You will notice that the only difference is the diffuse texture that is applied to each.  We feel that paint color and labels are enough to differentiate these pieces of equipment.  Sharing textures and models between assets is important to reduce load times and file sizes.  As we approach the release of our early access, we will be taking many steps like this to future-proof our game.  Share your thoughts in the comments below.

 

Lacuna Passage - Devlog #59 - New Cliffs and Rocks for Terrain

Normally our devlog posts at the beginning of the month are reserved for general development progress and gameplay systems, but Spencer and I wear many hats here at Random Seed Games and I've actually been working on some art related stuff over the last few weeks in preparation for our first survival sandbox map design.

We want to make the survival mode a unique experience from the story mode that will come later. So that means a unique map on release, and hopefully multiple unique maps over time. I decided that this would be a perfect time to revisit one of the most criticised aspects of our terrain... the rocks and cliffs.

The NASA data that we use for our terrain generation is incredibly helpful for creating basic formations, but there are some definite limitations. The data resolution and the inability to create overhanging rock formations combine to make the terrain look like a continuous flowing surface without many rugged features. To combat this we need to create rock meshes that protrude from the surface and form more realistic cliffs, etc. In the past we have relied on the Unity Asset Store as much as possible for rock models, but for cliffs we had difficulty finding appropriate models. So I spent some time this month creating my own cliff models using real Mars cliff photos as reference.

During the creation process I realized that these models might be useful to other developers working on desert environments or planets, so I packed everything up and posted it on the Unity Asset Store for $25. Each variation began as a uniform model which was modified by extruding the vertices using a heightmap generated from a high quality texture. Then each unique model needed to be optimized and adjusted to hide the texture seams as much as possible. Ultimately this provides us with very similar "building blocks" that combine perfectly to create larger formations.

The end result looks great, especially at very large scales where the repetition is more easily hidden. So if you are a developer or know someone who needs some realistic cliff models/textures you should check out our Asset Store page.

Additionally, we are still relying on some other Asset Store packages to supplement our own terrain assets. We did manage to find one set of cliff models that will work for us, but we had to make some significant edits to make the meshes modular and lower poly. The package also contained some really high quality rocks that will look great strewn around our terrain.

Arid Environment Rocks - Unity Asset Store

After working to match these rocks and cliffs with our own we feel much better equipped to start building our survival sandbox terrain.

New Relief Terrain Pack Shader

More recently we have also started investigating a new terrain shader in order to further improve our terrain quality. Our old terrain shader is a heavily modified version of an Asset Store terrain shader and it is having issues now with the Unity 5 physical rendering changes. This new Relief Terrain Pack shader may be our best option, and after some early tests it may actually improve our workflow for terrain creation overall. We don't have any screenshots of it in action for Lacuna Passage yet, but to get an idea of what's possible with the RTP shader check out the video below.

November has been a busy month for art development. The rest of December will now be devoted to building up the survival sandbox map design version 1.0 and populating it with randomized elements that will make every survival mode playthrough a new challenge.

Lacuna Passage - Devlog #58 - Fitness Station and Inventory Storage

We have been hard at work adding some interesting new interactable “work stations” within the Habitat to give depth to the survival aspects within the game.  We recently completed the fitness station, consisting of the multi-purpose aRED (Advanced Resistance Exercise Device) and a Treadmill.  Fitness is an important factor to consider as you travel across the Martian landscape.  For instance, training at the fitness station will increase your overall stamina and reduce the likelihood of injury.

We wanted the fitness station to resemble some of the equipment used in space today.  The treadmill is pretty recognizable, but the aRED is something you wouldn’t find in your typical gym.  That’s because it uses vacuum pressure to replicate multiple weight-based exercises, reducing the need for unwieldy weights.  Here’s a cool video from astronaut Mike Hopkins showing off how it works.  The vacuum pressure even makes it practical to use in zero gravity at the ISS.

Our next station we are in the progress of adding is the storage area for inventory items.  We want this area to feel easy to access, and show visually what you have stored away.  At any time the player can walk up to any of the three storage areas to access the inventory management screen on their datapad to add or store away items in their backpack.  Here is a first glimpse at how it might look:

This area is one of the more essential components to managing your food, equipment, and crafting materials, so we want it to be rather large and visually appealing.  We plan on adding lots of small details to make it feel like it actually reflects what you have stored away.  And remember, you can find multiple Habitats in our survival mode - allowing you to store away items at specific locations.  Inventory management will surely be key to your survival on Mars.

Lacuna Passage - Devlog #57 - Survival Stats Interface

We decided to do another video this month to show off some more improvements to the Datapad user interface. We now have a simple vitals screen that helps you visualize your current survival attributes like nutrition and hydration. It may look complex at first, but hopefully after watching the video you will see that we are trying to balance realism with readability. We also have an updated sleep timer screen that will allow you to reduce your exhaustion and move time forward more quickly. And if you stick around to the end of the video then you will see a few improvements we've made to the crafting screen.

Check out the video below and please let us know if you have any feedback for the features we are working on. We hope you are excited about the prospect of surviving on Mars!

Lacuna Passage - Devlog #56 - Crafting and Research Stations

As we work to implement more survival focused features into Lacuna Passage, we have been revisiting the elements of crafting in the game.  We have decided to incorporate dedicated “work stations” into the Habitat that the player will interact with depending on what it is they need to craft or research.  For instance, if the player would like to craft an emergency pop tent, they may first need to take something to salvage over to the workbench to break it down into materials.  Or they may need to use a 3D printer to create parts from scratch.  Here are some images of how the workbench and 3D printer look right now:

These workstations will be randomly generated in some (but not all) habitats the player discovers in survival mode.  Another objective we would like to include in the survival mode of Lacuna Passage involves the new research station.

This area would be utilized by collecting rock and mineral samples in order to better understand the geology and biology of Mars.  Although this goal would not directly affect your survival, we found that having multiple open-ended objectives is more enjoyable.

As we work to create many new and interesting areas in the habitat, we are always trying to utilize existing models and elements from other assets.  We reuse as many pieces as possible, like the computer monitor mount and work station tabletop.  Even the wall and outlets are recycled bits from other sections of the habitat.  It's important that we create these assets in ways that would allow us to reuse them in the future.  For example, the microscope pictured above was one of the very first internal habitat assets we created, but we have a variant with an attached computer monitor and keyboard that we can use in other locations.

We have plenty of other ideas in mind for interactive workstations, and we hope to have even more to show next month.  Let us know what you think in the comments.

Lacuna Passage - Devlog #55 - User Interface Updates

I just posted a new devlog video covering some of our new Datapad features including our work-in-progress Inventory and.... Crafting features! That's right. We have been kinda cagey on the whole crafting thing, but we think we have finally figured out a way to do it that fits the context of the game. That being said, the devlog video is very very rough. A lot of stuff doesn't look quite right yet with the Datapad UI and things bug out a little even during the short video. I almost didn't want to share it with everyone until it was looking better, but you guys deserve to know what we are spending our time on, even if it doesn't look great or have all the kinks worked out yet. All we ask is that you don't use these videos as a measuring stick for the quality of the final game. Don't share videos like this one to convince your friends how cool the game will be. It'll get better... I promise :)

So here it is. Let us know what you think!

TIMEframe - Featured in Multiplicidade Festival, Rio de Janeiro, Brazil

Thanks to our friends at Gamesquare, TIMEframe was featured in a live music performance by Astromash for the Festival Multiplicidade audience in August of 2015. Unfortunately we were not able to make the trip down to Rio de Janeiro ourselves, but the pictures of the show look great! We also have a little video clip for you to check out.

Lacuna Passage - Devlog #54 - Random Hab Modules

With our sandbox survival mode for Lacuna Passage in the works, we knew we needed to make some changes to the habitat modules.  There will be a few established habitats randomly placed for players to discover and utilize to survive as long as possible.  These habitats will all be unique and full of specialized modules that serve different purposes.  Bunks for sleeping and storage for food and supplies will be available in each hab, but things like research stations, 3D printers, and crafting areas will be randomized features in only some of the habitats you find.

In order to make the habitat capable of this level of randomization, we had to revise the way the hab is set up.  Now each component in the hab takes up an exact gridspace that can be randomly assigned in almost any part of the inner structure.  Here are a couple examples of how things may look with randomly swapped modules:

This is also the first time we have really shown off how the new Unity 5 standard shader makes our internal areas look.  We are very happy with how simple and consistent this shader performs with all of our materials even though we have not finalized the lighting yet.  Here are some more interior screenshots with placeholder lighting:

You may notice a new workstation in those last couple screenshots that we are currently working on.  This will have a few different functions, but in this example it serves as a station for testing soil and rock samples.

We also managed to give some of the panels that fill the extra space in the hab a rework.  They previously seemed a little too extruded and they interfered with the flow and interactive elements of the hab.  Now they seem a little more streamlined and less intrusive.

Progress is definitely coming along, and we hope to show you more next month regarding some of the new areas in the habitat where you will be crafting supplies to help you survive.

Lacuna Passage - Devlog #53 - Adjusting for Rendering Differences, Updating the Datapad, and Ludum Dare 33

Rendering Differences Between Color Modes

In our last few devlogs we have featured some updates to our art pipeline that have come with the transition to Unity 5's Standard Shader. In making this transition we have changed Unity's color mode from Gamma to Linear. This is a fairly technical aspect of rendering in a game engine, but I'll do my best to walk through our process (and problem solving). You can see the difference between the different color modes below.

Gamma Mode

Gamma Mode

Linear Mode

Linear Mode

You will notice that Linear color mode has much tighter highlights and generally makes metal materials look much more natural. The math behind it is all quite complex, but thankfully Unity takes care of it for us with a simple checkbox setting. We demonstrated how this new rendering mode looks a few weeks ago with our new Bridge environment assets.

Looks great, right? Well, unfortunately we were soon met with a few complications while trying to incorporate this new Linear color mode into our full project. Let's look at one specific example. Below you will see how this new color mode affected our fog blending with the skybox. (You can click to enlarge all images).

Our Mars time-of-day system was originally designed with Unity Gamma color mode. This is the exact start moment of "Dawn" in our old system where no color lerping (blending/gradation) is happening.

In this example we have switched to Linear color mode. You can see that the fog color is still blended properly with the background skybox, but that is to be expected since no lerping is happening at this moment.

Back in Gamma mode our time-of-day progresses from "Dawn" to "Midday" smoothing with a color lerp that is precise to match the blended skybox in the background. Looking good!

Now we can start to see the issue in Linear mode (you may need to click the image to enlarge it). The color lerp for the fog is no longer matched perfectly to the background skybox (notice the hard line at the horizon). Nothing else has changed from the previous screenshot other than the color mode. You can see problems with the sun shafts and lens flare as well; however, those are less of an issue because they can be tuned appropriately to compensate. The fog color lerp cannot be compensated. The start and end colors of the lerp are correct (see the Dawn example), but the colors in between are incorrect.

This simple problem caused us a huge headache. The beginning and ending points of our time-of-day transitions still matched the skybox perfectly, but every point in between was too dark and made our horizon line stick out like a sore thumb. So what was going on in Linear mode that was different from Gamma mode?

We had no idea. After scouring the web I came up empty handed. So I ended up resorting to posting for help on the /r/Unity3D subreddit. Lo and behold we were presented with a potential solution in less than an afternoon. And surprisingly, the solution came from real-world light physics and not from a Unity-specific error. As it turns out, Linear mode in Unity does not properly calculate the blending of two colors, but we can do that ourselves if we apply math! The video below led us to our final equation.

Mathf.Sqrt( Mathf.Pow(color1.r, 2) * (1.0f - t) + Mathf.Pow(color2.r, 2) * t )

This equation can be applied to our fog instead of using a Lerp. This transitions from color1 to color2 where t is the decimal percent of transition (just like t in a normal Lerp). We have to do this for each channel (r, g, b, and a) and use those values to build a new Color that reflects the proper values in Linear mode.

Now our fog blends perfectly with our skybox once again. There were a few other issues that we had to overcome in the transition to Linear mode, but we have finally gotten to a point where we are happy with the result. Due to the improvements with the Standard Shader in Linear mode, we think the game looks better than ever.

Updating the Datapad

We have also been working on updating the Datapad with the new Unity GUI features. Before we were using a plugin called NGUI, but this was becoming difficult to manage and we wanted to transition to using as many built-in Unity features as possible. One of the benefits of this new system is that it can automatically map the navigations between buttons.

You can see that we are making some general design changes to the Datapad as well, but we will have more details about that in a later devlog. Beyond that, we have made improvements to the shader for the Datapad screen so that colors appear more accurate to what you would see on an LCD screen. Before, the entire screen was illuminated equally, which led to blown out bright colors and washed out dark colors (shown below).

Old Datapad screen shader

Now we have a new shader for the screen that illuminates the brighter colors with more vibrancy while still preserving the dark colors.

New Datapad screen shader

Ludum Dare 33 - "The Monster Inside"

It was a pretty busy month, but our artist Spencer did manage to break away for a four day weekend vacation. So during that weekend I decided to participate in another Ludum Dare game jam without him. This time the theme was "You Are The Monster". The result was a collaboration with our composer, Clark Aboud, and a new contributing artist named Doug Auerbach.

We created a short audio-visual novella called "The Monster Inside". It is a text based game that explores a fantasy-infused film noir world. It covers some adult themes, so player-be-warned, but you can play it directly in your browser or download it from our Itch.io page below. Check it out and let us know what you think!

Thanks for following our devlog and we will be back soon with more art updates in a couple weeks!

Lacuna Passage - Devlog #52.5 - Lightmapping with Emission in Unity 5

Light mapping is a technique where you can bake the light from a scene into objects so that they self-illuminate based on a generated lightmap texture that usually is mapped to a second UV channel. This is a great solution to reduce the number of light calculations needed on static objects. But what if you have an object in the scene that needs to appear as if it is projecting light and casting shadows on other objects - and you also want to control the color and intensity of the light ingame? Well that’s where emissive lighting comes in handy.

Emissive lighting is typically used to self-illuminate objects in a scene and make them appear as the light source. A texture specifies the areas of the object that you want to emit light and global Illumination bounces this light onto other objects in the scene. Below is an example of a typical emissive object with global illumination affecting the scene around it.

But when you want precise shadows and lighting that matches the emission produced you need to get a little more complex. Baking the light casted from the emission source in your modeling software can achieve this effect with only a little extra effort. So, in effect, we want to produce our own lightmapping outside of Unity and apply it to the emissive channel in our Unity material.

First things first, we need to get a demo scene started in our modeling software. I’m going to be using 3ds Max along with the Mental Ray renderer. Below is the basic scene in 3ds max (top) and our desired look using a spotlight in Unity (bottom).

The hemisphere in the corner is the lamp of our scene and its bulb will illuminate our objects. To emulate this lighting in 3ds Max we need to place a light source in the center of the bulb. I used a Photometric Free Light and set the shadows to “Ray Traced” and the emit shape to “Sphere.”

Because I am using Photometric lights, I made sure my scene units match that of real-world objects. In this case I used 4 cm for the lamp bulb and made the radius of the emit shape also 4 cm.

After tweaking some of the light and shadow settings, I made a new Arch & Design material to place on our objects. In the diffuse color map slot I placed my diffuse map.  In the glossiness map slot under the reflection rollout I placed my gloss map. I made sure the diffuse and reflection colors are set to pure white, and the reflectivity is set to 1.0. I also checked the “Highlights+FG only” option because bounced light will be taken care of by global illumination in Unity.

Finally, I added a Normal Bump under the Special Maps rollout with the normal map of our projected high poly (Make sure you flip the green channel). After a couple quick render tests I decided to increase the gloss output to 2.0 to make the highlights tighter.

Now that we have our light and materials setup, we just need to render the light to a texture map. To do this, we open the Render to Texture dialog (Rendering > Render to Texture…). With our all our objects attached into one mesh we can easily render the entire texture at once. With our single object selected we can set our render to texture properties accordingly.

Scroll down to the Output rollout and add a “CompleteMap.” Complete maps incorporate all light information including normal, gloss, and diffuse maps into our bake. Set the texture size and save location accordingly and make sure “Shadows” is checked. Then hit “Render.”

Once the render is complete, decide if you need to increase the quality of the shadows before going to Photoshop to tweak any errors. You can do that by going to Rendering > Render Setup and opening the “Renderer” tab. Here you can tweak things like light sampling and noise thresholds. You could also go back to your light source and tweak its settings.

The end result is a custom emission map that reflects the lighting in your 3ds Max scene:

Then you just bring all your assets and textures into Unity and plug them into the Standard shader (I used the specular version). Here’s a quick video of how the emission lighting method compares to a spotlight within Unity:

In the example at the end of the video you can see some of the benefits of this method. Instead of lightmapping the entire hallway we can simulate lightmapping on a single asset that looks reasonably good even when duplicated in several places around the scene. This works particularly well when the light source is attached to the object that you want to have simulated direct lighting. The lighting never needs to be rebuilt and the resolution of the emission map can be scaled smaller than your other texture maps if needed. The emissive properties can also be easily changed at runtime to create effects like flickering or colored lights. The emission coming from our transmissive plastic also contributes to the scene's lighting via Unity's precomputed realtime Global Illumination.