RAGE MOVES!!!

When looking into adding more unique characteristics to each character. We decided the best way to do this was to add special rage moves based on each animal. Each move uses the animal’s natural attack instincts, a bear for example rears up and will swipe at its prey.

gorillarage

We started by creating some test animations for the elephant. The elephant needs to have an epic strong move and as most danger of elephants comes from when they stampede and charge, it made sense to use this as it’s rage move.

This seemed strong, but was weak visually, it needed a bit more impact at the start. So we decided to make it get angry and burst into a speeding charge. To do this we added an animation where the elephant jumped up and stomped the ground with a big blast impacting all the zombies around him. This works great as the elephant is a slow player, making it hard to run. More and more zombies surround the elephant making the player  start getting desperate, then they hit the rage button and the elephant rampages across the map!

elephantRageRe

Next we started working on the duck. The duck has a unique ability, as it is the only flying animal we currently have, so we wanted to make sure we included that in it’s rage move.

After much discussion we decided that the duck would have the ability to manipulate the air around it causing a tornado. The tornado will suck up the zombies spinning them round in the air, then dropping their bodies to the ground to cause damage.

duckRage

Snake Struggle

We looked at all the creatures that we created for the previous specials and wanted to create more. Thinking a snake would be easy was a mistake. The problem didn’t come with the modelling, that was easy and it was modelled and textured in a short time.  What was difficult was the animation of it moving. Want it to sliver in a kind of ‘S’ shape and go around the level with a cannon on its tail. Shooting it at any Zombies that it can see, one of the best companions in the game.

snakeRender

Takling this sliver I created a rig that was using bone rotation with the root being at the centre of the snake to be able to arch the neck upwards when its shooting and spin the tail around before shooting. This didn’t work when trying to rotate the bones to match the S shape. The snakes body needed to pass through its own line and continue forward. Tried a few different ways to rig this and kept hitting a block where the snake would almost straiten out between keys breaking the S shape.

Rob tried another solution which was to programatically make the snake bones move in a frequency. This created a wave like structor to the animation but didn’t look like a snake following its own line. With no control over the head movement and would have to create a script to merge it to the animation of the snake shooting.

snakeSliver

So we were working late trying to solve this problem both went home and were still like what are we missing this should be easy. I started to think how I would do it in just an animation program without thinking about how to put it into a games engine. I would use a spline deformer in Modo or Maya (I use Modo 701) to create a spine like deformation and create the correct animation keys moving forward. The hardest thing to get my head round was that this kind of animation doesn’t transfer well or sometimes at all. I thought again how I can do this with bone animation and not with spine. Combining both techniques and made locators that follow a curve down then made the bones link to the position of each of the locators. The snake followed its own body and transferred to unity. It worked. One problem with this is that it created loads of game objects that unity didn’t need and the spline made it impossible for me to do a animation of it shooting. Thought about it a little and figured how the game engine uses the animation and how it can transfer between characters with the same bone structure and naming. Created a Modo animation of shooting in a separate file to the S animation with a totally different rig but with the same bone structor and only the necessary game objects. Imported both into unity and applied them both using unity’s mecanim system. Checked the blend to see if it work and it did. Sliver then curl up and shoot.

Rob was looking at the programming of the snake at the same time trying to make it sliver round the level using programming. He created a movement of each bone following each other which created a snake that was long and had no S shape to it but slivered round corners and other areas perfectly. Couldn’t blend to shooting at this point. That would require whole new script. It didn’t have the characteristics of a snake S shape and looked to see if we could give it more shape. Combining the frequency movement from the previous day. Still didn’t look right.

So we went for the animation method. This seems to work well with the snake slivering round the level and then shooting at zombies. The disadvantage of it is that it doesn’t move round objects as smoothly. Think we will in the future look at ways of combining both methods and create smoother more organic movement especially in corners. Looks good for now.

 

Friendly Flamingo Turret

Created a flamingo turret this week. The aim was to create a turret that can stand in one place and scan around and shoot zombies it sees. We were thinking of a few animals but both thought a pink flamingo has a funny kind of comical element to it. Looked at a few pictures and did a few tests to see if the size would work and how it would look. A couple of hours later flamingo was born.

flamingoRender

The flamingo needed some characteristic animations. The classic flamingo we think of standing on the one leg and with an awesome beak and backwards knees. Created some animations of it shooting. We also needed some characteristic animations of a turret so created a small animation of it unfolding up when you put it down. The mixture of both a mechanical look and an organic look worked well. I added abit of personality to the shooting animation with the head swaying backwards and forward and it almost looks like its laughing really enjoying shooting those zombies.

