Custom Engine

80lv: You’ve mentioned that you’ve developed an entire engine for this project. Why did you decide to move in this direction? Why was your solution a better fit than Unity? What advantages of working in your own engine would you point out?

Making our own game engine was not a conscious decision. The very first prototype with a skiing cube on a tilted plane was made in C++/OpenGL. The idea was to switch to an established engine at a later stage, but as the prototype progressed it would take more time to rewrite the game than just to go on. At the time, GMA was still something we worked on in our spare time, so we didn’t really feel we had the energy to rewrite the prototype or to familiarize ourselves with Unity/Unreal.

Technically, as with any other custom engine, we were able to tailor everything for performing well on the mobile platform. We are not sure if we would have been able to fit the whole game on a mobile device, especially older devices if we hadn’t built our custom engine.

Beyond the technical aspects, using our own engine has had some artistic consequences. This might sound a bit hazy, but we think it inevitably makes the game a bit more unique as you constantly work around the limitations. For example, the engine lacks advanced scripting so in order to make each challenge feel different, we have had to rely on the design of curves, jumps, etc. rather than scripted events.

Snow

80lv: The game really shines in motion but first, I want to understand how you figured out the look of the snow. What way is this material rendered and how do you work with all the tracks, snow dust and so on?

We get a lot of questions from fellow indie game developers on how the snow is made. As with everything else, we experimented with a lot of techniques such as building a mesh for the ski tracks, putting our decals, or modifying vertices of the height data before settling for the current solution.

Basically, it is one large texture which is constantly updated with ski tracks. The texture is then used as a bump map for snow and as a lookup table for other materials (in the current version only asphalt and ice are rendered this way, but internally we have soil and grass materials which will be used in upcoming levels). To gain depth, we experimented with parallax mapping, but as most of the game is viewed from a top-down perspective, we switched to the less performance-demanding bump mapping which looks good enough.

Using one large texture gave us the luxury of being able to quite easily generate and blend various types of snow textures, for example, Manchester snow in pistes, wind-blown snow, and marks for rolling snowballs at steep sides.

The actual shading of the snow is a homemade shading model, different from the rest of the materials which uses regular Phong lighting.