RetroArch File Structure Improvement Suggestions
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 14.1k
- Forks
- 2.2k
- Avg merge
- 7h 35m
- Merged PRs (30d)
- 51
Description
Description
I like the fact that RetroArch, despite all the nuances and complexities in game emulation, remains true to the Plug and Play principle.
It seems to me that it would be great to separate directories more strictly for files that a user, in fact, should not touch, and files that, on the contrary, a user may interact regularly. By "more strictly" I mean leave users the freedom they have now to change directories, but change some of the default directories.
I will give an example for macOS.
RetroArch uses two main directories by default: ~/Library/Application Support/RetroArch for assets, configs, cores, etc., and ~/Documents/RetroArch — for saves, states, BIOS images, etc. By default, Library folder (~/Library) is hidden for macOS users and a user's freedom of action within it is very limited, since changes to files in it can cause irreversible damage to the system. In fact, casual users do not even know that this folder exists and can be accessed.
I am confused by the following points in the current RetroArch file structure:
- Screenshots are located in
~/Library/Application Support/RetroArch/screenshotsdirectory. I believe that screenshots, like all other files that are inherently related to the game and curated by a user, such as saves, states, BIOS images, should be in their directories located in~/Documents/RetroArchby default - I believe that when a user uses the Save New Configuration option, the new config file should not be saved to
~/Library/Application Support/RetroArch/config, but to~/Documents/RetroArch/configby default. This will make it easier for a causal user to transfer their configuration files, if necessary. At the same time, the main configuration file remains in its place and all changes are written to it from custom configs using Load Configuration - RetroArch does not have a default folder for ROMs. It is great that users can store their games anywhere. Moreover, someone can use standalone emulators, as in the case of PSX2, without which it is impossible to get achievements for PS2 games at the moment. However, it would be nice to make
~/Documents/RetroArch/romsthe default directory for ROMs, as well as the default directory for File Browser - By default, there are several unspecified directories in the settings: records, playlists (favourites, history, images, etc.), dynamic backgrounds, and so on. I believe that all these directories should be children of
~/Documents/RetroArchdirectory by default - Options Sort Saves/States into Folders by Core Name, Sort Saves/States into Folders by Content Directory and Sort Screenshots into Folders by Content Directory are turned off by default. This options should be turned on, otherwise it all turns into a mess, especially when you try to run a game using different cores
- The user can create any directory structure for storing ROMs, however, for example, storing PlayStation BIOS images in a manually created directory
~/Documents/RetroArch/system/Sony — PlayStationresults in an error. RetroArch only finds images if they are located in~/Documents/RetroArch/systemdirectory - I believe it would be great if RetroArch automatically sorted games into folders by game system name and game title, because all this information is already in the RA game database
- The start directory of File Browser in all cases, except for using the Import Content option, is the root of the hard drive (even if File Browser directory is set in the settings). Instead, the start directory should be macOS current user's User Folder. The user should not be able to see anything outside of this directory in RA File Browser
Also a couple of things that are not directly related to the file structure issues:
- #14555
- I may be wrong, but notifications about the release of a new version of RetroArch are missing in the standalone version of the application. It would be great to add to the application the ability to show a notification to a user at startup if a new version of RetroArch is available with a direct link to download, for example, the DMG file (if using macOS)
- Achievements are disabled by default. I think it would be nice to have them enabled (including achievement screenshots), as achievements are enabled by default on all modern gaming systems as far as I know
Suggested File Structure for the User File Directory
I have not used Windows for a long, long time, so I will give an example for RA macOS default directory ~/Documents/RetroArch.
Since users tend to use user-friendly file naming in Documents folder, I suggest that all directory names should be capitalized and should include spaces instead of underscores.
Suggested File Structure:
~/Documents/RetroArch/Assets/Dynamic Backgrounds
~/Documents/RetroArch/Configs — saved custom configuration files
~/Documents/RetroArch/Configs/Recording — recording configuration file/files
~/Documents/RetroArch/Logs — RetroArch general logs
~/Documents/RetroArch/Logs/Runtime Logs — runtime logs
~/Documents/RetroArch/Playlists
~/Documents/RetroArch/Playlists/Favorites
~/Documents/RetroArch/Playlists/History
~/Documents/RetroArch/Playlists/Images
~/Documents/RetroArch/Playlists/Music
~/Documents/RetroArch/Playlists/Videos
~/Documents/RetroArch/Records
~/Documents/RetroArch/ROMs
~/Documents/RetroArch/Saves
~/Documents/RetroArch/Screenshots
~/Documents/RetroArch/States
~/Documents/RetroArch/System
Version/Commit
- RetroArch: 1.12.0 / 1.11.1 / 1.11.0
Environment Information
- OS: macOS Ventura 13.0 / macOS Monterey 12.6
- Hardware: MacBook Pro (15-inch, 2018), Intel Core i7 (6-core, 2,6 GHz), 16 GB 2400 MHz DDR4, Radeon Pro 560X 4 ГБ
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the macOS defaults described for Save New Configuration, File Browser, Import Content, screenshots, saves, states, and system files. The issue contains several independent directory, sorting, access, notification, and achievement proposals, so done requires narrowing this into a scoped change with agreed default behavior and validation criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, macos
- Domain
- desktop, operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100