Dumple BBS Server

One day, I felt nostalgic for the good old bulletin board systems (BBSs) I used to call on my trusty 2400 baud modem. And so, I decided to write a simple BBS server in Python. I called the resulting beast Dumple. The ultimate goal is to create a living museum of the best (and the worst!) of many years of online gaming. Something analogous to the MAME project (though not nearly so ambitious!).

You can look at some screenshots of DumpleBBS in action. Or, you can connect to the Dumple development BBS, Titans of Old. And if you get the urge, you can even download the latest version and run a server yourself. Or, you can read what I have to say about doors.

Requirements

(At some point, I hope to make DumpleBBS a simple push-button tool for online gaming. It's still at an early stage of development, so at this point I can't recommend running your own DumpleBBS server unless you're ready to look at code rather a lot).

Dumple is written in Python, so you need Python to run it. The admin interface (DumpleUI.py) requires the wxPython library. (You can run the server without the admin interface, but you probably don't want to).

In order to do anything interesting with Dumple, you'll probably need to be running a Windows machine so that you can execute all the yummy old DOS doors. The DumpleBBS .zip file includes NetFoss, a FOSSIL driver for Windows NT/XP which bridges between FOSSIL-capable doors and Winsock handles. COM-port-to-IP redirection (with software like the commercial program NetSerial) is another option. Dumple can also handle "doors" written in pure Python. It's conceivable that all this could be made to work on Linux with DOS emulation, but I wouldn't know how to begin doing so!

Setup/Configuration

Eventually this will all be configurable from the admin interface, but for now, here's what you need to know. Overall configuration data goes to config.xml. The installed doors are listed in doors.xml. The user database is in users.xml. Logged output goes to syslog.txt. A simple database (tab-delimited text files) of what doors have been run is output to the BigBrother subdirectory. And menu text files can be built in the Menus subdirectory. At minimum, you'll probably want to (a) add doors to doors.xml, and (b) tweak things like the system name in config.xml.

How Dumple Works

Dumple doesn't use a modem - modems are slow, and most recent machines don't have them installed anyway. (However, COM port support should be easy enough to add if anyone feels like testing it) Instead, Dumple handles TCP/IP connections from programs like Telnet. To run most DOS BBS doors, Dumple calls the third-party program NetFoss, a FOSSIL driver which handles communications between the door and the "modem" (actually, the WinSock handle of the user's TCP/IP socket). Another option, which seems to mostly work, is to use a "virtual modem" like NetSerial. Virtual modems are slower then NetFoss's NetCom communication engine, and I don't know of any free ones, but they do work with old doors that don't support FOSSIL.

One key to how Dumple operates is that EVERYTHING is a door - even the login screen. This means that the core Dumple code can be customized in a variety of different ways, without the need for lots of coding.

Features In Place

  • Serve doors to users over TCP/IP
  • Simple XML config file for doors
  • Multi-node game support (at last!)
  • Simple admin application

    Features In The Works

  • More sophisticated user record (ANSI flag, real name, location, ...?)
  • More admin options (no need to open text files ever)
  • BBS listing (option to register BBS with a central server that provides IPs and ports; stale servers go away after enough failed connections)
  • Message board door (with ANSI stamp collecting, maybe)
  • Scriptable, ANSI-enabled client? (telnet is good, and putty is great but needs a proper DOS font)
  • Python door library, with docs and examples
  • InterBBS support
  • "Busy" games shown in red on the main menu
  • Queue to wait in line for the next open game node
  • Run aoor design contest
  • Run botting contest (no humans allowed - or maybe Bots Versus Human)
  • .doorzip file association and zip scripts for one-click door installation
  • Big ol' BitTorrent archive of top 100 doors
  • Time-slowdown and time-acceleration - a hack to get quickened games to finish in an afternoon, or slowed games that people can play once a week and still compete