An issue with automatic Dwarf Fortress Remote server update on Linux

I have identified a problem that causes the Remote plugin not to be reloaded during automatic update on Linux. Remote server consists of Lua scripts and a plugin, which is updated very rarely so this usually doesn’t cause problems. However the version 1.7.0 that introduced creature graphics contains changes that cause the iOS app to crash if the plugin is not reloaded.

I’m working on a fix, in the meanwhile if you experience app crashes when connecting to a game, simply restart DF, or, if that doesn’t help, download and install the latest package from


DIY Blocky Stickers

An iMessage app for iOS 10 allowing everyone to create their own blocky style stickers. Don’t be limited by pre-made sticker packs, create your own!

Dwarves will finally listen to your commands.

I’m happy to announce that Dwarf Fortress Remote 1.30 is available on the App Store. Main new feature of this version is support for creature graphics. Default Spacefox tileset and tileset packages available from have been updated to include matching creature graphics sets.

Also in this release:

Reconnection to games will now be faster, however initial connection may be slower due to creature graphics processing.

When designating, cancel button will now return to the first corner selection instead of cancelling the designation mode completely. This can be reverted to the old behaviour in System Settings. Also, long pressing cancel button will cancel designation straight away.

Fixed a crash when filtering unit list with flashing (having legendary skill level) units on screen. Fixed some names flashing to black instead of light gray.


Updating Dwarf Fortress in Docker container

If you’re running DF Remote in a Docker container, below are the instructions to update to the latest version of Dwarf Fortress.

  1. Find the name of your container. It may be df1 if you followed standard instuctions. Otherwise, use docker ps command and use your name in place of df1 in following commands.
  2. Make sure you have saved your game and stop the container: docker stop df1
  3. Update server image: docker pull mifki/dfremote
  4. Start a new container using the same data folder: docker run -dtp 1235:1235/udp --volumes-from df1 --restart=unless-stopped --name=df_new mifki/dfremote and set a password: docker exec df_new ./dfhack-run remote pwd "YOUR_PWD_HERE"
  5. Make sure you can connect to the new server.
  6. Delete the old container: docker delete df1 and rename the new container to the old or standard name, if you wish: docker rename df_new df1

I have added search functionality to the in-app help. Apart from being just useful, this will allow me to add more content much more easily, not worrying how players are going to find it. Especially for things that are not related to any particular game screen, like materials, items and general game concepts.

By the way, you can also access the help in your browser here.


I’m happy to announce that Dwarf Fortress Remote 1.20 is available on the App Store. This release brings support for DF version 0.43.03, almost the latest game release, and contains several other improvements.

What’s new in the game
Releases 0.42 and 0.43 greatly change the game. You can now designate taverns, libraries and temples, and set tavern keepers, scholars and other occupations. Visitors, including other races, will come to your fortress to work in this locations or join your military, petition for residency and citizenship. Dwarves and visitors will spend time drinking, dancing, playing music, reading books, praying and discussing various matters. Children will play with toys. Art forms and musical instruments are randomly generated, latter requiring to be assembled from several parts.

Another set or changes is related to workshop jobs and manager orders. It is now possible to set certain job details like material, size, type of decoration and image. Manager orders can target specific workshops, start conditions and repeat frequency can be set (although not all of this is currently supported in Remote, see below).

You can also see the original Bay 12 release announcements for 0.42 and 0.43 for full list of changes.

What’s missing
I’ve decided to release the new version now, even though some of the new game features are not supported. This will allow me to work on other great things, like sound and creature graphics, while also implementing the remaining new game features in the next application updates.

Image specification for jobs is not fully supported - you can’t create a custom image or choose an image related to historical figure. Engraving designation image specification is not supported altogether. Setting conditions for manager orders and per-workshop orders are not supported.

Saves from 0.40 are compatible with 0.43. You can follow the new simplified setup instructions to configure a new server, and continue playing your games with new features. However some of the new stuff may not be available until you create a new world.

If you have installed any of the tilesets, you will need to download them again to ensure correct rendering in version 0.43.

I will also post upgrade instructions for Docker users shortly.

Other changes

  • Current job/activity is shown in unit query mode for the selected unit
  • Support for auto-mining modes
  • Quick erase mode - a new button to quickly switch from designation modes to ‘remove designations’ mode and back
  • Confirmation is shown when trying to offer/seize goods and when trying to trade with huge trader profit
  • When issuing a squad move command, long press OK button to do it without returning to the squads list afterwards
  • Show magma-safe status in stone preferences view

And finally, number of bug fixes

  • Fixed assignment of animals to chains and activity zones
  • Fixed not being able to view wagon in look mode
  • Fixed not being able to create new uniforms after deleting all existing ones
  • Fixed manager timer not being reset after adding new manager orders, resulting in manager not validating them for a long time

Consider supporting Bay 12 Game if you like Dwarf Fortress.


I’ve updated my DFHack repos with support for DF 0.43.05 for Windows (64-bit) - pronvit/dfhack and pronvit/df-structures.

There’s a binary package available for those who wants to help testing plugins and all the functions. As with the OS X version, main plugins seem to work, but I expect some data structures to be incorrect. Several global addresses are also missing for Windows version.


Status of 64-bit DFHack

Recently I spent couple days helping DFHack team with support for the new 64-bit Dwarf Fortress version in DFHack. Of course, I was primarily interested in the OS X platform. There were several things that needed to be done in this case:

Scripts to find globals

There is number of scripts in jjyg/df-misc repo that need to be run on new binaries to extract addresses of global variables and vtables, and other stuff. The author is away, and I don’t have any Ruby knowledge, so I decided to write my own scripts for Hopper. They are now available in mifki/df-hopper-scripts, couple of them even support Windows (and Linux support should be easy to do).

Update Lua to 5.3 and make sure DFHack builds for 64-bit

We needed to update Lua from 5.2 to 5.3 to support 64-bit integer numbers (in particular, memory addresses). Also I had to bunch of int32_t variables to intptr_t. Other than this, there were no major difficulties with DFHack. Lethosor fixed an issue with vararg functions that suddenly started to crash on 64-bit.

Update DF structure definitions

long type is used in the DF graphics code, so those structures needed to be updated. But that was easy. While the big problem is that in many places, when we don’t know the meaning of a field in some structure, we simply use int32_t type for it. However, some of this fields are actually pointers, and while this wasn’t a problem on 32-bit, now all the pointers changed size, and a lot of data structures became incorrect. On the bright side, now we can better understand what are pointers and what are integers in DF structures.

It took long time to find such fields in world, world_data and some other structures, but in the end I got a working 64-bit DFHack with most of the plugins (that I’ve tried) working.

Current status

Repos with 64-bit fixes (look for 64-bit branches): pronvit/dfhack, pronvit/df-structures, pronvit/scripts. The last one has an updated devel/find-offsets script to find almost all of the required global addresses.

I don’t have any more time to work on this (need to release DF Remote with support for DF 0.43.03 as soon as possible), and what needs to be done now is just further testing of all plugins to make sure all data structures are correct. I don’t know how much time this is going to take and who is working on it now.