Vs Sonic.exe Psych — Engine Port
mods/ └── vs_sonic_exe/ ├── data/ │ ├── songs/ │ ├── characters/ │ └── stages/ ├── songs/ ├── images/ ├── sounds/ └── _metadata.xml Step 1 – Convert Sprites Psych Engine uses .xml for sprite sheets (Flash-like). Original mod uses .txt (Sparrow) or .json . Use FNF Sprite Sheet Converter or manually convert.
{ "animations": [ {"name": "idle", "anim": "idle", "fps": 24, "loop": true, "indices": []}, {"name": "singLEFT", "anim": "singLEFT", "fps": 24, "loop": false}, {"name": "singDOWN", "anim": "singDOWN", "fps": 24, "loop": false}, {"name": "singUP", "anim": "singUP", "fps": 24, "loop": false}, {"name": "singRIGHT", "anim": "singRIGHT", "fps": 24, "loop": false} ], "position": [700, 100], "camera_position": [0, 0], "flip_x": false, "healthicon": "sonic_exe_icon", "healthbar_colors": [150, 0, 0] } Repeat for , GF , and Sonic.exe (opponent). 3. Stage Porting Create Stage JSON data/stages/sonic_stage.json : vs sonic.exe psych engine port
function onSongStart() triggerEvent('Screen Shake', '0.05,0.1', '0.2,0.1') setProperty('defaultCamZoom', 0.7) end function onBeatHit() if curBeat % 8 == 0 then triggerEvent('Add Camera Zoom', '0.03', '0.03') end end { "animations": [ {"name": "idle", "anim": "idle", "fps":