Unity 3D

Lacuna Passage - Devlog #48 - The next phase of Lacuna Passage development

This past month has been hectic, but we are finally back with a focus on Lacuna Passage.

Some of you had concerns about TIMEframe being a distraction for us last month so this month we want to talk about all the tangible ways that it has positively impacted our continued development of Lacuna Passage.

Demonstration of the Song Seed Music plugin used in both Lacuna Passage and TIMEframe

First and foremost has been the refinement of our dynamic music system, Song Seed. We have been building Song Seed over several iterations in the last year or so specifically for use in Lacuna Passage. The demo we previewed at PAX East was the first public implementation of our dynamic soundtrack and it worked really well for us, but there was still a lot that needed to be done. We realized a long time ago that this system would be very beneficial for other developers as well, so after PAX East we began working harder on the public version which worked well with the timing of our updated release of TIMEframe. Music is a huge part of TIMEframe so we were able to use it as a real-world test of the system. In fact, in addition to our own implementation in TIMEframe, we have just opened up a beta test of the Song Seed Unity plugin. So if you are a Unity developer interested in helping us improve this tech that will be a big part of Lacuna Passage please let us know (and check out the example video above). Soon after testing we will be releasing the plugin on the Unity Asset Store at a modest price. The proceeds from this will all be funneled straight into Lacuna Passage development as well.

Another benefit of working on TIMEframe that cannot be stressed enough has been learning the ins and outs of Steam integration. Lacuna Passage has always been our priority, but it has also been our first foray into commercial game development. We had no experience with integrating with Steam until now. After working on TIMEframe we now have a much firmer grasp on what that integration requires. Store page setup, game package installation, authentication, achievements, trading cards, cloud saves, DLC… the list goes on and on. We have used TIMEframe as our test bed for these features and this has given us invaluable experience as we now implement many of these features in Lacuna Passage. We are now looking forward to a tentative release date of June 30th for TIMEframe which will give us even more experience in running an active product and managing customer relations. Once again, all the proceeds will directly benefit Lacuna Passage development. (And as a reminder, all Lacuna Passage Kickstarter backers will be receiving a free copy of the game and the original soundtrack).

Last but not least, we have been experimenting with new features that have been added to Unity in versions 4.6 through 5.0. We have not updated Lacuna Passage past 4.6.2, but with our work on TIMEframe we have had a chance to see how these more recent updates might affect Lacuna Passage. The new user interface features in Unity might drastically improve the way that we handle the rendering of the datapad for example. There have also been several performance enhancing changes that could positively impact our open-world memory management. We have been able to evaluate these new features in TIMEframe on a smaller scale without any disruption to our Lacuna Passage project management. It would have taken us orders of magnitude more time to even test these options in Lacuna Passage itself.

These are only a few of the most direct benefits we have experienced while working on TIMEframe, and as we move forward into this next chapter of Lacuna Passage development we feel much more confident in our ability to deliver on our original promises. Game development is not a straight path. There will always be bumps and detours, but we work extremely hard to ensure that every decision we make benefits our ultimate goal of delivering the best Mars exploration narrative experience that we possibly can. Over the next few weeks we will have more regular updates with the art and design of Lacuna Passage.

Lacuna Passage - Devlog #35 - Improvements to our terrain automation

Development is finally reaching the point where we are able to start placing content within our full-scale environment.

Our demo from the Game Developers Conference and the Midwest Game Developers Summit was effectively a test to ensure our tool set for terrain development was sufficient for the much larger scaled terrain that would be in the final game. The demo was approximately 5 square miles of terrain (though only a small part of it featured in the walkthrough) and now we are working with roughly 19 square miles of exploreable terrain for the final game. You can see a comparison below.

Anyone who has worked with terrains in Unity knows that there are dozens of variables and settings to tweak to get things looking just right. Doing all that manually for 16 terrain tiles (as opposed to 4 in the demo terrain) was not an option. In order to scale up our workflow for iterating and improving this larger area we needed to automate as much of the process as possible.

There are plenty of tools on the Unity Asset Store that are built specifically for this purpose, but after evaluating many of them we realized that we needed something more tailored to our setup. So we began working on a custom Unity Editor Window.

