About the Game

About the Game


'Steam Punk Robots' will be an immersive 3D game designed to run on Mac/PC platforms. It will be compiled in Unity and coded using C# and a Plugin called Playmaker.

The theme of the game is steam punk; it features a playable character called 'Rusty', who is a Foreman in charge of the worker robots working on the space station. While working one day, small objects start to land on the station. They turn out to be transmitters transmitting a signal that turns the workers against Rusty so they can take over station. The only chance Rusty has of saving the space station and himself is to find and decommission the various transmitters controlling the worker robots, and find out who is sending the transmitters and stop them.
As the player, you take control of 'Rusty' and must work your way through a multitude of engaging levels and tasks whilst avoiding various obstacles, and the worker robots. Each level will feature three different routes of difficulty and levels can be completed by finishing any one of the routes. This gives players of all abilities the chance to play through and complete the game, whilst not impacting on their enjoyment.
Each level will have items to pick up that will aid you on your mission to complete the game. Some of these will give the player a performance boost, whilst others will be crucial to completing the level.
All the characters within the game will be created to be appealing to players of all ages. Our aim for the game is to be able to get children and adults to play it and enjoy it equally. Great care will be taken in designing characters and levels that are complicated enough to engage adults whilst simple enough to encourage children to play.

Sunday 23 December 2012

AI indicator

Over the past couple of weeks, the game has gone through numerous play tests. While it was clear that the game has potential and many positive areas, there were a few issues that kept becoming apparent.

One of the main ones was the location of the AI character. As described in previous posts, I have the AI following and looking at the player. However, as the camera is set on a side viewpoint, it makes it impossible for the player to see the enemy if they are travelling towards the screen. With the AI automatically damaging the player if they get too close, this was a real problem.

To combat this, a number of solutions were discussed. These included a mini map showing the enemies position at all times as well as a warning sign above the players head when they were close to an enemy. It was finally decided upon that there would be an enemy indicator within the scene. This would be a small arrow that is placed at the edge of the screen which moves to show you the direction the enemy is coming from.

As I had completed previous work on the AI I decided that I would like to undertake this task. This week I looked at other games which use an enemy indicator to see how best to implement one. Jet Fighters, an iPhone game, stood out as an important one. It was clear in that game, you had a single viewpoint camera and without the indicator it would have made the game frustrating and too difficult to play. I've since looked into some tutorials and theory behind the code needed for the indicator and hope to implement it over the coming weeks. With these new coding challenges, I really feel that my skills are progressing.

Written by Phil

Saturday 15 December 2012

Weekly Update


This week, Tom and myself have been working on the game together as most of the tasks we have undertaken have been based on level design.

For my part of this project over the last week I have worked alongside Tom in creating the easy route for the first level of the game. The route has been designed after finishing off the layout of the base level.

One of the main parts of the week for me was applying the Navigation Mesh to the level after Tom had finished modeling it so that the enemy could navigate all of the obstacles. After completing this work for the base level, I found it quite straightforward to apply the same techniques to this level. It did, however, need some tweaking in order for the enemy to roll along the floor at the perfect height. This issue was quickly resolved though. I also found that special consideration had to be given to some of the corners as enough space had to be left for the enemy to comfortably navigate his way through.

The level itself went through some alterations with numerous playtests revealing a few errors. One of the big changes we made mid-way through creating the level was the start point for the main character. It was decided early on that it was important that the player could see the entire level upon starting the game so they had a rough idea of where they needed to travel. With the starting area positioned where it was, it made it difficult for the player to see the necessary objects they needed to collect. After some altering of the start base position, it was decided the start the player from a position where they could see all the collectable and the enemy.

The enemy starting position and speed was also changed. It was felt that the enemy was initially too fast and that it was difficult for the player, especially on an easy route. This was a change that I applied quickly and slowed the enemy down. The starting position for the enemy was altered too, with it being decided to start the enemy where the player could see him. We felt that having the enemy start moving towards the player straight away added a sense of urgency to the game making it more exciting. Because of this, we made the enemy start the opposite side of the level so the player could always watch the enemy moving towards him.

Next week, I plan on rectifying the issue of having the player unable to see the enemy when travelling towards the screen. I will try and implement a detector arrow, which will show the position of the enemy relative to the player.

Written by Phil

Thursday 6 December 2012

AI and Navigation Routes - Complete!

This week has been a breakthrough week for me on this project. After finding out how to add the menu code into the game, I have now managed to code in the Navigation routes for the enemies to walk along.

I did this using Unity's in built navigation tool. It allows the user to set out paths that the enemy can walk along and follow the player. I had spent a long time researching the topic and finding out the best way to go about completing this task. Having never undertaken a task like this before, I dedicated a lot of hours into learning how to code this set up and it has now paid off. Some basic code that i have written for the enemy movement is below.


#pragma strict

var agent: NavMeshAgent;
function Start ()
{
agent.destination = transform.position;
}

function Update ()
{
CheckLocation();
}

function CheckLocation()
{
agent.destination = transform.position;
}

What this does is check where the navigation agent is (the enemy) and transform his position to the agents destination (the player). This allows the enemy to follow the player, although only on the highlighted routes. If the enemy reaches an area they can't get to, they will find an alternate path.


Firstly I tested out the navigation routes in a simple test scene. As you can see below, the blue highlighted areas are where the enemy will walk and follow the player.



Within Unity the user is able to make certain parts of the level not walkable for the enemy. This will be key during gameplay and will mean we can give the player certain safety areas within a level. All the navigation routes are able to be tweaked, meaning each level that we design will need special consideration for the enemy movement.

I then went one step further and tried to get the enemy to jump over gaps and obstacles. I was eventually able to do this after a few hours of testing and trailing.  Below is how the final areas look that I have applied the jump navigation to. Notice the arrows which show where the enemy will start and land.



So, once I had completed all of this work I then went on to add a navigation route onto the game itself. I started with the base of level one, and added a mesh over the scene so that the enemy would follow the player whilst avoiding all of the obstacles. This took a while as it needed to be tweaked multiple times to get it right.

After I had done this, I then went and added a navigation mesh onto the easy route of level one itself. This, again, needed a bit of tweaking but I managed to get it into place. Coding was added to both scenes to make the enemy move. These scenes now need multiple play tests to see what changes, if any, need to be made.

The next stage for me will be to add navigation routes onto the other difficulty routes within level one and then play test them.

Written by Phil