Das LDMud-Team ist wirklich stolz, die Veroeffentlichung von LDMud 3.6.0
verkuenden zu duerfen.
LDMud 3.6.0 ist wieder ein grosses Update mit entsprechenden Auswirkungen
auf LPC-Code. Jede Mudlib wird sicherlich einige Anpassungen benoetigen,
um mit LDMud 3.6 zu laufen. Das liegt daran, dass LDMud 3.6 Unterstuetzung
fuer Unicode in Strings mitbringt. Daher wird es aber nicht mehr moeglich
sein, Binaerdaten in Strings abzuspeichern. Stattdessen gibt es einen
neuen Typ 'bytes', welcher aehnliche Funktionalitaet fuer der Typ 'string'
jedoch fuer Binaerdaten bietet, aber nicht mit Unicode-Strings vermischt
werden darf.
Eine Beschreibung der Unicode-Unterstuetzung ist in /doc/concepts/unicode
enthalten, ein Leitfaden zur Umstellung ist in /doc/3.5vs3.6 im Quellcode
des Drivers enthalten.
Abgesehen davon gibt es Aktualisierungen bei den Anforderungen:
* JSON-C 0.12 oder neuer wird fuer die JSON-Efuns benoetigt.
* LDMud 3.6.0 unterstuetzt OpenSSL 1.1 und GnuTLS 3.6.
Wir empfehlen die Umstellung auf 3.6 in Angriff zu nehmen, denn weitere
Entwicklung wird sich auf den 3.6er Branch konzentrieren.
LDMud 3.6.0 ist hier erhaeltlich:
* http://www.ldmud.eu/download.html
* https://github.com/ldmud/ldmud/tree/3.6.0
Eine Liste der Aenderungen gibt es in der Datei HISTORY in den Quellen.
Falls Ihr auf weitere Probleme mit LDMud stosst, berichtet uns bitte
darueber in unserem Bugtracker: https://mantis.ldmud.eu/mantis/
Und falls Ihr Fragen habt, stehen wir Euch auf der Mailingliste
ldmud...@googlegroups.com oder unter ldmu...@UNItopia.de zur Verfuegung.
Wir schaetzen auch sehr Euer Feedback - vorzugsweise Lobeshymnen, aber wir
nehmen auch konstruktive Kritik entgegen.
Viel Spass!
Das LDMud-Team
die Kodierung geschieht direkt kurz vor dem Absenden. Es gibt keine
Moeglichkeit, die dadurch entstehenden Binaerdaten nochmal abzufangen
und zu veraendern. Will man hier nochmal eine Bearbeitung durchfuehren,
so bietet es sich an, die Ausgaben mit catch_tell() abzufangen, selbst
mit to_bytes() zu konvertieren, anschliessend die gewuenschte Bearbeitung
durchzufuehren und mit binary_message() abzuschicken.
Gruss
Gnomi
ich sehe das Problem, allerdings ist mir bisher keine wirklich elegante
Loesung dazu eingefallen.
Der Driver hat selbst keine Idee, wie breit die Texte bei der Ausgabe
werden. Das //TRANSLIT wird von den Iconv-Routinen beim Uebersetzen in
das jeweilige Encoding ausgewertet. In dem jeweiligen Encoding entspricht
aber ein Byte nicht mehr einem Zeichen auf dem Bildschirm (bei ASCII
und ISO8859-X schon, bei anderen mag das anders aussehen).
Um also eine angepasste Formatierung zu ermoeglichen, muesste der Driver
die Transliteration selbst vornehmen. Allerdings haben wir selbst keine
Liste aller notwendigen Transliterationen fuer alle unterstuetzten
Encodings. Auch muessten wir fuer Efuns wie sprintf(), terminal_colour()
zusaetzliche Varianten einbauen, die spielerabhaengig reagieren, was
nicht sonderlich schoen waere.
Also wenn jemand Ideen hat, wie man das elegant umsetzen kann, wuerde
ich mich freuen, diese zu hoeren.
Gruss
Gnomi
Teiweise sind glaub die Ersetzungen Englisch, bei einem Versuch hier,
wurde z.B. das gotische o nicht ersetzt.
Und gerade fuer blinde Spieler interessant waeren vielleicht die ganzen Emojis.
> Wie fange ich mit einem Driver und einer "leeren" MudLib an bzw. was ist
> das absolut notwendige Grundgerüst an MudLib, um damit "from scratch"
> anzufangen?
Also die minimale Lib besteht nur aus einem Master-Objekt. In der Testsuite
vom Driver befindet sich solch ein minimaler Master:
https://github.com/ldmud/ldmud/blob/master/test/inc/base.inc
Bis auf die dortige Funktion runtime_warning() muessten das alles
Funktionen sein, deren Implementierung Pflicht fuer den Master ist.
Das ist ausreichend, damit der Driver startet.
Die naechsten Schritte waeren dann eine Funktion im Master, die Verbindungen
entgegennimmt, namens connect(). Ueblicherweise hat man dafuer ein anderes
Objekt, an welches man die Verbindung weitergibt. Denn ein Objekt kann immer
nur eine Verbindung halten und wenn der Master bereits eine hat, kann keine
zweite Verbindung aufgebaut werden. Die Mudlibs, die ich kenne, haben dafuer
dann eigens ein Login-Objekt, welches nach erfolgreichem Login die Verbindung
an ein weiteres Objekt, das Player-Objekt weitergibt.
Wenn es einen Player gibt, moechtest Du sicherlich auch eine Umgebung fuer
den Player erschaffen, einen Raum. Das waer ein weiteres Objekt, und ab
da wird's richtig komplex, denn der Raum will ausgetattet werden...
Eine kleine, funktionierende Mudlib stellt LP 2.4.5 dar, welches mit dem
Driver mitgeliefert wird:
https://github.com/ldmud/ldmud/tree/master/mud/lp-245
Von dieser Mudlib stammt uebrigens auch UNItopia ab.
Generell ist so eine kleine Mudlib schoen, um mal mit den Grundlagen
rumzuspielen, aber in die modernen Mudlibs ist inzwischen viel Energie
geflossen, um das Programmieren einfacher und die Welt schoener zu machen.
Fuer richtige Projekte waer es schade, darauf zu verzichten.
Gruss
Gnomi