How we used Blender and Unity to make “Faraway: Director’s Cut”
This is going to be a short overview of the tools and techniques used during the development of (the original) Faraway. I hope someone finds it interesting!
Faraway is an adventure game, a modern tribute to Myst. In Faraway, you’re an adventurer exploring the ruins of ancient temples full of challenges and mysterious riddles.
Even though it was made with Unity, the most used tool during development was Blender. We didn’t design our levels in Unity; instead, we imported whole level models. The reasoning is that we want to change geometry often.
We have a base 3D model “tile-set” which we place around the levels and then add some wear or damage. All levels also feature a lot of custom geometry for special puzzles and environments modeled directly in-place.
We use common Blender objects with special naming conventions, which are later parsed by our tools. For example, an object ending with #area will not be rendered, but it can be clicked. #fw(name) forwards the click to another object, etc. Colors are also assigned by using the tool and stored in UV’s “T” channel.
We stole the tools from our old project — SEUM: Speedrunners from Hell. The tool exports .blend file into .fbx model and a C# class. Even though Unity supports .blend files, it’s much faster to import a .fbx. When you press export, the Unity editor script will detect the change and try to hot-swap the level.
The script generates a C# class with the names of objects in the .blend file. This way, code is less likely to break during runtime since you can’t miss-type. The bonus is that people with code-completion get a very nice experience scripting the level.
All interactions/sliding/movement are animations in Blender. We kept them in a range of 1–100; you can then set the value from 0.0–1.0 in the code to immediately go to that animation frame.
The game uses only a single palette with a single custom shader. Most things use the same material, so there are a lot of batching opportunities. Colors are picked according to object normals. Columns in the above image represent the faces of a cube. You can manually specify which color is used for top-bottom/left-right/front-back faces. This was useful in certain zooms where you want to make shapes more obvious.
Initially, we planned to support baked lighting, but it turned out to not be trivial to have nice lightmaps on a scene with varying levels of zoom. We would need large textures, which mean slow loading and long bakes. Also, the state of baking lighting in Unity and Blender was pretty terrible at the moment (2016). So, in turn, we decided to increase polygon budgets. That made productivity skyrocket, and the game settled in its art style.
Faraway: Director’s Cut is coming to Steam by the end of 2020.
Wishlist it on Steam: https://store.steampowered.com/app/883880/Faraway_Directors_Cut/
Join our Discord: