Tuesday, July 21, 2015

July project status

Couch is the ultimate weapon

Time for an update! There's lots of things going on and as a result we've again neglected this blog because of it. We're crunching new levels every day while optimizing the code and assets and doodling new art, but what else is new?


   I recently made a huge asset merge job. I combined the uv's of hundreds of objects to use the same texture atlas. This had to be done manually to optimize the texture space. Obviously it took a lot of time, but it was worth it: draw calls are dramatically reduced and some drawing order glitches with multiple transparent objects are gone.

Fire particles firing correctly through metal grids

We added this old guy back into the game:

He's a slower but tougher version of a normal guard, using hand cranked plasma gatling to gun down offenders. He was taken out for a bit due to rig hierarchy changes, but he's back now.

GUI troubles

I've also started working on the GUI again, which should look (yet again) a lot better than before. What it needs to do better is animations and notifications and our current implementation just isn't up to the task. What worries me personally, is the performance of the Unity's UI system; batching process takes a lot of resources on mobile. The performance is supposed to get better in September, but it's a pain to wait and work while not being sure of the final implementation.


One of the slowdowns engine-wise has been malfunctioning lightprobes. It's not critical to us YET, but hoping Unity Tech gets this fixed asap. It's an issue with gamma and quite easy to work around with shaders, but the solution is far from ideal. Here's an example anyway, should someone need it and not know about it; this is from Unity's mobile-diffuse -shader. To make it work, multiply the albedo/color by 0.625 (1.6 gamma):
void surf (Input IN, inout SurfaceOutput o) {
    fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
    o.Albedo = c.rgb * 0.625;
    o.Alpha = c.a;

And now on to game mechanics, read on...

- Sami Kuronen

Game Mechanics

Player shield

We took yet another step to simplify the gameplay and made the players shield as an automatic feature that you don't need to turn on and off manually. To balance things out, the shield now requires its own energy, separate from the ones used by GravGun, so it doesn't consume the power from the GG nor does it regenerate with it. Instead it requires to be charged, which can be done by consuming battery items that are found around the maps.

The automatic type shield makes it easier for player to deal with surrounding danger without extra hazzle, and the consumable objects required by the shield make it more worthwhile to explore the surroundings and do some looting. It's a win-win!

Breakable objects

As you can see from the .gif, we also put some breakable items to the game which are always a fun addition to any game. The extra rigidbodies and colliders don't seem to hog up additional resources, so performance isn't an issue either.

Despite being fun to watch stuff get blown to bits, it also serves a purpose as some breakable containers can have usable items inside, such as healthpacks, batteries, keycards, machine parts and so on, so let the smashing commence!

- Timo Kuronen