PhysicsFS is a library to provide abstract access to various archives. It is intended for use in video games, and the design was somewhat inspired by Quake 3's file subsystem. The programmer defines a "write directory" on the physical filesystem. No file writing done through the PhysicsFS API can leave that write directory, for security. For example, an embedded scripting language cannot write outside of this path if it uses PhysFS for all of its I/O, which means that untrusted scripts can run more safely.
Symbolic links can be disabled as well, for added safety. For file reading, the programmer lists directories and archives that form a "search path". Once the search path is defined, it becomes a single, transparent hierarchical filesystem.
This makes for easy access to ZIP files in the same way as you access a file directly on the disk, and it makes it easy to ship a new archive that will override a previous archive on a per-file basis. Finally, PhysicsFS gives you platform-abstracted means to determine if CD-ROMs are available, the user's home directory, where in the real filesystem your program is running, etc.
You can find PhysicsFS in next :
The Build Engine can optionally be compiled with PhysicsFS support, which is good, because its standard packfile format offers no compression or long filenames.
ParaGUI is a cross platform toolkit built on Simple Directmedia Layer. That library has, among other useful stuff, a C++ wrapper for PhysicsFS. Here is an API reference for their interface to PhysicsFS.
SDL_sound comes with a technology demonstration program, playsound, that is a generalized sound file playback program. playsound can use PhysicsFS to stream audio out of archive files on-the-fly.
Falling Block Game is a Tetris-style game that uses PhysicsFS under the hood.
Excido is a 3D arcade game using PhysicsFS.
Tales of Middle Earth is an Angband-based RPG that uses PhysicsFS.
Dead Meat is a Bomberman clone with PhysicsFS support.
netPanzer, a multiplayer tactical warfare game, utilizes PhysicsFS.
Z-Raid is a River Raid clone using PhysicsFS on PocketPC devices!
Final Frontier Trader is a 2D single player space strategy, combat, and trading game powered by PhysicsFS.
Yac3De is a 3D engine that is using PhysicsFS to access Doom3 pakfiles in order to load their maps.
The maya2q3 plugin uses PhysicsFS to load shader resources from Quake 3 packages.
MindBender uses PhysicsFS for resource management.
Lincity-NG is a highly-polished SimCity clone that makes use of PhysicsFS.
Probably other software uses PhysicsFS. If you know of one, drop me a line.
What's New in This Release: [ read full changelog ]
· Initialize an array to quiet compiler complaining.
· Some versions of GCC think this can be used uninitialized. It doesn't appear
· to be the case, but we initialize it to keep the compiler happy. It's probably
· a good idea anyhow.
· Backported extra CD/DVD filesystem checks to stable-2.0.
· Add some more filesystem types that might be CDs or DVDs.
· Backing out Doxygen escaping patch on stable-2.0 branch.