The current resource system is fine, and works well imho, but it's also unwieldy to work with the filesystem directly. I was a bit shortsighted when making the resource system, in trying to abstract it to work with any kind of file sources like zip and vpk I didn't realize that raw filesystem operations would be so crucial. The resource provider system needs to be refactored into a virtual filesystem. It should know what filesystem providers are read-only, what filesystem providers can provide raw file paths (which are sometimes necessary!), and perhaps one day provide additional operations like watching for file or directory changes.
Make a wrapper over the fs called Filesystem
Basically using the source path system, but better
Can add directories or archives to paths
When accessing a file, they are assumed to be read-only unless the search path is marked as writable
GAME path is read-only by default, can be overridden by tooling, the engine folder and game-specific folder are automatically added
CFG path is writable, %APPDATA%/Chira/ProjectName/ on Windows
There needs to be a distinction between running games from raw files versus exporting games on certain platforms, but we don't need to worry about that yet.
Component to Improve
Core Engine
Describe Your Suggestion
The current resource system is fine, and works well imho, but it's also unwieldy to work with the filesystem directly. I was a bit shortsighted when making the resource system, in trying to abstract it to work with any kind of file sources like zip and vpk I didn't realize that raw filesystem operations would be so crucial. The resource provider system needs to be refactored into a virtual filesystem. It should know what filesystem providers are read-only, what filesystem providers can provide raw file paths (which are sometimes necessary!), and perhaps one day provide additional operations like watching for file or directory changes.
Filesystem
%APPDATA%/Chira/ProjectName/
on WindowsThere needs to be a distinction between running games from raw files versus exporting games on certain platforms, but we don't need to worry about that yet.