To the left you will see a preview of our Full Terrain Manager. This custom editor allows us to update materials, detail textures, heightmaps, colormaps, normalmaps, splatmaps, and detailmaps with the press of a button rather than manually assigning them one at a time for each of our 16 terrain tiles. This cuts a 2+ hour process down to less than 15 minutes. So if you aren't a developer and just want to know what this means for Lacuna Passage, it means we will have more time to make the terrain in the game as stunning as possible.

The next step will be to get our terrain streaming ironed out so that only the terrain tiles that are needed are loaded for the player at their current location. Then we can begin placing some of the other assets we have been working on to make this feel like a truly expansive Mars landscape with the same level of detail and quality you saw in our smaller demo terrain.

 

That's it for today's devlog, but check back in a couple weeks to see another art update from Spencer and his progress on the Foundation base camp Greenhouse.

Unity Audio Subtitles Tutorial

This tutorial demonstrates a simple method for loading text files from the Resources folder that we are using in our game Lacuna Passage. In this case the resulting text strings can be parsed and used for displaying subtitles or captions timed with your game dialogue. You can even trigger other events to coincide precisely with the audio.

Lacuna Passage - Devlog #29 - Habitat Interior Designs

Since we posted our last few videos we have made even more progress with the time-of-day systems by adding in clouds and stars which you can see below.

Exaggerated clouds to demonstrate the rim-lighting effect as the sun passes behind the clouds

Exaggerated clouds to demonstrate the rim-lighting effect as the sun passes behind the clouds

Subtle, wispy clouds like you would find on Mars

Subtle, wispy clouds like you would find on Mars

With these systems mostly complete I have now moved on to improve our scripts for controlling inventory and context sensitive object interaction. One of the first steps in doing this has been to make a “tag” system. This will allow us to display information about any object just by looking at them. Below you can see these new tags in their early form.

I’m also very happy to officially announce that we now have a new full-time team member! My brother Spencer (who can be seen in the original Kickstarter pitch video) has joined us as a full-time artist and general assistant for the project.

Spencer and Jeremy (another part-time project volunteer) have been focused these last few weeks on developing the designs for the main habitat, otherwise known as the Hab. Jeremy has been creating a set of modular elements that can be combined like lego pieces and Spencer has been utilizing those modular pieces to rough out several different internal “modules” of the Hab. Below you can see the first three modules we have begun designing. The crew bunks, a bathroom/laundry area, and a couch seating area.

Crew Bunks

Crew Bunks

Bathroom/Laundry

Bathroom/Laundry

Couch Seating

Couch Seating

These are still very early screenshots. There we be lots of detail added in the final designs, especially when we start to apply more textures. With Spencer working on these models full-time we expect lots of progress in the coming weeks.

We are taking a lot of care in designing this habitat not as a sprawling space base out of a science fiction film, but rather a dense, functional living space that would be reasonable for an early mission to Mars. The Hab is one of three planned structures that will make up the Foundation Base Camp. The others are a greenhouse and laboratory, which we will begin building soon.

Lacuna Passage - Devlog #19 - The Power of Unity Plugins Round 2

logo-titled.png

Back in April we posted about some of the Unity plugins that we are using to create Lacuna Passage. Since then we have started using even more plugins that have further eased our development workflow. Here are some of our favorites.

Terrain Composer - By Nathaniel Doldersum

I wish we had access to this tool from the start. Terrain Composer allows you to do some pretty incredible things to generate and tweak your terrain directly in Unity without the help of external tools. We still utilize a few external tools like World Machine, but Terrain Composer helps in handling some of the more repetitive menial tasks. This is an extremely powerful tool for those who take the time to learn it.

ats Colormap ULTRA Terrain Shader - By forst

We talked about our terrain shader in our previous showcase, but this is much more than just a shader now. The updates made here have drastically improved our terrain creation workflow, especially now that it is fully compatible with Unity 4.X. The new editor interface for setting up your terrain is super intuitive and automates many of the steps that were originally mostly manual. In my honest opinion Unity needs to make these kinds of terrain tools the default. When combined with Terrain Composer you have everything you need to make the most believable worlds possible in Unity.

