The Battle for Treasure Island (Twin Stick Shooter)

Game Info

In this game you are a pirate ship who is constantly being attacked by royal ships, you either use a mouse or an X Box controller’s “twin sticks” to control the ship. One of the sticks controls the movement whilst the other controls which direction you shoot in. the same idea applies for the mouse and keyboard if no X Box controller is detected. To win the game you must survive for the full 3 minutes without being destroyed.


What went Right

X Box controller Integration

What happened? Integrating the X Box controller proved unexpectedly simple.

Why it happened? I expected that the 3rd party controllers would need all sorts of strange drivers and involve some unnecessarily, but this wasn’t the case. The X Box One controllers have plug and play integration with windows PCs and all you have to do in unity is assign the joystick axis.

How do we make sure it happens again?
Firstly Install the controller by plugging it into your PC, then in unity navigate to Edit > Project Settings > Input.
Here you need to simply assign each axis you would like to use to the relevant input. To see the Image axis numbers visit this page .

For more info on XBox One controller setup visit the official page

And if you need more detailed info on how to set up a scene visit this page

Image Reference

Bullet Impact Decals

What happened? Adding bullet impact decals worked well

Why it happened? After watching a GDC video I thought I would try to add bullet impact decals and it worked. This is a feature which I have seen on other games so I decided to try to implement it into mine.
This came about by my curiosity to try new things and my drive to push my development skills.

How do we make sure it happens again?

This is the code block which is called when the bullet collides with a wall.
where projectile prefab is in reference to wall mark game object of that projectile.

    void InstantiateDecal(GameObject _ProjectilePrefab)
        //Generates the bullet mark prefab as a new GameObject at the 1st point of contact. It sets the rotation of the mark to match the face of the object it hits.
        _decal = Instantiate(_ProjectilePrefab, _collisionPoint.point, Quaternion.LookRotation(_collisionPoint.normal)) as GameObject;

        //To ensure visibility of the mark we push it out a little from the surface.
        _decal.transform.Translate(Vector3.forward * 0.1f);

        //Correct decal rotation

        //Destroy decal after X seconds
        Destroy(_decal, _markLife);


Art Style

What Happened: The art style looked of high quality and suited the game’s theme very well.

Why it happened: Through my past experience as a freelance graphic designer I knew a few online sources where I could high quality find graphics. I used these PSD graphic templates to shortcut the art development and include professional art which was relevant to the game. The finding of these art sources was only possible because we had team meetings to discuss a clear game art and design style.

How do we make sure it happens again: Once you have a clear idea of the games direction, start looking online for inspiration example work and graphics you can use in your game. I used to do some graphic design in the past and found that the easiest way to produce high quality work in the minimal time was to customise graphic templates. I find most of these templates at graphicriver.net.



What went Wrong

Game is too slow

What happened? In play testing the enemies too too long to come in contact with the player.

Why it happened? The map was too spread out and the ships had to travel a large distance to reach the player. Also I managed my time poorly and didn’t leave enough time at the end of the project to find and fix this issue before submission.

How do we make sure it doesn’t happen again?
This problem could have been solved by pre populating some enemies on the map, or shrinking the map size, or by making more enemy spawn points closer to where the player starts.
This could have been easily corrected if I had managed my time better and allowed more time for play testing, feedback and alterations before the submission deadline. as a result the game was lacking in this area.
By allowing more time for testing and improvements at the end of a project these issues could have been avoided.


Not all planned features implemented

What happened? Not all of the potential features were implemented

Why it happened? Due to poor time management I didn’t allocate enough time to incorporate extra features into the game which would have made it far more enjoyable to play.
If I had devoted more time to the project I would have been able to complete the extra features and had time for play testing and feedback.

How do we make sure it doesn’t happen again? Time management is a very important aspect of producing a complete and successful product. I should have planned to finish the game before the deadline to allow for play testing and for extra feature implementation. I need to improve my time management skills and set my personal milestones to an earlier date in the timeline to allow for unexpected issues, play testing and improvements.