Wednesday, 14 May 2014

Final few days


I have placed a build of once of my project builds on my submission disk. The reason for this is that during the final few days there was quite a rush to get all the arts assets into the scene, as well as animations, and because of this some elements of the game play suffered, so I though it would be good to supply a copy of the game with the game play how it was originally designed.

During these last few days I had a few jobs, one was to code the GUI. I had to quickly learn how to code GUI and implement it, which wasn't difficult, but just took some tweaking.

(Screens)

I also built a health packs for the scene, as well as the cave asset for crouching, which were previously blocks. Where the webs where just purple block that disappeared, I made the first iteration of a web texture and added a fade out, so that it burns away with fire.

(Screens)

These implementations did not cause problems, however some of them did. There was a tree asset that replaced the blocks to get to the fire mask, however unfortunately it didn't follow the same layout and was too difficult to climb, almost the Dark Souls or trees. This was the first thing that affected the game play.

(Screen)

Once we put the character in with animations it took some tweaking to get it working, some of which was a simple code tweak (such as stopping crouching from making you fall through the floor), and other parts where a few changes in the scene, adding tags to new objects or reassigning scripts. I also coded in texture changes for the mask the character wears for when you switch masks.

The last week


Early on in the last few weeks I was working on some of the visual side of the game.

A first step was to add particle effect to any collectibles within the game, this was to draw the players eye to them and make sure that they were recognised as collectibles.

I also made a few assets, such as the medallion and the orbs, which were later replaced again, this was part of the final visual progression leading up the the last build of the game.

Aside from these things I also had to finish off some coding, the code for the project was in constant progression, even though the main game play elements had been finished.

Final few days:

I have placed a build of once of my project builds on my submission disk. The reason for this is that during the final few days there was quite a rush to get all the arts assets into the scene, as well as animations, and because of this some elements of the game play suffered, so I though it would be good to supply a copy of the game with the game play how it was originally designed.

During these last few days I had a few jobs, one was to code the GUI. I had to quickly learn how to code GUI and implement it, which wasn't difficult, but just took some tweaking.

I also built a health packs for the scene, as well as the cave asset for crouching, which were previously blocks. Where the webs where just purple block that disappeared, I made the first iteration of a web texture and added a fade out, so that it burns away with fire.

These implementations did not cause problems, however some of them did. There was a tree asset that replaced the blocks to get to the fire mask, however unfortunately it didn't follow the same layout and was too difficult to climb, almost the Dark Souls or trees. This was the first thing that affected the game play.



Once we put the character in with animations it took some tweaking to get it working, some of which was a simple code tweak (such as stopping crouching from making you fall through the floor), and other parts where a few changes in the scene, adding tags to new objects or reassigning scripts. I also coded in texture changes for the mask the character wears for when you switch masks.

Designing The Game


After the initial sketches, the main game design started once I received the finished terrain design from Max, and I had finished tweaking the character jump height, distance and crouch.

For creating the different jumping and platforming areas I created a block with the height on the standard jump and got a good idea of the distance, this helped me to block out anything I needed to. The main areas were an area of pillars near the beginning, a big tower to climb up, and any other platforms that you needed to use to make it to the end of the level.

Unfortuanately I did not have time to supply any screen shots of these, however you can see them in the game and the build that I have supplied.

To guide the character through the level we discussed using lights to draw the player's eye. However before this was implemented I used the collectible to a similar effect. We wanted to give the player a reason to explore the open world, so I placed in the scene 10 medallions (later 12) for them to collect, which they would need to win the game, this also ensure they experience most of the the game has to offer. I also added 100 orbs as a bonus collectible, if the player collects all of these the message at the end changes, saying that they have completed the game, but also gives you a super jump and access to a secret area, for a bit of extra fun.

After receiving feedback from various tutors and people within the industry, it gave more ideas as to how to implement the power up masks into the game play. One things we did, especially with the wind mask, was to make short cuts accessible so you can get around the level quicker. This played in to the fact that once the player has a certain power up they can go back to areas they have already visited to and access new parts of the map to get any collectible they still need. We used the fire mask web burning mechanic to hide medallion behind web, and where you get the fire mask, there is an area you need to return to with cloud platforms, leading to another medallion, which you need the wind mask to reach.

