The Ice Hiker

The Ice Hiker is a game that I have worked on with a team of 4 people. The goal of the game is to beat the bird boss with your ice pickaxe. there are 3 phases in the game.
In the first Phase the player gets to learn the different mechanics of the player like :

  • Moving
  • Jumping
  • looking
  • Throwing pickaxe as grappling hook
  • throwing pickaxe to swing from a rope

In the second phase the player gets introduced to the Boss. The boss has several interesting attacks that the player has to avoid to hit the boss. If the player gets the health of the boss to 66% the boss will fly to one of the 3 pillars and tries to protect it. The player has to climb the pillar and try to hit the boss to further attack the boss.

If the Player manages to kill the boss, it wil open a gate that brings the player to phase 3, which is parkour. We chose parkour to fully make use of the main mechanic, Swinging and Climbing.

The Story of the game should be:
You, the player, has a brother that went to climb the mountain, but he didn’t come back for a long time, so you worry about your brother. You try to climb the to the top of the mounatin to rescue your brother, but you get introduced to several obstacles in between.


My addition to the project


I first fixed a bug where the bird didn’t go to another destination after it did an attack. This was not really hard to solve. I thought it out step by step before editing the code.

  • If the bird doesn’t have a destination it should get one
  • After the bird reached the destination it has a 50/50 chance it would attack
  • After the bird attacks it should choose a destination that is not the previous destination
  • Repeat

I made this into code:

private void ChooseRandomDestination()
    {
        
        if (currentDestination == Vector3.zero)
        {
            currentDestination = destinations[Random.Range(0, destinations.Length)].position;
            agent.destination = currentDestination;
            
        }

        newDestinations.Clear();
        for(int i = 0; i < destinations.Length; i++) 
        {
            if (destinations[i].position != currentDestination)
            {
                newDestinations.Add(destinations[i].position);   
            }
        }
        currentDestination = newDestinations[Random.Range(0, newDestinations.Count)];
        agent.destination = currentDestination;
    }

The code for attacking was already done the only thing was that the previous destination wasn’t saved. This meant that the bird didn’t compare the previous destinations with all the destinations in the list. So it could choose the same destination multiple times, which means that it could attack multiple times on at the same destination.

I also made Breakable Ice. That is ice that should break after hitting it 3 times with the pickaxe. This feature was not used in the game. This was pretty simple to make, but the only thing I found hard was to change the texture so the ice has more cracks in it each time you hit it. At first I wanted to just change the texture of the material of the ice but it would change for every ice object in the game with the same material. So I just made 3 different materials that would change after each time the player would hit the ice.After that I chose to make the sound effects for the game.

After That I chose to make the sound effects for the game.
At first I made a list of sound effects I wanted in the game. After that I found several sound effects and added them to the game. Background music and noise were pretty easy, but I ran into some problems with the sound effects for walking, climbing, etc. , but I fixed them pretty quickly. After that I made sound effects of the pickaxe and icicles, Also ran in to some problems with that, but fixed them eventually pretty quickly.

After that I made the Basic UI for the game like a Start Screen, Settings Screen and Pause Screen.
At first I got some inspirations of games I played a lot and made a list of stuff I found interesting. From the points I wrote I made a List of points I wanted in the menu of our game. And made a sketch of how the menu’s and flow should go and look like.

After that I tried to implement it into the game and assign all the buttons

This was the my first iteration eventually I tuned it with feedback of my team and players to how it looks in the game rigth now.

After I made the menu and tweeked it, I tried to fix some bugs in the climbing system to really challenge myself to learn more complicated code.
I first analysed the existing code and wrote that in a seperate document for myself.
After that I made a List of stuff that doesn’t work that great or smooth.

the Problems that were hindering the player experience the most were:

I first wanted to tackle climbing on weird angles because I thought it to be the easiest, which it was. I made a limit to the climbing angles by adding a function that checks the angles and resets the state of the player if it is on a weird angle.
Code: