If you want to exchange maps with others you need to import and export maps. Dont attempt get the map files directly from the SMM++ user directory! Neither try to copy them directly to there! The SMM++ user directory is totally maintained by SMM++ itself. If you change anything in there this might result in loss of all your data! Import/export of maps is not just a normal load and save with different filenames. Other action must be taken too.
You need an active session (either loaded or connected). You need a map too. The actual map can be exported when choosing from the menubar -> 'Map' -> 'Export Map'. A file chooser will pop up and you can choose a destination and a filename for the export map file.
Again you need an active session. From the menubar choose -> 'Map' -> 'Import Map'. A file chooser will pop up and you can choose the map file you want to import. If you chose a file the 'new map' user interface will pop up. The proposed name and level of the map are those which the saved map had. If you want to you can change them now. You might have to change it, if you have already such a map.
The imported map is passed to the mud, which belongs to the active session. So after the import the new map will be available in all sessions, which use the mud of the actual session.
The file extension of exported map files is '.smap'. Furthermore I advise you to choose a name, which can be read by any filesystem. So please avoid the following character (there may be even more): /, \, :, (, ), [, ], ", `, ....
Windows and Mac file systems dont distinguish the following file names: 'file', 'File' or 'FILE'. So if you want to exchange maps with others running Windows or Mac, you want to keep this in mind.
Best would be, if you start the filename with a lower case character [a-z] and continue with lowercase characters and numbers [a-z0-9] only. A good filename would be e.g. 'tharnadia.smap' or 'noblehouse23.smap'
If you have maps ready (and I strongly believe, that you have some!;)), please send them in, so others can profit from your efforts too. For more information please follow this link: MAPS. Come on join the effort!
Thanks a lot in advance!
Once you have a map speedwalking is easy: Just double click with the right mouse button on the destination point you want to go to. The player will be moved there sending the corresponding commands to the mud and moving the player on the map.
If you reconfigured your mouse you have to use what ever you have choosen to be your right mouse button. But its always a double click, this is to prevent accidental moves. For more information about reconfiguring the mouse, please follow this link.
Moving accross maps is not problem, if a connecting path exists. Both the player position and the destination point must exits, otherwise movements is not possible obviously. I've put a maximum distance of 1000 rooms for speedwalking. This number may be adjustable in later versions.
You can use speedwalking also from the commandline. Please have a lookt at the #map command.
Please forgive me some of the technical terms, but maybe the one or the other is interesseted int it. You might be still interessted in the performance discussion below, so read on, please.
The used algorithm is the algorithm of Dijkstra; implemented using adjazence lists and a priority queue (implemented as heap). The algorith of Dijkstra is the solution to the "single source shortes path" problem, which asks for all shortest distances to a start room in our case.
The algorithm starts finding first the shortest paths and then longer ones, etc,... As we dont need to find the connections to all rooms, I stop the algorithm as soon as the destination rooms is found. Only if that room is the farest possible room or a connection between start and end room does not exists the algorithm has to run up to its end.
The chosen implementation for the algorithm of Dijktra is already quite effective. Let 'n' be the number of rooms and 'e' be the number of connections. The number of calculations (needed time) grows with O(e log(n)). So if you have in total 20 connections, the algorithm needs twice the time as if you have only 10 connection. The needed time grows only logarithmically with the number of rooms.
The above considerations are only valid, if the algorithm must run till end, which is in our case the worst possible case. As nearer paths are found much earlier, its better to speedwalk long distances in two, three or more steps than just in a single step. Keeps this in mind, if speedwalk searching for a path takes to much time for you.
With the above considerations in mind, I've chosen a maximum
distance of 1000, when speedwalking search will be aborted. It
might be, that there is just no connection, but if you have
lots of and large maps all connected with each other,
speedwalking could consume quite some CPU power,.. resulting
that SMM++ hangs quite some while,..