Content-Type: text/html; charset=ISO-8859-1 Mud.deWiki . Mud . PSYCimMUD

::: PSYCimMUD :::
 
  Mud.deWiki . Mud . PSYCimMUD # Edit # Attach # Diffs # Printable # Skin # More :::
Eingeloggt als Gast

Leute

TWiki System

LPC

Mud
InterMud4
WebChanges
WebIndex
WebNotify
WebStatistics

FinalFrontier

PSYC im MUD

Es hat sich eventuell schon herumgesprochen, dass ich angefangen habe, psycMUVE in die Gueldenland-MUDlib zu cross-portieren, damit psyc letztendlich Intermud2 und Intermud3 ersetzen kann. Der langfristige Plan ist, auch interne Kommunikation mehr oder weniger auf psyc umzustellen. Damit waeren dann die verschiedenen Systeme vom Tisch und die Spieler haetten die Vorteile eines modernen Chatservers die psycmuve bietet.

psycMUVE

Wo gibt es den original LPC-Code von psycMUVE?

Wah, das sieht ja kurdisch aus!

  • Ja; psycMUVE ist im Prinzip ein eigenstaendiges System. Aber sobald ich mit meinem crossport fertig bin, werde ich den auch zur Verfuegung stellen, zumindest fuer die MGlib-Derivate sollte das eine grobe Vereinfachung sein. [Oder wir bauen es gleich ifdeffig/modular in den MUVE code ein --CvL]

Portierung

Ok, das ist also die Ferne. Der momentane Stand ist:

  • das Gueldenland ist ueber psyc von anderen psyc-Servern erreichbar
  • es kann lokale Chatebenen in psyc-Raeume exportieren
  • es gibt ein Template fuer einen Gatewayraum zwischen unserem Ebenensystem und psyc

Was fehlt?

  • das lokale Interface fuer die Mudder gibt es noch nicht. Das sollte aber nicht zuviel Aufwand sein, da die Infrastruktur ja schon laeuft. Sprich, wenn ich ihm sage wie er an die MUD-User ran kommt und wie er ihnen Nachrichten zustellen kann, reicht das schon.
  • ich habe nur das psyc-Protokoll uebernommen. Die anderen Protokolle, die psycMUVE unterstuetzt, sind bei mir rausgeflogen. Es ist kein Thema sie wieder reinzunehmen - aber wieso? ;) Zumal jede psyc-Ressource von anderen psyc-Servern angesprochen werden kann, zu denen man dann in der Regel schon noch mit irc oder jabber usw. connecten kann.

Was bedeutet das jetzt?

  • man kann sich bereits auf einem anderen psyc-Server einloggen und in den psyc-Chatraeumen des Gueldenlandes reden
  • das Gueldenland kann theoretisch Chatraeume auf anderen psyc-Servern betreten. Allerdings geht das mudseitig noch nicht, weil ich das lokale Interface fuer die Spieler noch nicht habe. Es ist aber schon moeglich, ueber psyc ueber das Gueldenland eine relay-Verbindung aufzubauen.

Ein paar Details zum psycMUVE-Code

  • LPC orientiert an LDmud. Keine Schwierigkeiten mit LD 3.2 und 3.3. Angeblich ab 3.2.9 lauffaehig.
  • Ansatzweise Kompatibiltaet zu MudOS? und Amylaar - aber nicht komplett funktionsfaehig
  • compat-Mode; allerdings nur an ganz wenigen Stellen davon abhaengig. Das wichtigste ist dass man in ca. einer Hand voll Files eventuell reset() und create() an native anpassen muss.
  • keine Sicherheitschecks fuer call_other - in einem MUD muss die Sicherheit andernweitig gewaehrleistet werden. Allerdings ist das ganze auch ohne Sicherheit noch sicherer als Intermud2. Wer seinen Wizards vertraut, braucht sich hier keine Sorgen zu machen ;)
  • Zum TCP-Verbindungsaufbau wird net_connect benutzt. Anders als bestimmte andere Protokolle funktioniert psyc mit net_connect wirklich.

