Design: Change of the world

One of the most important Design decisions I have made is to change the World of this vidogame. Now, the aliens don’t come from the space, but they come from underground. This change help me to create a good enviroment around the game, because now, the player is controling a remote turret, and must defend his base from an underground menace. Also, the flying barriers are a problem (because you can destroy it) so now, this barriers are on the ground and everything have more sense.

In next steps, the aliens will change, so it looks like insect. Also, they will have diferent powers (like shot different bullets, have bigger size, etc..)

 

Weapons: Missile

This is the basic bullet that the tank will shoot. The behaviour is simple, when the missile hits one of the aliens the both disappear. If the missile don’t collide with any alien it will destroy itself in 2 seconds.

Missile1 Missile2

In Unity, once you have created the missile model (the texturization will be made later) you include in your project and add some Components. This components are:

One RigidBody that will not use the Gravity simulation, because I want that the missle moves straight.

One Collider to know if the missile collides with the rest of models in the game (particulary with aliens and barriers )

One Particle System that will simulate the “halo” or “smoke” that impulse the missile (is only an effect )

One usual Script that kill the object in a time, because if the player don’t hit any other model, we want that the Missile dissapear.

Finally, this model must have a Tag that Identify as a “Bullet” so when the collision appear, the model that receives the collision knows who are hitting it.

The code below shows the script “MissileBehaviour”. This scripts knows if any collision is produced, and if it was with a barrier or an alien, destroy the missile. However, if the missile don’t collide with anything, it will be destroyed when the life_time has passed.

using UnityEngine;
using System.Collections;

public class MissileBehaviour : MonoBehaviour {

	// Use this for initialization
	public float life_time = 2.0f;
	private float amountOfTime = 0.0f;
	void Start () {

	}

	void OnTriggerEnter(Collider other)
	{
		if( other.tag == "alien" || other.tag == "Barrier" )
		{
			Destroy(this.gameObject);
		}
	}

	void Update()
	{
		amountOfTime += Time.deltaTime;

		if( amountOfTime > life_time )
		{
			Transform[] ts = gameObject.GetComponentsInChildren<Transform>();

			foreach( Transform child in ts )
				Destroy( child.gameObject );

			Destroy(gameObject);
		}
	}

	public void changeLifeTime( float newLifeTime )
	{
		life_time = newLifeTime;
		amountOfTime = 0.0f;
	}
}

Missile

PowerUps and PowerDown

To give more deep to the gameplay, I have created some powerUps that the aliens drop when they get killed. This powerUps are from diferent types and improve different parts of the tank. Otherwise, the aliens cand drop ProwerDown too that will affect negatively to the player.

All this powers are random, the alien will throw away when are destroyed and the player need to move to get them (or avoid in power down case ).

Power Up’s

The game have different powers. The firs power changes the bullets in the tank, so the player can destroy more aliens in a short period of time. There are 3 tipes of bullets: Two-Missile, Laser and Bomb.

Other power creates a shield over the tank, so the aliens shots can’t destroy the tank. Also, there are two types of shield: Rebound shield (the bullets rebound) and GravityShield ( the bullets stops in the shield and when it dissapear shoots to the aliens).

The rest of the powers change properties of the tank, like give extra lives, restore all the barriers or create an extra ship that help the tank to destroy all the aliens.

Power Down’s

On the other hand, there are some powers that are bad for the tank (and for the player). It will stop the tank, reduce the speed of movements or the speed of fire in the tank.

Basic Mechanics

Well, in this post I’ll explain the basic mechanics of the game. As in the old space invader game, the main target of the user is to destroy all the alien invaders. To do that, he can move the tank horizontally and shoot missiles.

Also, the user have some “Barriers” that will intercept the alien shots ( and the tank shots ).  The aliens shoot to the tank, and when they decrease its number, they will speed up its movements.

In the first version of the game, there are two levels. The main level, where the player must destroy several squadron of aliens ( each squadron will move fast ). And a Random level, where the aliens will be appearing until the tank dies.

Models

As you can see, the initial models are totally based on the Space Invader’s original game. I would like to change it and created a original/more realistic models, but in this moments, this models allow me to visualize my game and try somethings in Unity. This models are made in 3D Max and created to be “destroyed” (when a bullet hit them ).

The hierarchy in the models are important, because I can animate the models using only simple movements (without a complex animation in 3D max). In this moment, the models are separated in its Base, and the legs/things that can move. For example, in the tank, the wheels and the cannon are childs of the main base, so I can only need to move (and rotate) to create a simple animation in time. In the future I wish create some special animations in the new models.

Models

Models

First update

For my first update, I will show my new project.
Its a revision of the classic Space Invaders Game, but with new features and more mechanics.

For the implementation of this game, I’m using the game engine Unity.
The game is not complete yet, so I’ll show the new updates that are commings. By now, I have model all the assets in the game (aliens,tank, etc..) and I  implemented the principal mechanics of the game. The gameplay is similar to the classic, there is an invasion of aliens and the user controls a tank, but this time, we have some special weapons, different special effects and differents levels (by now, a main level and an endless random mode).

Preview3