Config format - Myp3a/GenshinConfigurator GitHub Wiki
All config for Genshin Impact is located in registry. Path to config is Computer\HKEY_CURRENT_USER\SOFTWARE\miHoYo\Genshin Impact
.
Config files are JSON encoded as HEX and stored in registry values.
GENERAL_DATA...
contains settings for the current device, like sensitivity or graphics. This application works with it mostly.
Screenmanager...
entries contain resolution width, height and fullscreen flag. They are simple numbers.
USD_{User_ID}...
entries are storing some "temporary" data - they are responsible for red exclamation marks for sure, and might be for something else. They aren't much useful.
Example config
{
"deviceUUID": "",
"userLocalDataVersionId": "0.0.1",
"deviceLanguageType": 8,
"deviceVoiceLanguageType": 1,
"selectedServerName": "os_euro",
"localLevelIndex": 0,
"deviceID": "",
"targetUID": "",
"curAccountName": "",
"uiSaveData": {
"currWindowResolutionIndex": 0
},
"inputData": {
"scriptVersion": "OSRELWin2.5.0",
"mouseSensitivity": 10.0,
"joypadSenseIndex": 2,
"joypadFocusSenseIndex": 0,
"joypadInvertCameraX": false,
"joypadInvertCameraY": false,
"joypadInvertFocusCameraX": false,
"joypadInvertFocusCameraY": false,
"mouseSenseIndex": 2,
"mouseFocusSenseIndex": 1,
"touchpadSenseIndex": 2,
"touchpadFocusSenseIndex": 5,
"enableTouchpadFocusAcceleration": false,
"lastJoypadDefaultScale": 0.8999999761581421,
"lastJoypadFocusScale": 0.5,
"lastPCDefaultScale": 0.5,
"lastPCFocusScale": 0.4000000059604645,
"lastTouchDefaultScale": 1.0,
"lastTouchFcousScale": 1.0,
"switchWalkRunByBtn": false,
"skiffCameraAutoFix": true,
"skiffCameraAutoFixInCombat": false,
"cameraDistanceRatio": 1.0,
"wwiseVibration": true
},
"graphicsData": {
"currentVolatielGrade": -1,
"customVolatileGrades": [...],
"volatileVersion": "OSRELWin2.5.0"
},
"globalPerfData": "",
"miniMapConfig": 1,
"enableCameraSlope": true,
"enableCameraCombatLock": true,
"completionPkg": false,
"completionPlayGoPkg": false,
"onlyPlayWithPSPlayer": false,
"needPlayGoFullPkgPatch": false,
"resinNotification": true,
"exploreNotification": true,
"volumeGlobal": 10,
"volumeSFX": 10,
"volumeMusic": 8,
"volumeVoice": 10,
"audioAPI": -1,
"audioDynamicRange": 0,
"audioOutput": 0,
"_audioSuccessInit": true,
"enableAudioChangeAndroidMinimumBufferCapacity": true,
"audioAndroidMiniumBufferCapacity": 2048,
"motionBlur": true,
"gyroAiming": false,
"firstHDRSetting": true,
"maxLuminosity": 0.0,
"uiPaperWhite": 0.0,
"scenePaperWhite": 0.0,
"_overrideControllerMapKeyList": [
"OverrideControllerMap__d74a350e-fe8b-4e9e-bbcd-efff16d34115__2000000",
"OverrideControllerMap__d74a350e-fe8b-4e9e-bbcd-efff16d34115__2001000",
"OverrideControllerMap__00000000-0000-0000-0000-000000000000__0"
],
"_overrideControllerMapValueList": [...],
"lastSeenPreDownloadTime": 0,
"mtrCached": true,
"mtrIsOpen": false,
"mtrMaxTTL": 32,
"mtrTimeOut": 5000,
"mtrTraceCount": 5,
"mtrAbortTimeOutCount": 3,
"mtrAutoTraceInterval": 3600,
"mtrTraceCDEachReason": 600
}
Only part of those values are known, some of them are kept just for compatibility. They may change between the game versions.
Name | Type | Value | Description |
---|---|---|---|
deviceUUID | string | Empty | Probably device ID, currently not used |
userLocalDataVersionId | string | "0.0.1" | Might be the version of the config |
deviceLanguageType | int | 1-13 | Game text language ID |
deviceVoiceLanguageType | int | 0-3 | Game voice language ID |
selectedServerName | string | Server name | Last selected server name |
localLevelIndex | int | 0 | ? |
deviceID | string | Empty | ? |
targetUID | string | Empty | ? |
curAccountName | string | Empty | ? |
uiSaveData | dictionary | ... | ? |
uiSaveData.currWindowResolutionIndex | int | 0 | ? |
inputData | dictionary | Input config | Values related to sensitivity and camera |
graphicsData | dictionary | Graphics config | Values related to graphics preset and settings |
globalPerfData | dictionary | PerfData | Last time when you changed a graphics setting (Values must be identical to graphicsData , otherwise ones from here are used) |
miniMapConfig | int | 1 | ? |
enableCameraSlope | bool | true | Automatic view height? |
enableCameraCombatLock | bool | true | Smart combat camera? |
completionPkg | bool | false | ? (true for mobile) |
completionPlayGoPkg | bool | false | ? |
onlyPlayWithPSPlayer | bool | false | Might be related to older PlayStation multiplayer lock |
needPlayGoFullPkgPatch | bool | false | ? |
resinNotification | bool | true | Probably notification about full resin - useless for PC |
exploreNotification | bool | true | Looks like notification about finished expeditions - useless for PC |
volumeGlobal | int | 0-10 | Main volume slider |
volumeSFX | int | 0-10 | SFX volume slider |
volumeMusic | int | 0-10 | Music volume slider |
volumeVoice | int | 0-10 | Voice volume slider |
audioAPI | int | -1 | ? |
audioDynamicRange | int | 0 | Audio dynamic range. 0 - full, 1 - limited |
audioOutput | int | 0 | Audio output format. 0 - stereo, 1 - 5.1? |
_audioSuccessInit | bool | true | ? |
enableAudioChangeAndroidMinimumBufferCapacity | bool | true | ? |
audioAndroidMinimumBufferCapacity | int | 2048 | ? |
vibrationLevel | int | 0-2 | New vibration feature. 0 - Full, 1 - Partial, 2 - Off |
vibrationIntensity | int | 1-5 | Vibration intensity |
usingNewVibrationSetting | bool | true | ? |
motionBlur | bool | true | ? |
gyroAiming | bool | false | Bow aiming with gyroscope |
gyroHorMoveSpeedIndex | int | 1-5 | Horizontal gyroscope sensitivity |
gyroVerMoveSpeedIndex | int | 1-5 | Vertical gyroscope sensitivity |
gyroHorReverse | bool | false | Horizontal gyroscope axis invert |
gyroVerReverse | bool | false | Vertical gyroscope axis invert |
gyroRotateType | int | 0-2 | Axis used for horizontal aiming |
gyroExcludeRightStickVerInput | bool | false | Exclude right stick adjustments when aiming |
firstHDRSetting | bool | true | ? |
maxLuminosity | float | 0.0 | ? |
uiPaperWhite | float | 0.0 | ? |
scenePaperWhite | float | 0.0 | ? |
gammaValue | float | 3.0-1.4 | Gamma setting in-game |
enableHDR | bool | false | HDR? |
_overrideControllerMapKeyList | list | Controller override IDs | List with the controllers that has overridden keys |
_overrideControllerMapValueList | list<ControllerMap> | List of controller maps | Keybindings overrides for previous option |
rewiredDisableKeyboard | bool | false | ? |
rewiredEnableKeyboard | bool | false | ? |
rewiredEnableEDS | bool | true | ? |
disableRewiredDelayInit | bool | false | ? |
disableRewiredInitProtection | bool | false | ? |
conflictKeyBindingElementId | List<string>? | [] | ? |
conflictKeyBindingActionId | List<string>? | [] | ? |
lastSeenPreDownloadTime | int | 0 | ? |
lastSeenSettingResourceTabScriptVersion | string | Empty | ? |
enableEffectAssembleInEditor | bool | true | ? |
forceDisableQuestResourceManagement | bool | false | ? |
needReportQuestResourceDeleteStatusFiles | bool | false | ? |
disableTeamPageBackgroundSwitch | bool | false | Disable region-based background when switching team characters |
disableHttpDns | bool | false | ? |
mtrCached | bool | true | Somehow related to mtr , a traceroute tool |
mtrIsOpen | bool | true | ? |
mtrMaxTTL | int | 32 | ? |
mtrTimeOut | int | 5000 | ? |
mtrTraceCount | int | 5 | ? |
mtrAbortTimeOutCount | int | 3 | ? |
mtrAutoTraceInterval | int | 3600 | ? |
mtrTraceCDEachReason | int | 600 | ? |
mtrTimeInterval | int | 1000 | ? |
mtrBanReasons | List<string>? | [] | ? |
gcgInLevelDefaultShowUIDetail | bool | true | ? |
_customDataKeyList | List<string>? | [] | ? |
_customDataValueList | List<string>? | [] | ? |
_serializedCodeSwitches | List<int> | [] | ? |
urlCheckCached | bool | false | Another tool like mtr ? |
urlCheckIsOpen | bool | false | ? |
urlCheckAllIP | bool | false | ? |
urlCheckTimeOut | int | 5000 | ? |
urlCheckSueecssTraceCount | int | 5 | ? |
urlCheckErrorTraceCount | int | 30 | ? |
urlCheckAbortTimeOutCount | int | 3 | ? |
urlCheckTimeInterval | int | 1000 | ? |
urlCheckCDEachReason | int | 600 | ? |
urlCheckBanReasons | List<string>? | [] | ? |
mtrUseOldWinVersion | bool | true | ? |
greyTestUniqueDeviceId | string | Empty | ? |
muteAudioOnAppMinimized | bool | false | Mute game when not in focus |
Example config
"inputData": {
"scriptVersion": "OSRELWin2.5.0",
"mouseSensitivity": 10.0,
"joypadSenseIndex": 2,
"joypadFocusSenseIndex": 0,
"joypadInvertCameraX": false,
"joypadInvertCameraY": false,
"joypadInvertFocusCameraX": false,
"joypadInvertFocusCameraY": false,
"mouseSenseIndex": 2,
"mouseFocusSenseIndex": 1,
"touchpadSenseIndex": 2,
"touchpadFocusSenseIndex": 5,
"enableTouchpadFocusAcceleration": false,
"lastJoypadDefaultScale": 0.8999999761581421,
"lastJoypadFocusScale": 0.5,
"lastPCDefaultScale": 0.5,
"lastPCFocusScale": 0.4000000059604645,
"lastTouchDefaultScale": 1.0,
"lastTouchFcousScale": 1.0,
"switchWalkRunByBtn": false,
"skiffCameraAutoFix": true,
"skiffCameraAutoFixInCombat": false,
"cameraDistanceRatio": 1.0,
"wwiseVibration": true
},
Name | Type | Value | Description |
---|---|---|---|
scriptVersion | string | OSRELWin{version} | Current config version |
mouseSensitivity | float | 10.0 | ? |
joypadSenseIndex | int | 0-4 | Gamepad sensitivity |
joypadFocusSenseIndex | int | 0-4 | Gamepad aimed sensitivity |
joypadInvertCameraX | bool | false | Invert gamepad X axis |
joypadInvertCameraY | bool | false | Invert gamepad Y axis |
joypadInvertFocusCameraX | bool | false | Invert gamepad X axis (aimed) |
joypadInvertFocusCameraY | bool | false | Invert gamepad Y axis (aimed) |
mouseSenseIndex | int | 0-4 | Mouse sensitivity |
mouseFocusSenseIndex | int | 0-4 | Mouse aimed sensitivity |
touchpadSenseIndex | int | 0-4 | Touchscreen sensitivity |
touchpadFocusSenseIndex | int | 0-4 | Touchscreen aimed sensitivity |
enableTouchpadFocusAcceleration | bool | false | Touchscreen dynamic acceleration |
lastJoypadDefaultScale | float | 0-1 | Gamepad - camera FOV? |
lastJoypadFocusScale | float | 0-1 | Gamepad - aimed FOV? |
lastPCDefaultScale | float | 0-1 | Mouse - camera FOV? |
lastPCFocusScale | float | 0-1 | Mouse - aimed FOV? |
lastTouchDefaultScale | float | 0-1 | Touchscreen - camera FOV? |
lastTouchFcousScale | float | 0-1 | Touchscreen - aimed FOV? |
switchWalkRunByBtn | bool | false | Toggle walking by button / by axis value |
skiffCameraAutoFix | bool | true | Waverider camera view fix |
skiffCameraAutoFixInCombat | bool | false | Waverider camera view fix in combat |
cameraDistanceRatio | float | 0-1 | Default camera distance, between 4.5 (0) and 6.0 (1) |
wwiseVibration | bool | true | ? |
isYInited | bool | true | ? |
joypadSenseIndexY | int | 0-4 | Same sensitivities, but for Y axis? |
joypadFocusSenseIndexY | int | 0-4 | ? |
mouseSenseIndexY | int | 0-4 | ? |
mouseFocusSenseIndexY | int | 0-4 | ? |
touchpadSenseIndexY | int | 0-4 | ? |
touchpadFocusSenseIndexY | int | 0-4 | ? |
lastJoypadDefaultScaleY | float | 0-1 | ? |
lastJoypadFocusScaleY | float | 0-1 | ? |
lastPCDefaultScaleY | float | 0-1 | ? |
lastPCFocusScaleY | float | 0-1 | ? |
lastTouchDefaultScaleY | float | 0-1 | ? |
lastTouchFcousScaleY | float | 0-1 | ? |
Example config
"graphicsData": {
"currentVolatielGrade": -1,
"customVolatileGrades": [
{
"key": 1,
"value": 2
}, {
"key": 2,
"value": 1
}, {
"key": 3,
"value": 1
}, {
"key": 4,
"value": 1
}, {
"key": 5,
"value": 1
}, {
"key": 6,
"value": 1
}, {
"key": 7,
"value": 2
}, {
"key": 8,
"value": 1
}, {
"key": 9,
"value": 1
}, {
"key": 10,
"value": 1
}, {
"key": 11,
"value": 1
}, {
"key": 12,
"value": 1
}, {
"key": 13,
"value": 1
}, {
"key": 16,
"value": 1
}, {
"key": 15,
"value": 1
}, {
"key": 17,
"value": 1
}
],
"volatileVersion": "OSRELWin2.5.0"
}
Graphics settings consists of two main values. First one is preset - if it's set, then all custom settings are ignored. If it isn't set, then the game loads custom graphics settings.
Name | Type | Value | Description |
---|---|---|---|
currentVolatielGrade | int | -1-4? | Graphics preset, where -1 is "Custom" |
customVolatileGrades | Dictionary | ... | Custom graphics settings |
customVolatileGrades.key | int | 1-17 | Setting ID |
customVolatileGrades.value | int | 1-? | Setting value |
volatileVersion | string | OSRELWin{version} | Current config version |
Example config
{
"saveItems": [{
"entryType": 1,
"index": 1,
"itemVersion": "OSRELWin2.7.0"
}, {
"entryType": 7,
"index": 1,
"itemVersion": "OSRELWin2.7.0"
},
...
{
"entryType": 17,
"index": 4,
"itemVersion": "OSRELWin2.7.0"
}],
"truePortedFromGraphicData": true,
"portedVersion": "OSRELWin2.7.0",
"portedFromGraphicData": false
}
This dictionary keeps track of graphics settings changes - on what version you specified your current value.
saveItems.entryType
- graphics setting ID, saveItems.index
- it's value minus one.
Name | Type | Value | Description |
---|---|---|---|
saveItems | List | PerfItem | ? |
saveItems.entryType | int | 1-17 | Graphics setting ID |
saveItems.index | int | 0-7? | Graphics setting value - 1 |
saveItems.itemVersion | string | OSRELWin{version} | Graphics config version |
truePortedFromGraphicsData | bool | true | ? |
portedVersion | string | OSRELWin{version} | Graphics config version |
portedFromGraphicsData | bool | false | ? |
Name | ID | Min | Max |
---|---|---|---|
FPS | 1 | 1 | 3 |
Render Resolution | 2 | 1 | 8 |
Shadow Quality | 3 | 1 | 4 |
Visual Effects | 4 | 1 | 4 |
SFX Quality | 5 | 1 | 4 |
Environment Detail | 6 | 1 | 5 |
Vertical Sync | 7 | 1 | 2 |
Antialiasing | 8 | 1 | 3 |
Volumetric Fog | 9 | 1 | 2 |
Reflections | 10 | 1 | 2 |
Motion Blur | 11 | 1 | 4 |
Bloom | 12 | 1 | 2 |
Crowd Density | 13 | 1 | 2 |
Subsurface Scattering | 15 | 1 | 3 |
Teammate Effects | 16 | 1 | 3 |
Anisotropic Filtering | 17 | 1 | 5 |
Dynamic Character Resolution | 21 | 1 | 2 |
If Shadow Quality is set on low, then Volumetric Fog can't be enabled
FPS options: 30 (1), 60 (2), 45 (3) On mobile, some options are set to 0, and hidden from the settings