KYLE THOMAS
Game Programmer | Contact: kyle.j.t@live.co.uk

GROW THE HOLE


Thumbnail of the game
Engine: Unity 5.2
Language: C#
Development Time: 72hrs
Developer: Kyle Thomas (solo)
Jam: Ludum Dare 34
Theme: Growing






Game Overview

During Ludum Dare 34 we were given an option of two themes, "Two Button Controls and Growing". We were able to use both in our game if we wanted to, but I decided to go with the theme "Growing". My idea for the game came from a popular web game called Agar.io however, I wanted to take a spin on this and create it about a black hole. The objective is very simple, the idea is to grow the black hole and not die. There are two ways that you can die, getting sucked in by another black hole and getting your health removed by the "space mines". As you grow bigger the space mines will do less damage to you. I made the game slightly more challenging by shrinking the blackhole if the player doesnt eat any objects after a certain time. As the black hole grows or shrinks, I added a script to zoom the camera depending on the black hole size so that the black hole could always be visible to the player.

What went well?

  • Planning
    • The planning stage of the game went well, I was able to quickly think up an idea and start straight away on the game.
  • Met The Deadline
    • I was able to meet the required deadline, 72hrs, for the Ludum Dare Jam category as I quickly got the planning stage out of the way which gave me more time to work on the game.
  • Player Controller
    • The player controller went quite well. I was able to quickly get player movement and player growing in really fast then from there I was able to add in other attributes such as health.
  • Pickup Spawning & Chance of Spawning
    • For the game I wanted to get a random chance of spawning pickups. This was the first time I dealt with random spawning within Unity so it was an interesting learning experience but fairly easy to implement.

What can be improved?

  • Player Attacking
    • A player attacking mechanic would have been a great feature to add in the game, it was also a planned feature however, ran out of time before I was able to add it in.
  • Better Ending
    • A better ending to the game would have been great as currently you have to grow to a certain size to win which takes you to a game over screen which is slightly boring. To improve this I can add replayability or different ways for the player to end the game.
  • Player Goals
    • Having player goals in the game can improve the game a lot. Rather than just making the player collect pickups, avoid mines and avoid blackholes, I could have given them other things to do such as consume a certain amount of pickups in a certain time for a speed boost or something similar.
  • Game Balancing
    • Game balancing would be a great way to improve the game as currently when you get to around 100 in size, it gets extremely easy to complete the game as you can grow incredibly fast. This would extend the game making it last longer than it currently does.

CODE SAMPLE


Spawn Pickups:

A code sample taken from Spawn Pickups script that handles the rarity of different pickups and spawns them at a random distance.
    void SpawnObjects()
    {
        distanceBetween = Random.Range(minDistanceBetween, maxDistanceBetween);
        //random chance to spawn pickups
        if (Random.value > 0.5)
        {
            selectPickup = Random.Range(0, 4);
        }
        else if(Random.value > 0.2)
        {
            selectPickup = Random.Range(5, 9);  
        }
        else if(Random.value > 0.7)
        {
            selectPickup = Random.Range(10, 14);
        }
        else if(Random.value > 0.3)
        {
            selectPickup = Random.Range(15, 18);
        }
        transform.position = new Vector2(Random.Range(0, 240), Random.Range(0, 190));
        Instantiate(spawnBlocks[selectPickup], transform.position, transform.rotation);
        spawnTimer = 0f;
    }
		

Reduce player size:

A code sample taken from Player Controller script that checks how long has passed and if its more than 3 seconds, the player will shrink in size until they eat again.
	
		timeSinceDecay += Time.deltaTime;
       timeSinceEat += Time.deltaTime;

       if (timeSinceDecay > 0.1)
       {
           if (timeSinceEat > 3.0 && size > 9)
           {
               camera.orthographicSize -= 0.02f;
               float speedLost = (speed - speed * Mathf.Pow(0.998f, Time.time - timeSinceEat)) / 15;
               float sizeLost = (size - size * Mathf.Pow(0.998f, Time.time - timeSinceEat)) /15;
               AddSize(-sizeLost);
               IncreaseSpeed(-speedLost);
               timeSinceDecay = 0;
           }
       }