Highlighting System - By Deep Dream Games

We are using the Highlighting System to help the player identify some objectives and highlight key objects in the environment. The effects are fairly uniform, but you can change colors and overlay/blending methods to suit your needs. There are plenty of provided example scripts to get you started with whatever highlighting functionality you might need.

Mega-Fiers - By Chris West

Mega-Fiers… What can I say about Mega-Fiers that you haven’t heard already (seriously, they do an awesome job marketing and demonstrating this plugin). Well, in case you don’t know, Mega-Fiers is an extremely powerful mesh deformation plugin. If you need a mesh to bend, twist, wave, squish, or anything else, then look no further. I first used Mega-Fiers when working on TIMEframe to create the slow-motion blowing banners in the city. I was able to animate the banners in 3ds Max using physics simulations and export the vertex animation data for use in Unity. The result is a smooth, incredibly detailed cloth-like animation that would not have been possible with the Unity cloth animation tools. We are excited about the possibilities for Mega-Fiers in Lacuna Passage.

NGUI - By Tasharen Entertainment

There is a reason that NGUI has become almost the default for creating user interfaces in Unity. It is undeniably better suited for the task than the built-in Unity GUI tools. We recently began work on converting the datapad GUI over to NGUI and we are very happy with the results. Fewer draw calls, manageable layer depths, texture atlasing, and more. I can’t imagine using anything else. Once you try NGUI you don’t go back.

Shader Forge Alpha - By Acegikmo

In our last plugin showcase we mentioned some great hard surface shaders; however, since that time we have made the plunge into creating shaders of our own. I had used the node-based Strumpy Shader Editor for a few years, but that plugin seems to be defunct now and not supported correctly in Unity 4.X. Luckily Shader Forge appears to have picked up the mantle. They are still in Alpha, but we have been testing the Alpha version to create new shaders for Lacuna Passage and we are blown away with the results. Plugins like Shader Forge go a long way in closing the visual gap between engines like Unreal and Unity. Keep an eye on this one and snatch it up the minute it hits the asset store.

 

Lacuna Passage - Devlog #9 - The Power of Unity Plugins

logo-titled.png

One of the things I love about Unity is the immense amount of community support it has garnered. There really is a wealth of resources at your fingertips. The Asset Store is an excellent place to find some of these resources and we have utilized several packages quite extensively while creating Lacuna Passage. This week I thought we might share some of our favorites.

Ultimate FPS Camera - by VisionPunk


I can’t recommend this script package highly enough. If you are creating any first-person game at all then you owe it to yourself to at least check it out. This package adds some incredible dynamic camera movement that makes everything feel much more organic. And if you are making a shooter then you will have some excellent customizations available for any kind of gun-play you can imagine.

Unistorm - by Black Horizon Studios

I’ve had to make some fairly significant changes to the Unistorm scripts to get exactly what I was looking for, but they were an excellent starting point and still serve as the backbone for the day/night cycle in the game. There is decent documentation to help you along also.

GlareFX Dirt Lens Effect - by Red Dot Games

You might argue that these effects are a bit cliche now after seeing them in games like Battlefield 3, but they fit perfectly in a game like Lacuna Passage. We always want the player to feel somewhat trapped and enclosed in their stuffy space helmet and these glare effects go a long ways towards achieving that. They have some great customization options that allow you to make the effects as bombastic or as subtle as you desire.

Hard Surface Shaders Free - by Bruno Rime

If you don’t want to bother with writing your own shaders for metal or plastic, then no worries. This shader pack has you covered. I originally considered using them as a placeholder until we completed our own, but there really isn’t anything else I need. If you want even more out of your shaders there is a Pro version on the asset store as well.

ats Colormap ULTRA Terrain Shader - by forst

This shader is absolutely instrumental to the look and feel of Lacuna Passage. The terrain in the game is one of the most important visual elements and this shader makes a world of difference. With the improved terrain materials system in Unity 4.0 the shader is easier to use than ever before. I described more about our terrain creation methods in a previous devlog.

Probuilder 2.0 - by SixBySeven Studio

