Current documentation · v2026.7 series

A Unity-like editor for shipping PlayStation 1 games.

Mipsync Engine is a visual editor, asset pipeline, Mips# scripting runtime, Animator system, UI toolkit, audio pipeline, and build toolchain for PS1 projects. The goal is simple: author like a modern game engine, then export something that can run in an emulator or on real PlayStation hardware.

Recommended install path Install through Mipsync Hub. The Hub manages editor versions, projects, PS1 toolchain setup, and updates from GitHub Releases.

Quick start

  1. 1
    Download Mipsync Hub

    Install the Hub, then install the latest editor release from the Installs screen.

  2. 2
    Create a project

    Use the Hub to create a project, or add an existing project folder.

  3. 3
    Build a scene

    Create objects from the Hierarchy, drag assets from the Project window, and edit components in the Inspector.

  4. 4
    Write Mips# scripts

    Open scripts in VS Code or Cursor. The Mips# extension provides highlighting, completion, hover, definition, and diagnostics.

  5. 5
    Play, build, and test

    Use Play Mode for editor testing, then export PS1 or PC Native builds from the Build menu.

Editor workflow

Hierarchy

Create cameras, meshes, lights, UI, audio sources, post-process volumes, and gameplay objects. Delete removes selected objects, while copy/paste duplicates Hierarchy selections.

Inspector

Inspector fields use Unity-style object slots where possible. Drag assets into fields, or click a filled field to select the referenced asset in the Project window.

Scene View

Edit with move, rotate, and scale tools. Mesh, ProBuilder-style geometry, and UI elements can be manipulated directly in the scene.

Game View

Renders through the active camera and is the closest editor-side view for play testing your game.

Layout

The default layout is Scene Top / Game Bottom. Layout switching favors Scene View and Project window tabs to keep authoring predictable.

Selection persistence

The editor restores Hierarchy selection and Inspector context between launches where possible.

Command Platform & CLI

MipsyncCLI exposes the running editor to terminals and coding agents without replacing the visual workflow. Open a project normally, then run mipsync commands from that project directory. Authoring changes execute on the editor main thread and appear immediately in the Scene View, Hierarchy, and Inspector.

mipsync help
mipsync search "create and place an object"
mipsync describe entity.create
mipsync entity create Crate --primitive cube --x 2 --y 1 --z -3
mipsync entity transform Crate --ry 45
mipsync material create assets/materials/Red.nmat 0.8 0.1 0.1
mipsync material apply Crate assets/materials/Red.nmat
mipsync scene save
mipsync runtime play

Designed for humans and agents

Self-discovering

help, search, and describe expose command and symbol metadata without requiring an agent to know Mipsync in advance.

Live and visible

The CLI routes typed requests to the correct running editor through local IPC. Users can watch selections and scene edits happen in real time.

Machine-readable

Add --json for typed results and structured diagnostics. Human output and JSON are rendered from the same result.

Safe to iterate

Authoring mutations integrate with Editor Undo. Destructive commands require explicit confirmation, and scene edits are rejected during Play Mode.

Multiple projects Run mipsync instances to discover open editors. The current project is detected from the working directory, or can be selected explicitly with --project or --instance.

Asset pipeline

The Project window manages the files that become game data. Asset previews and drag-and-drop behavior are designed to feel close to Unity while still targeting PS1 constraints.

ModelsUsed by Mesh Renderer, prefab thumbnails, and PS1 mesh export.
TexturesUsed by materials, UI images, button sprites, cursors, and HDRI skybox source images.
MaterialsCan be assigned to objects and selected ProBuilder faces.
Audio clipsCan be dropped into AudioSource fields or dragged into the Hierarchy to create an AudioSource object.
PrefabsCan be created from Hierarchy drag-and-drop. Prefab instances show their source in the Inspector.
.nanim clipsDouble-click to open in the Animation window. Creating a clip also ensures an Animator Controller path exists.
.ncontrollerAnimator Controller graphs with parameters, states, transitions, Entry, and Any State.
.mips scriptsOpen in VS Code/Cursor with Mips# language features.

Mips# basics

Mips# is a component scripting language shaped like a practical Unity C# subset. It compiles to deterministic bytecode used by both editor play mode and PS1 export.

class Rotator : MipsBehaviour
{
    public float degreesPerSecond = 90.0;

    void Start()
    {
        Log.Info("ready");
    }

    void Update()
    {
        transform.rotation.y = transform.rotation.y
            + degreesPerSecond * Time.deltaTime;
    }
}

Common lifecycle and APIs

Start()Update()public fieldsTransformInputAnimatorAudioSourceSceneSaveLog
transform.positionRead/write entity position.
Input.GetKey("W")Returns true while a key is held.
Input.GetKeyDown("Space")Returns true on the press frame.
Scene.Load(path)Loads a project-relative scene.
Save.SetInt / GetIntStores and reads save data values.
Application.Quit()Requests application shutdown.

