Files
sampleproj/Assets/SETUP_GUIDE.md
2026-03-29 13:18:13 +02:00

3.3 KiB

PSXSplash Test Scene

This Unity project is a complete test scene for PSXSplash's Lua scripting API. Open it in Unity with the SplashEdit package installed.

What's In the Scene

Game Objects

  • PSXPlayer - Player controller at (0, 0, -10)
  • Floor - Walkable ground plane
  • Wall1-4 - Boundary walls
  • Collectible1-3 - Pickup items (onCollideWithPlayer)
  • NPC - Interactable NPC with multi-line dialogue
  • Door - Interactable door with cutscene animation
  • DoorBlocker - Invisible wall removed when door opens
  • Switch - Toggle switch controlling SwitchTarget
  • SwitchTarget - Object toggled by the switch
  • Spinner - Object with looping cutscene rotation (onInteract to toggle)
  • Movable - Object selected via onInteract, moved via D-pad button presses
  • Scanner - Entity scanner terminal (onInteract)

Trigger Boxes (PSXTriggerBox)

Each trigger has its own Lua script - no trigger index routing.

  • CutsceneTrigger at (-8, 0, 5) - Plays camera_flyover cutscene
  • DamageTrigger at (8, 0, 5) - Damages player on entry
  • PortalTrigger at (0, 0, 12) - Scene transition
  • HealTrigger at (-8, 0, -5) - Heals player on entry

UI Canvases (PSXCanvas)

  • HUD (always visible, sort order 10):
    • ScoreText - shows "Score: 0"
    • StatusText - shows status messages
    • HealthBar - progress bar 0-100
  • Dialogue (hidden by default, sort order 20):
    • DialogueText - shows NPC dialogue lines

Still Needed

Cutscenes

Create PSXCutsceneClip assets with these names and add to SceneExporter:

  • ambient_spin - Looping background animation
  • camera_flyover - One-shot camera pan (Camera Position + Rotation tracks)
  • door_open - Door opening animation (Object Position track)
  • spin_loop - Full 360 rotation for Spinner (Object Rotation track)

Audio Clips

  • collect - pickup sound
  • door_open - door opening
  • switch_on / switch_off - switch toggle
  • heal - healing sound

Navigation

Bake nav regions from the floor geometry via PlayStation 1 > Nav Region Builder.

Design Notes

  • Zero onUpdate. All logic is event-driven.
  • Zero float literals. Uses 1/2 instead of 0.5 etc.
  • Each trigger has its own script. No index-based routing.
  • Scene globals. scene.lua defines: setStatus(), addScore(), applyDamage(), applyHeal(), startDialogue(), advanceDialogue(), isInDialogue(), endDialogue().

API Coverage

Script Callbacks Namespaces
scene.lua onSceneCreationStart/End Scene, Persist, UI, Audio, Controls, Cutscene, Timer, Debug, PSXMath, Vec3
collectible.lua onCreate, onDestroy, onEnable, onDisable, onCollideWithPlayer Entity, Audio, Persist
door.lua onCreate, onInteract Entity, Audio, Controls, Cutscene
npc.lua onCreate, onInteract, onButtonPress Input, Controls, UI
switch.lua onCreate, onInteract Entity, Audio
spinner.lua onCreate, onInteract, onCollideWithPlayer Cutscene, Entity, Timer
movable.lua onCreate, onInteract, onButtonPress Entity, Vec3, Camera, Input
entity_scanner.lua onInteract Entity, Vec3
cutscene_trigger.lua onTriggerEnter Controls, Cutscene
damage_trigger.lua onTriggerEnter, onTriggerExit Debug
portal_trigger.lua onTriggerEnter Persist, Scene
heal_trigger.lua onTriggerEnter, onTriggerExit Audio, Debug