Saturday, 26 March 2016


Recently I've started to learn how to use the Unity engine. It has good documentation and accessible tutorials, so the learning curve is not steep. It has a basic set of standard assets, importing new assets is easy, and C# is a pleasant language for scripting. I think the main feature over developing my own engine is that the editor functions as a level editor too, so it's easy to start producing game content.

I wanted to try my hand at 3d games, so I created a simple demo game to see how far I can get, and decided to document it. It is one level of a puzzle game, inspired by The Talos Principle (which is an awesome game btw).
Sketch of the beginning area with actual models and some placeholders
I wrote my own scripts for FPS player control, mostly for learning experience, since the standard assets include such scripts. I also implemented the gameplay with scripts for controling doors and buttons, picking up (companion) cubes, and teleporting the player. Due to intellisense and the intuitive API, scripting is quite easy.
Added my first trees, grass, and tried to paint the terrain
There are some nice tools built into the editor that help creating basic content for certain kinds of games. The terrain editor can be used to sculpt and paint the terrain. Grass can be created as billboards from texture or from 3d models, and painted onto the terrain. The tree editor can be used to produce giant broccolis from mars, and also trees. It seems to use L-systems, and is an easy to use but versatile tool.
Fleshing out more parts of the level
I used Krita for drawing textures (it's a nice open source painting program) and Blender for modeling 3d assets. Learning blender is somewhat challenging. Due to the complex interface the learning curve is quite steep. I couldn't find very good tutorials either. The worst part is that most off the official tutorials are not free, which is pretty stupid IMO... how do they expect Blender to get popular if they restrict access to the learning material? Well, whatever.
Placeholders replaced with final models
It's not all sunshine though, I run into some difficulties. For example I spent quite a while trying to perfect picking up objects, and I had to settle with a mediocre solution (with object having physics disabled while picked up). I just couldn't find a combination of properties that didn't result in some physical weirdness.
The whole level from birds eye view
It's quite interesting to work on other aspects of game development (modeling, texturing, level design) than just programming. There are different kinds of problems popping up... how do I create interesting puzzles? How do I plan a realistic map? How to paint tileable textures? How to carve a cake out of a cylinder?
End of the level - it's not a lie
It's pretty cool for indies to have a full dev toolchain for free. Blender and Krita are open source, Unity is (mostly) free, and for coding MonoDevelop is open source, and Visual Studio is free. If only they all run on Linux...
Texturing my model in blender
I've also recorded a playthrough to have something better to show off:

It's not very spectacular, but I'm quite proud of it, since this is my first real 3d game. I always thought working in 3d would be too much work for one developer, but turns out it's manageable. Next I think I'll try to make an actual full game, it would be nice to have another full game developed besides The Silliness of the Lambs. I have many ideas, but must of them are too complex for a single developer. Also, my modeling and other art skills are not too great. Though at least I have time, and I'm having fun.