This game was a group project (the team is linked on the itch page) with four weeks’ time. We made a local multiplayer tag game.
I was in a group with one other developer and three artists.
You can play this game with a controller and a keyboard. You need a separate device for every player and you can play with a minimum of 2 and maximum of 4 players.
You play in a ball pit playhouse and you have different intractable parts of the map to get away from the tagger.
I made everything of the map, the camera, the menu's, the UI, the settings, and I did all the audio.
We had one group leader, and this role rotated trough the group for the duration of these four weeks.
I was group leader one of these weeks, so I had to take care of the planning and the standups for that week next to all the features I was building.
The players and connection where done by the other dev in our team but I did assist with some of this and we worked together on putting all the lose objects into the final game scene.
I am really happy with the AudioManager I used in this project. I already had the base of this script in an old project but I upgraded/polished it in this project,
you can see this script at the bottom of the page.
Made with - Unity, C#, Blender
Released - 4 December 2024
4 week project, 5 person team
public class AudioManager : MonoBehaviour
{
public static AudioManager m_Instance;
public AudioMixerGroup m_MixerGroup;
public Sound[] m_Sounds;
public GameSettings m_Settings;
void Awake()
{
// Make it a singleton so it does not destroy on loading a new scene
// And so you can play sounds by calling the AudioManager.m_Instance
if (m_Instance != null)
{
Destroy(gameObject);
}
else
{
m_Instance = this;
DontDestroyOnLoad(gameObject);
}
// Add a AudioSource for every audioclip
foreach (Sound s in m_Sounds)
{
s.m_Source = gameObject.AddComponent();
s.m_Source.clip = s.m_Clip;
s.m_Source.loop = s.m_Loop;
s.m_Source.outputAudioMixerGroup = m_MixerGroup;
}
}
// You can call this function to play a sound
public void Play(string sound)
{
Sound s = Array.Find(m_Sounds, item => item.m_Name == sound);
if (s == null)
{
Debug.LogWarning("Sound: " + sound + " not found!");
return;
}
s.m_Source.volume = s.m_Volume * (1f + UnityEngine.Random.Range(-s.m_VolumeVariance / 2f, s.m_VolumeVariance / 2f));
s.m_Source.pitch = s.m_Pitch * (1f + UnityEngine.Random.Range(-s.m_PitchVariance / 2f, s.m_PitchVariance / 2f));
// Check if sound or music is turned off in the settings and play if these are not
if (!s.m_Music)
{
if (m_Settings.m_Audio)
{
s.m_Source.Play();
}
}
else
{
if (m_Settings.m_Music)
{
s.m_Source.Play();
}
}
}
// Stop a audio clip which is playing with this function
public void Stop(string sound)
{
Sound s = Array.Find(m_Sounds, item => item.m_Name == sound);
if (s == null)
{
Debug.LogWarning("Sound: " + sound + " not found!");
return;
}
s.m_Source.Stop();
}
// Stop all sounds playing
public void StopAllSounds()
{
foreach (Sound s in m_Sounds)
{
s.m_Source.Stop();
}
}
// Check if a sounds is playing (can be used to check before playing or turning off a sound)
public bool IsPlaying(string sound)
{
Sound s = Array.Find(m_Sounds, item => item.m_Name == sound);
if (s == null)
{
Debug.LogWarning("Sound: " + sound + " not found!");
return false;
}
return s.m_Source.isPlaying;
}
}