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.

Transient

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.

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 #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.