"Why must the cancer of multiplayer afflict everything?" —
/u/JesterHellDFPlex is a plugin for DFHack which introduces
simultaneous, real-time online co-op to fortress mode: each player has their own independent view, cursor, menus, etc. so nobody has to wrestle for control. It's a fork of
webfort, so players join just by
connecting from their web browser.
DemonstrationsDemo video, courtesy of BLindiRL, flabort, and Kruggsmash.
Try it out online right now. There are two options currently:
- This site will host a dwarf fortress server for you as a paid service, and also offers a demo (linked).
- courtesy of Hexa from the Dwarf Fortress Discord. Note: this server seems to have a pretty high latency, especially for those outside of Europe. Expect it to take a while to connect, and the UI to be a bit laggy. You can reasonably expect hosting your own server to be smoother. If the server is online, dwarves will be visible here: Join
Another demonstration:
(If the gif in the spoiler is too wide or doesn't play, here are imgur links:
screen 1,
screen 2)
Features- Play fortress mode with your friends! No need to hotseat -- you can actually play simultaneously now. For example, two players might be designating areas to dig while a third is issuing build orders on the manager screen.
- Play fortress mode alone, but with multiple screens into your fortress.
- Going into a menu no longer pauses the game. (This is customizable in dfplex.txt, but highly recommended because otherwise the game will rarely progress if more than one player is playing.) You can still pause in the normal way, though.
Please save regularly (enable seasonal autosave!) and follow the install + set-up instructions after downloading.
DFPlex v0.2.1: Download, compatible with DF + DFHack 0.47.04-r1.(For compatibility with other versions,
compile from source at your own risk.
Build instructions.
Make sure to download exactly these versions!)
You can also use
this site to host a server for you instead of setting the hack up yourself.
Buy a coffee:
Bay12 · MeInstallation InstructionsPlease carefully follow these basic set-up instructions.- You need an existing dwarf fortress + DFHack 0.47.04-r1 installation.
- Download the appropriate zip from the link above and extract it into your df/dfhack installation, respecting the directory structure.
- Make sure to have only the line enable dfplex in your dfhack.init and no other lines, because dfplex is incompatible with many other utilities.
- After launching the game, connect from your web browser to your computer at http://localhost:8000/. (You can configure this in dfplex.txt). Warning: several users have reported problems using Chrome. Please try another browser. (Firefox version 72.01 is known to work fine.)
- If errors occur which block you from making progress with your fortress, try pressing the backslash key (\) to disable multiplexing as a last resort workaround. See "troubleshooting" below for more advice.
For your convenience, flbr has created a Windows batch script that downloads and assembles a fresh df/dfhack/dfplex installation. If you decide to use that script, please report technical difficulties during set-up to that thread, not this one. Caveat: as of 2021-02, some users are reporting this script no longer functions.
Update: as of 2021-04, there may be a working version of the script
here? I haven't tested this, so I give no promises that this works.
- You can resize the dwarf fortress window vertically somewhat, but not horizontally. All players must use the same screen size (This is a bug.)
- some recommended changes to the init files for harmonious multiplayer experience:
- [AUTOSAVE:SEASONAL] (in data/init/d_init.txt)
- [BIRTH_CITIZEN:A_D:D_D] (in data/init/announcements.txt)
- [MOOD_BUILDING_CLAIMED:A_D:D_D] (in data/init/announcements.txt)
- [ARTIFACT_BEGUN:A_D:D_D] (in data/init/announcements.txt) - to configure graphics, edit the config.js file in the hack/www/ directory.
- If you want to play on LAN, you must find out the host computer's local IP address, and other players must connect to that. You can look up how to find the local IP address online. Note that this is not the same as your global IP address, so searching online for "what is my IP address?" won't be enough. For example, if your host machine's IP address is 192.168.1.1, other players might connect to http://192.168.1.1:8000/
- If you want to play online (as opposed to on LAN), you must configure your router to forward the relevant ports. You can look up how to do this online. Note that dfplex requires two ports, and they must both be forwarded by your router. You can look up elsewhere how to configure port forwarding online. The ports used will be displayed in the dfhack window on launch, and they are configurable in dfplex.txt. If your router does not permit port forwarding, you may have luck using a virtual LAN server or other NAT traversal software -- but these can be a pain to set up, so you need to be determined.
- DFPlex is not secure. If you wish to play with people you do not trust, please take your own security precautions, such as running Dwarf Fortress within an isolated container. No efforts were taken by the authors of DFPlex to prevent clients from accessing the host filesystem.
- Fails to start:
- If the game freezes on startup or on save, try pressing enter in the dfhack window.
- Make sure that you've downloaded the right 32 or 64 bit version. DF, DFHack, and DFPlex must all match (64 or 32 bit).
- Check the stderr and stdout log files.
- Linux: use the command ldd on the dfplex plugin to check that the dependencies are satisfied (other than the dfhack dependency, which will be loaded in advance).
[li]Crashes during regular gameplay:
- Check the stderr and stdout log files.
- Make sure you're using a fresh download of df, dfhack, and dfplex. Don't change any configuration files or options other than the ones outlined above.
- No other dfhack mods are supported in conjunction with dfplex.
- Try generating a new world and embarking somewhere else.
- Perhaps one of the players is habitually performing a sequence of UI actions which was not accounted for? Ask everyone what the last thing they were doing before the game crashed was.
- To see if the problem relates to the multiplexing UI code, try playing with just a single player for a few minutes, using uniplex mode (hit backslash; the bar at the top should turn grey). If the game does not crash, this is helpful information to report!
- Advice only for the highly determined: The library IXWebsockets is being used on most builds (including windows) instead of the more stable websocketpp because the buildserver is having trouble with boost. There are only a few ways to enable websocketpp. (1) Use the gcc-4.9 linux build on the buildserver. (You may be able to run this on windows through linux ubuntu subsystems. Also, the buildserver may list the build as rejected, but the build artefact may was likely built and uploaded regardless, so you can download that.) You can also try compiling from source yourself and use the CMake flag -DDFPLEX_IXW=ON; on Linux, it's quite easy to build dfplex if you've had experience building a CMake/C++ application before; the dependencies should be easily installed, and the build instructions are quite straightforward. (You may or may not need to install websocketpp or boost in addition to whatever dfhack recommends). On Windows, the build process is exceedingly fraught, even if you are an expert. You are likely better off installing Linux (or running a VM or the windows subsystems for linux). Please note that for both Linux and Windows, the Debug configuration doesn't work; if you want to debug with gdb, you have to use RelWithDebInfo and disable optimizations. (Yes.) Regardless of OS, if you are having difficulties building, you may politely ask for help on the #dfhack IRC channel; the channel is very kind and welcoming; please be respectful, especially if asking for help with dfplex specifically, as they are under no obligation to support this project. You can also try contacting me through Discord for help with build problems; you can find me if you poke around in the Dwarf Fortress community discord server.
- All players must connect using their browser, even the host. The main window should not be used for play.
- The options menu cannot be accessed from the browser; you must disable multiplex mode (the backslash (\) key), and then the host must press the ESC key in the main dwarf fortress window, not the web browser.
- Assigning trade goods requires disabling multiplex (the backslash (\) key).
In general, pressing the backslash key to disable multiplex mode
is a workaround for anything that doesn't work. Please coordinate with your fellow players before you press it so as not to annoy them.
See below for a list of known bugs.
- stockpile give/take doesn't work.
- Compatability with Dwarf Manipulator.
- Save client name/colour in browser's local settings
I'm not sure how to do adventurer mode yet. Warmist seems to have
arena mode working already.
Suggestions and questions are welcome.
Please submit bug reports here or on github.
Do not submit bug reports about interoperability issues with other plugins -- however, you may submit
requests for compatability with specific plugins.[/list]