← Back to projects

Space Orbiter

Space survival game made in one week for Frene Jam 2.

Role Gameplay
Team 1 Developer
Duration 7 Days (jam)
Stack Unity / C#

The Context

Space Orbiter was created for a programming jam. I had to choose at least two constraints, so I chose “You Can't Win This” and “One Button” as a bonus, and I chose “3 colors only.”

I opted for a minimalist and atmospheric Art Direction,  focusing heavily on Game Feel, Audio Immersion, and general Polish. I also challenged myself to implement a fully functional key binding system in the menu.

My Contributions

  • 01 Gameplay Implemented fully functional gameplay that meets the constraints
  • 02 Game Feel Developing an enjoyable gaming experience that meets my ambitions
  • 03 Key Binding System Implemented a fully functional key binding system in the menu

Learning & Implementation

Create rebinding system in one week

The big challenge I set myself was the key rebind system. The goal was to fulfill the “One Button” constraint but make it interesting. To do this, I used the internal function in the new input system, PerformInteractiveRebinding().

For my subsequent projects, I adapted my manager into a logic that could be reused for any input.

RebindManager.cs MAKE FOR A SPECIFIC INPUT

using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;

public class RebindManager : MonoBehaviour
{
    [SerializeField, Required] private InputActionReference actionToRebind;
    [SerializeField, Required] private TMP_Text buttonText;
    [SerializeField] private string bindingName = "Thrust";

    private InputActionRebindingExtensions.RebindingOperation rebindingOperation;

    private void Start()
    {
        string rebinds = PlayerPrefs.GetString("rebinds", string.Empty);
        if (!string.IsNullOrEmpty(rebinds))
        {
            actionToRebind.action.LoadBindingOverridesFromJson(rebinds);
        }

        UpdateUI();
    }

    public void StartRebinding()
    {
        buttonText.text = "Press a key...";
        actionToRebind.action.Disable();
        rebindingOperation = actionToRebind.action.PerformInteractiveRebinding()
            .WithControlsExcluding("Mouse")
            .OnMatchWaitForAnother(0.1f)
            .OnComplete(operation => FinishRebinding())
            .Start();
    }

    void FinishRebinding()
    {
        rebindingOperation.Dispose();
        actionToRebind.action.Enable();

        UpdateUI();

        string rebinds = actionToRebind.action.SaveBindingOverridesAsJson();
        PlayerPrefs.SetString("rebinds", rebinds);
        PlayerPrefs.Save();
    }

    void UpdateUI()
    {
        string keyName = actionToRebind.action.GetBindingDisplayString(0);
        buttonText.text = $"{bindingName}: [{keyName}]";
    }
}

Game Feel & Audio Design

I wanted to create a unique and interesting atmosphere for space gameplay. I used lowpass filtering to create a feeling with the player's ship's thruster.