P.S. It's web interface, right?
yea you MUST do an android version, how sad was I when I learned I couldn't play DF on my tablet?
How finished is this, when will it be available, and how well does it run?
Did you actually port DF to iOS or is it an iOS app that communicates to a remote server? You're talking about a protocol; what do you mean? And of course as Max™ said, is there any chance this could be adapted to other operating systems?
Wouldn't it be sloooooooooow as a crippled elf?
This is great. Maybe you could externalise the code that connects your interface to DF into a library?
Will you be able to put this on android? It's super-awesome, to whatever use it gets put, but I'd love it on my tablet.
it could probably be pretty useful for building the fabled multiplayer-df. Even if it isn't it I'm sure I could poach all sorts of bits and pieces for Webfort.
Mifki, this may be the most important dfhack plugin ever developed. Is there anything you need from the community to facilitate the work you're doing? Do you need testers? Do you need feedback on protocol design decisions? Do you need backrubs? Pizza?
... Plump helmets?
Do you need backrubs? Pizza?Sigh, groupies. ;D
... Plump helmets?
Also, ideas are welcome on how to implement/improve various parts of UI.
Also, ideas are welcome on how to implement/improve various parts of UI (although for now I'm keeping things closer to the original UI for number of reasons). For example we can finally make military screens understandable, and I need to do something with labour management - nobody likes the vanilla df way to do this, but DT/dwarf manipulator-style tables are too bid for small screens.Dwarf Therapist tables would work on iPad.
So if I'm understanding correctly... you call this an iPhone version, but you've actually decoupled the interface from the game so anyone could take your code and use it to create a completely new interface for DF on PC, presumably even using Stonesense for rendering. Am I correct?
Presuming it doesn't get shut down by original Dwarf Fortress developer Bay 12 Games, this iOS app would be free when released, just as the PC version is.
QuotePresuming it doesn't get shut down by original Dwarf Fortress developer Bay 12 Games, this iOS app would be free when released, just as the PC version is.
Why would Toady do this? It's not like he's in for money.
Actually if it included code from dfhack i think itunes store would not accept it. They have strange policy about opensource projects...QuotePresuming it doesn't get shut down by original Dwarf Fortress developer Bay 12 Games, this iOS app would be free when released, just as the PC version is.
Why would Toady do this? It's not like he's in for money.
Well, actually I've never said that the app would be free (as well as the opposite). Technically, the app itself is not based on and doesn't include any code from dfhack or any materials from other people, so nothing prevents me from asking a reasonable price for it. The server part, however, will definitely be open-source as soon as it's more or less complete, so that others can create remote UIs for other platforms.
Regardless, Toady still can be against all this for some reason and not let this happen. I probably will need to ask at some point.
Actually if it included code from dfhack i think itunes store would not accept it. They have strange policy about opensource projects...
Would it be possible to use this to play adventure mode ?
I feel like more people would use there iPhones/iPads to play Adventure mode then fortress mode
If I'm going to sit down and play Fortress mode I will be more likely to do it on a computer so I can simultaneously view the dwarf wiki and so forth. Adventure mode on a phone would be perfect for on-the-go situations where you have nothing to do or have to wait for 30 minutes or something.
That being what it is don't let me dissuade you from working on getting fortress mode to work, I just want to have my cake and eat it too.
Because it's not that easy to distribute beta versions of iOS apps, and it will take some time until it's ready enough for this, follow the development at least with screenshots here http://blog.mifki.com
Pardon me for ruining some of the hype but... Don't you need to pay a certain amount of money to put an app on the app store? I don't have a phone (iPhone or otherwise) so I don't really know, i'm going off of things I heard a while ago. That's why apps have adds though, right? And, correct me if i'm wrong, but I think many people would want this to be an ad-free app if at all possible.
So here's my question: Will you accept donations to keep this app ad-free? I think many people would want to donate if at all possible. Just a question. :)
Also: Will you be willing to share the code with someone as you progress, so that the person may create an android counterpart? (Not me specifically, the most I code is a few creatures)
hey mifki, i asked before and you didn't answer. do we have an ETA? can't wait
*cough* any updates on the development *cough*
Will mods and DFhack work on this? Will we even have a method for installing mods?
And now to unit information screens, then game loading/saving, proper UI for connecting to servers, and finally, military screen. There will still be number of missing things (including world generation by the way), but at least it should be playable after that.It "sounds" like it's not thaaaaaaaat far away from a playable product?
Any news? You mentioned server-side is nearly done in the last blog update, and (non-iOS person) that's what I'm most excited about - since it could be used by other people to make alternative interfaces... such as Armok Vision.
Will never understand companies spending time and money on copy-protection, even developing seemingly sophisticated frameworks, that can be bypassed by patching several bytes. Hello, @fournova.
Some news
http://blog.mifki.com/post/121017874375/spent-last-couple-days-playing-dwarf-fortress-on
I'm a little confused about this interface abstraction that's being discussed - what exactly would other projects be able to do with this library that can't already be done with DFHack?
Does the protocol support any sort of authentication / encryption? If it's going to be facing the internet, it really should; maybe using
Is the Run Arbitrary Lua Code (https://github.com/DFHack/dfhack/blob/master/library/proto/CoreProtocol.proto#L86) API call exposed? Because I would strongly suggest not exposing it. It's kinda scary.
How much does running the server slow down DF?
Does the protocol support any sort of authentication / encryption? If it's going to be facing the internet, it really should; maybe using TLS (https://en.wikipedia.org/wiki/Transport_Layer_Security#Libraries) or DTLS (https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security#Libraries). (I don't really know security, but I know you're not supposed to do it yourself :D)
Currently there's not any, but there will definitely be some authentication. Not sure about any sophisticated encryption - you're not transmitting any sensitive data in game after all. On the other hand, with appropriate modifications, the commands that comprise the protocol can be transmitted over any network protocol.
Does the protocol support any sort of authentication / encryption? If it's going to be facing the internet, it really should; maybe using TLS (https://en.wikipedia.org/wiki/Transport_Layer_Security#Libraries) or DTLS (https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security#Libraries). (I don't really know security, but I know you're not supposed to do it yourself :D)Currently there's not any, but there will definitely be some authentication. Not sure about any sophisticated encryption - you're not transmitting any sensitive data in game after all. On the other hand, with appropriate modifications, the commands that comprise the protocol can be transmitted over any network protocol.
Encryption is important - it's for:
1. Authentication - important for all packets, not just login,
2. Avoiding man-in-the-middle attacks (ie forged messages),
3. Ensuring your traffic doesn't get hijacked to eg. DDoS someone, and
4. Keeping the messages secret
5. Defeating basic traffic analysis (if you only encrypt secret stuff, and I see you encrypt something...)
Obviously #4 isn't that important here, but given how easy it is to default to good security - just run the protocol over SSL - it's absolutely worth doing.
Also DFHack gives direct memory access to your computer, so it's a pretty big security hole. That's why the default RPC protocol doesn't allow outside connections.
No, I'm not against encryption, I'm just saying that currently it doesn't have it because there's higher priority stuff.That seems entirely reasonable, given what a big project this is.
Also, it's not a simple HTTP or something that I can just "run over SSL" with one line of code. On the other hand, I'll consider adding a simple cipher like XTEA. The problem here is that individual messages are very short, while cipher operates on larger input blocks. I can pad data with zeroes but probably this will reduce security, I don't know.LibreSSL (https://github.com/libressl-portable/portable) actually provides a pretty simple library (http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man3/tls_accept_fds.3?query=tls_init&sec=3) for using TLS with arbitrary buffers. I haven't actually used it though, so I don't know if it's easy to use.
Again, this thing does NOT allow to perform arbitrary dfhack/lua commands.Well, it also has access to the filesystem / the ability to run subprocesses. But if the protocol can't access those then things should be fine, barring fancy attacks.
And surely dfhack has access to df process only.
As exciting as all the recent work is (ie "very exciting"), can I get a lot more detail on this (http://blog.mifki.com/post/123281936940/implemented-an-automatic-update-mechanism-for-df)?
Because it looks like the client can trigger a remote download and installation of some software, which is not something I can put in the Starter Pack. Maybe an incompatibility message, and a chance to visit a link to the updated plugin or email it to yourself?
Unlike the recent discussion about protocol encryption, where I was unsure, these updates are of course signed with an asymmetric key. Of course, you may not trust what I put in the update, but downloading it manually from the same server doesn't change much here.
The reason I believe this is an important feature is that there is a client application that may get updated intentionally by the user, inadvertently, or even automatically. Of course, not every app update will require a server-side update, but if it does, and the user can't update the server at the same time, it won't be good. Automatic updates allow for unattended server installations - install once and forget.
Anyway, if the updater is not installed or disabled or didn't work, it will show manual update instructions.
Yeah, I'm not currently planning on using the server for Armok Vision, besides just seing how you do things, since the needs are likely quite different, plus I'd rather just have control over it.
Yes, though development is slightly slowed because I no longer have a videocard that can handle it easily.
Not sure how I'll do it, but I do want to do it.
Spoiler: Awesome Image (click to show/hide)
Dashed are not yet implemented.
Ooh, fancyVery pretty. I can't wait for someone to do an Android implementation!
I can't wait for someone to do an Android implementation!
Any chances of a second recruitment/invite? A few of us missed the recruitment period.
After (during?) worldgen, what information do people look at to decide whether to keep the generated world (map, other information on screen, information from exported history/sites/pops files)? Of course I'm talking about normal cases, not if you're crafting some special world (which you'll do from desktop). For first versions I was going to provide just a very simple ability to generate worlds and start playing, but can try to show some most important info after worldgen is finished.
It would be great if you could start a long worldgen, then log off the app and have it keep running while disconnected.
1. Is being able to issue orders to individual squad members essential / used often?1. never used it
2. The same about selecting preferred squad members when configuring schedules.
3. The same about giving different orders for different months.
Any other things rarely used so that I can make military UI simpler?
1. Is being able to issue orders to individual squad members essential / used often?
2. The same about selecting preferred squad members when configuring schedules.
3. The same about giving different orders for different months.
Any other things rarely used so that I can make military UI simpler?
Anything rarely used to remove from Equip/Uniforms screens?Call me Insane (haha, geddit) but I always assign everything individually to my militia/military. I like RP so I'l often have an 'honor guard' where an average gold mace isnt good enough, back to the forge. With the above border patrols I usually send two squads at a time, one melee, one ranged) so with recruits I loosen up and select just a general crossbow, although those with promising traits get put in an elitism-training squad. (I play MW, dont judge)
Hey this looks really impressive! I'm curious - Do you intend to release the source code and/or sell this app on the marketplace?
<...> Oh also when selecting material for equipment, I only show material classes (metal/wood/leather/etc.) and individual metals, and don't show hundreds of individual leather, wood and other organic materials.
<...> Oh also when selecting material for equipment, I only show material classes (metal/wood/leather/etc.) and individual metals, and don't show hundreds of individual leather, wood and other organic materials.
I think usually you can create the items first and then assign them. Original df could also have this feature - where you select the item and say: like this one. Maybe it would be simpler?
Hey this looks really impressive! I'm curious - Do you intend to release the source code and/or sell this app on the marketplace?
Source code for the server side will be available, app will be sold on the App Store.
Hey this looks really impressive! I'm curious - Do you intend to release the source code and/or sell this app on the marketplace?
Source code for the server side will be available, app will be sold on the App Store.
Have you spoken to Toady about this? Despite the fact that technically you're only selling a remote, it will appear to the layman that you're reselling the game itself. That sounds unethical at best and flat out illegal at worst.
I was asked to come in and weigh in on this. I don't have a problem with the app as it regards "gutting" DF. Looks cool! The main problem we have with people selling "Dwarf Fortress" stuff is that sometimes people assume we are seeing part of the money, which is bad for us. Along those lines, we'd not want people to be confused that they are buying a complete mobile version of DF, as people might again assume they are contributing to Bay 12 when it is not the case. The sale of DF apps/mods in general gives me an uncomfortable feeling, but that's probably all it amounts to. On the other hand, overall, these sorts of efforts are good for the game. These are the issues, anyway. If somebody had something specific they wanted permission for now or when the time is right, I can handle that via email or PMs.Quoting just because searching the topic doesn't show users.
And just to be clear, I'm not sure what the plans were overall, but we are completely against anybody selling DF itself, however it is bundled.
Hey this looks really impressive! I'm curious - Do you intend to release the source code and/or sell this app on the marketplace?
Source code for the server side will be available, app will be sold on the App Store.
Have you spoken to Toady about this? Despite the fact that technically you're only selling a remote, it will appear to the layman that you're reselling the game itself. That sounds unethical at best and flat out illegal at worst.
Yes, I have. You could also read this topic and find his post here.
Hey this looks really impressive! I'm curious - Do you intend to release the source code and/or sell this app on the marketplace?
Source code for the server side will be available, app will be sold on the App Store.
Have you spoken to Toady about this? Despite the fact that technically you're only selling a remote, it will appear to the layman that you're reselling the game itself. That sounds unethical at best and flat out illegal at worst.
Yes, I have. You could also read this topic and find his post here.
Thanks to Japa I've now read that. The way I read Toady's post is that he does not like the idea of any application sold for money that has the 'Dwarf Fortress' name in it, at all. You might want to get more explicit confirmation from him.
I apologize if this was answered up-thread, my search-fu is weak.
Does the remote take over the server's interface, or can this be a second screen? Even if one needed to avoid grabbing the map cursor during two-screen play, a second screen with full access to squads and stocks and so on without interrupting the main interface would be awesome.
Even if it's one screen at a time, it still means that the more compulsive players will be tweaking uniforms during their commutes. And I fully expect that some of these commuters will be driving :(
When the server needs to use any of the game screens, it creates them and destroys straight away. There are some exceptions left from the early days, but generally the game stays on the map screen on the server. Currently the map isn't movable on the server, and in general no keys should be pressed and so on. However it should be possible to implement a special mode, where everything requiring map interaction (designation, building, giving orders to squads, etc.) is controlled on the desktop, and not map-related stuff is controlled by other players; we can even allow them to scroll the map in "read-only" mode.
When the server needs to use any of the game screens, it creates them and destroys straight away. There are some exceptions left from the early days, but generally the game stays on the map screen on the server. Currently the map isn't movable on the server, and in general no keys should be pressed and so on. However it should be possible to implement a special mode, where everything requiring map interaction (designation, building, giving orders to squads, etc.) is controlled on the desktop, and not map-related stuff is controlled by other players; we can even allow them to scroll the map in "read-only" mode.
I would love to see multiplayer in a 2.0 release, but not in 1.0 - because I want to see 1.0 soonish!
What versions of ios will this be available for?
How goes? Last blog update was Nov 13. Still alive?
raw changes are sent to server and applied in memory
Now I really, really want to run graphics packs through DFHack only, and avoid all of the incompatibilities and save issues that come with constantly changing the raws...
Could the backend be used to speak to it from other interfaces too? Including, for example, a website with JavaScript? This would open the gate for a generally more user-friendly interface for Dwarf Fortress, playable in the browser.
Will it be free? Because as much as I love DF I physically cannot pay for it. I have no credit card and cannot rely on getting a gift card for xmas, much less an App Store/iTunes one
Will it be free? Because as much as I love DF I physically cannot pay for it. I have no credit card and cannot rely on getting a gift card for xmas, much less an App Store/iTunes one
I will buy the hell out of this when it comes out.Yeah, the more i see about this, the more it looks like it will be great. I think the attention to detail on every menu is what is needed for this kind of tool and at least the screenshots show tons of it :)
My first year of my owning an iDevice (iPod touch) I got a $30 gift card, but that was about four-five years ago and the only time I got another one was $20 one from my Auntie I never see two years ago. I will accept this offer and when I do have a means to pay you I will.Will it be free? Because as much as I love DF I physically cannot pay for it. I have no credit card and cannot rely on getting a gift card for xmas, much less an App Store/iTunes one
Well, it's hard to believe you have an iPhone but no paid apps on it at all. But if it is so, I'll send you a code for the app.
No, others please don't ask.
Weirdly an iPod Touch runs better than an iPhone with the same specs, mostly because it doesn't have phone and SMS daemons eating up a bunch of cycles. It could actually help mifki uncover any timing bugs (not that I'd expect any with this design, but IOS is basically Black Magic so it pays to be prepared).My first year of my owning an iDevice (iPod touch) I got a $30 gift card, but that was about four-five years ago and the only time I got another one was $20 one from my Auntie I never see two years ago. I will accept this offer and when I do have a means to pay you I will.Will it be free? Because as much as I love DF I physically cannot pay for it. I have no credit card and cannot rely on getting a gift card for xmas, much less an App Store/iTunes one
Well, it's hard to believe you have an iPhone but no paid apps on it at all. But if it is so, I'll send you a code for the app.
No, others please don't ask.
The app has been submitted to the App Store for review.Praise Armok!
In the meanwhile I’m finishing documentation and in-app help.
What price point did you submit it at?The last app that posted at the maximum ($999.99) was pulled by Apple, so I'm going to guess less than that.
Your internet speed shouldn't matter if you're playing on your local network, by the way (although it depends on a variety of other limiting factors, and I don't know if the client will support specifying a host on the local network).What price point did you submit it at?The last app that posted at the maximum ($999.99) was pulled by Apple, so I'm going to guess less than that.
Thing is, I have an iPhone, and a high-speed Internet connection, which should be ideal for trying out the Remote. What I don't have is any time to play the game lately :(
What price point did you submit it at?
Your internet speed shouldn't matter if you're playing on your local network, by the way (although it depends on a variety of other limiting factors, and I don't know if the client will support specifying a host on the local network).
docker run --name=df1 -dtp 1235:1235/udp mifki/dfremote
docker exec df1 ./dfhack-run remote pwd "YOUR_PWD_HERE"
Just curious: does your remote-updater use Csockets (and co) or is it something else?
Congratz on release!
Few questions for the future of this:
- How much of 0.40.24 is not yet implemented and how much do you plant to implement (e.g. some never used corner case windows?)
- How much work will it be to move to 0.42.??
- Plugins: is there any plans for allowing plugins? (E.g. i have buildings-hacks which change how building works and what shows up when selected. I would love for it to also work on this
3. I need to check because I personally use just several plugins. Some just not needed anymore, like manipulator; some functionality will need to be re-implemented in the app and plugin is not needed again, like those displaying some additional information on screen; and those that just do something in background can still work - but are there many? I'm ready to incorporate more dfhack-ish functionality, just need a global switch to hide it maybe, to distinguish which functions are from the original game and which are not.I mean a flexible way to add stuff like this (simplest possible example):
How do you add tilesets? All that shows up in settings is Spacefox.
How do you add tilesets? All that shows up in settings is Spacefox.
Download an archive from http://mifki.com/df/extras (http://mifki.com/df/extras), unpack, connect your device to iTunes, and copy that folder via iTunes File Sharing (https://support.apple.com/en-us/HT201301).
How do you add tilesets? All that shows up in settings is Spacefox.
Download an archive from http://mifki.com/df/extras (http://mifki.com/df/extras), unpack, connect your device to iTunes, and copy that folder via iTunes File Sharing (https://support.apple.com/en-us/HT201301).
DF Remote isn't showing up under the iTunes File Sharing apps. What is the file path on the phone where they should go?
Is there an option for vanilla tiles?
Hi there. Technical-retarded here :)
Is it possible to have the actual DF-game hosted at some server (not my own)?
Are there any servers up and running with DF?
In short, I don't wanna have my own computer host the game while using the remote app.
This is amazing.
I have some questions about the server:
- Is the API documented somewhere, or do I just need to read the code?
- How much of the map is sent to the client at once?
What do you mean "at once"?
I'm thinking about integration with Armok Vision. The current protocol it uses doesn't support most of the features dfremote's does, and is only really fast enough to work locally. I think switching over would be pretty awesome, and I like the idea of a unified DF remote protocol.Actually, the low update speed in armok vision has nothing to do with the socket speed. that's actually pretty fast. It's mesh generation and updates, mostly.
A description of the message format would be great.
Actually, the low update speed in armok vision has nothing to do with the socket speed. that's actually pretty fast. It's mesh generation and updates, mostly.
DF Remote just copies the tiles directly from the dwarf fortress screeen and displays them, while armok vision has to work with a lot more data.
Means waiting for a reply before the program continues.
Continues, like, sending messages - if you can only send one at a time, and have to wait for the reply before you send another, I would think of it as "blocking", even if it's not blocking the UI. Although that might be the wrong word.
One other question: Do you have to be synced with the in-game UI to do things in dfremote? Like, if I want to add a food at a kitchen, does the in-game building menu for that kitchen have to be open?
This project looks amazing, looking forward to trying it out. In my dream world there would also be a version for the Apple TV. I have no idea how much code could be shared between an iOS app and an Apple TV app. I know you're a developer, have you jumped into that world yet?
Anyway, thank you so much for making it possible to play on my iPad!
This project looks amazing, looking forward to trying it out. In my dream world there would also be a version for the Apple TV. I have no idea how much code could be shared between an iOS app and an Apple TV app. I know you're a developer, have you jumped into that world yet?
Anyway, thank you so much for making it possible to play on my iPad!
But you can just connect computer or iPad to Apple TV...
would it be possible to have a view only password?
Edit: it's very sensitive to high packet loss, on 3g works well but on the noisy home wireless it can't even get to show the map
so, I did more testing cleaning all upnp reservation on my firewall and it seems this app doesn't try to open any port, that might be why it works on 3g but not on wifi
which port should I forward to it? same as the server?
When it connects to a server, the router will allocate a random port and allow reply packets to pass. If connecting to a server behind NAT using a published name, it's more complicated but still *should* not require manual configuration.
Are you connecting using published name or IP? Are your server outside or in the same network?
I'm in Australia and didn't want to have to pay US dollars, have huge latency etc, so I installed this with an Amazon Linux instance, with hosting in Sydney. Looks like it will be free for a year given the low requirements for the server but I'll confirm that in a month or so. Only thing with this is I know next to nothing about Linux and not even sure if I can play it other than via the app, so my embark profile etc is in the hands of the iOS app.
Awesome app, seems very intuitive to use so far, nice work! Thank you thank you thank you!!
When it connects to a server, the router will allocate a random port and allow reply packets to pass. If connecting to a server behind NAT using a published name, it's more complicated but still *should* not require manual configuration.
Are you connecting using published name or IP? Are your server outside or in the same network?
I've a public ip on my home connection, the server is in internet, runs on a cheap cloud provider. I'm using the ip to connect to the server. I've a fritz.box router, run trough all configuration and all thing firewall-y are disabled.
Games like war thunder work over udp without showing network limited warning, but they do use upnp, so I don't know. It might very well be this router being an ass.
Thanks Mifki. I wouldn't know how to install manually on Linux, my Unix days are long past, so I installed the docker via Amazon's instructions and then followed your steps. I couldn't do the swp command (said I didn't have permissions), so just used your other command to install and hoped for the best (took forever to set up so I didn't have the brain power to investigate further at that point). My fortress is still little but seems to be working ok so far. Extra instructions would be awesome!
Then again, if it's all going to fall over soon and crash, maybe an oceanic equivalent of DigitalOcean would be better, but the ones I found yesterday all looked horribly expensive. DigitalOcean did have Singapore I think but that's still a long way from Sydney.
Hi again Mifki,
Where is the best place to post suggestions? It would be nice to have a search / filter on the goods for the trade depot. Even with my small fortress it's hard to find finished goods bins for trade amongst all the crap that fortress has accrued.
Looks like you've covered just about everything in your app :), nice that the search is there already, makes a big difference. I've run the /swp command successfully now, but had to change permissions on the Volumes directory to access the saves via WINSCP. Looks like I'm properly up and running on a *free* (time limited) geographically close cloud server now. Thanks Mifki, again, it's awesome to be able to play Dwarf Fortress from anywhere :). You need to get the word out more, the only reason I even noticed it was available was by looking in the forums for something completely different.
I've asked this at the beginning of the thread but let me ask it again now that the work is done.
Could this "technology" be used to prepare a completely new interface for PC/Linux/Mac and play the game through it?
Will you do that? :D
cloud at cost has a 80% discount running for some hours yet with coupon TAKE80
it's extremely cheap, don't expect huge performance, but it's a one time payment forever, which is nice.
I got too hasty. Spent 7$ for a "lifetime server". Maybe i'll have something to run my "fetch these pages and make them into ebooks" script on.cloud at cost has a 80% discount running for some hours yet with coupon TAKE80
it's extremely cheap, don't expect huge performance, but it's a one time payment forever, which is nice.
I couldn't find a single good review of their service, only complaints, so I don't recommend.
cloud at cost has a 80% discount running for some hours yet with coupon TAKE80
it's extremely cheap, don't expect huge performance, but it's a one time payment forever, which is nice.
I couldn't find a single good review of their service, only complaints, so I don't recommend.
I wish you all the luck with that.
Getting performance acceptable won't be easy.
especially one that isn't expected to show single z levels
just fyi install under ubuntu 15:10 fails because it's misisng all the i386 packages by default. 14.04 works just fine so I reverted back to that.
docker based, install, on 14:04 works wonders, on 15:10 it enters a reboot cycle and docker logs show only "setarch: i386: Unrecognized architecture" - I installed all the 386 support as in the linux install guide to no avail, so just reverted because works just well on previous ubuntu.
Full disclosure: I've no idea of what I'm doing.
is it much work to get the remote plugin working under the dfhack beta? tried to build it but cross compiling from scratch is just a mess :-[
also the dockerfile doesn't really delete all dfhack plugins there's a forward slash missing from "rm -rf df_linux/hack/plugins/*"
Amazing work, mifki. I'm now proudly able to run DF anywhere I like! The interface is very nice. Have you considered incorporating any sort of sound support, similar to soundsense, as a "stretch goal"? Or is that not something you want to expand the DF Remote project to include? I would completely understand if you have your hands full without adding complexity ;)
I've been wondering about this app since the Reddit post. So does this put Dwarf Fortress into text mode and send tiles as 1-byte characters to the iOS client? It would explain why creature graphics are not supported anyway.
Can I have the server running on my internet-connected computer and then play on the iOS remote over a cellular data connection? If so, has anyone tested about how much bandwidth it uses?
I've been wondering about this app since the Reddit post. So does this put Dwarf Fortress into text mode and send tiles as 1-byte characters to the iOS client? It would explain why creature graphics are not supported anyway.
Can I have the server running on my internet-connected computer and then play on the iOS remote over a cellular data connection? If so, has anyone tested about how much bandwidth it uses?
The application and server code have been updated to support Dwarf Fortress 0.43.03 - http://mifki.com/blog/20806804/dwarf-fortress-remote-for-04303/
Is there a way to change the text justification so that it is "aligned-left" instead of "justified"?
I've a suggestion too! Can you add the amount of building tipes already built in the building screen? Like how df does it's very convenient to check if anything is missing
edit: also how do you set up automatic save?
I mean, I can docker exec into it and change the data init, but idk if that'd break something
"Hey, Siri, what the hell is Urist doing?""Urist is bathing in magma. HA HA HA!"
you can give work order by microphone?
can't wait to pronounce corkscrew in my broken engrish XD
since update map view is all dark or garbled https://m.imgur.com/J3jXFVv
ok clearing the cache worked. the button wasn't easy to find even with directions XD
If I have an ipad how do I connect to my PC's Dwarf Fortress or does that also have to be a Mac?
What graphics pack does the remote use, seems wonderful and is there a version for the desktop game?
Is there something special to do if you log on to a wireless router? I noticed on the IOS app it does not save my router's rather long password.
I have tried every combination imaginable, including my IP, the name of the router and its password. But if it does not save it how can it use it?
and what about on a mac? I see most of the instructions for pc.
I would appreciate it very much if you (or anyone who has looked at it too) could briefly explain the general format of your map data if graphics are involved.
1. Download and extract dfremote-complete-4303-Linux.zip to wherever desired with
unzip. We will download this file straight from mifki's page; it's a full package of
DF 43.03 + DFHack + DF Remote.
These first steps expect that you have a fresh install of Ubuntu that doesn't come
packaged with the unzip application (although there could be an another app for this that
I don't know of.) We will first download that app.
$ sudo apt-get update
$ apt install unzip zip
After that we download the package and extract it.
$ wget http://mifki.com/df/update/dfremote-complete-4303-Linux.zip
$ unzip dfremote-complete-4303-Linux.zip -d directory-of-your-choice/
2. install required libraries. Some/many/all? of these are 32-bit compatibility
libraries since 43.03 is 32-bit but your system is probably 64-bit. Optionally
on a 32-bit system go through these to see which ones you need.
$ sudo apt-get update
$ sudo dpkg --add-architecture i386
$ sudo apt-get install libsdl-image1.2:i386 libsdl-ttf2.0-0:i386 libgtk2.0-0:i386 libglu1-mesa:i386 openssl:i386
3. Dwarf Fortress will not launch yet since by default the game is configured
to run in 2D rendering instead of the text-based terminal. To fix this, open
the Dwarf Fortress init.txt config file located in /data/init/.
Don't overwrite d_init.txt, which is a default init file for backup.
In my example I'm using nano, a terminal text editor application supplied with
Ubuntu. You can always get it by apt-get for another distro or if you don't have
it:
$ sudo apt-get update
$ apt install nano
(then back in the main dwarf fortress directory...)
$ nano data/init/init.txt
Search for (Ctrl+w in nano) PRINT_MODE to find the setting and then change 2D to TEXT.
After fixing it'll look like this:
[PRINT_MODE:TEXT]
Mode examples:
PRINT_MODE:2D
PRINT_MODE:TEXT
PRINT_MODE:FRAME_BUFFER
PRINT_MODE:PARTIAL:0
4. You can now run "./dfhack", but you'll soon find out that the dwarf fortress main game
starts instead of dfhack's command line. This, however, is not a problem.
Dwarf Fortress has to be running for you to issue dfhack commands, but instead of
using the dfhack command line, we will be issuing commands with the dfhack-run
application. On graphical linux distros this problem is probably absent; enjoy your
iOs fortress!
In our VPS case, we have to open another SSH session with Dwarf Fortress running in the former.
Do so, then navigate to the dwarf fortress main folder and execute
$ ./dfhack-run remote connect
That's it! From here on, everything is smooth sailing. On a VPS, you'll probably want to set
your server to be accessible over internet and not LAN solely or at all; to do this, execute:
$ ./dfhack-run remote publish "name_of_server"
$ ./dfhack-run remote pwd "password-for-server"
(quotation marks optional unless you have spaces in your name, for instance: "My Server")
5. Your server is now up and running, but when you close your SSH prompt, Dwarf Fortress will quit.
Obviously we don't want that to happen, because that will also close the server and prevent you
from playing.
It should also be noted that unlike PuTTY or other SSH programs, the Vultr's web-based "View Console"
terminal SSH does NOT issue an interrupt signal upon closing the terminal window, because it
doesn't quit the SSH session. That means you can do whatever in that terminal window, then close it
and open it again later to find everything just like they were before. This will NOT be the case
with most (any) other SSH programs.
Now is a good time to (optionally, i guess) reboot your VPN computer by simply telling it to
$ reboot
Now, to run your Dwarf Fortress server, here's how we're going to counter the program quitting.
First of all, navigate to the dwarf fortress folder, then issue the following command:
$ nohup ./dfhack &
The command ./dfhack will just run the game, but the nohup command before it will tell that program
to disobey interrupt signals and the & in the end will tell it to run in the backround. You will be
prompted with something along the lines:
nohup: ignoring input and appending output to 'nohup.out'
and a cursor waiting for input. When you press enter, you will return to the command prompt.
Now we have Dwarf Fortress and DFhack running as a background process. Cool! They won't output
anything to the screen, of course - don't be alarmed by that.
The next thing is to simply start the remote server:
$ ./dfhack-run remote connect
You have already set your server up as published - these settings stick to the server - so
this command will suffice to start the server. It's running right now, actually, if everything
went as should have! You can now close the SSH window (remember to connect the iOs app first if
you use the QR code!) Closing the SSH window now won't interrupt the DF process since we set that
application to run in the backround uninterrupted.
Connect using the QR code or alternatively manually and enjoy!
-----------------------------------------------
TROUBLESHOOTING
i. "I get an error when running the command 'dfhack-run [something] [something else]' etc."
This happens if the dfhack process is not currently running on your VPS. The error will read
"Could not connect to localhost: 5000". This means you have probably set everything up
properly but Dwarf Fortress isn't running, and that's why DFHack can't communicate with it.
To fix this:
1. Make sure you don't have the Dwarf Fortress game running in the foreground,
as in make sure you don't see any Dwarf Fortress graphics in the terminal. If
you do, quit the game to return to the terminal.
1.b) You should probably reboot your VPN system at this point because you are
probably confused about which processes are running and which aren't. Rebooting
quits every program (obviously) and gives you a clean slate that-wise.
2. Go thru step 5 in the installation guide again.
ii. "I get an error while trying to start the game! It says I don't have a display, but I
can totally see the text!"
The full error reads "Display not found and PRINT_MODE not set to TEXT, aborting."
This means you haven't set Dwarf Fortress to run text-based. The default is 2D, which isn't
supported in a server distro that has no graphical libraries or monitors by default. Go back
to the setup guide and read thru step 3 to fix this.
iii. "I get an error './dfhack: line 52: ./libs/Dwarf_Fortress: No such file or directory'"
This means compatbility- or other libraries required to run Dwarf Fortress are not installed in
your system. Go back to step 2 of the install guide.
Docker is another way to download dfremote, but unlike mifki reports on their site, Vultr (which I am using) does NOT include docker by default, so installing that was too much of a pain for me.
Okay, that's my bad, but let me elaborate on that, cause I'm sure I had a problem with the Docker distro and a reason to give up and switch to Ubuntu. Let's see...Docker is another way to download dfremote, but unlike mifki reports on their site, Vultr (which I am using) does NOT include docker by default, so installing that was too much of a pain for me.
Really?
[root@vultr ~]# docker run -dtp 1235:1235/udp mifki/dfremote
Unable to find image 'mifki/dfremote:latest' locally
latest: Pulling from mifki/dfremote
8f229c550c2e: Pull complete
8e1fb71e8df6: Pull complete
f75a34586856: Pull complete
8744e322b832: Pull complete
d5165bfce78f: Pull complete
078f44746f68: Pull complete
aae0de372324: Pull complete
cdf184b20c57: Pull complete
d44c6bef0473: Pull complete
6c6121f006ca: Pull complete
3a5f2ac4c46d: Pull complete
8534972fad68: Pull complete
a13ae622044b: Pull complete
d9186770125a: Pull complete
Digest: sha256:6667591571b8b0da528f01f96d59157608219a8ab5c998cb729988041ff379e5
Status: Downloaded newer image for mifki/dfremote:latest
ce9661e158ac5a5a527b25d82fdb5057f0d8e58c0db02d2ddca0bfd4437f3e02
[root@vultr ~]# docker run -dtp 1235:1235/udp mifki/dfremote
346307e657a096330ded3a6f530ea5140d75f3b0c070a92005ebb53f8cb92160
docker: Error response from daemon: driver failed programming external connectivity on endpoint naughty_euclid (23eb2636575ed9f62b4ce9633b397e9baf1edcde98ad1a417b10025975a420ed): Bind for 0.0.0.0:1235 failed: port is already allocated.
[root@vultr ~]# atop
-bash: atop: command not found
[root@vultr ~]# sudo yum install atop
Loaded plugins: fastestmirror
base | 3.6 kB 00:00
docker-ce-stable | 2.9 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
(1/5): docker-ce-stable/x86_64/primary_db | 4.8 kB 00:00
(2/5): base/7/x86_64/group_gz | 155 kB 00:00
(3/5): extras/7/x86_64/primary_db | 151 kB 00:00
(4/5): base/7/x86_64/primary_db | 5.6 MB 00:01
(5/5): updates/7/x86_64/primary_db | 4.8 MB 00:00:11
Determining fastest mirrors
* base: ftp.osuosl.org
* extras: repos-va.psychz.net
* updates: mirrors.lga7.us.voxel.net
No package atop available.
Error: Nothing to do
[root@vultr ~]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
--2017-04-23 07:14:21-- http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
Resolving dl.fedoraproject.org (dl.fedoraproject.org)... 209.132.181.25, 209.132.181.24, 209.132.181.23
Connecting to dl.fedoraproject.org (dl.fedoraproject.org)|209.132.181.25|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14704 (14K) [application/x-rpm]
Saving to: ‘epel-release-7-9.noarch.rpm’
100%[===========================================================================>] 14,704 93.9KB/s in 0.2s
2017-04-23 07:14:22 (93.9 KB/s) - ‘epel-release-7-9.noarch.rpm’ saved [14704/14704]
[root@vultr ~]# rpm -ivh epel-release-7-9.noarch.rpm
warning: epel-release-7-9.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:epel-release-7-9 ################################# [100%]
[root@vultr ~]# docker run -dtp 1235:1235/udp mifki/dfremote
9624f1616f93fa0870475ecec86b036e53f8141eb0c2e659ab5b55fa70665b7a
[root@vultr ~]#
PID TID RUID EUID THR SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPUNR CPU CMD 1/1
2376 - root root 6 0.04s 0.08s 0K 0K 0K 0K -- - S 0 1% Dwarf_Fortress
Startup script needs to be created first, and then you choose it when you create your server. The script then configures swap file, downloads and runs Remote server container. This takes some time so if you try to connect right after creating a server, it will fail, as well as you won't see DF process and even a Docker container if you SSH to the server right after creating it (this is also mentioned on my website btw).Sure. Thanks for your time!
Thanks for pointing out that the required libraries link is broken.
Overall, while I appreciate the effort on providing instructions how to run Remote server without Docker, it's completely not required in most cases. Recently I (for different reasons) tried starting a server on Digital Ocean, Vultr and Amazon Lightsail and can guarantee that it works - just create a server supplying the provided startup script, wait, and connect. If it doesn't work, just contact me and I'll help and most important fix the documentation if needed.
I somehow removed instructions how to set a password for your server when using Docker, I'll update the docs soon to include this.
Hi Mifki,
Is there any plan for sound in the game? It feels a bit empty without any audio, and of course it's a lot easier to catch unforeseen activities when the sounds of swords clashing interrupts you.
Thanks!
Right. For example, the data structures behind the new Civs/World Info screen are still unknown, so even if I added support for the new version, the most interesting new features wouldn't be available anyway.
Are you talking about raids or the screen itself? The screen is mostly fixed in terms of layout as of 0.44.11-beta1, at least.
Are you talking about raids or the screen itself? The screen is mostly fixed in terms of layout as of 0.44.11-beta1, at least.
Correctly laid out bunch of pointers to unknown structs is not very useful.
This is a great app, it’s enabled me to play DF again. The option to subscribe to a server through the app is genius. All works so smoothly.
I couldn’t see how to set up the direction on archery targets. Ended up moving the save to PC to reset the direction. In hindsight I could just have reorientated the archery range to the default direction, and left it at that.
I hope this gets updated to the later versions of DF, but understand that this takes no small amount of effort.