I believe we are at a point where, using DF Hack and the power of overlays, we can redesign DF's user interface to something sensible and make the game actually playable for normal people. To kickstart the discussion, I'm posting my thoughts on UI and the following slightly modified version of DF 34.11. The purpose of the thread is simply to give some spotlight to fascinating possibilities and tools that have shamefully been mostly overlooked. Please note none of it is my work, I'm not a coder. And none of it is new - it's just a combination of tools that have been available for quite some time, namely falconne's DFhack plugins and the
Mouse Fortress tool.
DOWNLOAD HERETo run it, open Dwarf Fortress and then run the file /mouse/launch.exe.
What you can do:
Camera Controls- Use mouse wheel to change Z-levels (zoom has been remapped to F1 and F2). To move the map, use either the traditional arrow keys, or left-click and move the cursor.
Viewing and Selecting- Hover cursor on anything and it will tell you what it is in the right menu.
- Left-click on anything you want to select, be it a building, dwarf, animal, statue, whatever. If there's more things on top of each other, simply click more times. ONE CLICK TO RULE THEM ALL. Falconne has thus eliminated the single worst feature of Dwarf Fortress, the infamous LKVQT five-different-modes-of-selection system.
Building- Ignore the game's cluttered main menu. Simply right-click and choose what you want to build. Click where to place it. Things have been regrouped to be more logical.
Other Tasks- The right-click menu has all functionality of the original game's main menu. (Not much thought has been given to its organisation yet)
Labour Assignment- Don't assign jobs to your dwarves. Just ignore it. The "autolabor" plugin handles everything, turning labours on and off as needed. The whole supercomplicated feature, which required the use of external slightly less complicated tools such as Dwarf Therapist, is thus eliminated from the game. You won't miss it. (Experimental).
Read below for my thoughts on what more could easily be possible.
So that was just a demonstration, very weak and not very useful yet. But I'm fairly certain we could build proper UI overlays, bypassing DF's native UI for the most part. The power comes from two things:
- DFHack can manipulate the game directly.
- Programs like Mouse Fortress can send keypresses to the game, allowing you to e.g. build anything through their menus. More importantly, they can send commands to DFHack, meaning anything DFHack can do can be put into a graphical interface. And DFHack can do an awful lot of things.
Mouse Fortress isn't super useful simply because the right-click pop-up menu isn't very pleasant to use. But a coder shouldn't have any trouble creating a proper menu (with graphics and buttons and texts of various sizes and colours) in a separate windows that would overlay Dwarf Fortress. Players could then control most of the game by clicking on menus and buttons, just like in any other game. This is already technically possible, it's just that noone has done it.
Once we have proper menus with integrated DFHack controls, we can focus on the development of plugins that would bypass the game's most blatant UI problems. Falconne has alread done an amazing job, and I have no doubt more can be done. To kickstart the discussion, I would like to ask the DFHack crowd if the following can be done?
(1) Can we bypass zones?A huge problem of Dwarf Fortress is that is has too many ways to build things. The distintion between workshops, furniture-designed rooms, zones etc. is horribly confusing. Ideally, the inner workings of the game should be hidden to the user who should be able to simply click "Build > Bedroom", "Build > Farm Plot", "Build > Hospital" and then click to plop them on the map. Zones are the great troublemaker here, because you need to build them first and then set their properties, which is counterintuitive like hell. Can we somehow bypass them?
By that I mean, can we create a "Build a hospital" command that would allow the user to designate a specific area, and then feed this data to DFHack which would tell the game something to the effect: "Build a zone in these squares, then turn on the Hospital toggle". I have high hopes that this would be possible.
(2) Can we bypass furniture placement?The same issue - you can't "Build a bedroom", you must place a bed and then designate a bedroom from it. Horrible. So can we somehow via DFHack magic create bedrooms (and offices, and barracks etc.) without any furniture? The player would then place furniture in those empty rooms as needed. Basically just turn the process around. Who knows Prison Architect knows what I'm talking about.
This might be more problematic because things like bedrooms might be tied to furniture in the game's code. I don't know. But if we cannot build empty unfurnished rooms, can we at least use DFHack to "Build bedroom" in a certain area, upon which DFHack would order a bed to be brought up (or created), place it somewhere in the chosen area, then automatically turn the bedroom option on and flow it to the previously specified size?
If we can get everything to work according to the "Build > ROOM NAME" schematic, the game will instantly be 100 % more playable.
(3) Better StairsWhen I build up stairs, can you designate down stairs on the square above automatically? And vice versa? I want to build stars just with one click.
Leave the Up/Down Stair command untouched for people who like stair shafts. They will have to overwrite the automated second designation, but seeing as it's the same amount of clicks as designating stairs on an empty square, no harm done.
====
Another venue for exploration is automation. We can develop plugins like autolabor to completely automate some features and eliminate them from the user experience (I love autolabor). In a similar fashion, we could considerably streamline and simplify the military system, the burrows and alerts etc.
For example: have the game automatically and without the user's input designate a "Safe Zone" burrow according to some easy criteria - like the burrow automatically contains all meeting areas. Create an "Panic!" button that will automatically activate all military and send the civilians to the safe zones. Put it in the main menu. Voilą! Players can now call emergency shutdowns without having to learn and understand the burrow system.
The military can be redesigned to resemble the old system where a dwarf was either a civilian, or a soldier. Full Stop. No need to fuck around with schedules and activations. Just have a "Put this guy in/out of the military" button and forget about everything else. DFHack can place dwarf in squads automatically. In the background, use some predefined schedule that would have these guys train normally. Use predefined, sensible uniforms. The player has a couple of buttons like "Draft this guy > Make into Melee Soldier", "Draft this guy > Make into archer", and that's it, everything else is handled automatically.
For some reason, most if not all tool development has been focused on
making the game even more complex and giving the already overloaded player more and more options. We can instead limit the player's options, cut feature bloat, simplify... streamline. Because I believe that if you cut half of the options from the UI and automate them instead, Dwarf Fortress will be a much better game.
I know this is will sound problematic to expert players - but don't forget that superusers will always have the option to use the vanilla's keyboard interface to do whatever they want. We can create a simplified, automated UI for more casual players and beginners. It's not mutually exclusive.
As I've said, the purpose of this thread is to inspire discussion and hopefully the development of new UI-focused tools that will finally make Dwarf Fortess into a game a normal, non-autist person can play. Especially when you combine these with the current graphic improvements and overlays. Unfortunately I can't code so these won't be coming from me. I can only try to come up with ideas.
I hope this has given you some food for thought.
EDIT: There's already an old interface thread that has about 20 pages of thoughts: Total Interface Overhaul. But only now have we actually the technical power to implement it.
EDIT2: Sorry for spelling mistakes. Written in a hurry. Will fix once I have more time.