So normally people make machinima using a game engine that was made to play a specific game. Machinima purists would argue that these are the only valid forms of machinima and all others are ‘CGI’ or computer animation.

There are however specific apps being made now that will create ‘machinima’, and there are also general purpose 3D worlds with user-generated content that are used to make machinima.

Well I wrote a special app using Unity to make one specific machinima, and that’s the apps only purpose. It’s now useless.

That may be a first. It’s certainly a first for me.

So without further comment, I present “Bass Xylophone” :

Bass Xylophone from CodeWarrior Carling on Vimeo.

Because I can. That’s the only reason.

This was made using a custom app I created with the Unity game engine. I had the idea for a Bass Xylophone and built it with a fish model and a simple script that scales the fish up and places it along a track like Xylophone bars.

You can play the Xylophone with a mouse or on touch device, but I’m not very good at playing the Xylophone so I got a Creative Commons MIDI file and the rest is history.

dragonI recently had a chance to work with some extremely accomplished 3D artists on a product for Android using Unity 3D called Dragon Strike Live and it was quite an eye opener. These folks are used to working on feature films like Avatar, 2012, and Abraham Lincoln Vampire Hunter but they decided to try their hand at making a mobile game and I got to help them with some of the coding.

It was pretty cool to work with people who can do serious 3D animation. Most game programmers have worked with humanoid characters and are able to do basic animations and modeling of humans, but arbitrary creatures are a different story, and full blown dragons are quite a complex rig.

Not only do these dragons look way awesome but the animations are totally kickass and mind blowing. I helped create the code that randomly sequences them and even after watching these critters romp around the screen for days I can still waste lots of time just watching the animations.

Check out to see what kind of other stuff these folks have done, and if you have an Android, check out the live wallpaper app at

I’m looking forward to working on future projects with these guys. Hopefully some of their talent will wear off on me!


One of the biggest advantages to using Unity for 3D and mobile development is the huge stockpile of third party assets that are available for it. Many of these are free, and more have both a free and a paid version to use.

When I create a new Unity project, there are a bunch of these assets that I import right away because I know that no matter what kind of game I’m working on they will come in handy.

1. iTween

iTween is one of the most comprehensive tweening solutions I have seen and that includes within applications like 3DS Max, Adobe Premiere or other apps where keyframing is used.

Tweening is the process of interpolating between values over time and iTween offers many different kinds of interpolation curves. It also offers unparalleled ease of use for some things. It has simple commands called “Stab, Punch and Shake” that produce extremely convincing physical simulations that can be used for shaking cameras or objects.

iTween is basically ‘just a script’ but it is free, and it has become so popular that many other extensions rely on and extend it in useful ways. For example, some packages will add their own special functions as being ‘iTweenable’ and other packages will allow iTween functions to be used in their own user interfaces.

There is a visual editor extension available that allows most iTween operations to be set up and used without writing any actual scripts. Another extension called Playmaker offers similar integration.

2. B2M

Bitmap2Material is a procedural material generating utility that allows you to generate bumpmaps, specularity maps, gloss maps, and other sorts of map channels for advanced shaders automatically, but with many sliders for control over how they are produced.

Unity supports a procedural material system called “Substances” created by a company called Allegorithmic, and they produce both a free and a paid version of this utility. It allows you to turn a simple bitmap into a procedural substance basically.

3. GameDraw

Unity allows you to create what many would call ‘prims’ but it’s not a modeling package. You import models that you created somewhere else, but it’s a bit of a pain to boot up Maya or 3DS Max just to make a tessellated plane or a sphere with the normals facing inward for a skybox.

Enter Gamedraw. The free version works just fine and it lets you do vertex level operations on meshes right in the Unity editor. The paid version has a lot more features, but either way just being able to do basic edits on a mesh is extremely handy.

4. Playmaker

If you’re not a programmer, you might want to build a shrine to the people who made Playmaker and sacrifice your virginity to them or something.

Playmaker lets you visually construct your game logic using a flow chart like visual diagramming interface with boxes and arrows and such.

It has a lot of very lengthy menus that essentially comprise a giant cheat sheet for all of the programming functions there are in Unity allowing you to basically build programs without having to read any actual code.

