103 lines
2.4 KiB
JSON
103 lines
2.4 KiB
JSON
{
|
|
"_comment": "SWF Converter Configuration File. Keys with _ prefix are comments/metadata.",
|
|
"_schema_reference": "See config_manager.py for full schema documentation.",
|
|
|
|
"_defaults": {
|
|
"_comment": "These apply to ALL SWF files unless overridden per-file.",
|
|
"emulator": "ruffle",
|
|
"loop_detection": "hash",
|
|
"loop_grace": 5.0,
|
|
"max_duration": 600.0,
|
|
"fps": 30,
|
|
"crf": 18,
|
|
"window_size": "800x600",
|
|
"startup_delay": 3.0,
|
|
"audio": true
|
|
},
|
|
|
|
"simple_animation.swf": {
|
|
"_comment": "A basic non-interactive animation with a known loop point.",
|
|
"end_seconds": 45.0,
|
|
"interactions": []
|
|
},
|
|
|
|
"looping_intro.swf": {
|
|
"_comment": "An animation that loops endlessly. Use hash detection + grace period.",
|
|
"loop_detection": "hash",
|
|
"loop_grace": 5.0,
|
|
"interactions": []
|
|
},
|
|
|
|
"interactive_lesson.swf": {
|
|
"_comment": "An interactive lesson with two choice buttons appearing at t=12.5s.",
|
|
"loop_detection": "hash",
|
|
"loop_grace": 5.0,
|
|
"interactions": [
|
|
{
|
|
"t": 12.5,
|
|
"x": 320,
|
|
"y": 240,
|
|
"label": "button_yes",
|
|
"_comment": "Clicking 'Yes' at the choice screen"
|
|
},
|
|
{
|
|
"t": 12.5,
|
|
"x": 320,
|
|
"y": 340,
|
|
"label": "button_no",
|
|
"_comment": "Clicking 'No' at the choice screen"
|
|
}
|
|
]
|
|
},
|
|
|
|
"quiz.swf": {
|
|
"_comment": "A quiz with multiple questions. Each question has clickable answer areas.",
|
|
"loop_detection": "hash",
|
|
"loop_grace": 3.0,
|
|
"interactions": [
|
|
{
|
|
"t": 8.0,
|
|
"x": 200,
|
|
"y": 300,
|
|
"label": "q1_answer_a"
|
|
},
|
|
{
|
|
"t": 8.0,
|
|
"x": 200,
|
|
"y": 380,
|
|
"label": "q1_answer_b"
|
|
},
|
|
{
|
|
"t": 8.0,
|
|
"x": 200,
|
|
"y": 460,
|
|
"label": "q1_answer_c"
|
|
}
|
|
]
|
|
},
|
|
|
|
"menu.swf": {
|
|
"_comment": "A menu SWF with known end time. No loop detection needed.",
|
|
"loop_detection": "none",
|
|
"end_seconds": 30.0,
|
|
"interactions": []
|
|
},
|
|
|
|
"problematic.swf": {
|
|
"_comment": "A SWF that Ruffle struggles with — use Lightspark as fallback.",
|
|
"emulator": "lightspark",
|
|
"loop_detection": "freeze",
|
|
"loop_grace": 5.0,
|
|
"interactions": []
|
|
},
|
|
|
|
"high_quality_export.swf": {
|
|
"_comment": "Export at higher quality for archival purposes.",
|
|
"crf": 12,
|
|
"fps": 60,
|
|
"window_size": "1280x720",
|
|
"loop_detection": "hash",
|
|
"interactions": []
|
|
}
|
|
}
|