- Updated VFS info file

- Disabled Real-Time Sneak per default

git-svn-id: https://ja2svn.mooo.com/source/ja2_v1.13_data@1170 4f8fa57e-7814-0410-bad4-adc449f26b7c
This commit is contained in:
Wanne
2009-07-14 08:39:23 +00:00
parent 5f599e4f87
commit eae15ab7ae
2 changed files with 209 additions and 151 deletions
+2 -2
View File
@@ -325,8 +325,8 @@ ENABLE_ARMOR_COVERAGE = TRUE
; turn-based will continue until the player no longer sees any enemies. ; turn-based will continue until the player no longer sees any enemies.
;****************************************************************************************************************************** ;******************************************************************************************************************************
ALLOW_REAL_TIME_SNEAK = TRUE ALLOW_REAL_TIME_SNEAK = FALSE
QUIET_REAL_TIME_SNEAK = TRUE QUIET_REAL_TIME_SNEAK = FALSE
;****************************************************************************************************************************** ;******************************************************************************************************************************
+207 -149
View File
@@ -1,17 +1,40 @@
------------- Howto setup the Virtual File System (VFS) ------------- ------------- Howto setup the Virtual File System (VFS) -------------
v 1.0 by BirdFlu v 1.1 by BirdFlu
* Table of Contents *
---------------------
I. * Introduction
II. * Configuration
II.1 - Glossary
II.2 - Basic Configuration
II.2.1 main section
II.2.2 profiles
II.2.3 locations
II.3 - Use Cases
II.3.1 main game files
II.3.2 "1.13 Mod"
II.3.3 User Mods
II.4 - Extension
II.4.1 += Extension
III. * Points of Discussion
*********************************** ***********************************
I. Introduction I. Introduction
*********************************** ***********************************
The Virtual File System (VFS) manages file handling and offers a unified The Virtual File System (VFS) manages file handling and offers a unified
view on the file system at game runtime. All files are accessible through view on the file system to the game at runtime. All files are accessible through
a path inside the VFS. During the setup, files and directories can be mapped a path inside the VFS. During the setup, files and directories can be mapped
to a specified location in the VFS independent of its real location on the to a specified location in the VFS independent of its real location on the
hard disc. Additionally to the mapping of real files and directories, also hard disc. Additionally to the mapping of real files and directories, also
file archives can be mapped. Only SLF and uncompressed 7z archives are file archives can be mapped. Only SLF and uncompressed 7z archives are
supported right now. supported right now.
The current layout of the VFS is based on the original Ja2 game data directory, The current layout of the VFS is based on the original Ja2 game data directory,
@@ -23,14 +46,14 @@ e.g. Tilesets/0/smguns.sti), the game looks in the Data directory first, and whe
the file cannot be found there, it looks in the according archive (tilesets.slf the file cannot be found there, it looks in the according archive (tilesets.slf
in this case). in this case).
The 1.13 Mod adds another layer on top, which is the Data-1.13 directory that The 1.13 Mod adds another layer on top, the Data-1.13 directory, that
behaves in the same way as the Data directory. That is, when a file is accessed, behaves in the same way as the Data directory. That is, when a file is accessed,
the game looks in the Data-1.13 directory first and only then continues with the the game looks in the Data-1.13 directory first and only then continues with the
previously described steps. previously described steps.
The VFS extends this system even further. It externalizes the definition and The VFS extends this system even further. It externalizes the definition and
configuration of these layers or profiles (as they are called in the VFS jargon) configuration of these layers or profiles (as they are called in the VFS jargon)
and allows for an unlimited number of them. Additionally the 7z file (uncompressed) and allows for an unlimited number of them. Additionally, the 7z file (uncompressed)
archive format is supported. Now the order of inclusion of the profiles and the archive format is supported. Now the order of inclusion of the profiles and the
actual files and directories lie in the hands of the user. Thus a proper actual files and directories lie in the hands of the user. Thus a proper
configuration of the VFS is required. configuration of the VFS is required.
@@ -78,8 +101,8 @@ Lets start with a basic configuration.
II.2.1 main section II.2.1 main section
----------------------------------- -----------------------------------
The ini file start with The ini file start with
[vfs_config] [vfs_config]
PROFILES = profile1, profile2, profile3, ... PROFILES = profile1, profile2, profile3, ...
The value of the key PROFILES is a list of profile names. For every element The value of the key PROFILES is a list of profile names. For every element
(profile) in this list another section must exist that has the format (profile) in this list another section must exist that has the format
@@ -88,11 +111,11 @@ The value of the key PROFILES is a list of profile names. For every element
II.2.2 profiles II.2.2 profiles
----------------------------------- -----------------------------------
[PROFILE_profile1] [PROFILE_profile1]
NAME = Some Arbitrary Name (probably a mod's Name) NAME = Some Arbitrary Name (probably a mod's Name)
LOCATIONS = location1, location2, loaction 3 LOCATIONS = location1, location2, loaction 3
PROFILE_ROOT = Profiles\mod1 PROFILE_ROOT = Profiles\mod1
WRITE = TRUE WRITE = TRUE
Each profile definition must have a NAME key and also a LOCATIONS key. The value Each profile definition must have a NAME key and also a LOCATIONS key. The value
of NAME can be used inside the game to access the data of the specified profile. of NAME can be used inside the game to access the data of the specified profile.
@@ -108,18 +131,18 @@ supposed to have the TYPE = DIRECTORY. This directory should be mapped as root
described properties. Thus the written temporary files will be saved in one place, described properties. Thus the written temporary files will be saved in one place,
instead of being scattered over multiple unrelated directories. instead of being scattered over multiple unrelated directories.
II.2.2 locations II.2.3 locations
----------------------------------- -----------------------------------
[LOC_location1] [LOC_location1]
TYPE = DIRECTORY TYPE = DIRECTORY
PATH = PATH =
MOUNT_POINT = MOUNT_POINT =
[LOC_location2] [LOC_location2]
TYPE = LIBRARY TYPE = LIBRARY
PATH = profiles/libs/archive.slf PATH = profiles/libs/archive.slf
VFS_PATH = archive.slf VFS_PATH = archive.slf
MOUNT_POINT = MOUNT_POINT =
A location section name is build from an element from the LOCATIONS list of the A location section name is build from an element from the LOCATIONS list of the
profile that is prepended with LOC_, e.g. [LOC_location1]. For every location the profile that is prepended with LOC_, e.g. [LOC_location1]. For every location the
@@ -149,54 +172,54 @@ II.3.1 main game files
----------------------------------- -----------------------------------
The main use case is the setup of the main files for the game. The main use case is the setup of the main files for the game.
############## ##############
[vfs_config] [vfs_config]
PROFILES = Libs, Data PROFILES = Libs, Data
############## ##############
[PROFILE_Libs] [PROFILE_Libs]
NAME = Ja2 game libraries NAME = Ja2 game libraries
LOCATIONS = Anims, ..., Faces, ..., Tilesets, ... LOCATIONS = Anims, ..., Faces, ..., Tilesets, ...
PROFILE_ROOT = Data PROFILE_ROOT = Data
[PROFILE_Data] [PROFILE_Data]
NAME = Ja2 game files NAME = Ja2 game files
LOCATIONS = Files LOCATIONS = Files
PROFILE_ROOT = Data PROFILE_ROOT = Data
############## ##############
[LOC_Files] [LOC_Files]
TYPE = DIRECTORY TYPE = DIRECTORY
PATH = PATH =
MOUNT_POINT = MOUNT_POINT =
############## ##############
[LOC_Anims] [LOC_Anims]
TYPE = LIBRARY TYPE = LIBRARY
PATH = anims.slf PATH = anims.slf
MOUNT_POINT = MOUNT_POINT =
[...] [...]
[LOC_Tilesets] [LOC_Tilesets]
TYPE = LIBRARY TYPE = LIBRARY
PATH = tilesets.slf PATH = tilesets.slf
MOUNT_POINT = MOUNT_POINT =
############## ##############
So, basically, you have the profile that specifies the game libraries as described So, basically, you have the profile that specifies the game libraries as described
in (I.). Following is the profile with the Data directory. Since you need to have in (I.). Following is the profile with the Data directory. Since you need to have
a writable profile, we define a user profile that will contain only user data (the a writable profile, we define a user profile that will contain only user data (the
other profiles contain only game data). other profiles contain only game data).
[vfs_config] [vfs_config]
PROFILES = Libs, Data, UserProfile PROFILES = Libs, Data, UserProfile
[Libs and Data as before] [Libs and Data as before]
[PROFILE_UserProfile] [PROFILE_UserProfile]
NAME = User files NAME = User files
LOCATIONS = LOCATIONS =
PROFILE_ROOT = Profiles\UserProfile PROFILE_ROOT = Profiles\UserProfile
WRITE = true WRITE = true
If LOCATIONS is empty and WRITE is set to TRUE, then a writable directory in If LOCATIONS is empty and WRITE is set to TRUE, then a writable directory in
PROFILE_ROOT will be initialized automatically. PROFILE_ROOT will be initialized automatically.
@@ -205,20 +228,20 @@ II.3.2 "1.13 Mod"
----------------------------------- -----------------------------------
Adding a mod is simple. We take the 1.13 Mod as an example. Adding a mod is simple. We take the 1.13 Mod as an example.
[vfs_config] [vfs_config]
PROFILES = Libs, Data, v113, UserProfile PROFILES = Libs, Data, v113, UserProfile
[Libs, Data and UserProfile as before] [Libs, Data and UserProfile as before]
[PROFILE_v113] [PROFILE_v113]
NAME = v1.13 NAME = v1.13
LOCATIONS = datav113_dir LOCATIONS = datav113_dir
PROFILE_ROOT = PROFILE_ROOT =
[LOC_datav113_dir] [LOC_datav113_dir]
TYPE = DIRECTORY TYPE = DIRECTORY
PATH = Data-1.13 PATH = Data-1.13
MOUNT_POINT = MOUNT_POINT =
The new profile for the Mod 1.13 is inserted into the profile list after the The new profile for the Mod 1.13 is inserted into the profile list after the
Data profile, but before UserProfile. So, whenever a file is accessed, it Data profile, but before UserProfile. So, whenever a file is accessed, it
@@ -231,112 +254,147 @@ Instead of adding game data, the user can also add or replace the writable
profile (user profile). Thus, he can try out a new mod (that uses the VFS system) profile (user profile). Thus, he can try out a new mod (that uses the VFS system)
without risking to overwite his savegames (and other temporary files). without risking to overwite his savegames (and other temporary files).
################# #################
[vfs_config] [vfs_config]
PROFILE = Libs, Data, v113, ExperimentalMod, UserProfile_exp PROFILE = Libs, Data, v113, ExperimentalMod, UserProfile_exp
################# #################
[Libs, Data, v113 as before] [Libs, Data, v113 as before]
################# #################
[ExperimentalMod as in II.3.2] [ExperimentalMod as in II.3.2]
[PROFILE_ExperimentalMod] [PROFILE_ExperimentalMod]
NAME = Files for experimental Mod NAME = Files for experimental Mod
LOCATIONS = ExpMod_Libs, ExpMod_Files LOCATIONS = ExpMod_Libs, ExpMod_Files
PROFILE_ROOT = Profiles/ExpMod PROFILE_ROOT = Profiles/ExpMod
[LOC_ExpMod_Libs] [LOC_ExpMod_Libs]
TYPE = LIBRARY TYPE = LIBRARY
PATH = exp_mod.7z PATH = exp_mod.7z
MOUNT_POINT = Tabledata MOUNT_POINT = Tabledata
[LOC_ExpMod_Files] [LOC_ExpMod_Files]
TYPE = DIRECTORY TYPE = DIRECTORY
PATH = ModFiles PATH = ModFiles
MOUNT_POINT = Interface MOUNT_POINT = Interface
################# #################
[PROFILE_UserProfile_exp] [PROFILE_UserProfile_exp]
NAME = User file for ExpMod NAME = User file for ExpMod
LOCATIONS = LOCATIONS =
PROFILE_ROOT = Profiles\User_ExpMod PROFILE_ROOT = Profiles\User_ExpMod
WRITE = true WRITE = true
(NOTE: the user directories have to exist, even if they are empty) (NOTE: the user directory has to exist, even if it is empty)
Since you can define the filenames for you VFS configuration file in ja2.ini, Since you can define the filenames for you VFS configuration file in ja2.ini,
you can create a couple of vfs config file and switch between then fairly you can create a couple of vfs config file and switch between them fairly
easy easy
############# ja2.ini ############# ja2.ini
[Ja2 Settings] [Ja2 Settings]
;VFS_CONFIG_INI = vfs_config.main.ini ;VFS_CONFIG_INI = vfs_config.main.ini
;VFS_CONFIG_INI = vfs_config.my_mod.ini ;VFS_CONFIG_INI = vfs_config.my_mod.ini
VFS_CONFIG_INI = vfs_config.ExpMod.ini VFS_CONFIG_INI = vfs_config.ExpMod.ini
-----------------------------------------------
//********************************** II.4 Extensions
Combine INIs: ===================================
//**********************************
It is possible now to use += in an ini file, which appends a value to a previously set entry, making it a essentially list. Additionally, II.4.1 += Extension
in ja2.ini you can specify a list of ini files instead of only one file. Of course only one value works too, so everything is optional. -----------------------------------
In an ini file it is possible to use the += operator, which appends a value to
a previously set entry, making it a essentially list. This is possible, because
internally a data structure (PropertyContainer) is used that contains a set of
mappings, that in turn map two keys to a property
[key1][key2] = property
This data structure can be initialized from an ini file, which make 'key1' a
section, 'key2' a key and 'property' the value of that section-key pair in that
ini file. This data structure can also be initialized from multiple ini files,
where the += operator appends a new value to an already defined entry.
This gives us the possibility to define an ini file for every mod (or to combine inis as we like, as long as the ordering is the same.) I'll give you an example. This extenstion is used in the configuration of the VFS, such that the definition
of the VFS_CONFIG_INI value in in ja2.ini accepts a list of configuration files. As
one value makes a one-valued list, this extension fits nicely in the system without
requiring modifications to existing configuration files.
--------- vfs_config.vanilla.ini --------- So, a possible application of this extension could be the stand-alone configuration
[vfs_config] of a mod, where each mod brings an own configuration file that is merged with
PROFILES = SlfLibs, Vanilla, UserProf configuration files from other mods. Thus, it is easy to create a valid configuration
for a larger number of mods, where otherwise for every mod combination an own
configuration file would have to be created. And even for a small amount of
(combinable) mods the total number of configuration files would increase very fast.
[PROFILE_SlfLibs] For the default mod combination (Vanilla, 1.13) there would be two mod and one user
.... configuration file
[PROFILE_Vanilla] ############# vfs_config.ja2.ini
.... [vfs_config]
PROFILES = SlfLibs, Ja2Data
[LOC_...] [PROFILE_SlfLibs]
.... ...
....
--------- ---------
--------- vfs_config.v113.ini --------- [PROFILE_Ja2Data]
[vfs_config] ...
PROFILES += v113
[PROFILE_v113] [LOC_...]
NAME = v1.13 ...
LOCATIONS = datav113_dir
PROFILE_ROOT =
[LOC_datav113_dir] ############# vfs_config.v113.ini
TYPE = DIRECTORY [vfs_config]
PATH = Data-1.13 PROFILES += v113
MOUNT_POINT =
--------- ---------
--------- vfs_config.user.ini --------- [PROFILE_v113]
[vfs_config] NAME = v1.13
PROFILES += UserProf LOCATIONS = datav113_dir
PROFILE_ROOT =
[PROFILE_UserProf] [LOC_datav113_dir]
NAME = Player Profile TYPE = DIRECTORY
LOCATIONS = PATH = Data-1.13
PROFILE_ROOT = Profiles\UserProfile MOUNT_POINT =
WRITE = true
--------- ---------
So, in ja2.ini we would have the following entry for Vanille ############# vfs_config.user.ini
[vfs_config]
PROFILES += UserProf
VFS_CONFIG_INI = vfs_config.vanilla.ini, vfs_config.user.ini [PROFILE_UserProf]
NAME = User Profile
LOCATIONS =
PROFILE_ROOT = Profiles\UserProfile
WRITE = true
##############
and for v1.13 The actual combination of mods would be done in the file ja2.ini, where
VFS_CONFIG_INI = vfs_config.vanilla.ini, vfs_config.v113.ini, vfs_config.user.ini ############# ja2.ini
[Ja2 Settings]
VFS_CONFIG_INI = vfs_config.ja2.ini, vfs_config.user.ini
and for any other mod would be the Vanilla game configuration, and the following
VFS_CONFIG_INI = vfs_config.vanilla.ini, vfs_config.v113.ini, mod1.ini, mod2.ini, vfs_config.user.ini ############# ja2.ini
[Ja2 Settings]
VFS_CONFIG_INI = vfs_config.ja2.ini, vfs_config.v113.ini, vfs_config.user.ini
Of course, the user.ini can be adjusted to every mod, so that savegames are not mixed. So, if you (=inexperienced user) want to add a small mod, you don't have to struggle with a big incomprehensible ini, but instead just take the provided mod ini (which will work if all files are in default directories) and add it to the ini list in ja2.ini. would be the setup for the "1.13" mod.
Other mods can be added by simply entering its configuration file
in the list
############# ja2.ini
[Ja2 Settings]
VFS_CONFIG_INI = vfs_config.ja2.ini, vfs_config.v113.ini, mod1.ini, mod2.ini, vfs_config.user.ini
In order to avoid mixing savegames and temporary files of different mod combinations,
a separate user profile directory can be used, where every user profile is defined
in an own user configuration file. The user profile can be selected by adding the
according configuration file at the end of the mod configuration file list.
***********************************
II. Points of Discussion
***********************************
TODO: ...