Welcome to tf-mapper by thornag.
This software was created as a prototype tool to add mapper functionality to one of the best MUD clients tiny-fugue by Ken Keys.
The core objectives were to provide an application that easily integrates (and not only into tiny-fugue), works cross platform and is usable whether user client is local or remote.
Prerequisites
On MacOs and Windows tf-mapper is available as a compiled executable, all that's required is a double click. On Linux you need to take care of dependencies on your own; these dependencies are: Qt4.8, PyQt4 and Python 2.7 - these should all be easily available from your package manager.
tf integration
To integrate with any MUD client you will need to take care of scripting with accordance to our little 'communication protocol'. We have one files prepared ready for you that has been tailored to our map for one of the most popular polish MUDs Arkadia LpMUD.
Sample integration: map.tf.
There are generally 2 types of command that tf-mapper supports; these are teleport/lookup and navigate. While teleport/lookup is quite straight forward as it will simply activate the room by given roomId the navigate set of command are a bit more complex. You can navigate in 3 different ways (the end effect is the same, just how you get there differes slightly).
Communication
Communication between your client and tf-mapper is realised over TCP socket. Mapper will automatically (unless forced not to do so) bind a listening server on port 23923. You will then have to connect your MUD client to localhost:23923 - in tinyFugue we've used the background world/socket support to realise this communication. If your client is installed remotely (ie you are using a shell account) you should simply configure a reverse tunnel back to localhost:23923.
tf-mapper also sends messages to your MUD client. It will for example notify you of what roomId you are entering, whether it has custom exits (so you can bind them to keys) or send any other arbitrary message.
What tf-mapper will SEND
- room:enter
- sent as soon as you switch rooms, it should set default state in your scripts (ie reset all previous custom exits)
- room:id
- in case you have room specific scripts you can activate them by using roomId
- exit:start
- opening boundary for list of exists
- exit:custom:(.*)
- will send a line for each defined custom exit
- exit:rebind:([A-Z]{1,2}):(.*)
- will send a line for each custom exit that you would rather rebind as directional
- exit:end
- closing boundary for list of exits
What tf-mapper will RECEIVE
- navigate:exit:(.*)
- will move room in given direction (if exit exists on the map)
- navigate:custom:(.*)
- same as above but will look for a custom exit label
- navigate:follow:(.*)
- same as above but using follow label
- revert
- reverts active room back to previous room
- lookup:(.*)
- marks room as active by id