blob: f3398b4043fd22ff20bfb67ca9097013ae3d7b05 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
2Hallo, willkommen in den unendlichen Weiten der Regionsverzeichnisse!
3
4Du moechtest in einer Region mitprogrammieren? Prima, neue kreative
5Mitarbeiter sind jederzeit willkommen! Du bist herzlich eingeladen, mit
6Deinen Ideen zur Entwicklung beizutragen.
7
8Um die Programmierung und anschliessende Abnahme fuer alle Beteiligten
9moeglichst reibungslos zu gestalten, seien Dir die in dieser Hilfeseite
10genannten Dinge ans Herz gelegt. Diese lassen sich in folgende Kategorien
11einteilen:
12
131) Formales zum Codestil
142) Inhaltliche Anforderungen
153) Was nicht akzeptiert wird
164) Was ist vor dem Anschluss zu beachten?
17
18
191) Formales zum Codestil
20
21o #pragma strong_types,save_types soll in allen Files verwendet werden,
22 ab Driver-Version LD_3.5.x wird auch rrtt_checks dringend empfohlen.
23
24o Der Code soll keine Zeilen mit mehr als 78 Zeichen enthalten.
25
26o Der Code soll sauber eingerueckt und sorgfaeltig formatiert sein, aber
27 bitte ohne Tabulatoren.
28
29o Verwende keine Lambda-Closures! Was auch immer Du vorhast: Es geht
30 ohne. Es sei ausdruecklich auf die Moeglichkeit von inline-Closures
31 verwiesen, wenn Du unbedingt vermeiden willst, eine separate Funktion
32 zu schreiben.
33
34o Kommentiere Deinen Code! Insbesondere dort, wo komplexere Objekt-
35 Interaktionen stattfinden, oder wo implizit besondere Eigenschaften
36 (z.B. der Mudlib, oder mathematische "Features") genutzt werden, die im
37 Code nicht auf den ersten Blick ersichtlich oder durchschaubar sind.
38 Daumenregel: "Wenn Du laenger als eine Minute ueber eine Zeile nachdenken
39 musstest, kommentiere sie." ;-) Rechne immer damit, dass jemand, der
40 Deinen Code liest, keine Ahnung hat, was Du da eigentlich tust. :-)
41
42o Wirf bitte nach Abschluss der Arbeiten Platzhalter-Code raus (z.B. leere
43 AddDetail()-Anweisungen) und entferne nicht fuer das Gebiet benoetigte
44 Dateien aus den Verzeichnissen.
45
46o Speicherung von Daten in secure-Verzeichnissen soll bitte nur sehr
47 sparsam erfolgen und nur in Abstimmung mit dem RM.
48
49o save_object() bitte sehr sparsam verwenden (nicht bei jeder Daten-
50 aenderung, bei Bedarf in reset/remove).
51
52o Wenn Defines zum Einsatz kommen, verwende sie bitte moeglichst sparsam
53 und sorge dafuer, dass Defines klar als solche erkennbar sind. Ausser in
54 Faellen, wo es gar nicht anders geht, solltest Du keine Code-Defines
55 verwenden, die mehr umfassen als einfache Funktionsaufrufe wie z.B.
56 #define TP this_player()
57 Fuer uebliche Standardfaelle existiert bereits eine Headerdatei in der
58 Mudlib unter /sys/defines.h.
59
60o Solltest Du bestimmte Ereignisse in Deinem Gebiet loggen wollen (z.B.
61 (Mini-)Questabschluesse oder besondere Kills), dann benutze bitte
62 log_file(), so dass die Logfiles nach /log/ geschrieben werden. Zusaetzlich
63 werden so erstellte Logfiles automatisch bei Erreichen einer bestimmten
64 Dateigroesse rotiert, so dass sich der Platzverbrauch in Grenzen haelt.
65 Das Protokollieren mittels write_file() in Regionsverzeichnissen unter
66 /d/ ist grundsaetzlich NICHT erwuenscht.
67 Nach Absprache KANN es fuer SELTENE und WICHTIGE Meldungen erlaubt werden,
68 mittels write_file(() nach /log/ zu schreiben.
69
70o Wenn Du in Deinem Gebiet Daten oder Code ablegst, der nicht fuer
71 jedermanns Augen bestimmt ist (Questloesungen, Gebietskarten, Savefiles
72 von questrelevanten (Master-)Objekten), solltest Du in Abstimmung mit
73 Deinem Regionsmagier ueberlegen, diese in ein ./secure/-Verzeichnis
74 zu verschieben, damit sichergestellt ist, dass auch tatsaechlich nur
75 berechtigte Magier darauf Zugriff erhalten. Denn bedenke, dass Lese-
76 und Schreibrechte nur fuer Codedateien geprueft werden, jedoch nicht
77 fuer beliebige sonstige Textdateien.
78
79o Es sei ausdruecklich auf die Manpages "goodstyle", "effizienz", etc.
80 verwiesen.
81
82
83Das soll jetzt nicht heissen, dass der Anschluss von Code kategorisch
84abgelehnt werden wird, der diese Formalien nicht erfuellt. (Ausnahme: Lambda-
85Closures werden in den Regionen nicht mehr akzeptiert.) Ich moechte aber
86wirklich nachdruecklich darum bitten, sie aus einem einfachen Grund
87einzubauen: Du wirst nicht immer der einzige sein, der Deinen Code lesen und
88warten muss, auch in Deiner Abwesenheit koennen Bugs auftreten. Und dann ist
89es wesentlich einfacher, einen Minimalstandard zu haben, der es allen
90ermoeglicht, den Code auch im MG zu lesen und dort zu fixen. Denn nicht immer
91wird es moeglich sein, sich Dateien herunterzuladen und lokal zu bearbeiten.
92
93Zum Bugfixing an dieser Stelle aus aktuellem Anlass eine Anmerkung: Es wird
94von jedem aktiven Regionsmitarbeiter erwartet, dass er einen Fehlerteufel
95(/obj/tools/fehlerteufel) besitzt und dessen Fehlerliste regelmaessig
96durchsieht und aufgetretene Fehler und Warnungen behebt. (Okt. 2007)
97
98
992) Inhaltliche Anforderungen:
100
Arathorne7b75942019-10-06 21:17:03 +0200101o Wenn Du ein komplett neues Gebiet schreiben moechtest, das in einer Region
MG Mud User88f12472016-06-24 23:31:02 +0200102 seinen Platz finden soll, sprich bitte die thematische Ausrichtung mit
Arathorne7b75942019-10-06 21:17:03 +0200103 dem RM ab, bevor Du anfaengst, Code zu schreiben. Dies gilt auch dann,
104 wenn du ein Gebiet anschliessen willst, das zu einer Gilde gehoert und
105 dessen Files rein technisch nicht im Regionsverzeichnis abgelegt sind.
106 Falls von Deinen Ideen irgendetwas nicht hierher passen sollte, laesst
107 sich das mit wesentlich weniger Frust im Vorfeld klaeren, als wenn
108 hinterher das halbe Gebiet umgebaut werden muesste. Sollte sich die
109 konzeptionelle Ausrichtung oder der Umfang waehrend der Programmierung
110 grundlegend aendern, besprich dies bitte auch kurz mit dem RM.
MG Mud User88f12472016-06-24 23:31:02 +0200111
112o Ob neue oder alte Rechtschreibung, ist im wesentlichen Dir selbst ueber-
113 lassen, jedoch waere es schoen, wenn Du die Spieler-Anreden wie "frueher"
114 ueblich gross schreiben wuerdest ("Du", "Dich", "Dein").
115
116o Es muessen in jedem Raum gewisse Standarddetails vorhanden sein, z.B.
117 Boden, Decke, Waende, Himmel (Sonne, Wolken), etc. Dies kann man sehr
118 bequem mit dem "Otester" pruefen.
119 Es sei aber ausdruecklich darauf hingewiesen, dass der Otester keinesfalls
120 benutzt werden sollte, um saemtliche vorhandenen Substantive bis ins
121 kleinste zu beschreiben. Es ist schoen, wenn Objekte moeglichst voll-
122 staendig beschrieben werden, aber man sollte es auch nicht uebertreiben.
123
124o Was bitte nur in Ausnahmefaellen gemacht werden sollte, ist, Details,
125 Infos oder Lang-/Kurzbeschreibungen aus Standardraeumen zu inheriten.
126
127o Falls Du Beschreibungen/Ausgaben in ASCII-Grafik einbinden moechtest, achte
128 bitte darauf, dass Du auf jeden Fall einen kurzen Alternativtext mit-
129 lieferst und diesen ausgibst, wenn der Spieler P_NO_ASCII_ART gesetzt hat.
130 Es besteht immer die Moeglichkeit, dass Spieler mit Sehschwaeche oder
131 Blinde Deine Objekte anschauen, und diese kommen mit Objekten in reiner
132 ASCII-Grafik nicht zurecht.
133 (Siehe auch die Manpage zu P_NO_ASCII_ART und "hilfe grafik".)
134
135o Eine Anmerkung zu den Schadensarten DT_HOLY und DT_UNHOLY soll nicht
136 unerwaehnt bleiben: Es wird von vielen Spielern und Magiern als logisch
137 und atmosphaerisch nicht begruendbar empfunden, wenn Gegenstaende oder
138 NPCs diese beiden Schadensarten gleichermassen einsetzen bzw. verursachen
139 koennen. Vergleichbares gilt fuer die gleichzeitige Abwehr beider
140 Schadensarten. Wenngleich bisher diesbezueglich keine klare Einigung
141 erzielt werden konnte, soll an dieser Stelle dennoch empfohlen werden,
142 von einer gleichzeitigen Nutzung von DT_HOLY und DT_UNHOLY abzusehen.
143 Der zustaendige Regionsmagier muss aber auf jeden Fall in Kenntnis
144 gesetzt werden und entsprechende Objekte zur Pruefung vorgelegt bekommen,
145 falls diese Nutzung dennoch fuer unumgaenglich gehalten wird.
146
147
1483) Was keinesfalls akzeptiert wird
149
150o Files, die in /players liegen, incl. Headerfiles. Dies erschwert das
151 Reparieren von Bugs ungemein und bringt eine gewisse Unuebersichtlichkeit
152 mit sich. Bitte auch nichts aus /players inheriten (Ausnahmen hiervon sind
153 aufgrund eines neuen Driver-Features nur noch mit Hilfe eines Erzmagiers
154 moeglich. Kurz gesagt: es gibt eine Whitelist von Objekten, die das
155 duerfen. Alle anderen duerfen das per Default nicht.).
156
157
1584) Was ist vor dem Anschluss zu beachten?
159
160o Code muss vollstaendig fertig sein. Das heisst insbesondere, dass
161 Debug- und nicht mehr benoetigter Code entfernt wurde und dass alle
162 erforderlichen Kommentare vorhanden sind.
163
164o Abnahme durch den RM und ggf. den fuer Gesellenstuecke zustaendigen EM
165 muss erledigt sein. Regionsmagier sind angehalten, eigene Gebiete, die zum
166 Anschluss in der eigenen Region geplant sind, von anderen Magiern abnehmen
167 lassen.
168
169o Der Magier ist angehalten, das Gebiet durch Testspieler testen zu lassen
170 (siehe hierzu die Testspieler-Regeln). Ob ein Spieltest als Voraussetzung
171 fuer die Abnahme gefordert wird, entscheidet der zustaendige RM. Er kann
172 den Test auch selbst durchfuehren oder ganz darauf verzichten.
173
174o Quests und Miniquests muessen vom zustaendigen Quest-EM getestet,
175 eingetragen und aktiviert worden sein.
176
177o Feedback der Testspieler und testenden Magier sollte umgesetzt sein.
178
179o Forscherpunkte muessen vom zustaendigen EM eingetragen worden sein.
180
181o Balance-Genehmigungen (Objekte, Heilung, ggf. Gildenbalance) muessen
182 vorliegen; die genehmigten Eckparameter sollen nachvollziehbar im
183 Gebietsverzeichnis dokumentiert sein: entweder im jeweiligen File, oder
184 als Textfile z.B. in einem Doku-Verzeichnis.
185
186o Kraeuter fuer den Kraeuterskill muessen genehmigt und eingetragen worden
187 sein (dies kann jeder EM mit dem Kraeutertool erledigen).
188
189o Hinweis: Erstkills muessen NICHT ZWINGEND vom zustaendigen EM eingetragen
190 worden sein. Die Erstkill-NPCs werden automatisch in einer vorlaeufigen
191 Liste gesammelt und vom EM entweder freigegeben oder abgelehnt. Auch
192 Sonder-Stufenpunkte fuer EKs muessen nicht vor dem Anschluss beantragt
193 oder genehmigt worden sein, auch diese Eintragung laesst sich erledigen,
194 wenn der betreffende NPC das erste Mal getoetet wurde.
195
196o Auch die fuer den Ruestungsskill so beliebten Ruestungen muessen nicht
197 vor dem Anschluss eingetragen werden. Neue Ruestungen werden automatisch
198 beim zustaendigen Masterobjekt angemeldet, sobald sie das erste Mal
199 repariert werden.
200
201Und nun viel Spass bei der Programmierung!
202