Most of my level design experience was gained in Hammer Editor and the Unreal Editor so Brushes and BSPs were a huge part of my prototyping workflow. With Probuilder I’m able to get some of that familiarity back and quickly generate graybox test environments directly inside of Unity. Probuilder is honestly flexible enough that I can see how some projects might utilize it for their actual game geometry and not just for testing.

Playmaker - by Hutong Games

Last but certainly not least is Playmaker. I don’t think Lacuna Passage would be possible without it. I’ve never been a strong programmer, but Playmaker allows me to create game logic quickly and easily. Almost 90% of the game will be done entirely in Playmaker and the other 10% is mostly just hooking it up to our other plugins and miscellaneous scripts. For example, we wanted to have the colors of our dust particle effects managed by the Unistorm day/night cycle so I simply inserted Playmaker global variables into the Unistorm scripts with very little effort. This visual scripting system is incredibly powerful and I think it would be a mistake for even master programmers to overlook it.

Lacuna Passage - Devlog #6 - Using highly detailed 3D components in your first-person HUD

This week’s devlog is a bit more of a tutorial where we cover our method for creating dynamic, highly detailed 3D HUD elements. The basis for our pipeline involves rendering complex high-poly models onto flat, single polygon planes with a normal map for light interactions.

helmet_in_game.jpg

Pros of this method

  • You effectively have an unlimited polycount for your HUD. By rendering your high poly model to a flat plane you will have no noticeable polygonal curves or sharp edges (if you don’t want them, that is)
  • Extremely low poly count in relation to the quality of the illusion

Cons of this method

  • A change in HUD design requires re-rendering of all your texture bakes
  • The HUD cannot move in relation to the camera or the illusion breaks

So, let’s get started:

1. Setting up your camera angle

In order to model your HUD components you need to setup a camera in your modeling software that is exactly the same field of view as your first-person camera in your game engine. This will help you preview what your HUD will look like in game. It’s also going to be very important later when we need to render out a normal map.

2. Build your model according to the view you want in game

This part just comes down to whatever style you are looking to have with your particular game. In our case we are creating a small visible portion on the inside of a space helmet.

camera_plane.gif

​3. Create a plane to project your model onto

Once your model is finished (no need to texture it yet) you need to create a plane that completely encompasses your model from the point of view of your first-person camera.

camera_plane_orientation.gif

4. Orient the plane to your camera angle

Make sure that the plane is exactly perpendicular to the origin point of the camera. Check the image to see a visual.

5. Quickly unwrap your plane

No frills here. Just unwrap the plane however you like.

camera_plane_normals.gif

6. Render your normal map

Use Render to Texture with a projection modifier on your plane that encompasses your model to create a normal map of the original model. If you’ve never done a normal map bake from a high poly model before check out this guide.

textures_helmet.jpg

7. Create your textures

You can create your textures in Photoshop or texture your original model and do another render to texture for the diffuse instead of the normal map.

8. Create an alpha mask for the model’s texture

Since our projection shape does not perfectly match our plane we need to have an alpha channel somewhere that determines areas of transparency.

dustdevil2.gif

​9. Import your plane and your textures

Bring everything into your game engine and align the plane exactly as you had it in your camera preview in your modeling software. In our case we are using Unity so here are some tips to help you out.

Unity specific directions:

  • Have your plane parented to a HUD camera that is distinct from your scene camera
  • Have the HUD camera render last and mask only the HUD elements
  • Make sure the clear flags are set to Depth Only to preserve your depth buffer
  • Use the same HDR settings on all cameras if you are using image effects
So, there you have it. If you have any questions feel free to leave them in the comments.

Lacuna Passage - Devlog #3 - What the heck is Lacuna Passage?

screen_1920x1080_2013-01-24_19-18-14.png

Over the last couple of weeks I went into some detailed breakdowns of the terrain in my upcoming game Lacuna Passage. But I realized that I only briefly touched on what Lacuna Passage as a game will actually be. So, this week I’m going to take some time to do a breakdown what the game is really all about.

Here's an excerpt from our first devlog that explains what we hope to accomplish with the game:

I’ve always been a huge fan of space exploration and the recent success of the Mars Curiosity Rover inspired me to make a game that embodies the nature of exploration and discovery. Lacuna Passage is that game. I wanted to create an experience that might fulfill my own desire to set foot on another world, and for the last 6 months I’ve been researching and prototyping exactly how I might do that.
When I started the project I tried to get a sense for the types of games that have attempted this in the past. From what I noticed it seemed that many space exploration games focus on some kind of tension mechanic. You have limited oxygen, you are being hunted by mutant aliens, you are trying to survive or fight… Games like Dead Space, Metroid Prime, or Mass Effect, and many of these take place far in the future where we lose some context for the difficulty and high risks associated with space exploration. Everyone has a spaceship, and things like gravity, physics, and engineering are trivial matters. On the other end of the spectrum are the space simulators (Kerbal Space Program, Universe Sandbox) that don’t have a story to tell, they simple try to replicate the nature of space or space travel. There are very few games that sit in between those styles. I wanted to create something contemplative and awe-inspiring, not fear-inducing or pedantically accurate. I wanted to create an impressionist representation of modern space exploration. Think Dear Esther in space.
A potential design for the Mars space suits

A potential design for the Mars space suits

Story

You are Jessica Rainer, the only survivor of the crashed Heracles Mars expedition, sent to investigate the mysterious disappearance of the very first Mars expedition, Hermes.

Gameplay

Exploration. Lacuna Passage is an open-world adventure. 25 square miles of treacherous Martian terrain littered with clues about the disappearance of the Hermes Mars Expedition.

Investigation. Photograph and document your journey. Follow the clues and piece together your own explanation to the events that unfolded on the red planet. Perhaps you can even find a way home. Share your discoveries, photo journals, and theories with other players online.

Navigation. Pay close attention to your instruments and keep track of your surroundings. The game will not hold your hand with arbitrary objective markers and many key locations will need to be manually recorded for reference. Careless explorers are sure to get themselves lost.

Survival. Food, water, and oxygen are in short supply on the planet’s surface. Even sleep is important in maintaining your stamina (and your sanity). Depicting a realistic passing of time is also important to the general theme of survival. Essentially the player is faced with defining their own goals. You can try to see how many days you can survive alone on Mars or you can try to see how fast you can solve the mysteries of the planet. Death in itself is not necessarily a fail condition in the game. Depending on your experience it may be a perfectly suitable ending to the story you have crafted for Jessica Rainer.

From Concept to Prototype

Of course, all of this conceptual content would be nothing without some substantial prototyping. Over the last few months I have been working hard on some crucial systems that will stand as the foundation for the experience inherent to Lacuna Passage.

Concept art of one of the habitat modules

Concept art of one of the habitat modules

Time of Day and atmospheric effects

There is a full day/night cycle with some beautiful atmospheric effects that emphasize the scale and the emptiness of the planet. We started with the base Unistorm Unity package and heavily modified it to fit the atmosphere of Mars.

Realistic first-person camera

Those space suits are heavy, and the goal of the camera is to help the player feel some of that weight. Especially as your stamina begins to fade and movement becomes more labored. We already have some great camera movement in the prototype courtesy of a modified Ultimate FPS Camera Unity package.

Terrain generated from real-world (Mars) geologic features

Every inch of the environment is lifted directly from real Mars terrain data provided by NASA satellites. Some of the features are composited together and scaled down to provide the player with more varied landscapes to explore. Find about more about the methods used for the terrain in our first two devlog posts.

screen_1920x1080_2013-02-12_21-00-00.png

In-game photography

Taking “screenshots” is directly incorporated into the story via the main character’s desire to investigate the disappearance of the Hermes crew with photography. Sometimes you will need to examine your photographs to gain clues about where to explore next. The goal here is to also encourage sharing stories online and collaborating on theories to some of the game’s more obtuse clues by having all in-game photos also saved out to the player’s harddrive.

Continued Progress

I'm excited with how far the game has come, but we also have a long ways to go. If Lacuna Passage is a game that interests you then I hope you continue to follow our progress on this blog or on Twitter. Cheers!