Later on I realised that, aside from the crouch jump, I hadn't implemented the crouch into any of the game play, so I had a think about where that could be put. I placed the mechanic in a few areas which required you to crouch to progress, I also included a new area with a medallion, and to get to the medallion it required you to jump and crouch in the air to fit through a gap.

The secret area I mentioned was a place high up where you can land on an invisible collider to get to a box that you can see floating off of the main terrain.

I feel like overall I did not did a bad job at designing the game, but more importantly I learnt a lot. About making the game replay-able, getting the player to backtrack and rediscover things, and to make platforming areas not too difficult, but still fun and a challenge. It was a good thinking about how to use the masks and where to put them, and how simply putting them in different places can make the design fall short (there was time where instead of jumping across some platform, you could just walk across the lava with the fire mask to reach the other side).

It was the technical stuff, like placing the platforms in very specific places that I really got into. During the last few days of the project if I saw someone replacing any of the platforms or moving that I would be weary that they would put them very slightly in the wrong place and then it would ruin the challenge slightly, however as this was quite last minute it was unavoidable, and luckily I felt that overall level design was still fun, even if a few jumps are a bit easier.

Coding The Game


Of course to get a game playing and working it takes coding, and i've done quite a bit. I'll put a list of everything I can recall and unfortunately I don't have time to go into much depth, but the list should be quite self explanatory, especially after playing the game. The scripts are also supplied on the disc and further below.
  • Camera - Follow, tweak and reset
  • Controller With Joe
  • Jump, Double Jump, Crouch and Sprint
  • Melee Attack
  • Fire Projectile attack (later only with fire mask)
  • Enemy Damage and Health
  • Enemies approaching player within a certain distance
  • Death & Respawn
  • Player Damage and Health
  • Pause screen with reset game option and controls GUI
  • Collectible -Orbs which move towards the player within a certain range
                     -Medallions
  • Fire Mask -Powerful Charge Projectile
                     -Stand on charcoal which would usually kill you
                     -Web burning with projectile
  • Puzzle -Shoot objects with the fire projectile to spawn a medallion
  • Wind Mask -Stand on wind platforms
                       -Hover after double jump
                       -Powerful charge melee attack
                       -Crouch jump, to reach higher platforms
  • GUI -Originally text but adapted with images
            -Doll that falls apart for health
            -Medallion Image and Count
            -Orb Image and Count
            -Charge Attack Guide
            -Y button on help tutorial masks
  • Help Tutorial Masks -Masks where if you get close and press Y will give you a message
                                    -Small prompt to tell you to press Y for the message
  • Super Jump and Secret Area -Once you have all the orbs you can do a super high jump
                                                 -This allows you to get to a secret area within the scene
  • End Gate -Tells you to collect more medallions if you don't have them all
                   -If you have all the medallions it will fade to black, tell you that you win, urge you to get the                    rest of the orbs and carries on.
                   -If you have everything it fades to black and tells you that you have finished the game, and                    then carries on.
Here is a link to these scripts, you can also find them on the submission disc:

(Link)

Joe gave me some help with the character motor, without him you would get stuck on a steep surface and not be able to move, forcing you to respawn. Joe used complex code to create a sliding mechanic, which stops the character from jumping on steep surfaces, but instead will slide down them, this was a huge help and something I could not have done with the knowledge I had at the time, or it would have taken me away from coding the game play I wanted to focus on.

Joe also coded some more of the character motor, the gravity would usually make you fall at a constant speed, however he created acceleration, so as you fall you keep falling faster, until you reach a terminal velocity. Together we coded in air movement, as before you would not be able to move the character as he was jumping, this was a very simple piece of copy and paste which I thought would be more complicated, but he pointed out the simple solution.

Here is a link to Joe's blog post about the character Motor:
(Joe Link)

