Hierarchy & Inspector
Select an entity in the Hierarchy to edit its Transform and components. The selected entity and Inspector state are restored on the next launch.
Mipsync documentation
Mipsync combines a scene editor, Animator Controller, Mips# component scripting, a PSn00bSDK export pipeline, and a bundled PCSX-Redux test runtime.
Download Mipsync Hub, launch it, and install the latest editor release from the Installs page.
The Hub keeps projects and installed editor versions together. A project can select which editor release it launches with.
Create entities in the Hierarchy, edit components in the Inspector, and assign models, textures, materials, scripts, and Animator Controllers from the asset browser.
Use the transport controls to run the scene in the Game View. Stop returns to the editing snapshot.
Open Build → Build Settings, add scenes, then choose Build PS1 or Build && Run in Emulator.
Select an entity in the Hierarchy to edit its Transform and components. The selected entity and Inspector state are restored on the next launch.
The Scene View is for editing and selection. The Game View renders through the active game camera and is the correct view for Play Mode testing.
Drop project assets into Inspector fields. Asset references display compact filenames and previews while storing project-relative paths.
Select an object with an Animator component to show its controller automatically. Build states and transitions in the graph, then edit details in the side inspector.
Mips# v0.4 uses Unity-style component syntax. Scripts use the .mips extension and derive from MipsBehaviour. Public fields appear in the Inspector and are serialized with the scene.
class Rotator : MipsBehaviour
{
public float degreesPerSecond = 90.0;
void Update()
{
transform.rotation.y = transform.rotation.y
+ degreesPerSecond * Time.deltaTime;
}
}
AwakeStartUpdateLateUpdateOnDestroyOnCollisionEnterOnCollisionExitOnTriggerEnterOnTriggerExit
Supported value types include bool, int, float, string, Vector3, Entity, Transform, and engine component references.
Physics.Move supplies desired velocity in metres per second to the character controller. Normalize diagonal input before multiplying by speed.
class PlayerMove : MipsBehaviour
{
public float moveSpeed = 3.0;
void Update()
{
var x = 0.0;
var z = 0.0;
if (Input.GetKey("D")) x = x + 1.0;
if (Input.GetKey("A")) x = x - 1.0;
if (Input.GetKey("W")) z = z - 1.0;
if (Input.GetKey("S")) z = z + 1.0;
var length = Mathf.Sqrt(x * x + z * z);
if (length > 0.0)
Physics.Move(x / length * moveSpeed, 0.0, z / length * moveSpeed);
}
}
Use Input.GetKeyDown("Space") for a one-frame press, and Input.GetKey("W") for a held key.
Animator Controllers contain parameters, animation states, and transitions. Parameters can be Float, Bool, Int, or Trigger. Transitions support exit time, blend duration, and one or more conditions.
Conditions: greater, less, equals, and not equals.
Conditions: true or false.
Set from script for one-shot transition intent.
Create a transition that may begin regardless of the active state.
class CharacterAnimation : MipsBehaviour
{
void Update()
{
var animator = GetComponent<Animator>();
var moving = Input.GetKey("W");
var speed = 0.0;
if (moving) speed = 1.0;
animator.SetFloat("Speed", speed);
animator.SetBool("Moving", moving);
if (Input.GetKeyDown("Space"))
animator.SetTrigger("Jump");
}
}
class ExitTrigger : MipsBehaviour
{
public string nextScene = "scenes/level2.nscene";
public string saveFile = "slot1.json";
void OnTriggerEnter()
{
var other = Physics.otherEntityId;
if (other == 0) return;
Save.SetInt("lastTrigger", other);
Save.Write(saveFile);
Scene.Load(nextScene);
}
}
Save data is JSON under the project’s saves/ directory. Scene loads are deferred safely until the current update has completed.
transform.position / rotation / scaleRead or write entity transform vectors and components.gameObject.id / nameRead the current entity identity.Time.deltaTimeSeconds elapsed since the previous frame.Input.GetKey(name)Returns whether a named key is held.Input.GetKeyDown(name)Returns true on the frame a key is pressed.Physics.Raycast(...)Returns the hit entity ID, or 0 when nothing is hit.Physics.Move(x, y, z)Moves through the character controller using desired velocity.Physics.IsGrounded()Returns 1 while the character controller is grounded.Animator.SetFloat / Bool / IntUpdates an Animator Controller parameter.Animator.SetTrigger(name)Sets a trigger parameter.Scene.Load(path)Loads a project-relative scene path.Scene.LoadBuildIndex(index)Loads a scene from the Build Settings list.Save.Get* / Set*Reads and writes int, float, bool, and string values.Save.Read / Write(path)Loads or writes a JSON save file.Application.Quit()Requests application shutdown.Log.Info(...)Writes values to the Console.The engine release includes PCSX-Redux, OpenBIOS, PS1 starter templates, and Ninja. Install PSn00bSDK and expose its root through the PSN00BSDK environment variable for native compilation.
PS> $env:PSN00BSDK = "C:\path\to\psn00bsdk"
Builds/PS1/<Product>/.Builds/PS1/MyGame/
├─ build.ps1
├─ mipsync_export/
├─ ps1_src/
└─ out/
├─ PSX.EXE
├─ game.cue
└─ SYSTEM.CNF
PSX.EXE is the native PlayStation executable produced by the PSn00bSDK pipeline.game.cue is the emulator and CD-mastering entry point.licensea.dat, licensee.dat, or licensej.dat.Mips# v0.4 intentionally keeps the runtime compact. Structs, arrays, coroutines/yield, and custom property bodies are not implemented yet. Prefer small component scripts, public Inspector fields, and the built-in engine APIs above.
Join the Mipsync Discord for questions, feedback, and project discussion.