Sea Pulse Breakdown

Sea Pulse Breakdown

Sea Pulse

Breaking Down my submission to Isart Digital Game Week's Multiplayer Rhythm Experience

Breaking Down my submission to Isart Digital Game Week's Multiplayer Rhythm Experience

Breaking Down my submission to Isart Digital Game Week's Multiplayer Rhythm Experience

Custom Design Tools

Custom Design Tools

Custom Design Tools

Level designers can choose the precise beat to generate notes.

My framework provides an ordered list with the following features to the level designer.
- The level designer can drag and drop gameplay block prefabs at different points in this list to create events on the beat
- The level designer can create unique blocks and add them as additional prefabs
- The level designer can leverage the existing Unity API to copy and paste swathes of blocks from the list to easily duplicate patterns

To the Beat

To the Beat

To the Beat

Getting events to move at a tight enough timing for a rhythm game can be a challenge. I programmed the events to occur at precise timing using sample intervals to dictate wait time. Time samples are a built in quality of audio sources which allow for music tight timing. This removes the issue that results from using Unity's miliseconds timer, which is not precise enough to follow to the beat.


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class BeatManager : MonoBehaviour
{

    [SerializeField] private float _bpm;
    [SerializeField] private AudioSource _audioSource;
    [SerializeField] private Intervals[] _intervals;
    // Start is called before the first frame update
    private void Update()
    {
        foreach (Intervals interval in _intervals)
        {
            float sampledTime = (_audioSource.timeSamples / (_audioSource.clip.frequency * interval.GetIntervalLength(_bpm)));
            interval.CheckForNewInterval(sampledTime);
        }
    }

    [System.Serializable]
    public class Intervals
    {
        [SerializeField] private float _steps;
        [SerializeField] private UnityEvent _trigger;
        private int _lastInterval;
        public float GetIntervalLength(float bpm)
        {
            return 60f / (bpm * _steps);
        }

        public void CheckForNewInterval(float interval)
        {

            if (Mathf.FloorToInt(interval) != _lastInterval)
            {
                _lastInterval = Mathf.FloorToInt(interval);
                _trigger.Invoke

Adaptive Player Addition

Adaptive Player Addition

Adaptive Player Addition

Players can join in at any time!
Leveraging the "new" Unity Input system, all a player needs to do to join the game is press a button. While the initial setup may be lengthier than using the old input system, the new input system becomes more efficient and more flexible long term.

Social Wave

Social Wave

Social Wave

Sea pulse is multiplayer! To put a spin on the typical rhythm game experience, Sea Pulse has notes which require up to 3 players to be positioned on them.

Commonly asked Questions

Commonly asked Questions

Commonly asked Questions

How can I get good at Sea Pulse?

Practice makes perfect! Play with different styles and find your groove.

What is the player minimum for Sea Pulse?

The minimum player count for Sea Pulse is 2.

Logo
Logo
Logo
Logo

Like my work? Reach out to me at any of the above links.