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