Burrow Blaster

audacity

Burrow Blaster is an action packed shmup with fun upgrade and progression mechanics. Fight your way through the underground tunnels and collect scrap from the robots you kill to upgrade yourself, escape the underground!

I made Burrow Blaster in collaboration with Lucas Sharkey Chouinard. I was responsible for all of the programming and sound design in the game, and Lucas did all the art. Below I’ve detailed some of the highlights of my work developing this game.

Multi-Scene Development

To help keep the game running well while managing a large level full of enemies, I structured the game space as multiple “Scenes” that were loaded in and out of memory.

C#
				float distancefromPlayer;

        //loop through tiles to load them in
       for (int i=0; i<segments.Length; i++)
       {
        //check distance from player camera
        distancefromPlayer = Mathf.Abs(segments[i].position.z - cam.transform.position.z);
        //Debug.Log(distancefromPlayer);

       //load if close enough and unloaded
       if (distancefromPlayer <= distance && !segments[i].loaded)
       {
           //Debug.Log("Calling load segment");
            LoadSegment(segments[i]);
            segments[i].loaded = true;
        }
        //unload scene if too far
        else if (distancefromPlayer > distance && segments[i].loaded)
       {
           UnloadSegment(segments[i]);
            segments[i].loaded = false;
        }
    }
			

Awesome Upgrades

Burrow Blaster includes 32 stat upgrades and 4 unique power upgrades including a rechargeable shield, dodge, side shots, and a super laser. Each of these special upgrades are visually represented on the player model using a visuals manager.

Save and Load System

Burrow Blaster includes saving and loading functionality so that the player can take a break and come back another time. It does this by storing the player’s data in an array and respectively serializing or de-serializing it.

C#
				    //Function that saves game data to a file
    private void Save()
    {
        //creating save tools and file
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Create(Application.persistentDataPath + "/playerInfo.dat");

        //writting save data with serializable class
        SaveData data = new SaveData();
        data.scrap = scrapManager.GetScrap();
        data.upgradeLevels = upgradeManager.GetAllUpgradeLevels();

        //Serializing Data and saving to file
        bf.Serialize(file, data);
        file.Close();
    }

    //function that loads saved data
    private void LoadSave()
    {
        //check for file existance
        if (File.Exists(Application.persistentDataPath + "/playerInfo.dat"))
        {
            //opening save file
            BinaryFormatter bf = new BinaryFormatter();
            FileStream file = File.Open(Application.persistentDataPath + "/playerInfo.dat", FileMode.Open);

            //loading data
            SaveData data = (SaveData)bf.Deserialize(file);
            file.Close();

            //rading data
            scrapManager.SetScrap(data.scrap);
            upgradeManager.SetAllUpgradeLevels(data.upgradeLevels);
        }
    }
			
Scroll to Top