Thursday 1 May 2014

Improving the enemy tutorial


Idea(s):

After my last play test and iteration I gained feedback. Players' liked how there was more variety in the game level now with the varying planets. I will keep this feature. However as I guessed, they needed to learn how to kill the enemy ships in the level. Also player's wanted to know when they were damaging the enemy ship and when they were receiving damage.

Implementation:

Mini Tutorial Level:

Initially I started creating a miniature tutorial level for the enemy ships. This took up half of my day. I planed a planet in the level for the player to mine, and an enemy ship for the player to investigate. After the player goes near the enemy, the enemy ship attacks the player, only damaging them slightly. I also reduced the difficulty of the planet mechanics in this level. This is so the player has time to learn the new mechanic. The enemy slightly damaged the player, reducing their health. Then a health bar appears in the HUD. The player is told about this.

The enemy's firing rate is reduced so the player has time to learn everything. Then the player is told how to fire the laser. When the enemy's health reaches zero, there is an explosion using a particle system and the player's score goes up.

Reconsidering the mini tutorial level:

After I built the tutorial level I played it through. There was a lot wrong with it again. Yes I showed, the player their ships health, but I did not link up the HUD to the health again, the bar just jumps in size. Also there was little indication as to how much damage the enemy had taken for the laser firing, and the laser worked more like a bullet. I.e, it would switch on for a brief time, then off, rather than for how long the player pressed the button for. As well as this, the tutorial was buggy and I needed to have some more level design. I worked out I needed more time than what was available and I wanted to improve the economy and mechanics of the game level rather then be bogged down by another tutorial level.

With this in mind I decided to leave this level alone and create a mini tutorial intro in the main game.

Re-creating the level:

Mini tutorial sequence:

Firstly, if the player starts playing from the first tutorial level, this triggers a static boolean. If this is triggered, the tutorial starts in the game level. After the intro screen the player can travel to any planet.

Showing Radar:

Where the player is positioned at the start of the level (in the middle of the Unity scene ), there is an "isTrigger" collider. When the player exits this collider and before they interact with any planets, the ships radar appears in the HUD in the centre and 0.5 of a second later, text is revealed saying "Radar". I added this because many players requested this feature because they said they became lost when exploring the level.

Enemy Ship:

Around some of the outer planets there is a patrolling enemy ship. If the player is near enough to the ship, the enemy ship will travel to the player. (I have made sure the player can't see anything else distracting during this event, apart from the planet in the background, as to not confuse the player) When it is travelling to the player, large text appears above the ship saying "Enemy Ship". This disappears after a second. A few seconds after this, the enemy ship fires it's laser towards the player. The player ship releases a small amount of sparks, I tried making the own sparks form the particle system, but this took too long and I couldn't achieve the result I wanted because it made the ship look like it was flying downwards. I used one the built in unity legacy particle emitter prefabs. When then enemy stops firing for a second, the sparks stop. The enemy keeps staring and stopping until it has been blown up by the player.



(Image above is the enemy ship text, the image is the laser fire instruction)



A few seconds after the play has been hit the first time, the health bar appears in the HUD, and text reads, "Health bar". The bar gradually reduces in size (x axis), when being hit to indicate what it's linked to.



The laser heat gauge bar appears and starts filling up slowly. When the player releases the middle click button, the bar shrinks quickly. Text appears about half a second after it is revealed saying what the bar is, the bar is also the same colour as the laser, this helps link the laser to the HUD. When the laser cools down from short bursts, is reduced in size quickly. When the bar is used a lot, e.g. to full, the laser over heats and the player can no longer use the laser until the HUD bar has shrink in size so it can't be seen. It's alpha channel also pulses to make it more noticeable by the player.




When the player is hit by the enemy ship, it also spawns sparks to show it's being hit. Another feature I added was a smoke particle emitter prefab (again from Unity's built in assets). I tried making my own, but again this took too long and the smoke was perfect for my needs. On both the player ship and the enemy ships, when their health values reach 50% or lower, smoke particles start spawning, so the player know things are getting bad. E.g. if the player's health is 50% of lower, the player ship emits smoke but not the enemy. If the enemy ship's health is 50% or lower, the enemy ship will spawn smoke and not the player.

When the player has destroyed the enemy ship, it explodes, and text at the top of the screen read "You have destroyed the enemy ship" and the player's score in the HUD increases. After this the player has completed the tutorial and can carry on with the game.

Player Reactions:

When the enemy ship appears players thought, the text was too large and part of it could not be read because it was off screen with how large it was.

When playing, many people requested the enemy ships drop wither health or fuel because the player is low on both after the battle.

Many people requested audio feed back with the player's actions, such as attacking, giving and receiving damage, better explosion sound and better game over sounds and get a back ground track.

Give the enemy a different colour laser weapon form the player. E.g. player has a red laser, enemy has green laser.

The player needs to be seen in the radar so they know where they relative to the game world.

Bugs found:


  • When the player dies, they are sent back to the first tutorial level, regardless of where they are in the game. After they complete it again, the player is sent to and old unused level.
  • Some times the player attaching the enemy does not work correctly.
  • The enemy ship can attack the player from a great distance but the player can't do the same.


Next iteration:

Many play testers liked how the enemy attack system was more like a laser than a bullet and the amount of damage the player received is enough (not too much or too little).

Next iteration I will add some more sounds the players actions, like laser firing and damage sounds.

I will also add a health box in the next version, probably when the enemy dies it will spawn a health box which the player can go into and collect health.

Another thing I will make the enemy easier to kill. I will reduce it's health form 7 to 5.

No comments:

Post a Comment