Dev Log #7 - Controller

I want to be able to support different controls eventually (particularly Xbox type thing). Unity3D takes care of a lot of this out of the box, so as long as I don't use point-and-click solely, it just works.

One problem I have is that it is difficult to tell what control effect you're having on the Cloudship. This has been exacerbated by moving the camera around. The controller will need to tell the player what's going on with the Cloudship. My plan for the controller was to group together similar things: helm, EOT (speed), compass etc on a barrel:

My Moleskine notebook with wine barrel and sheep wheel doodles

Rather than model it all in one go, I decided to do just the barrel and wheel. I've started collecting ideas on Pinterest so that time isn't wasted when I get to sit at the machine at home.

I'm keeping the models low-poly and every circle is a multiple of 6, which is a limitation but gives the whole thing a balance. Low poly modeling is a piece of piss. I'm tempted to break out Blender and improve my skills on that but I'm just so productive on Lightwave, it's ridiculous. The model below took me 20 minutes. I'm well impressed with myself about that! The wheel and barrel are on separate layers and I've centered them both in the exported model so that all transforms are done in Unity. No big deal, it's much the same in Lightwave Layout (the renderer). The centre of the wheel is super-plain because that's where the EOT is going, so you won't see it.

The completed model of the barrel and wheel

Exported from LW to FBX and imported in, I spent a huge amount of time getting it to stick in from of the camera without warping. I started with it as a child of the camera but the camera itself has scale applied to it, which is passed onto its children (which makes sense). So I tried putting in "empty" intermediaries to break the parent-child chain and applying a reverse scale (which worked until the camera moved). I tried making it its own independent thing

I settled on putting in an "empty" to act as a parent to the camera and the controller and the moved the "movement" script from the camera to the new empty parent. That was done in the UI, I didn't have to change any code at all! Which is nice. Unity does some clever "automatic" setting of position/rotation/scale so if you move from one co-ordinate system to another then it assumes you meant to change the position and rotation to keep the object where you put them.

The in-game screenie of the controller floating on its own.

Getting the wheel to move in time with the Cloudship was very easy. I experimented with making it its own physical object but it looked weird that the wheel would accelerate differently to the Cloudship. Realistically, it would need to lag ahead of the movement but that looked really odd. Instead, I just set the Z rotation of the wheel to a multiple of the Cloudship's yaw (Y axis). As the Cloudship is already under the governance of physics, the wheel moves pleasingly as if it is too.

There is enough here to make something of a video, so I fired up Fraps and took a snap for YT and Facebook.

As the controller is a real 3D object, it is lit by the rest of the scene. I might add its own light at some point so that it is illuminated regardless of what the scene is doing.

The next step is to add the EOT (engine order telegraph) for speed and Compass to show wind direction. A lot of the ideas I'm using here are just reproduced in those, so they should be much easier to make.


looks cool

one thing I noticed in the footage was the controller object was casting a shadow on the world which looks a bit odd. Minor thing in such an early test :D
Pretty sure you can just disable cast shadows for that object in its properties.

You should add some particle systems to the chimneys that are linked to the engine state it would add to the immersion and also be a nice visual indicator of the current state as well as your telegraph thing.

Evilmatt's picture

Excellent spot! You're right that the controller needs to not cast a shadow on the world. I'll see if I can fix that; you're right that I can turn off casting shadows entirely but I want to keep the self-shadow (where the wheel casts shadows on the barrel). I'm sure that there is a way of doing that without writing a shader (which I'm avoiding for now).

I completely agree about the Cloudship getting particles, it should definitely get that. It's quite easy to do; much easier than the clouds! Having it puffing really hard would show that you're full steam is definitely needed. The model is only a placeholder, I am going to replace it with a "building system". The bad guys will be simple models like this, so I'll put some particles on their chimneys when I get to them. Once I get the "cloudship builder" thing in then each of the modules in that will have their own animations and particle systems.

This morning I set my alarm early and did some 3D before the school run stuff:

I've added the Engine Order Telegraph onto the front of the wheel. It's a little difficult to see in this picture but the handle will move when you select a certain speed. Right now, you have to hold down W, which is a pain. I want the player to select a speed and for the Cloudship to keep going. It's only the model so far, there's no interactivity but I'm pleased with myself for getting up early to do it.

And it's missing a texture...

brainwipe's picture

cool looks good so far.
Given the state of some of the steam direct stuff you could ship now and be as good as if not better than some of these alleged developers efforts :D

Evilmatt's picture

LOL! Harsh. I took a quick look at Steam Direct and although I appreciate why they did it; most games are just going to get lost.

There's no actual game yet. I think that once I have enemies you can destroy, then it's a game. After base building/management, and quest system, then it's the game I want.

brainwipe's picture