Here are a few options that I can see:
(1) Hard-linkingHard-linking is probably the easiest method of them all, if it can be done. I'm not very experienced with hard-linking itself, but I have played with it before successfully, and is definitely a possibility.
(1.1) Hard-linking filesEvery file that needs to be accessed can be hard-linked. If a new file is created that needs to be accessed by multiple servers, it needs to be hard-linked. This can be done by hand (when dealing with low quantity of files), or automatically (separate application, or Soldat Server script). If the Soldat Server is to do the hard-linking, it is possible for it to use
shell_exec, although safe-mode must be disabled. I would like to note that shell_exec can sometimes be a pain, as I believe a
trick or something needs to be done in order to have it behave as command line (or the linux equivalent) does.
+ No external application
+ No connections
- Every new file created that needs to be accessed must be hard-linked
- Safe-mode must be disabled for script automatically hard-link
- Different methods for hard-linking may be necessary for different OSs
- Requires file access (generally only single or networked computers)
(1.2) Hard-linking directoriesSimply hard-link the directory that contains all the files and sub-directories that need to be accessed. This allows for multiple files to be easily accessed, and even when new files are made in addition, nothing needs to be done in order for them to be accessed.
I've been using this method for a while now for using script files that are shared throughout different scripts, servers, and projects in general. In order to create the hard-link of a directory, a long time ago I made this .bat file:
linkd "shared" "C:/[hidden]/shared"
pause
It creates the directory named "shared" that is hard-linked to the directory "C:/[hidden]/shared". This works for me on Windows 7/XP. I'm sure linux has something similar to this.
+ No external application
+ No connections
- Different methods for hard-linking may be necessary for different OSs
- Requires file access (generally only single or networked computers)
(2) External application connectionThis is the main concept that is going to be used in SGAS (option 3). There is an external application which behaves as the relayer which will relay and redirect information to where it belong. The main advantages of this is that it allows for multiple computers to host severs, and having them share information. For having a database of information, it is also possible to store it at the external application's location, and when the Soldat Servers access it, they contact the external application.
(2.1) External application connection via SocketsThe connection is made via socket use, which generally requires use of threading. Despite how threading is generally frowned upon, many people do not have very many difficulties with it, and makes this for a very valid method, depending if your server can handle threading well or not.
+ Multiple computers have access
- Instability of threading necessary for socket use
- (Claimed) instability of sockets (I've never had an issue)
- Need to create and host an external application
(2.2) External application connection via Admin ClientThe connection is made via admin port connection. In my opinion, this is the most dynamic option that does not sacrifice stability, although for the purpose of a single computer, hard-linking may be a better option.
CurryWurst has created an interesting example using this idea, and may be found at
Exploiting a Soldat Server as TCP Socket Server. Feel free to use that as a reference, guide, or whatever if you wish to.
+ Multiple computers have access
- Admin port is spammed with information (can be made to be filterable)
- Need to create and host an external application
(3) Soldat Global Account System (SGAS)My favorite of them all,
SGAS! SGAS is a unified method that will provide players with accounts, scripts with access to a global database, and scripts with access to communication to other servers (and applications). Basically, it extends scripting. It is currently in development, team including CurryWurst,
Boblekonvolutt, myself, and others.
+ Multiple computers have access
+ No need to fuss with how it happens (SGAS does all the backbone dirty work)
+ Easy to install and use
- Incomplete currently (completion may be further in the future than you would like)