Even if you know how to program, Playmaker can save a lot of time over making state machines the hard way, and if you’re just starting with Unity it is really handy to be able to browse the menus for neat things you can trigger when a state transition occurs.

5. Build Report Tool

The build report tool isn’t very exciting, but it provides a really excellent summary of the output of your builds. It’s kind of like the toilet plunger of Unity programming. I don’t really want to discuss it much, other than to strongly advise you to get one.


In any industry, each competitor seeks to distinguish themselves from the other competitors by providing something none of the others can offer. This is generally known as the ‘special sauce’ and I think I’ve found mine.

Most people have heard of the Arduino, but if you haven’t it is a very cheap and very powerful electronic device that hooks up to a computer via USB cable and allows software to control a huge number of real world devices like temperature, pressure, motion and other sensors, motors, heaters, light dimmers, electrical switches.

My education is in process control, which is precisely the act of reading such sensors and controlling such devices so Arduinos are definitely my thing, but what is a Uniduino?

Well a Uniduino is a library of C# code that allows the Arduinos functionality to be controlled from within the Unity game engine.

What that means is that I can create a game world that gets information from real world devices and uses that information to control how something in the game looks and acts. I can use input from the person playing the game to send information back to the uniduino to get it to do something in the real world.

The game world can be running on a remote server, and the person(s) in the game world could be logged in remotely, so this is the core of some interesting telepresence applications. Throw in some remote video cameras and you could do some serious things.

Remote health care is already being explored with video technology. How could it benefit from the added element of a virtual world? What kind of devices could we make for chronic care patients to allow them to live their own lives while being connected to and within reach of health care intervention when they need it?

Remote monitoring of many industrial systems is already commonplace. How could this be extended by adding virtual or augmented reality? Fixed cameras monitor a lot of installations – what about a 3D overlay (underlay) on the video to tell the operator where things *should* be when they are normal?

If you’ve played any recent first person shooter video games, you know how far we have come in recreating experiences virtually. We manage to get by using non immersive flat panels crammed with abstracted information from sensors that try to tell us what is going on somewhere else with our machines.

The next generation of workers will be able to walk around virtually inside those environments and see, touch, feel and hear what is going on.

As any old time engineer on a ship or a train will tell you, they can ‘feel’ when something isn’t right with the machine. We’re not going to ‘feel’ anything about our machines until we start making the man-machine interface much more immersive than a bunch of numbers on a touchscreen.

So we all want to write one set of high level code and have it run everywhere, and there are tons of frameworks and such that aim to help in that regard, and they all work in their own ways and to different extents, but the more whizbang you want, the less portable the means of achieving the whizbang stuff generally is, so you tend to have to accept something a little plainer to get it to work across most platforms, especially mobile.

So that’s where Unity comes in for me. It gives me WHOAA ability, or “Write Heroically Once Amaze Anywhere”.

The write once part everyone understands, but the ‘Heroically’ part is a bit obscure and is related to the Amaze Anywhere part. By “heroically” I mean that Unity lets you dive in and aim for the sky right off the bat and not be timid about just getting something boring working at first. There is so much leverage built into the basic system it’s easy to add nice touches to everything as you go along, even if it is experimental code.

There are also so many crazy cheap extensions and assets available for it, it’s easy to find something that you can usually just drop in to a project to add large chunks of functionality that have already been tried and tested by a lot of other people. There are a lot of people working on Unity, not just for the company, but as third parties serving other Unity developers, so you always have an invisible team working with you.

An example of that is the iTween plugin, which is actually free. It has a ton of built-in methods for performing automatic tweening with advanced control over ease in and out curves. It’s so easy to use and add to any project to do nice little touches like making buttons jiggle or shake a little when you mouse over or touch them. And dozens of other third-party products have incorporated it into their products and extended it’s functionality far beyond what the original author intended, so it has been thoroughly vetted by many pros.

Unity is a valuable tool for anyone making games, even if you plan to release a game built using native iOS code for one example. I have used Unity and some inexpensive sprite sheet tools to compose sprite sheets for a native iOS game we are working on at Brashworks Studios, and it is also very useful to do quick prototyping of things you intend to do later using native GL calls.

And don’t get me started on the fact that you can extend the editor quite easily with custom tools.

I think I’ve found my home…