For this iteration I need to link up the remaining player actions to make them more visual.
Specifically:
- Make if more obvious when the player is damaging the enemy.
- Make if more obvious when the player is hit by the enemy laser.
- Foreshadow when the enemy is attacking to allow player more time to react (e.g. particle system for laser charge).
- Make laser blasts larger so they can actually be seen.
- Add muzzle flash to both the player and enemies, so it's more obvious to to the player they have fires a laser (like a real laser).
- Change it so, when the player mines a planet, their score raises (other wise what is the point of mining planets, the player will forget about the mechanic).
- Make the score more visually obvious and when player gains points from planet mining, link it up to the front end more clearly.
- When the ship is stationary and receiving no player input I need to make the ship engine lights pulse as one play tester pointed out that because the lights do not move people will think the game is broken.
Implementation:
Laser Blasts:
A few players pointed out to me the laser blasts form both the player and enemy were too small and barely visible to the player and considering how fast the blasts were traveling in game I had to fix this. Because the visuals of the laser blast are done with a lineRenderer component built into Unity this was quite an easy modification. All I had to do was increase the size of both the start and end width of the line renderer positions. Initially I doubled the start and end widths, but this was still barely visible, so I doubled it again. By the end I decide to increase both ends to 0.8 since this will not take up half of the screen but is still decently visible.
Mussel Flash Player and Enemy:
Many players suggested I add a muzzle flash to the ships when a laser has been shot to make it clearer to the player a laser has been fired. At the moment a small laser beam can barley be seen and the player has no idea what the object is if they are able to see it. When a gun is fired or a laser blast from a film has been shot, there is often a muzzle flash at the end of the barrel of the gun when the bullet shot out from due to the amount of heat energy needed to fire the projectile at a great speed.
I decided to purchase such an item form the Unity Asset store by msgdi (msgdi. Web. 29 May 2014. <http://u3d.as/content/msgdi/sci-fi-muzzleflash-laser-pack/3Rr>). The pack came with a variety of different muzzle flash prefabs in varying colours. I went with a red one for the player to match the laser and green for the enemy ships again because the enemy ships lasers are green.
With the player I increased the size of the prefab to make it visible to the player when they are firing, and the muzzle flash switches it self off automatically in order to not break the player's immersion of the game.
The image above is the player's muzzle flash in action. I have increased the scale of it several times to visibility to the player. The enemy's muzzle flash is the same apart from it's green.
Making player damage more responsive and visible:
With the player damage (when the enemy damages the player) I have implemented a number of new features.
The first one being, when the player has been hit an orange light orb around the player with briefly light up and then deactivate itself. This is because during an encounter with the enemy, the player will probably be too engrossed in combat they will probably not look al their health bar that often even though the bar pulses when they are hit. I made the light orb orange so the player can easily link it to the health bar because both are the same colour (colour coding).
Another feature I have added (I'm sure about this one), is another damage indicator. The damage indicator is like something one would see in Call of Duty or in a space sim. When the player is hit the Texture will appear above the player for a short time, usually indicating where the damage came from. Because I do not have the time to reprogram my damage code I cannot tell the player where the damage has come from. However I will experiment with just placing it above the enemy near the glowing orb using OnGUI.
The last thing I will bring up is the blood splatter HUD cover. It's like a blood splatter across the screen in the players vision, so they know with out looking at the GUI stats that their health is low and they could die very quickly. I have added this into my game because it may help players work out when they are low on health with out having to look at their health bar whist in combat. I purchased this from the Unity Asset store made by (Ninjutsu Games. 12 Dec. 2013. Web. 24 May 2014. <https://www.assetstore.unity3d.com/en/#!/content/8797>). It is compatible with nGUI, and it has a camera shake script for when the player is damaged. I thought this was great because the camera shake had already been done. I wanted to add the camera shake to add to the responsiveness of the game on the visual size. However I quickly discovered, because it integrates with nGUI, it can only work with the nGUI root and the camera attacked to it and not the Main camera following the player.
To get around this problem I decided to get the .PNG files from the folder in the project where the UIDamage Folder was located and copy these images to a different folder in the project and delete the UIDamage folder to not take up more space. Basically I decided to use the blood splatter and damage indicator files on their own but in a different manner than using the it with the UIDamage Package with nGUI. I used them with Unity's "OnGUI" function for the player, this way the player will be able to see if from their perspective.
This blood splatter over lay, it's coloured white, but with the package that works with nGUI it can be tinted any colour and the image can be replace with something else obtained of created by the user. This image is white so it can be easily tinted to any colour for the users needs. I have added to my game in the OnGUI function of Unity. The idea is when the player's health is at or below a certain value (when the play has a quarter of their health remaining or lower) this appears in the over lay and it's alpha channel pulses in and out. This is a way of showing the user that their health is dangerously low with out then having to look at their health bar, and this should especially help during combat with an enemy ship. I have tinted this image orange through code so it matches up with the orange health box dropped by an enemy ship and the orange health bar in the front end. This way the player can easily relate the two items (orange blood over lay is the same colour as the GUI health bar). Also because the image is a .png and it has alpha channels, where there is no blood splatter on the image, the player can clearly see through it and their view of the game is not obstructed.
The image below is the damage indicator, for when the user has received a normal amount of damage when their health is at a normal level (e.g. above 50% health). I have also coloured this orange for the same reason at the image above. For the record I have taken screen captures from a picture viewer of both images because if I upload it directly form the source file, it could not be seen on this blog since the main part of it is white, with a transparent back ground (this could not be seen on this page). In the game I have placed it directly above the player's ship so it can be easily seen and it pulses in and out organically. Although I'm not sure about it because generally when these are used, it points to the direction which the damage came from and I do not have the time to implement this feature so it may be a little misleading, but I'll test it out any way.
Health Bar pulsing:
Along with the items above, when the player's fuel is low, the orange health bar also pulses when the players health is low (when it reaches 1/4 of the maximum health value or lower). I have added this into the game to give the player as much warning as possible and grab their attention when their health has dropped to a critical level.
Fuel Low:
With the fuel low I have added two new features. The first one being the blue fuel bar will pulse when the player's current fuel resources fall to 25% of their maximum fuel level (critically low) or lower. Like the pulsing health bar this is to grab the player's attention again. I would have used the blue refuelling light for this function as well but I thought this may confuse the player since this only activates when the player is refuelling at the purple ship.
As well as this a blue piece or 3D text appear above the player's score playing "Fuel Low". This is there to give the player more of a warning and hopefully grab their attention form the game. When the player's fuel has been replenished above the critical level, the pulsing stops and the blue text is removed.
Laser Gauge Icon:
For the laser gauge bar I found an icon of a ray gun which is widely recognisable. This way when the player looks at the laser heat gauge bar in the HUD they will be able to work out what the bar is for via the recognisable icon. I obtained the icon from "game-icons.net" and edited the graphic so the icon is red like the bar and there is no black back ground (Lorc. Web. 29 May 2014. <http://game-icons.net/lorc/originals/ray-gun.html).
Enemy laser charge particles:
I wanted to warn the play when the enemy was going to fire their laser at them. Initially I did this through text in the tutorial, however it was suggested I do this visually. I implemented this using a ready made assets pack I have already purchased from the Unity Store (the same one I have used the warp gate in the first tutorial level and the enemy spawning particle system). When the enemy ship is in firing mode (to fire a laser blast at the player) the particle system emits and the green orbs spawn from the enemy laser cannon. When the enemy fires, there is a green muzzle flash to make it more obvious a laser has been shot. After the enemy has ben killed or the player is out side of the enemy's range the particles switch off. This should hopefully give the player enough time and warning to work out they will be shot at with a laser blast. The particle system I have used for this is from the same one as the tutorial warp gate particle system (ghdalstjr130@gmail.com. Web. 12 Apr. 2014. <https://www.assetstore.unity3d.com/#/content/13998>).
Player Feedback:
Player Damage Responsiveness:
During play tests for this iteration, I had several play testing my game for general responsiveness of it. The first thing they noticed was how obvious it was when the player's ship was hit by an enemies laser blast. This was because they would see the halo drawn by the light component on the ship model, and how the health bar pulsed when the player was hit.
When the player's health was getting low players' could see that the health bar was pulsing and was attracting their attention mildly from the game. All players from this play test thought this feedback was very responsive along with the light orb around the player since both are the same colour to help the player make the link between the two. This was the player has two indicators that they have been hit by a laser.
Damage indicator:
I also added a health indicator to the HUD using the OnGUI function in Unity. Because the health damage indicator was placed directly above the orange light orb and there was no space between the two, most player's barely noticed it was there. Those who did notice it was there confirmed one of my thoughts, because it is fixed in one rotation (it has a little arrow at the top of the semicircle) most player's thought it was buggy and they couldn't see any enemy's in front of them if the enemy was attacking from behind. I could have modified the code so that if the damage hit a collider on the side it would show an indicator pointing to the left or right, but this would take too long to do and I don't have the time. To state again the damage indicator (I'm not referring to the blood splatter is at a fixed position and rotation.
Low Health Indicator screen (blood splatter):
During play tests for this iteration, I had several play testing my game for general responsiveness of it. The first thing they noticed was how obvious it was when the player's ship was hit by an enemies laser blast. This was because they would see the halo drawn by the light component on the ship model, and how the health bar pulsed when the player was hit.
When the player's health was getting low players' could see that the health bar was pulsing and was attracting their attention mildly from the game. All players from this play test thought this feedback was very responsive along with the light orb around the player since both are the same colour to help the player make the link between the two. This was the player has two indicators that they have been hit by a laser.
Damage indicator:
I also added a health indicator to the HUD using the OnGUI function in Unity. Because the health damage indicator was placed directly above the orange light orb and there was no space between the two, most player's barely noticed it was there. Those who did notice it was there confirmed one of my thoughts, because it is fixed in one rotation (it has a little arrow at the top of the semicircle) most player's thought it was buggy and they couldn't see any enemy's in front of them if the enemy was attacking from behind. I could have modified the code so that if the damage hit a collider on the side it would show an indicator pointing to the left or right, but this would take too long to do and I don't have the time. To state again the damage indicator (I'm not referring to the blood splatter is at a fixed position and rotation.
Low Health Indicator screen (blood splatter):
Whilst play testing this iteration, not many players could see the blood splatter, because it's alpha channel kept pulsing too quickly. However when I explained it to the player, they thought it was a good idea in general, along with the pulsing health bar, but they thought it needed to stand out more, to be more visible.
As much as people liked the idea of the blood splatter low health indicator, many players's thought it was strange having a blood splatter across the screen, then the player's ship is being damaged rather than the polite themselves. They commented the glass screen of the cockpit should have cracks in it and other damage in order to make it more immersive.
Bugs:
A number of players noticed a bug in my game, as soon as the player shoots an enemy, the next enemy spawned from that planet would automatically head towards the player and start attaching. This happens even though in the script when the enemy dies, all of it's variables should reset to the default value. I will debug this in the next iteration.
Muzzle flash and laser blast:
A number of player's suggested that the muzzle flashes (especially the enemy's one) should be larger because they could hardly be seen. It was also suggested I make the blast slightly more visible by possibly added a light to it to make it brighter.
Next Iteration:
In my next iteration I will remove the damage indicator because many player's did not notice it in the game when it was there because it was too close to the damage orb. Also those who did notice it found it to be confusing because it mislead player's be making them think the enemy's laser was coming from the front when it was not.
With the critical damage screen (blood splatter) I will replace this with images of cracks in glass to improve the immersion of the game. I will make the the image is in white in order so I can change the colour of the image to orange to match the health bar. Also it should fit in with the game more naturally since the player is inside a space craft's cockpit.
I will also add the look at statement to the tutorial in order to point the player in the direction of the spawned enemy ship when it appears. This should help guid the player in the game.
The other things I will do is increase the enemy's muzzle flash size, add light components to the laser blasts so they are lit up and brighter and easer to see by the player. I will also make the damage to the enemy more responsive. Possibly by changing the particle effects to some thing larger, added more particle system to it when it's receiving damage and added a few sounds to it so the player knows they have hit the enemy.
I will also fix bug the enemy bug, and find out why it is happening. Another thing is that during the enemy tutorial, after the player has mined the planet, text at the top of the screen reads "Warning Enemy Ahead". The enemy comes fro the left side of the planet, but I can't assume player's will be looking to this side. To fix this, during the tutorial I will use a transform.LookAt command to make the player look in the direction of the enemy ship, regardless of the direction the player is looking in the game.
With the critical damage screen (blood splatter) I will replace this with images of cracks in glass to improve the immersion of the game. I will make the the image is in white in order so I can change the colour of the image to orange to match the health bar. Also it should fit in with the game more naturally since the player is inside a space craft's cockpit.
I will also add the look at statement to the tutorial in order to point the player in the direction of the spawned enemy ship when it appears. This should help guid the player in the game.
The other things I will do is increase the enemy's muzzle flash size, add light components to the laser blasts so they are lit up and brighter and easer to see by the player. I will also make the damage to the enemy more responsive. Possibly by changing the particle effects to some thing larger, added more particle system to it when it's receiving damage and added a few sounds to it so the player knows they have hit the enemy.
I will also fix bug the enemy bug, and find out why it is happening. Another thing is that during the enemy tutorial, after the player has mined the planet, text at the top of the screen reads "Warning Enemy Ahead". The enemy comes fro the left side of the planet, but I can't assume player's will be looking to this side. To fix this, during the tutorial I will use a transform.LookAt command to make the player look in the direction of the enemy ship, regardless of the direction the player is looking in the game.
No comments:
Post a Comment