Programming up the turret Rob looked at it rotating from the feet and scanning round. This looked very mechanical too much so that it just didn’t look realistic. Flamingos are elegant creatures that move there bodies slow. So we needed to change the way it scanned around, creating the rotation on the neck so it looked around then turned its whole body round and started firing at the zombies. Looked much more natural.

The Friendly Flamingo Turret is a great small companion to give you backup.

flamingoTurret

 

Play testing with Nephews

Was at my sisters recently and my  three nephews who are 4, 6 and 8 kept asking about my new game.  Natures Zombie Apocalypse is aimed at more of the 11+ age so was pretty hesitant on showing the game to them. The eldest helped me colour up one of the zombies and realised that kids have the most gruesome imagination. He was like I want brains showing with blood his ribs showing and creepy reddish colour. Asking my sister if it would be alright to let them play the game I opened my laptop and hooked up 3 controllers.

Showed the eldest the game first see if there were any game breaking bugs. Set up two players, he chose to be the gorilla and I was the bear. Took him a little while to get used to the control aiming. At first he was aiming in the direction he was going then I showed him the second joystick on the control for aiming. Think we will need a nice tutorial for controls.

Few minutes later and he was running backwards and shooting zombies. All going well…. then the other two nephews get all nosey and find us playing and want to join in. Now its gets interesting wanted to see how the dynamics of a group would play even if they are different ages. Its a true test to see if the Co-op experience gets them working together and communicating with each other to help each other out. The youngest took a while to get used to shooting zombies and ran out of ammo really quickly but I held back on giving him too much of a tutorial just to see if the elder nephews would help him out. The eldest strait away told him to go to the ammo box and press to buy ammo. The aiming slowly got better but was always with the one movement stick. Great exactly as I expected a novice way of playing and an expert way of playing. 6 year old Nephew didn’t need much guidance just learnt from his younger and older brother.

I left them playing together and interestingly they started to build tactics the eldest started to defend the young ones and guided them to shoot zombies early to gain some points to buy a stock of ammo on each of there three guns. They then started moving together in a group keeping close to each other and one going round one side of the cars and other two going round the other covering each others backs. Then things started to go crazy around round 5 when more zombies were coming and the youngest found that throwing grenades was funny when a big group of zombies character rag dolled and fell to the floor. At the moment the grenade button isn’t limited to just one or two grenades its infinite he just kept throwing them in all directions making it quite hard for his brothers to dodge. How do the brothers deal with this. Well they teach him how to use all three of his weapons one of them being the flame thrower. Awesome he says and starts shooting fire around zombies that are surrounding his brothers.

When they all died they decided they wanted to choose some other and characters guns. I gave them free choice of the guns and they chose there own animal. Madness getting even more crazy so they all go in with strong random weapons and 6 year old nephew chooses the freeze canon. I could tell he was thinking despicable me because he strait away said Freeze Ray. Pressed play and watched. They shot the first few zombies went for ammo on all there guns (its still in tester mode ammo is soooo cheap) and started to work together defending each others backs. The eldest nephew spotted that frozen zombies are easier to kill and worked with his brothers to get them freeze them and shoot them all in a bunch. They got a few waves further on the game and left them clicking replay.

Fun had to stop at some point and easiest way is Dinner time. So we stopped playing and they started chatting between them about the game. “You kept freezing the zombies while I shot them”. Think overall for a small test it stood up really well. Some of the guns didn’t quite work right and few bugs.

Looking forward to adding more to the weapons changing the dynamics of how people play together. The crab turret in a previous post should add some interesting strategies.

 

 

 

Suicidal Snail

 

Modelling the snail making it look realistic but with a comical, kind of threatening look. Snail with TNT suicide belt sounded like fun. Created a snail and strapped a small three stick TNT to the snail. It looked a bit pathetic and very unbalanced. Went to work on changing it. Made the snail a bit bigger and strapped the TNT all the way around the shell. It looked like a snail with a warning. Big red beacons on the side showing that the snail is more then just a slow moving creature.

snailRender

Graphically what else can I add to this creature. A snail trail, lets just use the standard trail renderer and created a funky looking texture. A shiny texture with a sticky kind of web like look too it. Tried it out added a slight yellowish tint and it looked to be working. One problem hit the snail with a grenade it goes flying up into the air with a trail behind him.  To me this didn’t look right to me. It should just fly up into the air or even just explode. I think the trail should disappear. Kind of looked like a slimy trail stretching from the floor. Is this a good thing. Lets try both and see what looks better.