Arrays and coroutines

Mips# supports fixed gameplay-friendly arrays and coroutine-style waiting. Use them for simple lists, scripted timing, UI flows, and staged events.

class IntroSequence : MipsBehaviour
{
    public string[] messages = {
        "Welcome",
        "Press Space"
    };

    void Start()
    {
        StartCoroutine(ShowMessages());
    }

    IEnumerator ShowMessages()
    {
        for (int i = 0; i < messages.Length; i = i + 1) {
            Log.Info(messages[i]);
            yield return WaitForSeconds(1.0);
        }
    }
}
PS1-minded design Mips# is not full C#. It intentionally avoids reflection, threads, LINQ, arbitrary managed allocation, and other features that do not map cleanly to the PS1 runtime.

Animation and Animator

The Animation window edits transform keys on an infinite-style timeline: the last key is the clip end. Double-click a .nanim file to open it. When an animation clip is created for an object, the editor ensures an Animator and controller exist so the clip can be driven from the Animator graph.

Animation Window

Preview, record, scrub the timeline, add/delete keys, and save transform clips.

Animator Controller

States, default state, Entry, Any State, transitions, parameters, and graph framing.

Parameters

Float, Int, Bool, and Trigger parameters can be controlled from Mips#.

Runtime

Editor play mode can play Animator-driven transform clips and controller transitions.

class CharacterAnimation : MipsBehaviour
{
    public Animator animator;

    void Update()
    {
        float speed = 0.0;
        if (Input.GetKey("W")) speed = 1.0;

        animator.SetFloat("Speed", speed);
        if (Input.GetKeyDown("Space"))
            animator.SetTrigger("Jump");
    }
}

UI system

UI uses Canvas-based elements with RectTransform-like editing. Image and Button elements can keep source aspect ratio, and Hierarchy drag-and-drop controls canvas draw order.

CanvasRoot for UI elements rendered in Game View and PS1 builds.
TextText is a normal child object, including button labels.
ImageDrag a texture onto the field; the element can preserve the source aspect ratio.
ButtonRequires a Button Group. If added without one, the editor creates a group and parents the button under it.
Button GroupController/keyboard up-down navigation, configurable submit input, cursor sprite, and cursor offset.

Audio

AudioSource components can be created from the Hierarchy context menu, Add Component, or by dragging an audio file into the Hierarchy. Audio clips can be controlled from Mips# and exported for PS1 playback.

class MusicPlayer : MipsBehaviour
{
    public AudioSource source;

    void Start()
    {
        source.loop = true;
        source.volume = 0.8;
        source.Play();
    }

    void Update()
    {
        if (Input.GetKeyDown("M"))
            source.mute = !source.mute;
    }
}

Post Process Volume and skybox

Fog settings live on Post Process Volume objects. Volumes also expose color grading, vignette, and HDRI skybox settings.

FogConfigure density and color from the Post Process Volume.
Color gradingAdjust scene tint and exposure-style presentation controls.
VignetteAdd screen-edge falloff for PS1-style presentation.
HDRI SkyboxDrag a texture into the skybox slot, then adjust tint, exposure, and rotation.

Build for PlayStation 1

The PS1 pipeline analyzes the scene, converts assets, compiles runtime code, and emits a disc image. The output is intended to be launched from the generated .cue file in DuckStation or other compatible environments.

  1. Open Build → Build Settings.
  2. Add your startup scene to Scenes In Build.
  3. Choose Build PS1 or Build and Run.
  4. Open the output folder and launch the generated .cue.
Builds/PS1/MyGame/
├─ ps1_src/
├─ generated/
└─ out/
   ├─ PSX.EXE
   ├─ game.cue
   ├─ game.bin
   └─ SYSTEM.CNF
Real hardware note Always test PS1 builds separately from the editor. The editor preview is intentionally close, but the generated PS1 runtime has different GPU, ordering, texture, memory, and audio constraints.

PC Native build

PC Native build is available from the Build menu for quick desktop testing and distribution. It packages the selected project into a Windows executable output under Builds/Windows/<Product>/.

Different target, same project PC Native is useful for rapid iteration and sharing, while PS1 build remains the hardware-targeted output path.

Practical limits

Mipsync is actively evolving. The editor aims for a familiar Unity-like workflow, but the runtime still respects PS1-era limits: low memory, limited texture formats, fixed-point-ish rendering expectations, strict asset budgets, and careful draw ordering.

  • Keep PS1 scenes small and test exported builds frequently.
  • Prefer compact textures, simple meshes, and deterministic scripts.
  • Use Mips# engine APIs instead of general-purpose C#/.NET patterns.
  • For audio, launch PS1 disc output from the .cue file so streamed assets are available.

Need help or want to show what you built?

Join the Discord for questions, progress posts, and test builds.

Join Discord