-
Notifications
You must be signed in to change notification settings - Fork 7
Developer Resources
This page contains information helpful to those who are working on or wish to work on Angband-Live.
Angband-Live connects users to actual running game processes directly through the web browser. It allows the user to interact with GCU based games like Angband and its variants using their keyboard with an experience almost identical to playing on their local machine through a terminal emulator. Almost identical because modern browsers reserve certain key combinations (such as CTRL+T) and it is not possible for Javascript to intercept them. For more information on that see this stack overflow answer. User data is preserved on the server for authenticated users which enables them to continue play right from where they left off on most computers with internet access.
- Angband (of course)
- PosChengband
- FAangband
- Sil
Each game stores two types of data on the file system. The first type is static data that ships with the game and is the same for all users. This data only changes when there is an update to the game. The second type of data, user data, is specific to each user account and game. Each player is granted a user directory, though players are generally unaware of this. In that directory all character dumps, screenshots, preferences, keymaps and other such files are stored. The game and its variants make a distinction between a 'user' directory and 'var' directories for storing save and scorefiles. The rationale is limiting read/write access to score and savefiles by users, and this is respected by the server - saved games cannot be downloaded for offline play, preventing 'savescumming'. The following list describes only the user data and where it is stored for each game. The following list focuses mostly on the user data and where it is stored for each game on the Angband-Live server. Please note that all caps identifiers like $USER is a placeholder, not actually part of the path.
The information in this section is the same or almost the same for all of the supported games.
After using make install on your configured variants you'll have several more directories not listed in the repository: ~/games/ containing the binaries ~/etc/$game/ is equivalent to the lib folder from the source download and contains static data loaded by the game at runtime. The precise names of each subdirectory are not consistent across variants but their functions are the same. Much of this can be deleted with no affect - e.g. fonts, tiles, icons, sounds (sometimes collected together in an 'xtra' folder). Poschengband seems a little confused here but runs without complaint. ~/share/$game/ contains 'file' or 'screens' information. Some variants use these for gameplay purposes but they are essentially the loading, victory and death screens. ~/var/games/$game/ is where the scorefiles and savefiles are kept - one savefile per user, one scorefile per variant.
By default Angband will store files created by the user at runtime (i.e. character sheets and pref files inside the ~/etc/ directory, but specifying another directory is easy. We specify a subdirectory of ~/public/user/$username/$game Angband will happily create this for us if it does not already exist.
The exception to all of the above is once again Sil. Files have been copied manually and directories created in advance to reflect this structure.