When does the suicidal snail have enough and just want to give up and blow. Well we added some Logic to the way it thinks. So if only one zombie comes in range it doesn’t explode unless its really close to it. But when theres a few zombies in range its like great I’m in a group GOODBYE ZOMBIES!!.

The Crab Turret!

Creation of new random weapons in progress..

Each character is created with the animals intelligent design in consideration – the characteristics, the movement, the colours etc. First up, the crab turret.

The crab turret was designed to walk from side to side but, with a huge minigun stapped to its head.

crab

Designing the crab was straight forward as I wanted a typical crab with big claws and six legs. I managed to dig up some photos I took from a holiday on Puket beach where I had taken a series of photos of crabs running along the beach (legs looking like they were on fire).

To animate the walk I started by making the legs run from side to side with one leg keeping the crab balanced whilst the others grapple across the ground. I realised that this allowed the crab to walk both left and right which saved me some time as I did not have to duplicate the animation. With the crab scurrying left and right it was now time to focus on the turret.(animation)Placing the mini gun on the crabs head proved more difficult than I had anticipated. I decided to strap the turret to the crab, to hold it to its head. However getting it to look just right took some fine tuning. Placing the mini gun above the head with the handle inside the crab made it look like it was wielded on to the crab.(picture)Great it’s almost ready to go. Wait, colour! I knew I wanted a red crab – a quick search through various photos to use as reference and found a few close to the colour I wanted. I used these to paint the crab tinting textures to get them to merge with each other. Texturing the gun. As I already had a mini gun I decided to make life easy for myself and use the same texture.. After a little programming and seeing the turret in action we wanted to add an animation of when the crab runs out of ammo or health. Initially we we were thinking it would rag doll and collapse on its own legs. After testing it we thought it needed a more dramatic death. Something that makes it more obvious its out of ammo. Jump up in shock and flip over sounded like a plan. So I created a dramatic animation for the death.

crabTurret

We also planned that you could give ammo to your crab turret keeping it alive for longer and making it a lot more useful in game. Rather than creating another animation, I created a blend to show it going from death back to full health, which worked perfectly.

How does the crab turret work and play? Play testing this on the street level with a few people. The crab turret has some great benefits playing it as your own personal backup. Holding the line you can shoot the oncoming horde from one direction and your turret can go side to side on the road shooting the zombies with you. Think with turrets I always think of there turrets from Alien and think I want to defend a corridor full of enemies. Crab turret does this but the corridor can be wider.

This will be one of many turrets types, each with there added benefits..

 

 

 

 

 

Making of Tower Bridge

We have decided to make levels that are some what British. So we started to make Tower bridge, not to be mistaken as London bridge. I mocked up a small block version of it to test how it would play on the game. Discovering that the camera needs to be on one side of the bridge so you can see the character. Placing the player spawn points on one side and a mass of zombie spawn points on the other made the level work as if the zombies were trying to get over the bridge for there next meal. The bridge was looking plain so I added some cars and road blocks even a few of the side fencing to get in the way. Surprisingly  it resulted in the zombies doing crazy jumps towards the Animals. All the fast zombies run like mad men across the bridge.

Screen Shot 2014-10-14 at 12.57.52

To create a more finished design, I went to tower bridge with my camera and took pictures to use as textures. I must of looked like a really strange tourist taking closeups of bricks , floors and paint work… Screen Shot 2014-10-18 at 23.26.26

Back at the studio I started to make a cleaner model with the reference and using the photos to texture the bridge. Some of the images needed to be flattened to match the look of the game. This involved taking a photo that was at a slight angle and getting rid of the perspective on window frames, door ways and arches. It took a long time to get right. Screen Shot 2014-10-20 at 18.31.51

UV mapping cleverly I managed to keep the texture quite small . Most of the bridge is repeatable from the two big towers to the bridge banisters. So took this into consideration when laying out the textures. Creating Tiles that can be used across multiple places and details like windows that can be on both sides of the tower.

towerBridge_jumpers

There is still work to do on the level but bridge is almost done. The thing with doing this level is that it’s not just the bridge. I’ll have to put detail into the water and also the background building. My plan is to create repeatable windows that can be used in tiles across multiple simple building shapes and also iconic ones like London’s town hall.

