Since a while I played around with a certain idea. I really enjoy watching other people play dwarf fortress and older roguelikes like nethack had the possibility to watch live sessions of people playing it via telnet / ssh. I wanted to bring this kind of feature to dwarf fortress as lightweight alternative to live-streaming services like twitch where you need a recording tool, mic etc. My current approach is to have a simple DFhack
lua script plugin that syncs the df screen with a main-server and makes all active sessions view-able via a website.
Video demonstrations:
- Old one with a lua script:
https://streamable.com/lbz60 (laggy but syncing works + showing different tilesets)
- New one with a plugin:
https://streamable.com/1j4vb (greatly improved fps)
- Website / Streaming Process:
https://streamable.com/cw6nsMy goal is to have a nice looking website where you can browse all the current sessions of people playing and you can join whichever session you want. I think it would be great to also implement a chat so people can interact with the person playing. You could imagine it as a really lightweight version of twitch just targeted at df with minimal setup required. All you need to do is copy the syncing
script plugin into the correct dfhack folder and starting it.
My question is if there is interest in this kind of project?
Finished:- Sync screen with server (plugin -> server)
- Sync screen with browser (server -> browser)
- Only sync parts of the screen that changed to improve speed
- Support Dwarf Fortress tilesets in frontend
- Creation of user accounts
- Setting stream title and description
- Show list of current sessions on the website
- Show info about game
Planned:- Show description of the stream in a nice way
- Add chat to each session
- ...
Limitations:- Width or Height of the window can't be more than 254 cells
- TWBT not supported
Plugin Working:- Windows (x32 DF): Yes
- Windows (x64 DF): Current Goal. Not working yet duo compiling problems...
- MacOSX: Yes
- Linux: Planned
I'm also interested in suggestions about what kind of features could be interesting or useful!
UPDATE:
I wanted to push the possible fps of the stream further for a smoother experience, which wasn't possible with just a lua script. The obvious solution was writing a plugin for dfhack instead of just a script, so I just did that. It's working awesome so far! Feel free to take a look at the newer video