Space Orbiter
Space survival game made in one week for Frene Jam 2.
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.
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.