ifmapper 2.0.9 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.txt +11 -0
- data/IFMapper.gemspec +31 -28
- data/docs/en/index.html +45 -24
- data/docs/en/start.html +643 -517
- data/docs/es/start.html +727 -1191
- data/docs/images/svg_export.gif +0 -0
- data/lib/IFMapper/FXMapperSettings.rb +1 -1
- data/lib/IFMapper/FXMapperWindow.rb +9 -16
- data/lib/IFMapper/FXSVGMapExporterOptionsDialogBox.rb +335 -107
- data/lib/IFMapper/IFMWriter.rb +1 -2
- data/lib/IFMapper/Inform7Writer.rb +2 -2
- data/lib/IFMapper/InformWriter.rb +2 -2
- data/lib/IFMapper/SVGMapAppend.rb +155 -0
- data/lib/IFMapper/SVGMapExporter.rb +1303 -1091
- data/lib/IFMapper/TADSWriter.rb +4 -3
- data/lib/IFMapper/locales/en/Messages.rb +84 -39
- data/lib/IFMapper/locales/es/Messages.rb +94 -29
- data/lib/IFMapper/locales/es/Messages_iso-8859-1.rb +69 -15
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c36cd77a2697100125d748b060617f90c1dec02f5e6038ddb473912b58e23320
|
4
|
+
data.tar.gz: d78e7ad0d82d9d9a68da75bb18783caea28096f922b277bc0cd652aff1635b70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d15ecae372e6ef78d48e417cf9bacf8bb1d4c8b8c291ccdb77a54f34ef7447f1d5c068896f44ba1a79094a1e71983698572b37070a93e8cf2e75fa80d1f72b02
|
7
|
+
data.tar.gz: 43f3eaa08721ee919b6dee30aec60d9d8cc67b652248bd1428725a7de7975ec4744af3c8b473c3ddc9fb02dd2c422ae56715a38b1996865bd2246820d725ba9c
|
data/HISTORY.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
v2.1.0 Overhauled SVG export support
|
2
|
+
Updated English documentation to meet modern HTML5 standard
|
3
|
+
Rewrote & simplified English installation instructions for clarity
|
4
|
+
Hide unimplemented Print menu option
|
5
|
+
BUGFIX: Instructions link opens browser in macOS & Linux
|
6
|
+
BUGFIX: Ruby version comparisons in IFM, Inform & TADS writers
|
7
|
+
courtesy of PeteT & Samwiseuk
|
8
|
+
|
9
|
+
v2.0.9 Fix a few Ruby 2.5 issues when using Automapper
|
10
|
+
courtesy of Bill Lash/welash
|
11
|
+
|
1
12
|
v2.0.8 Bug fixed PDF Writer as it was no longer working with v2.1+ Rubys.
|
2
13
|
|
3
14
|
v2.0.5 Bug fixed Spanish locale crashing due to missing BOX_COMMENTS.
|
data/IFMapper.gemspec
CHANGED
@@ -1,34 +1,37 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
|
3
|
-
VERSION = '2.0
|
3
|
+
VERSION = '2.2.0'
|
4
|
+
AUTHOR = "Gonzalo Garramuno"
|
5
|
+
HOMEPAGE = 'http://ggarra13.github.io/ifmapper/en/start.html'
|
6
|
+
EMAIL = 'ggarra13@gmail.com'
|
4
7
|
|
5
8
|
gem = Gem::Specification.new do |s|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
Dir.glob("lib/IFMapper/*.rb") +
|
19
|
-
Dir.glob("lib/IFMapper/locales/*/*.rb") +
|
20
|
-
Dir.glob("lib/IFMapper/locales/*/*.sh") +
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
9
|
+
s.name = "ifmapper"
|
10
|
+
s.version = VERSION
|
11
|
+
s.author = AUTHOR
|
12
|
+
s.email = EMAIL
|
13
|
+
s.license = 'GPL-2.0'
|
14
|
+
s.homepage = HOMEPAGE
|
15
|
+
s.summary = 'Interactive Fiction Mapping Tool.'
|
16
|
+
s.require_path = "lib"
|
17
|
+
s.executables = "IFMapper"
|
18
|
+
s.files = ['IFMapper.rbw'] + ['bin/IFMapper'] +
|
19
|
+
['IFMapper.gemspec'] +
|
20
|
+
['LICENSE'] +
|
21
|
+
Dir.glob("lib/IFMapper/*.rb") +
|
22
|
+
Dir.glob("lib/IFMapper/locales/*/*.rb") +
|
23
|
+
Dir.glob("lib/IFMapper/locales/*/*.sh") +
|
24
|
+
Dir.glob("maps/*.ifm") + Dir.glob("maps/*.map") +
|
25
|
+
Dir.glob("icons/*")
|
26
|
+
s.description = <<-EOF
|
27
|
+
Interactive Fiction Mapping Tool.
|
25
28
|
EOF
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
s.add_runtime_dependency("rake-compiler", "~> 0.7.1", ">= 0.7.1" )
|
30
|
+
s.add_runtime_dependency("fxruby", "~> 1.6.0", ">= 1.6.0")
|
31
|
+
s.add_runtime_dependency("pdf-writer", "~> 1.1.1", ">= 1.1.1")
|
32
|
+
s.extra_rdoc_files = ["HISTORY.txt", "TODO.txt"] +
|
33
|
+
Dir.glob("docs/*/*")
|
34
|
+
s.has_rdoc = true
|
35
|
+
s.rubyforge_project = 'ifmapper'
|
36
|
+
s.required_ruby_version = '>= 2.0.0'
|
34
37
|
end
|
data/docs/en/index.html
CHANGED
@@ -1,24 +1,45 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
<
|
4
|
-
|
5
|
-
<
|
6
|
-
<meta
|
7
|
-
<
|
8
|
-
<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
|
3
|
+
<html lang="en">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
7
|
+
<title>Interactive Fiction Mapper</title>
|
8
|
+
<style>
|
9
|
+
|
10
|
+
.center {
|
11
|
+
text-align: center;
|
12
|
+
}
|
13
|
+
|
14
|
+
.title {
|
15
|
+
font-size: 1.5em;
|
16
|
+
font-weight: bold;
|
17
|
+
text-decoration: underline;
|
18
|
+
}
|
19
|
+
|
20
|
+
.subtitle {
|
21
|
+
font-size: 1.13em;
|
22
|
+
font-weight: bold;
|
23
|
+
}
|
24
|
+
|
25
|
+
</style>
|
26
|
+
</head>
|
27
|
+
|
28
|
+
<body>
|
29
|
+
|
30
|
+
<p class="center title">
|
31
|
+
<a href="start.html">Interactive Fiction Mapper</a>
|
32
|
+
</p>
|
33
|
+
<p class="center subtitle">
|
34
|
+
<a href="start.html">by Gonzalo Garramuño</a>
|
35
|
+
</p>
|
36
|
+
<p class="center">
|
37
|
+
<a href="start.html"><img src="../images/IFMapper_main.gif" width="595" height="447" alt="IFMapper main user interface"></a>
|
38
|
+
</p>
|
39
|
+
<p class="center">
|
40
|
+
<a href="start.html">A Tool for Mapping Interactive Fiction</a>
|
41
|
+
</p>
|
42
|
+
|
43
|
+
</body>
|
44
|
+
|
45
|
+
</html>
|
data/docs/en/start.html
CHANGED
@@ -1,517 +1,643 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
<
|
4
|
-
|
5
|
-
<
|
6
|
-
<meta
|
7
|
-
<
|
8
|
-
<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
<
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
</
|
73
|
-
|
74
|
-
|
75
|
-
<
|
76
|
-
|
77
|
-
<
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
<
|
91
|
-
<br>
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
<
|
101
|
-
<
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
</
|
124
|
-
<
|
125
|
-
<
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
<
|
132
|
-
|
133
|
-
|
134
|
-
<a href="
|
135
|
-
|
136
|
-
<
|
137
|
-
|
138
|
-
|
139
|
-
<
|
140
|
-
|
141
|
-
<
|
142
|
-
|
143
|
-
<
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
<
|
151
|
-
<
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
<
|
158
|
-
|
159
|
-
|
160
|
-
<
|
161
|
-
|
162
|
-
|
163
|
-
<
|
164
|
-
|
165
|
-
|
166
|
-
<
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
<p>
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
<
|
186
|
-
|
187
|
-
<p
|
188
|
-
|
189
|
-
|
190
|
-
<p>
|
191
|
-
|
192
|
-
<
|
193
|
-
<
|
194
|
-
|
195
|
-
<p
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
<
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
<
|
206
|
-
|
207
|
-
|
208
|
-
<
|
209
|
-
<
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
<
|
217
|
-
<
|
218
|
-
</
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
<p
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
<
|
239
|
-
<
|
240
|
-
<
|
241
|
-
<
|
242
|
-
|
243
|
-
<
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
<
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
<p
|
264
|
-
|
265
|
-
|
266
|
-
<
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
<
|
271
|
-
<
|
272
|
-
<
|
273
|
-
<
|
274
|
-
|
275
|
-
<
|
276
|
-
<br>
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
<br>
|
282
|
-
|
283
|
-
<
|
284
|
-
<br>
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
<
|
303
|
-
|
304
|
-
<
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
</b>on
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
<
|
325
|
-
|
326
|
-
|
327
|
-
<br>
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
<
|
338
|
-
|
339
|
-
<b
|
340
|
-
<br>
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
<
|
346
|
-
<
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
<p
|
361
|
-
<
|
362
|
-
<
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
<
|
374
|
-
<
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
<br>
|
382
|
-
|
383
|
-
|
384
|
-
<p
|
385
|
-
|
386
|
-
<p>
|
387
|
-
<
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
Note that
|
416
|
-
|
417
|
-
|
418
|
-
<
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
<br>
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
<br>
|
466
|
-
<b
|
467
|
-
|
468
|
-
|
469
|
-
<br>
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
<
|
479
|
-
|
480
|
-
<br>
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
<
|
490
|
-
|
491
|
-
<
|
492
|
-
|
493
|
-
|
494
|
-
<br>
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
<p>
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
</
|
516
|
-
|
517
|
-
</
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
|
3
|
+
<html lang="en">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
7
|
+
<title>Interactive Fiction Mapper</title>
|
8
|
+
<style>
|
9
|
+
|
10
|
+
.center {
|
11
|
+
text-align: center;
|
12
|
+
}
|
13
|
+
|
14
|
+
.title {
|
15
|
+
color: #000080;
|
16
|
+
font-size: 1.5em;
|
17
|
+
font-weight: bold;
|
18
|
+
}
|
19
|
+
|
20
|
+
.subtitle {
|
21
|
+
color: #000080;
|
22
|
+
font-size: 1.13em;
|
23
|
+
font-weight: bold;
|
24
|
+
text-decoration: underline;
|
25
|
+
}
|
26
|
+
|
27
|
+
.heading1 {
|
28
|
+
color: #000080;
|
29
|
+
font-size: 1.5em;
|
30
|
+
font-weight: bold;
|
31
|
+
}
|
32
|
+
|
33
|
+
.heading2 {
|
34
|
+
color: #000000;
|
35
|
+
font-size: 1.13em;
|
36
|
+
font-weight: bold;
|
37
|
+
}
|
38
|
+
|
39
|
+
.imageborder {
|
40
|
+
border: 5px solid;
|
41
|
+
}
|
42
|
+
|
43
|
+
.imagealignright {
|
44
|
+
float: right;
|
45
|
+
}
|
46
|
+
|
47
|
+
</style>
|
48
|
+
</head>
|
49
|
+
|
50
|
+
<body>
|
51
|
+
<p class="center title">
|
52
|
+
<u>Interactive Fiction Mapper (IFMapper)</u><br>
|
53
|
+
by Gonzalo Garramuño
|
54
|
+
</p>
|
55
|
+
<p class="center subtitle">
|
56
|
+
User's Manual
|
57
|
+
</p>
|
58
|
+
|
59
|
+
<ol>
|
60
|
+
<li>
|
61
|
+
<a href="#Introduction">Introduction</a>
|
62
|
+
<ul>
|
63
|
+
<li>
|
64
|
+
<a href="#WhatAreInteractiveFictionGames">What are Interactive Fiction Games?</a>
|
65
|
+
</li>
|
66
|
+
<li>
|
67
|
+
<a href="#WhatIsIFMapper">What is IFMapper?</a>
|
68
|
+
</li>
|
69
|
+
<li>
|
70
|
+
<a href="#FeaturesOfIFMapper">Features of IFMapper</a><br>
|
71
|
+
|
72
|
+
</li>
|
73
|
+
</ul>
|
74
|
+
</li>
|
75
|
+
<li>
|
76
|
+
<a href="#Installation">Installation</a>
|
77
|
+
<ul>
|
78
|
+
<li>
|
79
|
+
<a href="#WhatYou'llNeed">What you'll need</a>
|
80
|
+
</li>
|
81
|
+
<li>
|
82
|
+
<a href="#Windows">Microsoft Windows</a>
|
83
|
+
</li>
|
84
|
+
<li>
|
85
|
+
<a href="#macOS">Apple macOS</a>
|
86
|
+
</li>
|
87
|
+
<li>
|
88
|
+
<a href="#LinuxOrUNIX">Linux or UNIX</a>
|
89
|
+
</li>
|
90
|
+
<li>
|
91
|
+
<a href="#Upgrading">Upgrading</a><br>
|
92
|
+
|
93
|
+
</li>
|
94
|
+
</ul>
|
95
|
+
</li>
|
96
|
+
<li>
|
97
|
+
<a href="#StartingIFMapper">Starting IFMapper</a><br>
|
98
|
+
|
99
|
+
</li>
|
100
|
+
<li>
|
101
|
+
<a href="#UsingIFMapper">Using IFMapper</a>
|
102
|
+
<ul>
|
103
|
+
<li>
|
104
|
+
<a href="#TheInterface">The Interface</a>
|
105
|
+
</li>
|
106
|
+
<li>
|
107
|
+
<a href="#Navigation">Navigation</a>
|
108
|
+
</li>
|
109
|
+
<li>
|
110
|
+
<a href="#CreatingLocations">Creating Locations</a>
|
111
|
+
</li>
|
112
|
+
<li>
|
113
|
+
<a href="#CreatingConnections">Creating Connections</a>
|
114
|
+
</li>
|
115
|
+
<li>
|
116
|
+
<a href="#DeletingRoomsOrConnections">Deleting Rooms and Connections</a>
|
117
|
+
</li>
|
118
|
+
<li>
|
119
|
+
<a href="#ComplexConnections">Creating Complex Connections</a>
|
120
|
+
</li>
|
121
|
+
<li>
|
122
|
+
<a href="#MovingRoomsInMap">Moving Rooms Around</a>
|
123
|
+
</li>
|
124
|
+
<li>
|
125
|
+
<a href="#DealingWithMultipleSections">Dealing with Multiple Sections</a>
|
126
|
+
</li>
|
127
|
+
<li>
|
128
|
+
<a href="#Searching">Searching</a>
|
129
|
+
</li>
|
130
|
+
<li>
|
131
|
+
<a href="#Preferences">Preferences </a>
|
132
|
+
</li>
|
133
|
+
<li>
|
134
|
+
<a href="#SavingAndLoadingMaps">Saving and Loading Maps</a>
|
135
|
+
</li>
|
136
|
+
<li>
|
137
|
+
<a href="#LockingMaps">Locking Maps</a>
|
138
|
+
</li>
|
139
|
+
<li>
|
140
|
+
<a href="#MappingGamesFromTranscripts(Automapping)">Automatically Creating Maps from Transcripts (Automapping)</a>
|
141
|
+
<ul>
|
142
|
+
<li>
|
143
|
+
<a href="#HowDoesTheAutomapperDistinguishLocations">How does Automapping work?</a>
|
144
|
+
</li>
|
145
|
+
<li>
|
146
|
+
<a href="#LimitationsOnAutomapping">Limitations on Automapping</a>
|
147
|
+
</li>
|
148
|
+
</ul>
|
149
|
+
</li>
|
150
|
+
<li>
|
151
|
+
<a href="#ExportingToSVG">Exporting Maps to Scalable Vector Graphics (SVG) Format</a><br>
|
152
|
+
|
153
|
+
</li>
|
154
|
+
</ul>
|
155
|
+
</li>
|
156
|
+
<li>
|
157
|
+
<a href="#CreatingANewInform/TADS3Game">Creating a new game for <i>TADS 3</i> or <i>Inform</i></a><br>
|
158
|
+
|
159
|
+
</li>
|
160
|
+
<li>
|
161
|
+
<a href="#Appendix">Appendix</a>
|
162
|
+
<ul>
|
163
|
+
<li>
|
164
|
+
<a href="#IAmNewToInteractiveFiction.WhatGamesWouldYouRecommend?">I am new to Interactive Fiction. What games would you recommend?</a>
|
165
|
+
</li>
|
166
|
+
<li>
|
167
|
+
<a href="#ContactingTheAuthor">Contacting the Author</a>
|
168
|
+
</li>
|
169
|
+
</ul>
|
170
|
+
</li>
|
171
|
+
</ol>
|
172
|
+
|
173
|
+
<p> </p>
|
174
|
+
|
175
|
+
<p id="Introduction" class="heading1">
|
176
|
+
Introduction
|
177
|
+
</p>
|
178
|
+
<p id="WhatAreInteractiveFictionGames" class="heading2">
|
179
|
+
What are Interactive Fiction Games?
|
180
|
+
</p>
|
181
|
+
<p>
|
182
|
+
These are adventure games, which usually contain little or no graphics but use prose to describe locations, events and, hopefully, a good story. The first interactive fiction game was created in the late 1970s and was known as <i>Adventure</i> (or <i>Colossal Cave</i>), albeit the genre became widely popular and developed most of its conventions with the creation of Infocom in the 1980s.<br>
|
183
|
+
If you have never played an interactive fiction game, perhaps the best comparison is that they are a grown-up version of "Dungeons and Dragons" or the "Choose Your Own Adventure" series of children's books.<br>
|
184
|
+
Still, just like any good novel, interactive fiction has evolved into all sorts of different styles, genres, and level of interactivity. And you can find adventures being developed today in a lot of languages like English, Spanish, Italian, German, etc. See the section: "<a href="#IAmNewToInteractiveFiction.WhatGamesWouldYouRecommend?">I am new to Interactive Fiction. What games would you recommend?</a>"<br>
|
185
|
+
<br>
|
186
|
+
</p>
|
187
|
+
<p id="WhatIsIFMapper" class="heading2">
|
188
|
+
What is IFMapper?
|
189
|
+
</p>
|
190
|
+
<p>
|
191
|
+
IFMapper is a tool for easily mapping these interactive fiction games. As these games rely mainly on text descriptions and often use compass directions for navigation around the game world, it is relatively easy to get lost. In the old days, players would use grid paper to draw their maps, using boxes and lines to show each location and its exits. IFMapper is basically, the 21st century version of that old practice.<br>
|
192
|
+
Albeit IFMapper is mainly a mapping tool, it can also be used as a design tool in the early stages of development of new games (for either <i>Inform 6</i> or <i>TADS 3</i>).<br>
|
193
|
+
<br>
|
194
|
+
</p>
|
195
|
+
<p id="FeaturesOfIFMapper" class="heading2">
|
196
|
+
Features of IFMapper
|
197
|
+
</p>
|
198
|
+
<ul>
|
199
|
+
<li>Multi-platform (Windows, Linux, OSX)</li>
|
200
|
+
<li>Very simple click interface</li>
|
201
|
+
<li>Complex paths supported (paths that loop on themselves or connect two remote nodes)</li>
|
202
|
+
<li>Automatic connection of rooms thru complex paths using an A* algorithm</li>
|
203
|
+
<li>Mousewheel support for zooming in/out</li>
|
204
|
+
<li>Middle mouse scrolling</li>
|
205
|
+
<li>Rooms can have objects and tasks listed</li>
|
206
|
+
<li>Automatic numbering of rooms</li>
|
207
|
+
<li>Multiple map editing</li>
|
208
|
+
<li>Ability to easily move rooms in map with arrow keys</li>
|
209
|
+
<li>Written in a simple and great scripting language (Ruby)</li>
|
210
|
+
<li>Adobe PDF output</li>
|
211
|
+
<li>W3C Scalable Vector Graphics (SVG) v1.1 output</li>
|
212
|
+
<li>Can read and save <i>IFM</i> files</li>
|
213
|
+
<li>Can read and save <i>Trizbort</i> maps</li>
|
214
|
+
<li>Can read and save <i>Inform/TADS 3</i> source code files</li>
|
215
|
+
<li>Locking of maps</li>
|
216
|
+
<li>Search for keywords in room names, objects or tasks</li>
|
217
|
+
<li>Can automap games from Infocom-like transcripts, even while you play them</li>
|
218
|
+
<li>Free and open source</li>
|
219
|
+
</ul>
|
220
|
+
|
221
|
+
<p> </p>
|
222
|
+
|
223
|
+
<p id="Installation" class="heading1">
|
224
|
+
Installation
|
225
|
+
</p>
|
226
|
+
<p id="WhatYou'llNeed" class="heading2">
|
227
|
+
What you'll need
|
228
|
+
</p>
|
229
|
+
<p>
|
230
|
+
In order to use IFMapper, you need to have the <a href="https://www.ruby-lang.org">Ruby</a> (at least v2.0) scripting language installed and <a href="https://github.com/larskanis/fxruby">FXRuby</a> (at least v1.6).<br>
|
231
|
+
To export to a PDF document, you will also need Austin Ziegler's <a href="https://rubygems.org/gems/pdf-writer">PDF::Writer</a> (at least v1.1.1) module.<br>
|
232
|
+
<br>
|
233
|
+
</p>
|
234
|
+
<p id="Windows" class="heading2">
|
235
|
+
Microsoft Windows
|
236
|
+
</p>
|
237
|
+
<p>
|
238
|
+
Download and run the latest recommended 64-bit <a href="https://rubyinstaller.org">RubyInstaller</a> for Windows to install Ruby and MSYS2 Devkit, accepting all the default options, by following the instructions here:<br>
|
239
|
+
<br>
|
240
|
+
<a href="https://rubyinstaller.org/downloads/">https://rubyinstaller.org/downloads/</a><br>
|
241
|
+
<br>
|
242
|
+
Once the installation has completed, click the new entry in the Start menu entitled <b>Start Command Prompt with Ruby</b>, and install IFMapper with RubyGems:<br>
|
243
|
+
<br>
|
244
|
+
<code>gem install ifmapper</code><br>
|
245
|
+
<br>
|
246
|
+
This will download and install the latest release of IFMapper, along with all required dependencies, and install them as gems within the Ruby install directory, e.g:<br>
|
247
|
+
<br>
|
248
|
+
<code>C:\Ruby{RUBY_VERSION}-x64\lib\ruby\gems\{RUBY_VERSION}\gems\ifmapper-{VERSION}</code><br>
|
249
|
+
<br>
|
250
|
+
</p>
|
251
|
+
<p id="macOS" class="heading2">
|
252
|
+
Apple macOS
|
253
|
+
</p>
|
254
|
+
<p>
|
255
|
+
macOS includes Ruby by default but the required FXRuby gem and its FOX toolkit dependency, may not be straightforward to install.
|
256
|
+
Developer tools and libraries could be required and it may also be necessary to install <a href="https://brew.sh">Homebrew</a>, to build the FOX toolkit.
|
257
|
+
The <a href="https://www.xquartz.org">XQuartz</a> X window system will be required to display IFMapper.
|
258
|
+
Homebrew can also be used to install Ruby. Once all the dependencies are satisfied, IFMapper should install with RubyGems:<br>
|
259
|
+
<br>
|
260
|
+
<code>sudo gem install ifmapper</code><br>
|
261
|
+
<br>
|
262
|
+
</p>
|
263
|
+
<p id="LinuxOrUNIX" class="heading2">
|
264
|
+
Linux or UNIX
|
265
|
+
</p>
|
266
|
+
<p>
|
267
|
+
You will need to obtain Ruby from your operating system's package repositories.<br>
|
268
|
+
<br>
|
269
|
+
For example, using apt-get:<br>
|
270
|
+
<br>
|
271
|
+
<code>sudo apt-get install ruby</code><br>
|
272
|
+
<br>
|
273
|
+
<br>
|
274
|
+
Nótese que es probable que además tengas que instalar el toolkit de Fox, desde tu repositorio de paquetes, asi como el set de development, de la misma forma que instalaste ruby.
|
275
|
+
<br>
|
276
|
+
<code>sudo apt-get install build-essential libfox-1.6-dev</code><br>
|
277
|
+
<br>
|
278
|
+
After you have Ruby up and running, install IFMapper and its dependencies with RubyGems:<br>
|
279
|
+
<br>
|
280
|
+
<code>sudo gem install ifmapper</code><br>
|
281
|
+
<br>
|
282
|
+
This should download and install the latest release of IFMapper, along with all required dependencies, and install them as gems, e.g:<br>
|
283
|
+
<br>
|
284
|
+
<code>/usr/local/lib/ruby/gems/{RUBY_VERSION}/gems/ifmapper-{VERSION}</code><br>
|
285
|
+
<br>
|
286
|
+
</p>
|
287
|
+
<p id="Upgrading" class="heading2">
|
288
|
+
Upgrading
|
289
|
+
</p>
|
290
|
+
<p>
|
291
|
+
Included with Ruby, <a href="https://rubygems.org">RubyGems</a> manages Ruby libraries - it can install and update any dependencies that IFMapper may need.<br>
|
292
|
+
<br>
|
293
|
+
Once IFMapper is installed by RubyGems, you can update it to the latest version by running this command:<br>
|
294
|
+
<br>
|
295
|
+
<code>gem update --conservative --minimal-deps ifmapper</code><br>
|
296
|
+
<br>
|
297
|
+
If a newer version of IFMapper exists, it will be updated along with any required libraries, which will result in the gem's version being updated in the gem's installation directory, like:<br>
|
298
|
+
<br>
|
299
|
+
<code>/usr/local/lib/ruby/gems/{RUBY_VERSION}/gems/ifmapper-{VERSION}</code>
|
300
|
+
</p>
|
301
|
+
|
302
|
+
<p> </p>
|
303
|
+
|
304
|
+
<p id="StartingIFMapper" class="heading1">
|
305
|
+
Starting IFMapper
|
306
|
+
</p>
|
307
|
+
<p>
|
308
|
+
Once installed, you can run IFMapper by either double clicking with the <b>Left Mouse Button</b> on the IFMapper.rbw file inside the ifmapper directory or invoking IFMapper.rbw from any shell or console, for example:<br>
|
309
|
+
<br>
|
310
|
+
<code>/usr/local/lib/ruby/gems/{RUBY_VERSION}/gems/ifmapper-{VERSION}/IFMapper.rbw</code><br>
|
311
|
+
<br>
|
312
|
+
Assuming everything is installed properly, you should then see the IFMapper window popup with an empty map.
|
313
|
+
</p>
|
314
|
+
|
315
|
+
<p> </p>
|
316
|
+
|
317
|
+
<p id="UsingIFMapper" class="heading1">
|
318
|
+
Using IFMapper
|
319
|
+
</p>
|
320
|
+
<p id="TheInterface" class="heading2">
|
321
|
+
The Interface
|
322
|
+
</p>
|
323
|
+
<p>
|
324
|
+
<img src="../images/IFMapper_main.gif" width="800" height="600" alt="IFMapper main user interface"><br>
|
325
|
+
<br>
|
326
|
+
The IFMapper interface consists of a menu that allows you to access common operations (open/save maps, change settings, etc), a toolbar with a similar functionality, and one or more windows displaying a map canvas.<br>
|
327
|
+
<br>
|
328
|
+
IFMapper allows you to edit multiple maps simultaneously.<br>
|
329
|
+
Each map can have multiple "sections", so as to keep different parts of the games organized. Note that these sections have nothing to do with how printing is done and two or more sections could end up being printed together in a page or a single section may end up getting split into a multiple page document once printed.<br>
|
330
|
+
<br>
|
331
|
+
When you start IFMapper for the first time, you should be placed in an empty map that shows a grid of where rooms and straight connections can be placed.<br>
|
332
|
+
<br>
|
333
|
+
</p>
|
334
|
+
<p id="Navigation" class="heading2">
|
335
|
+
Navigation
|
336
|
+
</p>
|
337
|
+
<p>
|
338
|
+
Use your mouse for navigation. If your mouse supports a mousewheel, this can be used for zooming in or out of the map easily.<br>
|
339
|
+
To pan around the map, use the <b>Middle Mouse Button</b> or, alternatively, <b>ALT + Left Mouse Button</b> (These hotkeys mimic the behavior of <i>Maya</i> and <i>3D Studio Max</i>, both popular 3D packages). You can also scroll the map using the scrollbars around the canvas.<br>
|
340
|
+
<br>
|
341
|
+
</p>
|
342
|
+
<p id="CreatingLocations" class="heading2">
|
343
|
+
Creating Locations
|
344
|
+
</p>
|
345
|
+
<p>
|
346
|
+
<img class="imagealignright" src="../images/room_small.gif" width="342" height="377" alt="IFMapper Location/Room Information requester">
|
347
|
+
You create new Locations or Rooms in the map by just clicking on any of those template boxes. The new location will then be given a default name and settings ('New Location').<br>
|
348
|
+
Each room added will automatically receive a number, based on creation order.<br>
|
349
|
+
To modify the name and settings of a location, you can then double click on it and a requester will pop up allowing you to do so.<br>
|
350
|
+
If you want the requester to pop up as soon as a new room is created, you can turn on <b>Map->Options->Edit on Creation.</b><br>
|
351
|
+
This requester also has options to allow you to mark the room as in darkness and to add a list of objects present in the room.<br>
|
352
|
+
As you play the game, you can also choose to list the tasks that you need to do in the room to progress further (providing you some with a rudimentary walkthru/hint functionality).<br>
|
353
|
+
This requester can be left open so as to quickly change from room to room.<br>
|
354
|
+
<br>
|
355
|
+
Besides using the mouse, you can also use the numeric keypad with <b>Num Lock</b> on and use the numbers from <b>1 to 9</b> to create a new room in the appropriate direction.<br>
|
356
|
+
<br>
|
357
|
+
</p>
|
358
|
+
<p> </p>
|
359
|
+
<p> </p>
|
360
|
+
<p> </p>
|
361
|
+
<p> </p>
|
362
|
+
<p id="CreatingConnections" class="heading2">
|
363
|
+
Creating Connections
|
364
|
+
</p>
|
365
|
+
<p>
|
366
|
+
You can then create connections among rooms by clicking on the non-boxed areas of the map. Depending on where exactly you click, a simple connection will be made between two rooms.<br>
|
367
|
+
<br>
|
368
|
+
In its default configuration, you can also click to create a connection on an area where no rooms yet exist. IFMapper will then create the missing rooms automatically for you, in addition to the connection.<br>
|
369
|
+
<br>
|
370
|
+
Note that you can change the behavior of how nodes and connections are created from the <b>Map->Options</b> menu:<br>
|
371
|
+
<b>Automatic Connection -</b> will create a connection to the previous room for each new room you create.<br>
|
372
|
+
<b>Create on Connection -</b> will allow you to add both the connection and the missing rooms when you click on some connection area in the map.<br>
|
373
|
+
<img class="imagealignright" src="../images/connection.gif" width="332" height="118" alt="IFMapper Connection requester">
|
374
|
+
<br>
|
375
|
+
Connections can also be modified similarly to rooms, by clicking twice on them. The connection requester allows you to specify the connection as a free, door, locked or special connection. It also allows you to make the connection travel in a single direction or in both directions. You can also add text to the connections to indicate that connection takes you Up/Down or In/Out.<br>
|
376
|
+
<br>
|
377
|
+
<img class="imagealignright imageborder" src="../images/connection_menu.gif" width="342" height="241" alt="IFMapper Connection menu">
|
378
|
+
Changing the connection to be one way can also be done by just clicking on them several times, without opening the requester.<br>
|
379
|
+
<br>
|
380
|
+
Finally, selecting a connection and using the <b>Right Mouse Button</b> gives you access to a context-sensitive menu that allows you to flip the direction of a connection or to shift the connection to some other exit in the room.<br>
|
381
|
+
<br>
|
382
|
+
</p>
|
383
|
+
<p> </p>
|
384
|
+
<p> </p>
|
385
|
+
<p> </p>
|
386
|
+
<p> </p>
|
387
|
+
<p id="DeletingRoomsOrConnections" class="heading2">
|
388
|
+
Deleting Rooms or Connections
|
389
|
+
</p>
|
390
|
+
<p>
|
391
|
+
To remove a room or connection, just select it by clicking on it with the <b>Left Mouse Button</b>. Then, press the <b>Delete</b> or <b>Backspace</b> key.<br>
|
392
|
+
Note that there is currently no Undo, so deleted nodes or connections cannot be restored.<br>
|
393
|
+
<br>
|
394
|
+
</p>
|
395
|
+
<p id="ComplexConnections" class="heading2">
|
396
|
+
Complex Connections
|
397
|
+
<img class="imagealignright imageborder" src="../images/complex_connection.gif" width="338" height="308" alt="IFMapper Complex Connection example">
|
398
|
+
</p>
|
399
|
+
<p>
|
400
|
+
A lot of text adventures have mazes with exits that lead nowhere and exits that change direction from one room to the next. We refer to these as complex connections.<br>
|
401
|
+
To create a complex connection, type the letter <b>'x'</b> or use the <b>Edit->Add Complex Connection</b> menu option. Afterwards, click on the exit next to the first room you want to connect and then click on the exit of the second room.<br>
|
402
|
+
If you want to get out of the add complex connection mode, just hit <b>Esc</b> at any time.<br>
|
403
|
+
IFMapper will then try to calculate a path along the map to take you from your first room to the second one.<br>
|
404
|
+
For a complex connection to happen, the path between those nodes has to be 'free' of other rooms. IFMapper will also try to avoid inter-crossing connections as much as it can, but will still allow them.<br>
|
405
|
+
To create exits that just loop onto themselves, you can do a complex connection by clicking twice on the same exit or, you can just use <b>CTRL + Left Mouse Button</b> without needing to go into the Complex Connection mode.<br>
|
406
|
+
<br>
|
407
|
+
</p>
|
408
|
+
<p id="MovingRoomsInMap" class="heading2">
|
409
|
+
Moving Rooms in Map
|
410
|
+
</p>
|
411
|
+
<p>
|
412
|
+
When building large maps on complex games, you will probably run into the need to shift nodes around. To do so, select on the nodes you want to move by <b>CTRL + Left Mouse Button</b> on them, and then use the <b>arrow keys</b> to shift the nodes one grid unit at a time.<br>
|
413
|
+
You can also use <b>SHIFT + Left Mouse Button</b> to drag a box around the rooms to select.<br>
|
414
|
+
If there are any simple or complex connections, IFMapper will keep recalculating those connections on the fly as you move the nodes.<br>
|
415
|
+
Note that complex connections can sometimes 'fail'. In those cases, you will see the complex connection become taut and tinted red.<br>
|
416
|
+
<br>
|
417
|
+
</p>
|
418
|
+
<p id="DealingWithMultipleSections" class="heading2">
|
419
|
+
Dealing with Multiple Sections
|
420
|
+
</p>
|
421
|
+
<p>
|
422
|
+
Some adventure games can be rather large and might be split into chapters. In those cases, you may want to take advantage of using multiple sections in your map. This will keep your map organized and may also help you with printing them later on.<br>
|
423
|
+
<br>
|
424
|
+
You can create and delete sections from the menu, in <b>Map->Sections->Create Section</b> and <b>Map->Sections->Delete Section.</b><br>
|
425
|
+
<br>
|
426
|
+
To move from one section to another, you can use the Arrows located in the right section of the toolbar or <b>Map->Sections->Next/Previous Section.</b><br>
|
427
|
+
<br>
|
428
|
+
</p>
|
429
|
+
<p id="Searching" class="heading2">
|
430
|
+
Searching
|
431
|
+
</p>
|
432
|
+
<p>
|
433
|
+
You can search for words in locations, objects, tasks or descriptions in the current section or in the whole map, using regular expressions.<br>
|
434
|
+
The search is interactive, a la <i>Emacs</i>, meaning that as you type, the rooms that match the search get highlighted.<br>
|
435
|
+
The number of matches for the map and the section is display in the status bar.<br>
|
436
|
+
You can use the Next/Previous button to keep centering your view on each match (and automatically moving thru sections if you are matching stuff in the whole map).<br>
|
437
|
+
<br>
|
438
|
+
</p>
|
439
|
+
<p id="Preferences" class="heading2">
|
440
|
+
Preferences
|
441
|
+
</p>
|
442
|
+
<p>
|
443
|
+
IFMapper allows you to change and set preferences on a per map basis (colors, editing options, etc). You can also save your preferences so that IFMapper will boot with those settings in place for creating new maps.<br>
|
444
|
+
<br>
|
445
|
+
</p>
|
446
|
+
<p id="SavingAndLoadingMaps" class="heading2">
|
447
|
+
Saving and Loading Maps
|
448
|
+
</p>
|
449
|
+
<p>
|
450
|
+
To save a map you are editing, you can go to <b>File->Save</b> or <b>File->Save As</b>. The internal format of IFMapper's maps is the .map format, which is binary format. This format saves all your map preferences as well as all the connections and descriptions.<br>
|
451
|
+
To load a map, you can then use <b>File->Open</b>. Besides IFMapper's own .map format, IFMapper also supports other popular formats within the IF community. IFMapper can read:<br>
|
452
|
+
- .ifm files (Dave Chapeski's <i>IFM</i>, a popular free Unix mapping/walkthru tool)<br>
|
453
|
+
- .gmp file (<i>GUEmap</i>'s maps, a shareware (v1) / open source (v2) mapping tool for Windows)<br>
|
454
|
+
- .inf files (<i>Inform 6</i> source code files)<br>
|
455
|
+
- .inform files (<i>Inform 7</i> source code files)<br>
|
456
|
+
- .trizbort files (<i>Trizbort</i> map files)<br>
|
457
|
+
- .t3m or .t files (<i>TADS 3</i> makefiles or source code files)<br>
|
458
|
+
<br>
|
459
|
+
</p>
|
460
|
+
<p id="LockingMaps" class="heading2">
|
461
|
+
Locking Maps
|
462
|
+
</p>
|
463
|
+
<p>
|
464
|
+
Once you finish an adventure game, you can then lock the map for distribution.<br>
|
465
|
+
<br>
|
466
|
+
You can do so by going into <b>Map->Map Information</b> and click on the Read-Only switch, making sure you then save the map as a .map file (IFMapper's native format).<br>
|
467
|
+
Making the map read-only will not allow you to modify the map anymore (and thus will prevent accidentally moving or changing room descriptions by mistake).<br>
|
468
|
+
When reading any IFM file, Read-Only mode is entered automatically, as it is assumed these maps were created and finished elsewhere. If you need to modify them, just untick the Read-Only switch in the Map Information box again.<br>
|
469
|
+
<br>
|
470
|
+
</p>
|
471
|
+
<p id="MappingGamesFromTranscripts(Automapping)" class="heading2">
|
472
|
+
Mapping Games from Transcripts (Automapping)
|
473
|
+
</p>
|
474
|
+
<p>
|
475
|
+
New to v0.8, the feature of automapping was added. The way automapping works is that it will read a transcript or log of your game, and will attempt to parse it to generate rooms and connections (even while you are playing it!).<br>
|
476
|
+
<br>
|
477
|
+
To use automapping, go to your game and start a transcript. Usually this is done by doing:<br>
|
478
|
+
<br>
|
479
|
+
<b>> verbose</b><br>
|
480
|
+
<b>> script</b><br>
|
481
|
+
<br>
|
482
|
+
and then specifying the name of the file.<br>
|
483
|
+
<br>
|
484
|
+
<img class="imagealignright" src="../images/automap.gif" width="413" height="428" alt="IFMapper Transcript Options requester">
|
485
|
+
Then, go to IFMapper and go to a map (usually an empty one) and do:<br>
|
486
|
+
<b>Map->Automap->Start</b>. This will pop up a file requester for you to feed IFMapper the name of the transcript.<br>
|
487
|
+
Then, you will be asked thru a requester to select some options.<br>
|
488
|
+
The options include how will the automapper identify locations as being unique. The automapper can determine whether you are in a new location by comparing the room description (the default) or by comparing just the short name of the room. Games that have rooms with the same short names (usually, mazes) will benefit from being identified by the room description while games that often change the room description on several visits to it might be mapped better using just short names. Note that you can also switch from one method to another at any time later on.<br>
|
489
|
+
Another option allows you to specify what type of transcript you are dealing with. Most games use the "Classic" format, albeit some old Infocom games (mainly <i>Witness</i> and <i>Moonmist</i>) used a tad different format.<br>
|
490
|
+
And voila. Immediately, you should see IFMapper get to work and start creating locations and connections.<br>
|
491
|
+
If you continue playing your game and the 'script' command is still in operation, IFMapper will try to interactively map your game. This works very well for games running under <i>WinFrotz</i>, for example, albeit some other interpreters might not append text to transcripts as soon as you run a command, leading to a less interactive automapping (you'll probably have to type several commands before the interpreter will update the transcript file).<br>
|
492
|
+
Besides trying to parse for locations and movements, automapper will also try to parse for objects in the room, by monitoring your 'get' or 'take' commands and remembering where each object was first found, so as to add it to the appropriate room.<br>
|
493
|
+
Note that, at any point during your mapping, you can pop up the automapper properties again to switch from automapping using descriptions to using short names.<br>
|
494
|
+
<br>
|
495
|
+
</p>
|
496
|
+
<p id="HowDoesTheAutomapperDistinguishLocations" class="heading2">
|
497
|
+
How does the Automapper distinguish locations?
|
498
|
+
</p>
|
499
|
+
<p>
|
500
|
+
As we said before, the automapper will parse all the game text, looking for room descriptions. Not just the replies to moving commands.<br>
|
501
|
+
This is done so that teleporting commands (such as magical words) or special events that take you other places will work.<br>
|
502
|
+
Room locations are determined by finding the room's short name: a string of text where all of its words of 4 or more letters are capitalized (or where the string follows the format specified, in case of <i>Witness</i>/<i>Moonmist</i> format).<br>
|
503
|
+
The paragraph following that is assumed to be a room description.<br>
|
504
|
+
Depending on your automapper settings, the automapper will give preference to the room description or to the room's short name to determine whether a certain room has already been visited.<br>
|
505
|
+
<br>
|
506
|
+
</p>
|
507
|
+
<p id="LimitationsOnAutomapping" class="heading2">
|
508
|
+
Limitations on Automapping
|
509
|
+
</p>
|
510
|
+
<p>
|
511
|
+
Albeit automapping is very cool and powerful, there are some limitations on it you should be aware of.<br>
|
512
|
+
First, it only works with games written in English.<br>
|
513
|
+
Second, you should try to use automapping with verbose mode. Automapping will try to rely on the room description to distinguish one room from the next, instead of just the room's short name.<br>
|
514
|
+
If your game is in brief or normal mode, automapping could end up getting confused about interpreting a previously visited location as a new location, as it could interpret an object or a character description as part of the room description.<br>
|
515
|
+
Even with full verbose mode, automapping may get confused if the description changes dramatically (like the demolished house in <i>The Hitchhiker's Guide to the Galaxy</i>).<br>
|
516
|
+
Automapping also may not help much when it comes to mazes, where all their descriptions are identical or in cases where exits are chosen at random (<i>Adventure</i>/<i>Colossal Cave</i>).<br>
|
517
|
+
Some games don't follow the Infocom standard of labelling locations using a short capitalized description (for example, <i>FailSafe</i>). These games cannot be automapped.<br>
|
518
|
+
Finally, the layout algorithm used in the automapper is not exceptional and it can lead to maps with intercrossings or with rooms placed too far apart.<br>
|
519
|
+
Remember, though, that you can still help the automapper by manually moving or removing rooms at any time if you are interactively automapping a transcript.<br>
|
520
|
+
If for some reason the automapper does not detect a room automatically, you can also at any time create that room yourself and from then on, the automapper will be aware of it.<br>
|
521
|
+
<br>
|
522
|
+
</p>
|
523
|
+
<p id="ExportingToSVG" class="heading2">
|
524
|
+
Exporting Maps to Scalable Vector Graphics (SVG) Format
|
525
|
+
<img class="imagealignright" src="../images/svg_export.gif" width="338" height="603" alt="IFMapper Save Map as SVG dialog box">
|
526
|
+
</p>
|
527
|
+
<p>
|
528
|
+
New to v1.2 and improved in v2.1.0, a feature has been added to let
|
529
|
+
you export maps to a Scalable Vector Graphics (SVG) format that can
|
530
|
+
be printed and interacted with using a web browser. When you have
|
531
|
+
completed a map, click <b>File->Export->Export as <u>S</u>VG...</b>
|
532
|
+
to open the Save Map as SVG dialog box.<br>
|
533
|
+
<br>
|
534
|
+
There are various options available to customise the output, each
|
535
|
+
with a tooltip that displays further detail when the mouse cursor
|
536
|
+
hovers over it. The first set of checkboxes toggle whether various
|
537
|
+
parts of the map are included, such as the Location Text, Location
|
538
|
+
Numbers, Section Comments etc.<br>
|
539
|
+
<br>
|
540
|
+
The Compass Size slider allows you to modify the size of the
|
541
|
+
compass graphic included in the SVG, or disable it completely. The
|
542
|
+
Location and Connection Thickness sliders change the width of the
|
543
|
+
lines used to draw the Location boxes and the Connection lines
|
544
|
+
between them, respectively, whilst the Colour Scheme option
|
545
|
+
modifies the colour used for a few of the optional items, including
|
546
|
+
the Interactive Location Information menu and Location Number.<br>
|
547
|
+
<br>
|
548
|
+
You can choose between the default option of exporting all of the
|
549
|
+
sections of the map to a single SVG file, exporting all the map
|
550
|
+
sections to individual SVG files or only exporting the current
|
551
|
+
section to an SVG file.<br>
|
552
|
+
<br>
|
553
|
+
The latter option enables two more checkboxes - if you also check
|
554
|
+
the Only Include Currently Selected Elements option, then the SVG
|
555
|
+
file will only contain those locations that have currently been
|
556
|
+
selected in the main window. This allows you to create a partial
|
557
|
+
SVG map, which can be used as an aid for new players.<br>
|
558
|
+
<br>
|
559
|
+
The last option - Include All Locations, Only Show Location Text
|
560
|
+
For Currently Selected Locations - will output a complete map with
|
561
|
+
all locations shown, but only the currently selected locations will
|
562
|
+
have their Location Text included. Similar to the previous option,
|
563
|
+
this allows the creation of customised partial maps which can be
|
564
|
+
used as a template by new players. Only Connections that are
|
565
|
+
currently selected will be drawn.<br>
|
566
|
+
<br>
|
567
|
+
Note: no matter what options are selected, the starting location -
|
568
|
+
no. 1 - of a map will always be included.<br>
|
569
|
+
<br>
|
570
|
+
Once you have specified your preferred options, click the <b><u>O</u>K</b>
|
571
|
+
button and specify a filename for the SVG output.<br>
|
572
|
+
<br>
|
573
|
+
If you open up the generated SVG file(s) in a text editor and
|
574
|
+
search for the word UNCOMMENT, you will find a path element that
|
575
|
+
can be uncommented like this:<br>
|
576
|
+
<br>
|
577
|
+
<code><!--UNCOMMENT LINE BELOW TO ENABLE mysvgmap.jpg BACKGROUND IMAGE--><br></code>
|
578
|
+
<code><!--<path d='M5,5 l0,<b>3570</b> l<b>2400</b>,0 l0,-3570 l-2400,0' fill='url(#backgroundimg)'/>--></code><br>
|
579
|
+
<br>
|
580
|
+
If you uncomment this line (remove the <code><!--</code> and <code>--></code>
|
581
|
+
markers from the beginning and end of the path element), re-save
|
582
|
+
the SVG and place a JPEG graphic file with the filename listed in
|
583
|
+
the comment, e.g. <code>mysvgmap.jpg</code> in the extract above,
|
584
|
+
into the same directory as the exported SVG file, it will be used as
|
585
|
+
a background image file. This enables significant customisation of
|
586
|
+
the interactive map. The background image file should be of the
|
587
|
+
same dimensions as the SVG - use the values specified in the path
|
588
|
+
element. height: <code>3570px</code> and width: <code>2400px</code>,
|
589
|
+
in this example. If you wish to use a different filename or image
|
590
|
+
format, simply replace both occurrences of the existing filename,
|
591
|
+
e.g. <code>mysvgmap.jpg</code> to <code>mysvgmap.png</code>, in the
|
592
|
+
SVG file.<br>
|
593
|
+
<br>
|
594
|
+
</p>
|
595
|
+
<p id="CreatingANewInform/TADS3Game" class="heading2">
|
596
|
+
Creating a new <i>Inform</i>/<i>TADS 3</i> game
|
597
|
+
</p>
|
598
|
+
<p>
|
599
|
+
IFMapper now allows you to also spit out <i>Inform</i> or <i>TADS 3</i> source code for a map.<br>
|
600
|
+
This means you can now use IFMapper to easily create the basic skeleton for a new game from scratch.<br>
|
601
|
+
With IFMapper, you can place your objects, your NPCs and locations with their doors/exits in your game. You can also type in your descriptions for each location.<br>
|
602
|
+
To do this, make sure to activate the display of room descriptions:<br>
|
603
|
+
<br>
|
604
|
+
<b>Map->Display->Location Description</b><br>
|
605
|
+
<br>
|
606
|
+
You can then type in all your room descriptions and objects manually and then, once your map is finished, use:<br>
|
607
|
+
<br>
|
608
|
+
<b>File->Export->Export to Inform</b><br>
|
609
|
+
<b>File->Export->Export to TADS3</b><br>
|
610
|
+
<br>
|
611
|
+
These option will create a set of <i>Inform</i> or <i>TADS 3</i> source files (one per map section), which you can then immediately compile and play with.<br>
|
612
|
+
Obviously, for a real game, the .inf or .t files you get out of IFMapper are just a skeleton, as you will still have to code manually all the logic in your game.
|
613
|
+
</p>
|
614
|
+
|
615
|
+
<p> </p>
|
616
|
+
|
617
|
+
<p id="Appendix" class="heading1">
|
618
|
+
Appendix
|
619
|
+
</p>
|
620
|
+
<p id="IAmNewToInteractiveFiction.WhatGamesWouldYouRecommend?" class="heading2">
|
621
|
+
I am new to Interactive Fiction. What games would you recommend?
|
622
|
+
</p>
|
623
|
+
<p>
|
624
|
+
If you can get a copy of it (search for <i>The Lost Treasures of Infocom II</i> collection or similar), I think <i>Wishbringer</i> from Infocom is probably one of the nicest introductory games.<br>
|
625
|
+
Its puzzles are not that tricky and are also pretty logical.<br>
|
626
|
+
Once you master it, you could then try <i>Planetfall</i>, which has one of the most lovable characters in any adventure game.<br>
|
627
|
+
If you cannot get hold of those Infocom games, Emily Short's <i>City of Secrets</i> is a very nice introductory game and probably one of the most polished adventures I have seen.<br>
|
628
|
+
Andrew Plotkin's <i>Dreamholder</i> is also somewhat a nice introductory game as the game will help you with your commands a little as you begin. Note, however, that the game's puzzles are anything but easy.<br>
|
629
|
+
<br>
|
630
|
+
</p>
|
631
|
+
<p id="ContactingTheAuthor" class="heading2">
|
632
|
+
Contacting the Author
|
633
|
+
</p>
|
634
|
+
<p>
|
635
|
+
Currently, I can be reached at:<br>
|
636
|
+
<br>
|
637
|
+
ggarra13 AT domain<br>
|
638
|
+
<br>
|
639
|
+
(Where "domain" is gmail.com )
|
640
|
+
</p>
|
641
|
+
</body>
|
642
|
+
|
643
|
+
</html>
|