Goblin with a Gun

Posted by : on

Category : portfolio


Game Engine/Language: Unity / C#

Role: Solo Dev

Duration of Work: 8 Weeks

End Of Project: 1st March 2024

Github Repository: Click Here!

Game Page :

This was a solo project I made for a university module. It is a feature complete endless top down shooter with dynamic stats, guns and even a boss fight every ten waves. I’m super proud of this game.

The videos below showcase the gameplay as well as the variety of guns featured in the game.

Below is a code snippet of how dynamic powerup attributes are handled in a way that creates clean processes


    void TriggerDeath()
    {
        OnPlayerDeath?.Invoke();
        Camera.main.enabled = false;
        SceneManager.LoadScene(currentScene.name, LoadSceneMode.Single);
    }

    public void UpdateDodgeStats()
    { 

        dodgeCooldownLengthCurrent = dodgeCooldownLengthBase * (1 - dodgeCooldownLengthModifier);
        dodgeVelocityCurrent = dodgeVelocityBase * (1 + dodgeVelocityModifier);

    }

    public void UpdateGunStats()
    {
        gunDamageCurrent = gunDamageBase * (1 + gunDamageModifier);
        gunSpeedCurrent = gunSpeedBase * (1 + gunSpeedModifier);
        gunFireRateCurrent = gunFireRateBase * (1 + gunFireRateModifier);
        gunLifetimeCurrent = gunLifetimeBase * (1 + gunLifetimeModifier);
        reloadTimeCurrent = reloadTimeBase * (1 + reloadTimeModifier);
        gunMagCurrent = gunMagBase * (1 + gunMagModifier);
        specialReloadRoundsCutOff = gunMagBase * 0.875f;
    }

    public void UpdateSwordStats()
    {
        swordRadiusCurrent = swordRadiusBase * (1 + swordRadiusModifier);
        swordDurationCurrent = swordDurationBase * (1 + swordDurationModifier);
        swordCooldownLengthCurrent = swordCooldownLengthBase * (1 + swordCooldownLengthModifier);
        swordDamageCurrent = swordDamageBase * (1 + swordDamageModifier);
    }

Below is a code snippet of the dynamic powerup system’s dynamic colour particle effects.

 void CalculateParticleColorAndApply()
    {
        particleColor.r = allColors.x / numberOfBuffs;
        particleColor.g = allColors.y / numberOfBuffs;
        particleColor.b = allColors.z/ numberOfBuffs;
        particleColor.a = 255;
        psMain.startColor = particleColor;
    }

    public void SetParticleColor(Color color)
    {
        numberOfBuffs += 1;
        if(numberOfBuffs > 0)
        {
            ps.Play(true);
        }
        allColors += new Vector4 (color.r,color.g,color.b,color.a);
        CalculateParticleColorAndApply();

    }

    public void RemoveColor(Color color)
    {
        numberOfBuffs -= 1;
        if(numberOfBuffs <= 0)
        {
            ps.Stop(true ,ParticleSystemStopBehavior.StopEmittingAndClear);
        }
        allColors -= new Vector4(color.r, color.g, color.b, color.a);
        CalculateParticleColorAndApply();

    }

About Haven Blakely-Rivers
Haven Blakely-Rivers

I am an undergraduate at University Of Staffordshire studying Games Design and Programming. I really enjoy coding and find the logic based nature of it easy to grasp and understand. I can also communicate well and work as a team because of my job as a Student Ambassador. I want to pursue a career where coding is my everyday and I work with people to make games that inspire others to make games.

Email : floretdev@gmail.com

Website : https://floretdev.com

About Haven Blakely-Rivers

I am an undergraduate at University Of Staffordshire studying Games Design and Programming. I really enjoy coding and find the logic based nature of it easy to grasp and understand. I can also communicate well and work as a team because of my job as a Student Ambassador. I want to pursue a career where coding is my everyday and I work with people to make games that inspire others to make games.

Star
Categories
Useful Links