-
Notifications
You must be signed in to change notification settings - Fork 0
Config format
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