1 |
root |
1.1 |
This is a guide on what is an acceptable map and what is unacceptable. |
2 |
|
|
Only acceptable maps will be put in the official Crossfire map distribution |
3 |
|
|
|
4 |
elmex |
1.1.1.2 |
------------------------------------------------------------------------------ |
5 |
|
|
|
6 |
|
|
Map Naming/Directory Scheme: |
7 |
|
|
|
8 |
|
|
Note that these rules are ordered in importance, eg, if a rule conflicts, |
9 |
|
|
the lower number rule takes precedence. |
10 |
|
|
|
11 |
|
|
1) Each city should have its' own top level directory (eg, scorn, navar_city, |
12 |
|
|
santo_dominion) and be accessible on a world map. All buildings in the |
13 |
|
|
city and located nearby or related to it are in the respective city |
14 |
|
|
directory. City/town names are also used for nearby regions. If one |
15 |
|
|
desires to create a new city then create a new top level directory with |
16 |
|
|
the city name and use the new city name for the region in the maps that |
17 |
|
|
are associated with the new city. |
18 |
|
|
|
19 |
|
|
2) If the map is part of a larger quest, a /quests/name_of_quest/ directory |
20 |
|
|
should be made, and all the maps for the quest placed in there (also see |
21 |
|
|
NOTE below about number of maps per directory). If some portions of the |
22 |
|
|
quest has maps in cities or other places, a README should be included |
23 |
|
|
explaining this. Note in general, having README's for all quests |
24 |
|
|
explaining the flow probably isn't a bad idea in the case someone else |
25 |
|
|
needs to work on it. |
26 |
|
|
|
27 |
|
|
3) If a map is independent (eg, the map is one you just go there, kill and |
28 |
|
|
get exp), it should be in the /dungeons/ directory. If the dungeon is |
29 |
|
|
comprised of several maps (eg, multilevel dungeon), a subdirectory |
30 |
|
|
should be made to hold all of these maps (also see NOTE below about number |
31 |
|
|
of maps per directory). |
32 |
|
|
|
33 |
|
|
4) Maps should fall into one of the categories above - if it does not, and |
34 |
|
|
you are not sure, send a message to crossfire-devel@lists.real-time.com. |
35 |
|
|
|
36 |
|
|
NOTE: If a map or set of maps is near a particular city then place the proper |
37 |
|
|
region in the map header. Use of the map maker's name as part of the |
38 |
|
|
directory structure or map name is not encouraged and may result in maps |
39 |
|
|
being excluded from CVS. While this type of directory scheme was done in the |
40 |
|
|
past it is now deprecated. Attempt to use a logical tree structure for maps |
41 |
|
|
and try to avoid dumping more than 15 to 20 maps in a single directory (this |
42 |
|
|
does not apply to /world/). Dumping a massive number of maps in a single |
43 |
|
|
directory is highly discouraged, Just Say No. |
44 |
|
|
|
45 |
|
|
------------------------------------------------------------------------------ |
46 |
|
|
|
47 |
root |
1.1 |
1) Check that all exits lead where they are supposed to. Unless there is |
48 |
|
|
a specific reason an exit leads only one direction (like a trap door or |
49 |
|
|
perhaps a teleporter), players should be able to exit back from where they |
50 |
|
|
came from right when they enter the map. |
51 |
|
|
|
52 |
|
|
One way exits/entrances should only be used on objects in which it is |
53 |
|
|
obvious it is one way. A house is not an obvious one way entrance. Remember, |
54 |
|
|
players may not have the three hours of time it takes to find the exit |
55 |
|
|
after being trapped in a map (a work around for this can be have the trap |
56 |
|
|
lead to a safe place with no exit which contains a savebed. Thus, the |
57 |
|
|
player could save and come back at a later time to find the exit.) |
58 |
|
|
|
59 |
|
|
2.1) Try to make sure the maps are multi player accessible. In towns, this |
60 |
|
|
means the road should be at least a couple squares wide, buildings should not |
61 |
|
|
be trapped in corners in which case one character standing in front blocks |
62 |
|
|
access, etc. |
63 |
|
|
|
64 |
|
|
2.2) Try to make corridors in dungeons or mazes a few squares wide - |
65 |
|
|
especially if there is only a single path. If it is a maze with several |
66 |
|
|
different paths, single width corridors are acceptable. The main problem |
67 |
|
|
here are big labyrinths in which only one monster attacks at a time, and |
68 |
|
|
which there is only 1 or two routes. If two players enter such a map, the |
69 |
|
|
one that went in first will be in the lead the entire time. |
70 |
|
|
|
71 |
|
|
2.3) Avoid spiral or single path mazes that just have monsters lining the |
72 |
|
|
corridor. These are not very good for multiple players, not particularly |
73 |
|
|
interesting (map justs consists of killing all the monsters), and tend to be |
74 |
|
|
an easy and safe way to gain experience. |
75 |
|
|
|
76 |
|
|
3) Don't put: |
77 |
|
|
|
78 |
|
|
3.1) extremely valuable treasure right next to the entrance, or |
79 |
|
|
nearby. Players should need to work to get treasure. If the treasure is |
80 |
|
|
fairly worthless (food, or non magical items), this would be acceptable. |
81 |
|
|
But a character should not be able to pop in, pick up a potion, spellbook, |
82 |
|
|
or a lot of diamonds, and then pop out again, without ever meeting |
83 |
|
|
a monster. |
84 |
|
|
|
85 |
|
|
3.2) Don't put monsters of high experience point near to entrance where they |
86 |
|
|
are trapped. Low level player could boost their experience high by using some |
87 |
|
|
weapons or spells from distance without danger. For example find a trapped |
88 |
|
|
troll and get wand of fireball. |
89 |
|
|
|
90 |
|
|
3.3) monsters on top of other monsters. A troll should not be sitting on |
91 |
|
|
top of an oriental dragon. The only exception to this would be if a monster |
92 |
|
|
could be on top of another monster (making sense) and hiding it at the same |
93 |
|
|
time. A troll on top of an oriental dragon does not make sense (could not |
94 |
|
|
fit), nor can the troll hide the oriental dragon. Using tricks like these |
95 |
|
|
which are only applicable due to display limitations is something that |
96 |
|
|
should not be done, nor should the player need to click on every monster he |
97 |
|
|
encounters to see if something is below it. (as a side note, doing this |
98 |
|
|
will tend to lock the monsters into position, making them unable to move.) |
99 |
|
|
|
100 |
|
|
3.4) Large groups of monsters that can be killed quickly with spells. A |
101 |
|
|
fairly popular tactic to make high level maps is just to put 30 dragons (or |
102 |
|
|
other tough monsters) in a big room. Do not do this. All the player needs |
103 |
|
|
to do is cast a dozen icestorms, and quickly gets millions of experience. |
104 |
|
|
Likewise, it is unlikely that any more than 2 or 3 large (multisquare) |
105 |
|
|
monsters will be able to attack a player or party at once - the remaining 25 |
106 |
|
|
will be blocked from doing anything. This then makes it so that having 30 |
107 |
|
|
dragons is not any tougher than having 3. |
108 |
|
|
|
109 |
|
|
If you want to make a high level map, instead of tossing a lot of monsters |
110 |
|
|
on it, take existing monsters and make them tougher. Increase their |
111 |
|
|
hit points, level (which then means spells they use do more damage), add |
112 |
|
|
immunities or protections, remove vulnerabilities, change attack types, etc. |
113 |
|
|
Try not to totally change the characteristics of a known monster - a normal |
114 |
|
|
dragon should still be dragon like. Also, remember to adjust experience |
115 |
|
|
that the monster gives. |
116 |
|
|
|
117 |
|
|
4) Try to keep the treasure in line with the difficulty. 5 potions should |
118 |
|
|
not be given out for defeating orcs or gnolls (even if there are a lot |
119 |
|
|
of them), but if you need to defeat several dragons to get to the |
120 |
|
|
potions, that is fine. Likewise, if it is likely a lot of spells will be |
121 |
|
|
needed to defeat the monster, and those spells have a chance of destroying |
122 |
|
|
the items, then perhaps a few extra items to take this into consideration |
123 |
|
|
is not a bad idea. |
124 |
|
|
|
125 |
|
|
5) If use of a specific skill/class/spell is needed to complete the map, |
126 |
|
|
that should be stated near the map entrance. How clearly this is stated |
127 |
|
|
depends on the circumstance. If use of a certain skill is needed, there is |
128 |
|
|
probably no good way other than to state that a skill is needed. If use of |
129 |
|
|
a certain spell is needed, stating that a spell caster of XX level might be |
130 |
|
|
sufficient, with the assumption that a spellcaster of that level would have |
131 |
|
|
the spell. It is safe to assume that all characters can fight, but |
132 |
|
|
spellcasting (especially certain spells) should not be assumed, and thus |
133 |
|
|
should be stated. |
134 |
|
|
|
135 |
|
|
Also, don't put in hidden rooms requiring dimension door if they only real |
136 |
|
|
way to know about them is pure luck or looking at the map. If you want to |
137 |
|
|
do something like that, at least put some clues in. |
138 |
|
|
|
139 |
|
|
If a certain skill would make a map easier, but is not required, you don't |
140 |
|
|
need to necessary state it. The idea of this is that it can be frustrating |
141 |
|
|
to wander into some map, complete most of it, but find out you can't |
142 |
|
|
finish the map because you lack some skill or spell. |
143 |
|
|
|
144 |
|
|
5.1) A map should be designed so that a character can never be |
145 |
|
|
trapped in a room (except via other player interaction.) A character should |
146 |
|
|
never be forced to dimension door or word of recall out of a map because |
147 |
|
|
some gate closed behind him. For a character without these spells, |
148 |
|
|
it would mean death. A simple method around this is put a lever on |
149 |
|
|
both sides of the door. If the door is opened by special actions (saying |
150 |
|
|
things, dropping things), just put the lever on the hard to get side of |
151 |
|
|
the gate. |
152 |
|
|
|
153 |
|
|
6) If a map require multiple players to simultaneous be on it to solve |
154 |
|
|
the map, put a sign or message so players know. Such maps would be those |
155 |
|
|
that require manipulation of levers or buttons in certain sequences in |
156 |
|
|
order to get through gates. |
157 |
|
|
|
158 |
|
|
Don't make ends of maps require multi users. This ruins that map for |
159 |
|
|
single players (not able to complete it), and makes a map that requires |
160 |
|
|
multiple players for only a small portion. |
161 |
|
|
|
162 |
|
|
7) Try not to make the maps too many levels deep. To get to the goal, |
163 |
|
|
it should not require a 6 hour continous sitting, as the player works |
164 |
|
|
through each map to get to the next. Multi level maps are fine - just |
165 |
|
|
don't over do it. One way to do this is have several maps with a key |
166 |
|
|
or other special item at the end. The final map could have the various |
167 |
|
|
battles, and then a series of gates/altars which uses up these keys. |
168 |
|
|
|
169 |
|
|
8) Shops: |
170 |
|
|
|
171 |
|
|
8.1) Don't put super stores in any towns or villages you create. With the |
172 |
|
|
growing number of maps, players can already make a trip to all the different |
173 |
|
|
towns to try and find certain items. A one stop find all shop is not |
174 |
|
|
interesting. A good maximum size is about the same size of the shops |
175 |
|
|
in the starting village. |
176 |
|
|
|
177 |
|
|
Also, making six magic shops of that size and putting them in the same |
178 |
|
|
town is not any better than one large magic shop. If you want to have |
179 |
|
|
specialized shops, then make each shop smaller. If you just want one |
180 |
|
|
shop that sells every type of item (magic, armor, weapons, food, etc), then |
181 |
|
|
a large shop is permissable. |
182 |
|
|
|
183 |
|
|
8.2) Make sure the entire interior the shop is covered with tiles. Likewise, |
184 |
|
|
don't put shops that lead to areas without tiles without going over one of |
185 |
|
|
the 'magic doormats'. A player should never be able to get an unpaid |
186 |
|
|
item out of a shop, whether via exit that does not go over the magic |
187 |
|
|
doormat, or through spells. |
188 |
|
|
|
189 |
|
|
|
190 |
|
|
9) Don't make maps which require high level characters that low level |
191 |
|
|
characters can wonder into without warning. Put a warning sign nearby, |
192 |
|
|
or gates or doors so the player can see they are in over their head, instead |
193 |
|
|
of instantly getting toasted the second they enter the map. |
194 |
|
|
|
195 |
|
|
|
196 |
|
|
10) The structure of the map should make sense. That is to say, |
197 |
|
|
if you enter a house, the house should then not have a tower inside. Or |
198 |
|
|
a door to a shop. In other words, if a map has an exit to another map, |
199 |
|
|
that exit should make sense (ie, another level, tunnels, dungeons |
200 |
|
|
all make sense. However, another building the size of the original |
201 |
|
|
does not make sense. |
202 |
|
|
|
203 |
|
|
|
204 |
|
|
11) Try to keep the difficulty throughout the map(s) about the same. |
205 |
|
|
The first monster in the map should not be the most difficult monster, |
206 |
|
|
nor should the last monster be orders of magnitude more difficult |
207 |
|
|
than anything before it. |
208 |
|
|
|
209 |
|
|
It is very frustating to play a map, killing most every monster without |
210 |
|
|
much difficulty, only to find that last monster unkillable. |
211 |
|
|
|
212 |
|
|
It is reasonable to have the monster increase in difficulty. Also, if the |
213 |
|
|
map has no quest or end goal, then having a very difficult monster around is |
214 |
|
|
not unreasonable, as long as it does prevent the player from progressing to |
215 |
|
|
the next map. |
216 |
|
|
|
217 |
|
|
12) Do not put directors with bullet, lightning, fireball, etc. that |
218 |
|
|
are a loop or continuous. Example: Do not have two directors, each |
219 |
|
|
facing each other, with a bullet wall firing into them at the side. |
220 |
|
|
|
221 |
|
|
Having numerous directors is fine. But make sure that eventually, |
222 |
|
|
there will be an exit/detonation point for the fired spell. Having |
223 |
|
|
loops that go for over typically bring the game to a halt, as the |
224 |
|
|
objects just multiply and the game consumes more and more cpu time. |
225 |
|
|
|
226 |
|
|
|
227 |
|
|
------------------------------------------------------------------------------ |
228 |
|
|
The following are various suggestions for making good or interesting |
229 |
|
|
maps. A map that does not need to follow all these hints to be accepted, |
230 |
|
|
but following these hints will make for more interesting or playable maps. |
231 |
|
|
|
232 |
|
|
|
233 |
|
|
1) Try to create only small maps. If you have a large map in mind, try to |
234 |
|
|
see if you can possible split it up in several separate sections, and place |
235 |
|
|
those sections in different maps. Many small maps use much less memory than |
236 |
|
|
one large map, since crossfire doesn't yet support swapping of portions of |
237 |
|
|
maps. Also, with small maps, the time to load it from and store it to disc |
238 |
|
|
becomes so short that it's impossible to notice. In this context, small |
239 |
|
|
means about 32x32, though it's actually the number of objects in the map |
240 |
|
|
which count. |
241 |
|
|
|
242 |
|
|
What is potentially more critical than the size of the map is the number |
243 |
|
|
of objects (memory usage), and live objects (cpu usage, as each would need |
244 |
|
|
to be processed.) |
245 |
|
|
|
246 |
|
|
Also, remember that if you make very large maps, all generators will be |
247 |
|
|
cranking out monsters whenever anyone is on it. This could mean that a lot |
248 |
|
|
of monsters have been generated before a player even gets to the area where |
249 |
|
|
they are being created. |
250 |
|
|
|
251 |
|
|
Related to this: If a map contains multiple levels, make multiple maps. |
252 |
|
|
Many times, if the level is small, the mapmaker may think I will just put |
253 |
|
|
all the levels on one larger map. This makes the map a little less readable |
254 |
|
|
to others. Also, things like magic mapping and dimension door can lead to |
255 |
|
|
unexpected results. |
256 |
|
|
|
257 |
|
|
2) Make a plot! A map withot a plot becomes just another mindless |
258 |
|
|
"Kill'em all". For instance, create a story which explains why there |
259 |
|
|
are npc's here and monsters there, fragment the story up and put |
260 |
|
|
bits and hints of it in various writables (books) and npc-conversations. |
261 |
|
|
|
262 |
|
|
If you are going to make a mindless kill them all map, at least put some |
263 |
|
|
reward in the map that can only be accessed after all the monsters have been |
264 |
|
|
killed. The only thing worse than a kill them all map is a kill them all map |
265 |
|
|
which you get nothing out of. |
266 |
|
|
|
267 |
|
|
Avoid maps where all the monsters are lined up, and only one can attack |
268 |
|
|
you at a time. This just makes an easy (and relatively safe) way for |
269 |
|
|
a character to gain experience and treasure, and is not especially |
270 |
|
|
interesting or challenging. |
271 |
|
|
|
272 |
|
|
2.1) A good idea for the rewards at the end of quests are specific |
273 |
|
|
items (luggage, spellbook of some otherwise not available spell, |
274 |
|
|
special weapon, spellcrystal, etc.) It is much more interesting to |
275 |
|
|
put a specific item instead of something like a random artifact. Feel |
276 |
|
|
free to mutate or otherwise change existing artifacts to create your own. |
277 |
|
|
|
278 |
|
|
This has two advantages: one, the player will get to know where certain |
279 |
|
|
items are. Having to search endlessly for a specific item gets tedious. |
280 |
|
|
Two, it reduces the incentive to keep repeating the quest (repeating |
281 |
|
|
quests is not inherently bad) If the reward is a random artifact, a player |
282 |
|
|
may very well keep repeating the quest until the item he looks for comes up. |
283 |
|
|
By doing specific items, this will not happen. |
284 |
|
|
|
285 |
|
|
3) Make puzzles! Use all those different object types: buttons, handles, |
286 |
|
|
doors, altars, pedestals, triggers, timed gates, etc... Hide special "keys" |
287 |
|
|
needed to get further in special places, and use text-puzzles to describe |
288 |
|
|
where they are hidden and how they must be used. The possibilities are |
289 |
|
|
endless! Remember, you can also hide buttons under floors, making it more |
290 |
|
|
difficult for the character to find the trigger points. |
291 |
|
|
|
292 |
|
|
|
293 |
|
|
4) But don't make too much big labyrinths. Making of labyrinths is (too) |
294 |
|
|
easy with crossedit, just select auto-joining and make zig-zag with mouse. |
295 |
|
|
But the results of these are quite tiring. If you make ones, try make |
296 |
|
|
some idea into it. |
297 |
|
|
|
298 |
|
|
Related: Don't make maps where the only way to find something is examination |
299 |
|
|
of each and every wall. For example, don't have a big map with lots of walls, |
300 |
|
|
but the key to moving onward is to find the weak wall and pass through it. |
301 |
|
|
Nor should big mazes full of invisible walls be made where the way to get |
302 |
|
|
through it is just by going in some direction, finding out you can't move |
303 |
|
|
anymore in that direction, go some other one, etc. |
304 |
|
|
|
305 |
|
|
5) Give the npc's information! An npc's knowledge about hidden treasure surely |
306 |
|
|
makes it interesting to have a conversation with it. |
307 |
|
|
|
308 |
|
|
|
309 |
|
|
6) Feel free to add some traps, but be careful to not make them too |
310 |
|
|
deadly without adequate warning. |
311 |
|
|
|
312 |
|
|
|
313 |
|
|
7) Don't mix the monsters too badly. Let there be at least some logic |
314 |
|
|
behind why they are grouped in a single room. Undeads together with |
315 |
|
|
undeads, for instance, but not together with kobolds... |
316 |
|
|
Big dragons usually don't live together with mice... Fire immune creatures |
317 |
|
|
generally dislike ice immune creatures. |
318 |
|
|
|
319 |
|
|
Also, limit use of monsters that multiply rapidly (mice, slimes). A map |
320 |
|
|
that is easily overwhelmed with these creatures quickly becomes useless. |
321 |
|
|
|
322 |
|
|
8) Give your maps a meaningfull name (like John's tower, level 1). |
323 |
|
|
This way, these can be used instead of the map paths in the highscore |
324 |
|
|
file. Also, in terms of the actual file name, try to use numeric |
325 |
|
|
level identifiers (ie, maze.1, maze.2, ... instead of maze.first, maze.second, |
326 |
|
|
etc.) The former maps the levels sorted a little bit nicer in the |
327 |
|
|
directory. |
328 |
|
|
|
329 |
|
|
9) Try to make the map so that it links in with the existing world. Most |
330 |
|
|
people want to make their own continent, which is then accessed by ship |
331 |
|
|
or other fast means. While convenient, this creates many island |
332 |
|
|
continents. The problems with this are that any feeling of relation is lost |
333 |
|
|
(where is that island continent), and it makes item searching in shops very |
334 |
|
|
easy - if you can access half a dozen shops quickly and safely by taking |
335 |
|
|
boats, you have a decent chance of finding the item you want. |
336 |
|
|
|
337 |
|
|
Also, it seems that when most people start making maps, the first thing they |
338 |
|
|
do is create a new town or village. There are already a lot of towns and |
339 |
|
|
villages out there. If you are just going to create a few new buildings, |
340 |
|
|
instead of going to the effort and time of creating your own island with a |
341 |
|
|
town, just create the buildings, and plug them into one of the existing |
342 |
|
|
towns or the terrain someplace. Many of the towns right now have many |
343 |
|
|
unused buildings. |
344 |
|
|
|
345 |
|
|
------------------------------------------------------------------------------ |
346 |
|
|
|
347 |
|
|
Technical map hints: |
348 |
|
|
|
349 |
|
|
1) If you are creating a new archetype, it only needs to go into the general |
350 |
|
|
archetype distribution if it has an image associated with it, or it has |
351 |
|
|
general use (a new monster). Something that uses already existing images |
352 |
|
|
can be set up in the map file itself (through setting various variables). |
353 |
|
|
|
354 |
|
|
2) When modifying an existing archetype into a new one (either new face |
355 |
|
|
or new type), use the archetype that has the most variables in common. |
356 |
|
|
Thus, if you want to create a monster called a 'bouldar', it is probably |
357 |
|
|
best to take a monster of some sort and change its face instead of taking |
358 |
|
|
the existing boulder archetype and changing its type, hit points, speed, |
359 |
|
|
etc. |
360 |
|
|
|
361 |
|
|
3) Changing color is no longer possible in maps - instead, a new face |
362 |
|
|
and image must be created, and then put in the standard distribution. |
363 |
|
|
The archetype collection script will automatically pull out face information |
364 |
|
|
from archetype files. |
365 |
|
|
|
366 |
|
|
4) Try to keep maps readable by other people who might edit them. Thus, |
367 |
|
|
instead of modifying a woods space so it also acts as an exit, just put an |
368 |
|
|
invisible exit under the woods space. This has the same functionality, but |
369 |
|
|
it makes it much easier for other players to see what this space does. (Side |
370 |
|
|
note - if you want it so that players actually need to apply the space |
371 |
|
|
to enter, you will need to change the face of exit for this to work. If |
372 |
|
|
you do this, you should also accompany it with a magic mouth.) |
373 |
|
|
|
374 |
|
|
5) Make sure you set the difficulty field in the map attributes to |
375 |
|
|
somethign meaningful. Crossfire will calculate a default dificulty, |
376 |
|
|
but its formula is hardly ideal. The difficulty of a map determines how |
377 |
|
|
magical the treasure will be (and some treasure types won't show up |
378 |
|
|
unless the map has a certain difficulty level.) |
379 |
|
|
|
380 |
|
|
6) Don't be too intimidated about writing new code if there is something |
381 |
|
|
you would like to be able to do, but just isn't supported. If you are not |
382 |
|
|
the code writing time, make a suggestion. Worst case is it gets ignored. |
383 |
|
|
But many times, I have written code because I had some idea which just |
384 |
|
|
was not possible at the time (ie, the apartment in the starting town |
385 |
|
|
required an expansion/change of the unique item code.) |
386 |
|
|
|