GameSrv Documentation
I kind of suck at writing documentation, but here's my attempt at describing how the latest version of GameSrv can be installed/configured/customized
Skip to Installation, Configuration, Customization
Installation
Windows
On Windows, installation should be pretty straightforward for Win98 and newer (Win95 not supported, sorry):
- Every supported platform will require the .NET framework 2.0
- On some really old platforms (Win98 for sure, possibly WinME) the .NET framework 2.0 will require Internet Explorer 6
- On Windows Vista and Windows 7 (and presumably any newer version to come) you'll need to copy sbbsexec.dll to your \Windows\System32 directory.
- Also on Windows Vista and Windows 7 (and presumably any newer version to come) you should take care when picking where to extract the GameSrv archive to. These versions of Windows have increased security, so installing GameSrv to \Program Files will probably not work, so I'd recommend \GameSrv instead. Actually I recommend \GameSrv for any version of Windows, but the older ones don't matter so much
That should be it!
Linux
Linux will take a bit of extra work, due to the fact that some extra software is required, some of which must be compiled. Here's what I did on my Ubuntu Server 11.04 x86 VPS:
- Install the prerequisites: sudo apt-get install build-essential dosemu libglib2.0-dev libmono-system-data2.0-cil mono-gmcs mono-runtime pkg-config
- Extract dosutils.tgz, which has some useful old DOS utilities that may come in handy in DOSEmu: cd dosutils then tar zxvf dosutils.tgz then cd ..
- Compile pty-sharp, which adds pseudo terminal support to mono: tar zxvf pty-sharp-1.0.tgz then cd pty-sharp-1.0 then ./configure --prefix=/usr then make then sudo make install
- And lastly, create the user that GameSrv will run as: groupadd gamesrv then useradd -g gamesrv -s /usr/sbin/nologin gamesrv then chown -R gamesrv:gamesrv /gamesrv
I think that's all I did. If I forgot a step, or if things were different for your distribution/version, please let me know
Configuration
Main Configuration
The main configuration for GameSrv is stored in config\gamesrv.ini. In the future I'll add additional documentation here, but for now just read the comments for each entry in that file.
Logon Process
The logon process (that is, the actions that occur after a user enters their username and password) is stored in config\logonprocess.ini. Again, documentation will probably be added here in the future, but for now just read the comments in the ini file.
Logoff Process
The logoff process (that is, the actions that occur after a user execute the LogOff menu command) is stored in config\logoffprocess.ini. Again, documentation will probably be added here in the future, but for now just read the comments in the ini file.
New User Registration
When a new user registers, only two questions are hardcoded into the system: Alias, which acts as their username, and password, which should be self explanatory! If you want any additional information from the user, you can add questions to the new user registration process by editing the config\newuser.ini file. I know I sound like a broken record, but there's no documentation here yet, instead read the ini file and look at the sample questions it contains.
Doors
Each door you want to run should have a unique ini in the doors sub-directory. There is a sample doors\_sample.ini you can look at to see how to setup the door. As with the rest of this section, further documentation is coming soon, so just read the sample (or look at the configuration for the other bundled doors).
Menus
Each menu on your system should have a unique ini in the menus sub-directory. The menus\main.ini has information describing the structure and parameters for the ini file.
Customization
Prompts
Every prompt in the system (unless I missed some) can be configured by changing a file in the ansi sub-directory. At some point I'd like to list each file, and it's purpose, but for now just go and open them all and see what they say, and change them to your liking.
Bulletins
GameSrv ships with two really crappy default bulletins. You'll probably want to replace them, or remove them altogether if you don't want them. As you'll see when you look in the menus\bulletins.ini, they just use the DisplayFilePause action to display a file in the bulletins sub-directory, so it's easy to add/edit/delete ones if you want.
Menus
By default, all menus will display using the built-in canned menus (that were stolen from Shotgun PRO). If you want to display something more unique, you can put .ans files in the menus sub-directory, using the same name as the .ini file. So for example to customize the MAIN menu, create a menus\main.ans file.
You can also create different menus for each access level, so for example if you have an item on the main menu that only sysops with an access level of 100 can see, then you can create a menus\main.ans that everyone will see, but also create a menus\main100.ans that only users with access level 100 will see. Similarly if you have a reduced menu that twit users should see, you could create a third menus\menu0.ans.
MCI Codes
The ansis/bulletins/menus all support using MCI codes, which allow you to embed certain variables into the display. The currently supported codes are:
| ACCESSLEVEL | The current user's numeric access level |
| ALIAS | The current user's alias |
| BBSNAME | Your BBS name, as defined in the config\gamesrv.ini |
| DATE | The system's current date, in short format |
| GSDIR | The directory GameSrv is running from |
| MENUNAME | The menu the user last loaded |
| NODE | The node the user signed on to |
| OPERATINGSYSTEM | The system's operating system |
| SYSOPEMAIL | Your email address, as defined in config\gamesrv.ini |
| SYSOPNAME | Your name, as defined in config\gamesrv.ini |
| TIME | The system's current time, in short format |
| TIMELEFT | The current user's time left for this call, in hh:mm:ss format |
Additionally, every new user question can be accessed using the upper-case section name found in the config\newuser.ini file. So for example, a [RealName] section in the newuser.ini file can be accessed as REALNAME.
To use the codes, wrap them in { and } characters. So for example, {ALIAS} will display the user's alias
Each code also supports justification of short values. So for example, if you want to display the user's access level and always have it take up 3 spaces on screen, use {ACCESSLEVEL3} to left-align the text and pad the right side with spaces, or {3ACCESSLEVEL} to right-align it and pad the left with spaces.
When values are too long for the requested size, they'll be truncated. So for example, if you want to display the user's alias (which is 'rumpelstiltskin') and always have it take up 10 spaces on screen, use {ALIAS10} to truncate the end of the string leaving 'rumpelstil', or {10ALIAS} to truncate the beginning of the string leaving 'lstiltskin'. (Not that you'd probably ever want to truncate the alias so short, but it's just an example of how it works.)