Ein paar Details zur Netzwerkinfrastruktur

  • Das psyc-Netz ist dezentral. Chatraeume werden in url-Form angegeben, nach dem Muster psyc://host/@ChatRaum (optional mit Port wenn nicht der Defaultport 4404 verwendet wird). Chatuser werden genauso angegeben: psyc://host/~username. [Man kann sich auch /alias'es setzen wonach remote User wieder wie einfache Nicknames erscheinen --lynX]
  • Jeder Host kann eigene Raeume und User definieren.
  • Wenn ein User auf einem Server einen Raum auf einem anderen betreten will, bauen die beiden Server (falls nicht schon existent) eine TCP-Verbindung zueinander auf ueber die die Nachrichten dann gerouted werden.
  • Aehnliches gilt, wenn zwei User auf verschiedenen Nachrichten direkt miteinander sprechen wollen.
  • UDP gibts auch noch ... tja oehm, das ist so eine Sache. Anscheinend existiert es nur als Fallback und nur fuer unwichtige Nachrichten. [Für Broadcasts an Empfänger mit denen man später nicht weiter reden wird und bei denen der Empfang nicht wahnsinnig wichtig ist, also in erster Linie für Presence-Announcements. Verloren gehen UDP Pakete ja nur wenn das Netz echte Sorgen hat, oder der Router nen Fußtritt bekommt --lynX]
  • psyc-Raeume sind programmierbar. Es gibt schon fertige Raeume, die RSS-Feeds einspeisen. Wer sich an die ganzen Probleme mit d-news erinnert, weiss das zu schaetzen... [allerdings ist es der PSYCige Weg nur einen RSS-Gateway pro Newsfeed zu betreiben. Andere PSYC-Server linken diesen und erhalten die News zugepusht, sogar multigecastet --lynX]

Testen?

Da es im Gueldenland selber bisher noch nicht moeglich ist als Spieler psyc zu nutzen (noch keine Interface-Befehle implementiert ...) kann das ganze nur ueber andere psyc-Server oder psyc-MUDs getestet werden. Zu diesem Zweck habe ich ein Gateway-Template fuer lokale Ebenen im GL geschrieben (ca 20 Zeilen Code - also ziemlich einfach). Benutzt wird der in einem Gatewayraum fuer D-code. Im Gueldenland selbst und ueber einen fernen psyc-Server sieht das dort dann etwa so aus:

   [D-code:Danny4!ve.symlynx.com!i4gw@GueldenLand] yo..
   [D-code:Dan@GueldenLand] disregard, nur ein test fuers wiki

Fuer psyc heissen die Leute ungefaehr so; die folgende Zeile ist eine wie sie im telnet-Interface eines psyc-Servers angezeigt wuerde:

   «psyc://ve.erinye.com/~dannycool» dannycool betritt i2/d-code.

Selber probieren:

Wer sich fuer andere psyc-Raeume interessiert, die wir mit Intermud4-ueber-psyc gratis dazu bekommen wuerden, moechte ich noch ein paar Raeume aus dem Defaultpaket nahelegen. Sie koennen u.a. auch auf ve.symlynx.com direkt betreten werden:

  • tagesschau
  • basic
  • heise

Wer noch mehr testen will, kann auch mal psycMUVE lokal installieren. Es laeuft glaube ich sogar unter Windows ;) Es gibt ein Setupscript; unter Linux ist es in zehn Minuten installiert, es kompiliert sogar selber einen ldmud und konfiguriert ihn. Von so einem jungfraeulichen psycMUVE kann man bereits auf alle anderen psyc-Raeume connecten, wenn man die URL kennt. [Wenn man auf einem jungfräulichen MUVE in einen Newsfeed-Raum geht wie tagesschau, dann verbindet der sich zu seinem Master und lässt sich News zupushen. Per default. ;-) --lynX]

Warum ist das ein sinnvolles Beispiel?

Es zeigt, dass es kein Ding waere, ein Intermud3-Gateway aufzusetzen. Das werde ich mit Sicherheit auch im Gueldenland tun. Damit erhalten I4-MUDs gratis die I3-Ebenen, ohne sich selbst mit dem Protokoll rumschlagen zu muessen.

Es zeigt, dass psyc maechtig genug ist, um alle bisherigen Intermud-Protokolle zu vereinen und dem MUD mit einem einheitlichen Interface zur Verfuegung zu stellen. [Hui, welch Kompliment! Und wir steuern dann noch einen intermud:-Adressierungsscheme bei, welcher von alleine herausfindet wo ein taugliches intermud-gateway ist. Somit sind intermud-User generell adressierbar. --lynX]

Wie machen wir daraus Intermud4?

Gawain und ich haben die Ueberlegung angestellt, dass man ein dediziiertes psycMUVE oder irgendeinen anderen psyc-Server bestimmen koennte, der von den bekannten Standard-Intermud-Raeumen (die man sich noch ausdenken muss) die Master-Raeume haelt - also als so eine Art Router fungiert. Andere MUDs koennen dann zu diesen Raeumen connecten. Damit haetten wir eine Architektur so wie beim Intermud3. Die Rolle eines Routers kann theoretisch auch jedes MUD das psyc implementiert uebernehmen. Es sind keine Anpassungen noetig; wir muessen lediglich ein Raumtemplate dafuer entwerfen das von der Architektur weiss. Das muessen wir aber sowieso ;)

Mehr ist nicht noetig. Die ganze Chat-Infrastruktur ist schon da; bei diesem Vorschlag ging es nur darum, bestimmte kuerzere Ebenennamen automatisch zu psyc-URLs zu mappen; z.B. damit man als Spieler auf D-Chat reden kann anstatt auf psyc://intermud.bla.fasel/@Channel. Mehr ist nicht dahinter, das System wuerde natuerlich auch ohne sowas funktionieren ;)

