Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request: change cfg from JSON to INI for easier self-editing #80

Closed
FitzRoyX opened this issue Dec 27, 2024 · 3 comments
Closed

Request: change cfg from JSON to INI for easier self-editing #80

FitzRoyX opened this issue Dec 27, 2024 · 3 comments

Comments

@FitzRoyX
Copy link

Probably better to take this argument out of discord and put it here. I understand that modern AAA games don't expect users to configure with text files. However many pc gamers are used to finding config.ini and do not want to see the ingame menus of every old console game awkwardly modded like sm64ex did. Anyway, the arguments are these:

  1. JSON has a lot of indentation and bracketing, this makes it not ideal for regular users to find and edit values without mistakes.
  2. if the default driver values are crashing the app, the menu won't be accessible and cfg editing becomes necessary. See: Attempting to set OpenGL in Windows build (under Wine 9.0) reverts config file back to DirectX #75
  3. some people are less comfortable with a menu because
    ----a. it does not let you preconfigure the app before first run
    ----b. to achieve the "full" nature of "fullscreen", it needs to be hidden, and that requires knowing the hotkey to hide it which is naturally unclear. if you hide it by default, people won't know it exists. It's a double edged sword. soh overlaid helper text at startup to stem the flood of complaints, but this affects presentation.
    ----c. fear of losing progress from enabling a bugfix/debug option at the wrong time
    ----d. many people who own keyboards or laptops without f-keys don't understand that fn+f1 is how to toggle the menu. I've heard that this is being changed to "esc" and will no longer be a problem, though some people might expect "esc" to be the way to exit fullscreen.
    ----e. people accidentally enable "menu controller navigation" and then lose controls ingame without knowing why
    ----f. complex interactions between specific backends have created issues, making people think they can't bind their keyboard

These are just some of the many examples I found of these issues

f1search

Examples of 3e
controller-navigation1

controller-navigation2

controller-navigation3

Example of 3f
dx-inputbug

example ini

[Drivers]
# DirectX or OpenGL, default is DirectX
Video=DirectX
# Windows or SDL, default is Windows
Audio=Windows

[Video]
StartInFullscreen=0
FullscreenWidth=1920
FullscreenHeight=1080
WindowedWidth=1600
WindowedHeight=900
ResizeableWindow=0
Interpolation=1
InterpolatedFPS=60
VSync=1
# 0=none, 1=2x, 2=4x, 3=8x
MSAA=0
# 0=none, 1=linear, 2=three-point
TextureFilter=2

[Audio]
MusicVolume=100
VoiceVolume=100
SoundEffectsVolume=100

[Input]
# 0 to 200, 100 default
StickSensitivity=100
# 0 to 100, 20 default
Deadzone=20
# 0 to 45, 0 default
NotchSnapAngle=0
Rumble=0

[Bindings]
Stick_Up=W
Stick_Down=S
Stick_Left=A
Stick_Right=D
B=C
A=X
Z=Z
Start=Space
L=E
R=R
C_Up=Up
C_Down=Down
C_Left=Left
C_Right=Right
DPad_Up=T
DPad_Down=G
DPad_Left=F
DPad_Right=H

[Hotkeys]
Reset=Backspace
ToggleFullscreen=F11

[Enhancements]
DisableLOD=1
AlwaysDrawPilotHeads=1

[Bugfixes]
FixMacbethEndingCutsceneCamera=1

[Cheats]
InfiniteLives=0
Invincible=0
UnbreakableWings=0
InfiniteBombs=0
HyperLaser=0
SelfDestructButton=0
StartWithFalcoDead=0
StartWithSlippyDead=0
StartWithPeppyDead=0
ScoreEditor=0

[Debug]
DebugMode=0
LevelSelector=0
SkipBriefings=0
ExpertMode=0
SFXJukebox=0
DisableStarfieldInterpolation=0
SpawnerMod=0
JumpToMap=0
LToWarpZone=0
LToLevelComplete=0
LToAllRangeMode=0
DisableCollision=0
SpeedControl=0
DebugEnding=0
@KiritoDv
Copy link
Contributor

I appreciate your comments but thats something from the libultraship library that we can't change on the port, so im closing this issue

@FitzRoyX
Copy link
Author

Dang that took like 30 minutes to write up. I can post it on the LUS issue tracker, or just let Kenix know next time he posts. But I'm guessing he's just going to say that it requires too many code changes or something and it's too far gone.

@garrettjoecox
Copy link
Collaborator

@FitzRoyX I don't think anyone means to discount your opinion, but I think the majority of the Project Leads (the people who make the decisions on a per-port basis) are comfortable with JSON being the underlying storage mechanism for the config. I think effort would be better spent fixing the UX/implementation issues of our menus than making it easier for people to not use them personally.

All of that being said, it is a public repo, you could probably hack together a proof of concept that loads a .ini file like you proposed and overwrites the current configuration on boot for you and anyone else that shares this desire.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants