Das ganze funktioniert folgendermaßen: Zunächst einmal habe ich ein unsichtbares Objekt über den kompletten Raum gelegt. Wann immer man irgendwo hinklickt, um sich zu bewegen, klickt man in Wirklichkeit auf das Objekt. Diese Sensorfläche errechnet dann aus den [mousex]/[mousey] Pixelkoordinaten der Maus die Position auf der Walkmap, die man angeklickt hat. Diese Werte werden über savenum() exportiert. Anschließend wird der Charakter mit walkto() zu der angeklickten Stelle bewegt, so dass es für den Spieler so erscheint, als hätte er ganz normal in den Raum geklickt.
Im on(loop1) Skript des Raums werden dann kontinuierlich die Werte other_x und other_y über loadnum() importiert. Das sind die Walkmap-Koordinaten des anderen Spielers. Dieser wird dann ebenfalls mit walkto() an die entsprechende Stelle bewegt.
Auf der Serverseite sitzt ein PHP-Skript, das über die URL eine Session-ID, eine Spieler-ID (1 oder 2) und die Walkmap-Koordinaten des Spielers bekommt. Die Session-ID bekommt derjenige, der das Spiel aufmacht und erlaubt es, dass mehrere unabhängige Spiele über den gleichen Server laufen. Sie entspricht also in etwa den Spielnamen im Battle.net bei Diablo 2, nur dass du hier einfach nur eine Zahl hast statt "DupeItems4Free".

Spieler 1 in Session 42 auf Server http://gehirnmutant.de/pacmp, der auf Koordinaten 10/15 sitzt, würde also folgende URL aufrufen:
http://gehirnmutant.de/pacmp/pac-mp.php ... &x=10&y=15
Das Skript speichert dann die neuen Koordinaten des Spielers in der Datenbank und liefert als Antwort die aktuellen Koordinaten des anderen Spielers zurück, also zwei Zahlen, getrennt durch ein Leerzeichen.
Zu guter Letzt brauchen wir noch eine Verbindungsschicht zwischen dem Server und dem Spiel. Hierzu habe ich ein kleines Java-Programm geschrieben, das ständig die nums.sav, in der die exportierten Zahlen vom PaC-DK gespeichert werden, einliest, die Koordinaten des Spielers an den Server schickt, und die vom Server erhaltenen Koordinaten anschließend wieder in die nums.sav einträgt.
Eine Demo davon gibt es hier: http://gehirnmutant.de/pacmp/pacmp.7z
Den Quellcode gibt es unter: http://gehirnmutant.de/pacmp/source.7z
Zum Starten der Demo einfach auf die start.bat doppelklicken. Eine aktuelle Java Laufzeitumgebung wird benötigt.
Da das ganze eine Multiplayer-Demo ist, braucht man natürlich 2 Leute (oder zumindest 2 Rechner), um es vernünftig zu testen. Der erste Spieler klickt in dem Fenster, das aufgeht wenn man start.bat öffnet, auf "Spiel erstellen" und teilt dem zweiten Spieler die Session-ID mit, die er zugewiesen bekommen hat. Der zweite Spieler trägt diese Session-ID dann in das Eingabefeld ein und klickt auf "Spiel beitreten". Einen eigenen Webserver braucht ihr für diese Demo nicht, mein Server ist bereits als Voreinstellung eingetragen.
Das Hauptproblem hier ist, dass das on(loop1) des Raumskripts nicht besonders häufig ausgeführt wird. Darum hat man immer eine Verzögerung von ca. 1 Sekunde in der Reaktion. Außerdem kann man bisher nur Positionen übertragen. Wenn man mehr Variablen exportiert, lässt sich das System natürlich noch etwas ausdehnen, aber für ein wirklich sinnvolles Multiplayer-Spiel wird man mit dem Umweg über die nums.sav glaube ich nicht glücklich. Für Online-Highscorelisten und ähnliches, wo es nicht besonders auf die Reaktionszeit ankommt, ist der Ansatz aber wohl brauchbar (auch wenn man noch ein bißchen dran feilen sollte, damit nicht ständig Daten übertragen werden müssen).