[Und die Masterräume brauchen nicht auf einem dedizierten MUVE liegen, jedes MUD kann seine eigenen Masterräume starten, und wenn andere MUDs den Raum haben wollen, linken sie ihn einfach --lynX]

I4-Namensraum

Mein eigener Vorschlag zu einem Intermud4-Namensraum sieht analog meines i2-Gateway-Raumes so aus, dass die URL auf psyc://intermud4.router/@i4/Ebene lauten wuerde. Ein MUD koennte dann aus einem Ebenennamen "D-code" und einer Liste von I4-Routern die URL psyc://gueldenland.de:4449/@i4/d-code zusammensetzen. Dies waere fuer die Spieler natuerlich transparent.

Was den Teil nach dem @i4/ angeht, fangt mal an Euch Standardebenen auszudenken, damit wir fuer den Anfang ein Set haben. Meine eigenen Ideen orientieren sich da an den I2-Ebenen, also D-Code, D-Chat, D-Schafepoppen und so weiter. Das ist aber eigentlich alles egal ;)

Fuer Textmitteilungen ist das nicht relevant; jedes MUD koennte sie dem Ziel direkt ueber psyc zustellen. Es ist allerdings auch kein Ding das in die Router zu integrieren. Ich weiss momentan nicht, was besser ist... Wuensche?

Die MUD-typischen Sonderfunktionen wie who koennen wir genau wie tell loesen. Services sind in psyc vorgesehen, aber noch nicht implementiert (soweit ich weiss). Das heisst aber nicht, dass wir sie nicht selber implementieren koennen. Technisch gesehen wuerde das so wie ein Chat-User funktionieren, d.h. ein Service waere ueber eine psyc-URL erreichbar ueber die man mit ihm Nachrichten austauschen kann. Wenn ich eine Spielerliste will, muss ich also nur dem who-Service des Zielmuds einen Hinweis uebermitteln; ueber das genaue Format der Daten muessen wir uns noch Gedanken machen.

Zum Format ist noch zu sagen, dass psyc-Messages Variablen kennen. Es waere kein Ding, das Format aehnlich wie bei Intermud3 abstrakt zu gestalten, d.h. das anfordernde MUD rendert die Daten anstatt dass einem das Zielmud bunte Blobs mit wild eingestreuten ANSI Escapes liefert. Das passt auch besser zur Philosophie hinter psyc.

Aja, eine Liste der angeschlossenen MUDs ist im Prinzip unnoetig da man den Hostnamen des Zielmuds kennen muss um mit ihm Verbindung aufzunehmen, und ob an dem Namen ein psyc-Server lauscht kann man jedesmal einzeln feststellen. Es waere zu ueberlegen, ob unsere geplanten I4-Router eine Liste mit Aliasen fuehren. Sprich, ein MUD meldet sich dort unter einem Alias an, dieses ist dann an die Domain gebunden, und andere MUDs koennen diese Aliasliste einsehen. Klingt einfach, ist es auch ;) Man koennte sogar ueber psyc ein Verzeichnis realisieren, so dass die MUDs nichtmal selbst die Liste halten muessten - man wuerde einfach einen Router fragen ob ein MUD Gueldenland o.ae. existiert und wo es ist.

[Es wäre auch legitim eine DNS .host subdomain einzurichten in der MUVE well-known-hosts nachschlägt, die wären dann für intermud einfach andere als für normales PSYC (da haben wir sowas gar nicht derzeit) --lynX]

Wieso ist das dann besser als Intermud3?

Naja, jeder kann einen eigenen "Router" aufsetzen. Der Code ist Open Source. Die beteiligten MUDs brauchen dann nur noch eine Liste mit Routern von denen sie dann halt den ersten nehmen, der erreichbar ist. Damit haetten wir dann wieder Intermud3, aber so wie es eigentlich geplant war und ohne single point of failure. Gleichzeitig fallen die Schwierigkeiten von Intermud2 weg.

Und wir bekommen die ganzen tollen Features von psyc. Wer sich den Codetree mal angeschaut hat, hat schon eine erste Ahnung davon ;)

-- DanielFischer - 22 Jul 2004


Hört sich ja ziemlich genial an; vor allem, wenn sich das so relativ einfach auf MUD-Zwecke ummünzen lässt...

-- Invisible@BL

-- Main.guest - 26 Jul 2004


Dein Kommentar wird vor diesem Eingabefeld erscheinen (neueste ganz unten)

# Edit menu  


Topic revision r1.3 - 26 Jul 2004 - 08:35 GMT - Main.guest Copyright © 1999-2003 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Mud.deWiki? Send feedback.