Use this page when you need to change how a project is located, launched, or built.
.fproject tells the editor and runtime where your assets, startup scene, and game assembly live.project_settings.json controls runtime defaults and build metadata..fprojectTypical file:
{
"projectName": "MyGame",
"defaultScene": "Scenes/MainScene.fscene",
"assetsPath": "Assets",
"gameAssembly": "bin/Debug/net8.0/MyGame.dll",
"gameProject": "MyGame.csproj"
}
Set defaultScene to the scene you want to open at startup.
Important rule:
defaultScene is relative to assetsPath, not the repository rootCheck these fields first:
gameProject should point to the gameplay .csprojgameAssembly should point to the DLL that project actually outputsThe editor script build uses Debug by default, so the usual path is under bin/Debug.
.fproject fields| Field | Description |
|---|---|
projectName |
display name for the project |
defaultScene |
startup scene path, relative to assetsPath |
assetsPath |
root folder for project assets |
gameAssembly |
compiled gameplay DLL |
gameProject |
gameplay .csproj used for builds |
project_settings.jsonTypical file:
{
"project": {
"version": "0.1.0",
"author": "",
"company": "",
"description": ""
},
"runtime": {
"targetFps": 120,
"vSync": true,
"windowTitle": "MyGame",
"windowWidth": 1280,
"windowHeight": 720,
"resizable": true,
"fullscreen": false,
"startMaximized": false,
"startupSceneOverride": "",
"forwardPlusTileSize": 16,
"forwardPlusMaxLights": 256,
"forwardPlusMaxLightsPerTile": 64,
"physicsFixedTimestep": 0.016666668,
"physicsMaxSubstepsPerFrame": 4,
"physicsSolverVelocityIterations": 8,
"physicsSolverSubsteps": 1,
"physicsContactSpringFrequency": 30.0,
"physicsContactDampingRatio": 1.0,
"physicsMaximumRecoveryVelocity": 2.0,
"physicsDefaultFriction": 0.8,
"physicsDefaultRestitution": 0.0,
"physicsInterpolationEnabled": true,
"audioMasterVolume": 1.0,
"audioMusicVolume": 1.0,
"audioSfxVolume": 1.0,
"audioUiVolume": 1.0,
"audioVoiceVolume": 1.0,
"audioAmbientVolume": 1.0,
"audioMaxVoices": 128,
"audioDopplerScale": 1.0,
"audioEnableVoiceStealing": true,
"screenPercentage": 100
},
"build": {
"outputName": "MyGame",
"buildVersion": "0.1.0"
}
}
Edit:
windowTitlewindowWidthwindowHeightresizablefullscreenstartMaximizedUse startupSceneOverride when you want to force a different scene without changing the main .fproject startup scene.
Most projects only touch these if they have a specific need:
forwardPlusTileSizeforwardPlusMaxLightsforwardPlusMaxLightsPerTilescreenPercentageThese control the built-in runtime simulation settings:
physicsFixedTimestepphysicsMaxSubstepsPerFramephysicsSolverVelocityIterationsphysicsSolverSubstepsphysicsContactSpringFrequencyphysicsContactDampingRatiophysicsMaximumRecoveryVelocityphysicsDefaultFrictionphysicsDefaultRestitutionphysicsInterpolationEnabledUse these to set the initial mix and runtime limits:
audioMasterVolumeaudioMusicVolumeaudioSfxVolumeaudioUiVolumeaudioVoiceVolumeaudioAmbientVolumeaudioMaxVoicesaudioDopplerScaleaudioEnableVoiceStealingUse:
outputName for the exported executable and archive base namebuildVersion for the embedded build version| Field | Description |
|---|---|
version |
project version string |
author |
author name |
company |
company name |
description |
project description |
| Field | Default | Description |
|---|---|---|
targetFps |
120 | target frame rate (0 for uncapped) |
vSync |
true | enable vertical sync |
windowTitle |
project name | initial window title |
windowWidth |
1280 | initial window width |
windowHeight |
720 | initial window height |
resizable |
true | allow window resizing |
fullscreen |
false | start in fullscreen |
startMaximized |
false | start maximized |
startupSceneOverride |
"" |
override startup scene |
forwardPlusTileSize |
16 | lighting tile size in pixels |
forwardPlusMaxLights |
256 | maximum total lights |
forwardPlusMaxLightsPerTile |
64 | maximum lights per tile |
physicsFixedTimestep |
1/60 |
physics fixed timestep |
physicsMaxSubstepsPerFrame |
4 | maximum physics catch-up steps per frame |
physicsSolverVelocityIterations |
8 | solver velocity iterations |
physicsSolverSubsteps |
1 | solver substeps |
physicsContactSpringFrequency |
30.0 | contact spring frequency |
physicsContactDampingRatio |
1.0 | contact damping ratio |
physicsMaximumRecoveryVelocity |
2.0 | max penetration recovery velocity |
physicsDefaultFriction |
0.8 | default friction |
physicsDefaultRestitution |
0.0 | default restitution |
physicsInterpolationEnabled |
true | rigidbody interpolation toggle |
audioMasterVolume |
1.0 | master bus volume |
audioMusicVolume |
1.0 | music bus volume |
audioSfxVolume |
1.0 | SFX bus volume |
audioUiVolume |
1.0 | UI bus volume |
audioVoiceVolume |
1.0 | voice bus volume |
audioAmbientVolume |
1.0 | ambient bus volume |
audioMaxVoices |
128 | maximum concurrent voices |
audioDopplerScale |
1.0 | doppler effect scale |
audioEnableVoiceStealing |
true | allow voice stealing at max voices |
screenPercentage |
100 | internal render scale percentage |
| Field | Default | Description |
|---|---|---|
outputName |
project name | exported executable and archive name |
buildVersion |
"0.1.0" |
embedded build version |
Per-project editor files are stored under .frinky/.
.frinky/editor_settings.json stores editor preferences..frinky/keybinds.json stores keybind overrides.