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();
}