I feel I did well at coding overall, I did more that I expected I would and probably as much as I hoped, I think if I spent more time on it I obviously could have done more, but I spent a lot of time on this and got a good result because of it. I learnt quite a lot, but was mostly using what I had already leaned and combining things to get different results, I think not learning as much variety as I could have was one of my downfalls.

I really enjoyed coding all of this, and i'm glad it's an area I chose to approach for the project.

Sunday, 11 May 2014

Getting the terrain


I mentioned earlier that Ed and I drew up a top down sketch of the level, which you can see again below.

Of course we needed this in 3D space, so I worked out how high each of the levels on the map were going to be and got to work.


I started out boxing it in with planes in Unity. This was a mistake, it looked very blocky and man made. The scale and measurements were correct though, so I used this to further put the grey box together.

Ewan told me to use Maya and quickly gave me a run down of how I can quickly block the level out in it and have it look natural. I then created in in Maya, although it took a while it was a lot quicker than creating it in unity, not only that but it looked better and was easy to edit. We scaled some areas up even further from what we originally planned.

Unfortunately I did not have to time find my file of the terrain and post a screenshot.

From there we needed a terrain, which Max made a very quick start on. the first few iterations of this were not what we were looking for. However he listened to what I said and gave me a terrain one day which was perfect, it did exactly what we wanted and allowed us to have all the areas that we initially planned for. 

I then took this terrain and started designing around it and using it as a basis for creating game play.

Coding - Camera and Controller


Obviously for a third person platformer you need a controller and a camera that does what you need it to do. To start with we wanted the controller to walk around and jump in a way in which you could edit the distances it could jump and make the controls feel smooth. for the camera you want to be able to rotate it yourself, but also for it to follow the character in a natural way.

This was not easy, not at all. I debated with myself whether to take what was already in Unity on code some of my own things. I decided that I did not want to take what was default with unity, partly because I just didn't like it.

For both the controller and the camera, I tried many different things, my own code, code online and more, however there were always bugs, or code that interfered with each other. at that point I did not understand why. I ended up with commented out code all over my scripts, keeping in what worked and trying new things. One time I scrapped and restarted the controller completely.

Early Scripts on Disk

I then realized that I really needed to get a grasp on what some of the code I was copying was and what it did, so I went through the basic scripting tutorials on the unity website, and from that I became equipped with what I needed to know.

I decided to take what I liked from the scripts that are provided with unity, and then code changes to them myself. I did this with the main camera, and achieved a very nice result from it. It took a while but was worth it.

For the character controller I took the default ground movement script, and then looked at other code people have created for jumping, and used one of them to create my own jumping script.

Ealry Scene on disc

The result was a character controller with a few bugs, but much better than before, and a camera script which followed the character smoothly and well, which the player could also influence. I was also left with one document full of commented out script that I decided to keep for reference.

Final Scripts on disc.

When I got to this point I realized that I had leaned a lot, and had a result that was by far better than Unity's default. It was at this point I got a bit confidence boost and realized that I could code a lot for this game.

An Otter Tale is born!


One day, after thinking of many different ideas, things seemed to come together in the blink of an eye. Ed and Max suggested a Voodoo/Hoodoo theme, we then decided on open world game play, and that the main character should be an Otter.

From there we thought of many different ideas, such as using Masks as power ups and thinking about how it worked. Some ideas got scrapped, such as throwing a Voodoo doll of yourself and being taken along with it. 

There was also the intention to have some much more complex puzzle section where you would really use the different masks to influence the environment, but this was something we didn't have time for.

Ed and I drew out a concept for the level, just an overhead view of how it would all work. We then discussed further ideas, did sketches and worked through things, my sketches and the overhead level sketch we did you can see below.


Once we had all the game play figured out, it was time to organize coding it into sections, I remember initially looking at the list and thinking that it was way too ambitious, but we sorted everything into priority order and iterations. This was definitely the best choice as it would make sure we had something payable, which we could then build on. You can see the three phases below.