The water will need to use a shader with animation on it to make the waves look good. I took some photos of the Thames water and its defiantly not blue! So I’m going to attempt to use shader forge along with research about water shaders to create an awesome final shader.

 

 

Using InControl in Unity for Local Multiplayer, reconnecting controllers

InControl is an awesome plugin developed by the guys at Gallant Games. What it does is allow super easy configuration of multiple input controllers to give similar outputs, meaning you only have to setup the controls for your game once, rather than for every single different type of controller you would like to use. This allowed us to quickly setup NZA to run with Xbox360, PS3, MOGA ect. controllers with minimum effort.

So InControl  is great, but where it falls short a little bit is when a controller disconnects and then reconnects. Now this is not InControls fault, the problem lies with the fact that controllers don’t have unique identification codes , read more here.

How did I get around this problem? Well if the game was singleplayer there is a simple solution, use InControls built in ActiveDevice. This uses whichever device was last touched to give the output, so as soon as the device reconnects it works again. But I have multiple controllers being used at the same time, so ActiveDevice is no good.

So here’s what I did.

When a new player joins the game, they are assigned an InputDevice to there profile. This device is then also added to a static List<InputDevice> “playerDevices” on the GameController. On the PlayerController an int “deviceID” is also assigned for quick reference to the device in “playerDevices”.
Now thats all setup we create an InputDevice “mInputDevice” on the PlayerController like so:

InputDevice mInputDevice{
        get{
            return GameController.PlayerDevices[deviceID];
        }
    }

Now the PlayerController will always reference the list in the GameController to find it’s device.

Now we just make a small addition to the InputDevice.cs . Adding the following line lets us keep track of which devices are attached.

public bool active = true;

Now we know if a device is active, we add this to the Attach and Detach events:

void DeviceAttached(InputDevice device){
   Debug.Log"Attached: " + device.Name );

   for (int i=0;  iGameController.PlayerDevices.Counti++) {
       InputDevice InD = GameController.PlayerDevices[i];
       if (!InD.active){
          if(InD.Name==device.Name && InD.Meta==device.Meta){
                GameController.PlayerDevices[i]=device;
                break;
            }
        }
    }
}

void DeviceDetached(InputDevice device){
    Debug.Log"Detached: " + device.Name );

    foreach(InputDevice InD in GameController.PlayerDevices){
        if (InD==device){
            InD.active=false;
            break;
        }
    }
}

What this does is set the device to be not active when it is disconnected. Then if a new device is connected with the same name and meta data it will automatically assign it to PlayerDevices list, allowing the player to continue playing!

Obviously if another identical controller is connected before the original one, the controllers will switch. But there is nothing that can be done about that.

If you want to remove a player from the game (they quit) then you can just set their device to null (in the PlayerDevices List). This way it wont effect the other devices.

So that’s working so far for me, feel free to post in the comments if you have a better way of doing this!

Mysteries of shafting 

I have been working on the character movements today and found that the shafting animation of the bear (that’s the side to side animation) wasn’t quite right. I was making the legs move from parallel to apart, instead of a crossing leg motion.

So why did get this animation wrong? The bear has such short legs and wide hips he can’t exactly cross his legs properly.

Once that was fixed, the animations faded from back to side to forward better but still didn’t look quite right. What was it? Simple mistake it was shafting left when going right and right when going left, whoops! Quick fix looks better at last :D

bear_shafting_wrongwrong!
  betterbear_shafting_game

Sticky Grenades

Working on sticky grenades today, didn’t think it would be too hard. I hoped it would work as follows, throw grenade, wait till grenade hits object, parent grenade to new object and then remove the grenades rigidbody.
Which did work great… On walls…
The trouble was when the grenade attached itself to a zombie, it attached to the main capsule collider not the individual bones of the zombie…

Screen Shot 2014-10-15 at 21.06.34

As the zombies are rigged for ragdolls, it shouldn’t be too hard to use those colliders for the sticky grenades. The problem with this plan is we don’t want the bone colliders interfering with the animations. The easiest way to do this is to make them triggers. So now I have a load of colliders that I want the grenade to stick to, but I want the grenade to ignore the capsule collider.

So I thought of a few ways of doing this, I could make a new physics layer for the grenade which ignores the capsules layer. But that seemed a bit messy.

That’s when I realised that the grenade didn’t actually have to do any colliding, as it could stick to the first thing it hit. Boom, the sticky grenades became triggers, which means the grenade wont physically collide with the capsule. Now using a little bit of extra code to ignore the zombie colliders and everything works!

Screen Shot 2014-10-15 at 21.24.22