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