ifmapper 1.0.0 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.txt +648 -627
- data/IFMapper.gemspec +29 -28
- data/IFMapper.rbw +31 -31
- data/TODO.txt +8 -7
- data/bin/IFMapper +31 -31
- data/docs/en/index.html +0 -0
- data/docs/en/start.html +3 -2
- data/docs/en/start.html~ +516 -0
- data/docs/es/index.html +0 -0
- data/docs/es/start.html +13 -14
- data/docs/es/start.html~ +1280 -0
- data/docs/images/IFMapper_main.gif +0 -0
- data/docs/images/automap.gif +0 -0
- data/docs/images/complex_connection.gif +0 -0
- data/docs/images/connection.gif +0 -0
- data/docs/images/connection_menu.gif +0 -0
- data/docs/images/room_description.gif +0 -0
- data/docs/images/room_small.gif +0 -0
- data/icons/copy.png +0 -0
- data/icons/cut.png +0 -0
- data/icons/filenew.png +0 -0
- data/icons/fileopen.png +0 -0
- data/icons/filesave.png +0 -0
- data/icons/filesaveas.png +0 -0
- data/icons/help.png +0 -0
- data/icons/kill.png +0 -0
- data/icons/nextpage.png +0 -0
- data/icons/paste.png +0 -0
- data/icons/prevpage.png +0 -0
- data/icons/printicon.png +0 -0
- data/icons/redo.png +0 -0
- data/icons/room_e.gif +0 -0
- data/icons/room_e.xpm +0 -0
- data/icons/room_n.gif +0 -0
- data/icons/room_n.xpm +0 -0
- data/icons/room_ne.gif +0 -0
- data/icons/room_ne.xpm +0 -0
- data/icons/room_nw.gif +0 -0
- data/icons/room_nw.xpm +0 -0
- data/icons/room_s.gif +0 -0
- data/icons/room_s.xpm +0 -0
- data/icons/room_se.gif +0 -0
- data/icons/room_se.xpm +0 -0
- data/icons/room_sw.gif +0 -0
- data/icons/room_sw.xpm +0 -0
- data/icons/room_w.gif +0 -0
- data/icons/room_w.xpm +0 -0
- data/icons/saveas.png +0 -0
- data/icons/undo.png +0 -0
- data/icons/winapp.png +0 -0
- data/icons/zoom.png +0 -0
- data/lib/IFMapper/AStar.rb +250 -250
- data/lib/IFMapper/Connection.rb +202 -202
- data/lib/IFMapper/FXAboutDialogBox.rb +32 -32
- data/lib/IFMapper/FXConnection.rb +364 -364
- data/lib/IFMapper/FXConnectionDialogBox.rb +124 -124
- data/lib/IFMapper/FXDCPostscript.rb +404 -404
- data/lib/IFMapper/FXDCPrint.rb +15 -15
- data/lib/IFMapper/FXItemList.rb +108 -0
- data/lib/IFMapper/FXMap.rb +2147 -2116
- data/lib/IFMapper/FXMapColorBox.rb +88 -88
- data/lib/IFMapper/FXMapDialogBox.rb +127 -127
- data/lib/IFMapper/FXMapFileDialog.rb +34 -34
- data/lib/IFMapper/FXMapperSettings.rb +206 -205
- data/lib/IFMapper/FXMapperWindow.rb +1592 -1571
- data/lib/IFMapper/FXPDFMapExporterOptionsDialogBox.rb +46 -0
- data/lib/IFMapper/FXRoom.rb +263 -263
- data/lib/IFMapper/FXRoomDialogBox.rb +159 -159
- data/lib/IFMapper/FXRoomList.rb +95 -95
- data/lib/IFMapper/FXSearchDialogBox.rb +51 -51
- data/lib/IFMapper/FXSection.rb +33 -33
- data/lib/IFMapper/FXSectionDialogBox.rb +38 -38
- data/lib/IFMapper/FXSpline.rb +52 -52
- data/lib/IFMapper/FXWarningBox.rb +51 -50
- data/lib/IFMapper/GUEReader.rb +445 -445
- data/lib/IFMapper/IFMReader.rb +584 -584
- data/lib/IFMapper/IFMWriter.rb +245 -227
- data/lib/IFMapper/Inform7Writer.rb +579 -573
- data/lib/IFMapper/InformReader.rb +478 -478
- data/lib/IFMapper/InformWriter.rb +364 -359
- data/lib/IFMapper/Map.rb +202 -200
- data/lib/IFMapper/MapPrinting.rb +162 -162
- data/lib/IFMapper/MapReader.rb +900 -900
- data/lib/IFMapper/PDFMapExporter.rb +526 -483
- data/lib/IFMapper/Room.rb +153 -151
- data/lib/IFMapper/Section.rb +234 -234
- data/lib/IFMapper/TADSReader.rb +474 -471
- data/lib/IFMapper/TADSWriter.rb +375 -370
- data/lib/IFMapper/TranscriptDialogBox.rb +0 -0
- data/lib/IFMapper/TranscriptReader.rb +1361 -1359
- data/lib/IFMapper/locales/en/Messages.rb +446 -435
- data/lib/IFMapper/locales/es/Messages.rb +451 -440
- data/lib/IFMapper/locales/es/Messages_iso-8859-1.rb +455 -440
- data/lib/IFMapper/locales/es/runme.sh +3 -3
- data/maps/A New Life.map b/data/maps/A New → Life.map +0 -0
- data/maps/AMFV.map +0 -0
- data/maps/AllRoads.map +0 -0
- data/maps/Aotearoa.map +0 -0
- data/maps/Bronze.map +0 -0
- data/maps/Bureaucracy.ifm +0 -0
- data/maps/Bureaucracy.map +0 -0
- data/maps/CityOfSecrets.map +0 -0
- data/maps/DDIV.map +0 -0
- data/maps/Following_A_Star.map +0 -0
- data/maps/Heated.map +0 -0
- data/maps/Heroine.map +0 -0
- data/maps/History Repeating.map b/data/maps/History → Repeating.map +0 -0
- data/maps/Hollywood_Hijinx.ifm +0 -0
- data/maps/Janitor.map +0 -0
- data/maps/Jigsaw.ifm +0 -0
- data/maps/Jigsaw.map +0 -0
- data/maps/LGOP.ifm +0 -0
- data/maps/Mercy.ifm +0 -0
- data/maps/Ninjas_Fate.map +0 -0
- data/maps/Pen_and_Paint.map +0 -0
- data/maps/Planetfall.ifm +0 -0
- data/maps/Planetfall.map +0 -0
- data/maps/Plundered_Hearts.ifm +0 -0
- data/maps/QuietEvening.map +0 -0
- data/maps/Ralph.ifm +0 -0
- data/maps/Reliques_of_Tolti_Alph.map +0 -0
- data/maps/Revolution.map +0 -0
- data/maps/Robots_of_Dawn.ifm +0 -0
- data/maps/SavoirFare.map +0 -0
- data/maps/Seastalker.ifm +0 -0
- data/maps/Seastalker.map +0 -0
- data/maps/Sherlock.ifm +0 -0
- data/maps/SoFar.ifm +0 -0
- data/maps/Starcross.ifm +0 -0
- data/maps/Suspended.ifm +0 -0
- data/maps/Tangle.map +0 -0
- data/maps/The_Lost_Sheep.map +0 -0
- data/maps/Unforgotten.map +0 -0
- data/maps/Warbler's Nest.map +0 -0
- data/maps/Warbler's_Nest.map +0 -0
- data/maps/Westminster_Abbey.map +0 -0
- data/maps/WinterWonderland.map +0 -0
- data/maps/Wishbringer.ifm +0 -0
- data/maps/Wishbringer2.ifm +0 -0
- data/maps/Zork1.ifm +0 -0
- data/maps/Zork2.ifm +0 -0
- data/maps/Zork3.ifm +0 -0
- data/maps/Zork_Zero.ifm +0 -0
- data/maps/anchor.ifm +0 -0
- data/maps/anchor.map +0 -0
- data/maps/atrox.ifm +0 -0
- data/maps/awaken.ifm +0 -0
- data/maps/babel.ifm +0 -0
- data/maps/balances.map +0 -0
- data/maps/ballerina.map +0 -0
- data/maps/bear.map +0 -0
- data/maps/bluechairs.map +0 -0
- data/maps/break_in.map +0 -0
- data/maps/bse.ifm +0 -0
- data/maps/building.map +0 -0
- data/maps/change.ifm +0 -0
- data/maps/christminster.map +0 -0
- data/maps/curses.ifm +0 -0
- data/maps/curves.ifm +0 -0
- data/maps/deadline.map +0 -0
- data/maps/delusions.map +0 -0
- data/maps/devours.map +0 -0
- data/maps/distress.map +0 -0
- data/maps/djinni.map +0 -0
- data/maps/dreamhold.map +0 -0
- data/maps/drift3.map +0 -0
- data/maps/eas.map +0 -0
- data/maps/eas2.map +0 -0
- data/maps/eas3.map +0 -0
- data/maps/edifice.ifm +0 -0
- data/maps/fallacy.map +0 -0
- data/maps/frozen.ifm +0 -0
- data/maps/gamlet.map +0 -0
- data/maps/glow.ifm +0 -0
- data/maps/guilty_bastards.map +0 -0
- data/maps/heist.map +0 -0
- data/maps/heroes.map +0 -0
- data/maps/inhumane.map +0 -0
- data/maps/kaged.map +0 -0
- data/maps/library.ifm +0 -0
- data/maps/lurkinghorror.map +0 -0
- data/maps/metamorphoses.map +0 -0
- data/maps/mindelec.ifm +0 -0
- data/maps/minster.ifm +0 -0
- data/maps/mite.map +0 -0
- data/maps/moonmist.map +0 -0
- data/maps/muldoon_legacy.map +0 -0
- data/maps/muse.ifm +0 -0
- data/maps/paperchase.ifm +0 -0
- data/maps/party.map +0 -0
- data/maps/pawn.map +0 -0
- data/maps/photograph.map +0 -0
- data/maps/pkgirl.map +0 -0
- data/maps/pytho.map +0 -0
- data/maps/risorgimento.map +0 -0
- data/maps/sherbet.map +0 -0
- data/maps/simple.map +0 -0
- data/maps/slouch.map +0 -0
- data/maps/space_st.ifm +0 -0
- data/maps/splashdown.map +0 -0
- data/maps/spring.map +0 -0
- data/maps/squarecircle.map +0 -0
- data/maps/stationfall.ifm +0 -0
- data/maps/theatre.ifm +0 -0
- data/maps/toonesia.ifm +0 -0
- data/maps/tortoise.ifm +0 -0
- data/maps/trinity.map +0 -0
- data/maps/vespers.map +0 -0
- data/maps/vgame.ifm +0 -0
- data/maps/wasp.map +0 -0
- data/maps/weather.ifm +0 -0
- data/maps/windhall.ifm +0 -0
- data/maps/worlds.map +0 -0
- data/maps/xtcontest.map +0 -0
- data/maps/zdungeon.map +0 -0
- data/maps/zebulon.ifm +0 -0
- data/maps/zerosum.map +0 -0
- metadata +226 -183
data/IFMapper.gemspec
CHANGED
@@ -1,28 +1,29 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
|
3
|
-
spec = Gem::Specification.new do |spec|
|
4
|
-
spec.name = "ifmapper"
|
5
|
-
spec.version = '1.0.
|
6
|
-
spec.author = "
|
7
|
-
spec.email = '
|
8
|
-
spec.homepage = 'http://www.rubyforge.org/projects/ifmapper/'
|
9
|
-
spec.summary = 'Interactive Fiction Mapping Tool.'
|
10
|
-
spec.require_path = "lib"
|
11
|
-
spec.files = ['IFMapper.rbw'] + ['bin/IFMapper'] +
|
12
|
-
['IFMapper.gemspec'] +
|
13
|
-
Dir.glob("lib/IFMapper/*.rb") +
|
14
|
-
Dir.glob("lib/IFMapper/locales/*/*.rb") +
|
15
|
-
Dir.glob("lib/IFMapper/locales/*/*.sh") +
|
16
|
-
Dir.glob("maps/*.ifm") + Dir.glob("maps/*.map") +
|
17
|
-
Dir.glob("icons/*")
|
18
|
-
spec.description = <<-EOF
|
19
|
-
Interactive Fiction Mapping Tool.
|
20
|
-
EOF
|
21
|
-
spec.add_dependency("
|
22
|
-
spec.add_dependency("
|
23
|
-
spec.
|
24
|
-
|
25
|
-
|
26
|
-
spec.
|
27
|
-
spec.
|
28
|
-
|
1
|
+
require "rubygems"
|
2
|
+
|
3
|
+
spec = Gem::Specification.new do |spec|
|
4
|
+
spec.name = "ifmapper"
|
5
|
+
spec.version = '1.0.6'
|
6
|
+
spec.author = "Gonzalxo Garramuno"
|
7
|
+
spec.email = 'ggarra13@gmail.com'
|
8
|
+
spec.homepage = 'http://www.rubyforge.org/projects/ifmapper/'
|
9
|
+
spec.summary = 'Interactive Fiction Mapping Tool.'
|
10
|
+
spec.require_path = "lib"
|
11
|
+
spec.files = ['IFMapper.rbw'] + ['bin/IFMapper'] +
|
12
|
+
['IFMapper.gemspec'] +
|
13
|
+
Dir.glob("lib/IFMapper/*.rb") +
|
14
|
+
Dir.glob("lib/IFMapper/locales/*/*.rb") +
|
15
|
+
Dir.glob("lib/IFMapper/locales/*/*.sh") +
|
16
|
+
Dir.glob("maps/*.ifm") + Dir.glob("maps/*.map") +
|
17
|
+
Dir.glob("icons/*")
|
18
|
+
spec.description = <<-EOF
|
19
|
+
Interactive Fiction Mapping Tool.
|
20
|
+
EOF
|
21
|
+
spec.add_dependency("rake-compiler", ">= 0.7.1" )
|
22
|
+
spec.add_dependency("fxruby", ">= 1.6.0")
|
23
|
+
spec.add_dependency("pdf-writer", ">= 1.1.1")
|
24
|
+
spec.extra_rdoc_files = ["HISTORY.txt", "TODO.txt"] +
|
25
|
+
Dir.glob("docs/*/*")
|
26
|
+
spec.has_rdoc = true
|
27
|
+
spec.rubyforge_project = 'ifmapper'
|
28
|
+
spec.required_ruby_version = '>= 1.8.0'
|
29
|
+
end
|
data/IFMapper.rbw
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
# cd to install path, so modules are found locally
|
5
|
-
install_loc = $0.sub(/\/?[^\/]*$/, '')
|
6
|
-
install_loc = '.' if install_loc == ''
|
7
|
-
Dir.chdir(install_loc)
|
8
|
-
$LOAD_PATH << './lib'
|
9
|
-
require 'IFMapper/FXMapperWindow'
|
10
|
-
|
11
|
-
if __FILE__ == $0
|
12
|
-
# Make application
|
13
|
-
application = FXApp.new("IFMapper", "gga")
|
14
|
-
|
15
|
-
# Make window
|
16
|
-
m = FXMapperWindow.new(application)
|
17
|
-
|
18
|
-
# Create the application windows
|
19
|
-
application.create
|
20
|
-
|
21
|
-
# Run the application
|
22
|
-
begin
|
23
|
-
application.run
|
24
|
-
rescue => e
|
25
|
-
m.autosave
|
26
|
-
$stderr.puts e
|
27
|
-
$stderr.flush
|
28
|
-
raise e
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
# cd to install path, so modules are found locally
|
5
|
+
install_loc = $0.sub(/\/?[^\/]*$/, '')
|
6
|
+
install_loc = '.' if install_loc == ''
|
7
|
+
Dir.chdir(install_loc)
|
8
|
+
$LOAD_PATH << './lib'
|
9
|
+
require 'IFMapper/FXMapperWindow'
|
10
|
+
|
11
|
+
if __FILE__ == $0
|
12
|
+
# Make application
|
13
|
+
application = FXApp.new("IFMapper", "gga")
|
14
|
+
|
15
|
+
# Make window
|
16
|
+
m = FXMapperWindow.new(application)
|
17
|
+
|
18
|
+
# Create the application windows
|
19
|
+
application.create
|
20
|
+
|
21
|
+
# Run the application
|
22
|
+
begin
|
23
|
+
application.run
|
24
|
+
rescue => e
|
25
|
+
m.autosave
|
26
|
+
$stderr.puts e
|
27
|
+
$stderr.flush
|
28
|
+
raise e
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/TODO.txt
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
|
2
|
-
- Make internationalization recognize the OS language directly.
|
3
|
-
- Add SVG output
|
4
|
-
- Do Printing
|
5
|
-
- Cleanup code
|
6
|
-
- Improve window scrolling (seems like an FXRuby bug)
|
7
|
-
- Add Undo (at least for delete)
|
1
|
+
|
2
|
+
- Make internationalization recognize the OS language directly.
|
3
|
+
- Add SVG output
|
4
|
+
- Do Printing
|
5
|
+
- Cleanup code
|
6
|
+
- Improve window scrolling (seems like an FXRuby bug)
|
7
|
+
- Add Undo (at least for delete)
|
8
|
+
- Add configurable hotkeys and mouse
|
data/bin/IFMapper
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
# cd to install path, so modules are found locally
|
5
|
-
install_loc = $0.sub(/\/?[^\/]*$/, '')
|
6
|
-
install_loc =
|
7
|
-
Dir.chdir(install_loc)
|
8
|
-
$LOAD_PATH << './lib'
|
9
|
-
require 'IFMapper/FXMapperWindow'
|
10
|
-
|
11
|
-
if __FILE__ == $0
|
12
|
-
# Make application
|
13
|
-
application = FXApp.new("IFMapper", "gga")
|
14
|
-
|
15
|
-
# Make window
|
16
|
-
m = FXMapperWindow.new(application)
|
17
|
-
|
18
|
-
# Create the application windows
|
19
|
-
application.create
|
20
|
-
|
21
|
-
# Run the application
|
22
|
-
begin
|
23
|
-
application.run
|
24
|
-
rescue => e
|
25
|
-
m.autosave
|
26
|
-
$stderr.puts e
|
27
|
-
$stderr.flush
|
28
|
-
raise e
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
# cd to install path, so modules are found locally
|
5
|
+
install_loc = $0.sub(/\/?[^\/]*$/, '')
|
6
|
+
install_loc = install_loc + '/../'
|
7
|
+
Dir.chdir(install_loc)
|
8
|
+
$LOAD_PATH << './lib'
|
9
|
+
require 'IFMapper/FXMapperWindow'
|
10
|
+
|
11
|
+
if __FILE__ == $0
|
12
|
+
# Make application
|
13
|
+
application = FXApp.new("IFMapper", "gga")
|
14
|
+
|
15
|
+
# Make window
|
16
|
+
m = FXMapperWindow.new(application)
|
17
|
+
|
18
|
+
# Create the application windows
|
19
|
+
application.create
|
20
|
+
|
21
|
+
# Run the application
|
22
|
+
begin
|
23
|
+
application.run
|
24
|
+
rescue => e
|
25
|
+
m.autosave
|
26
|
+
$stderr.puts e
|
27
|
+
$stderr.flush
|
28
|
+
raise e
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/docs/en/index.html
CHANGED
File without changes
|
data/docs/en/start.html
CHANGED
@@ -355,6 +355,7 @@ community. IFMapper can read:<br>
|
|
355
355
|
- .ifm files (Dave Chapeski's IFM, a popular free Unix mapping/walkthru tool)<br>
|
356
356
|
- .gmp file (GUEmap's maps, a commercial mapping tool for Windows)<br>
|
357
357
|
- .inf files (Inform6 source code files)<br>
|
358
|
+
- .inform files (Inform7 source code files)<br>
|
358
359
|
- .t3m or .t files ( TADS3 makefiles or source code files )</p>
|
359
360
|
<p><br>
|
360
361
|
<b><font size="4"><a name="Locking Maps">Locking Maps</a></font></b><br>
|
@@ -506,8 +507,8 @@ the game's puzzles are anything but easy. <br>
|
|
506
507
|
</font><b><font size="4"><a name="Contacting the Author">Contacting the Author</a></font><br>
|
507
508
|
</b><br>
|
508
509
|
Currently, I can be reached at:</p>
|
509
|
-
<p>
|
510
|
-
<p>(Where "domain" is
|
510
|
+
<p>ggarra13 AT domain</p>
|
511
|
+
<p>(Where "domain" is gmail.com )<br>
|
511
512
|
<br>
|
512
513
|
</p>
|
513
514
|
|
data/docs/en/start.html~
ADDED
@@ -0,0 +1,516 @@
|
|
1
|
+
<html>
|
2
|
+
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Language" content="es">
|
5
|
+
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
|
6
|
+
<meta name="ProgId" content="FrontPage.Editor.Document">
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
8
|
+
<title>Interactive Fiction Mapper</title>
|
9
|
+
</head>
|
10
|
+
|
11
|
+
<body>
|
12
|
+
|
13
|
+
<p align="center"><b><font color="#000080"><u><font size="5">Interactive</font><font size="5">
|
14
|
+
Fiction Mapper (IFMapper)<br>
|
15
|
+
</font></u><font size="5">by Gonzalo Garramu�o</font></font></b></p>
|
16
|
+
<p align="center"><b><u><font size="4" color="#000080">User's</font><font size="4" color="#000080">
|
17
|
+
Manual</font></u></b></p>
|
18
|
+
<ol>
|
19
|
+
<li><a href="#Introduction">Introduction </a>
|
20
|
+
<ul>
|
21
|
+
<li><a href="#What are Interactive Fiction Games">What are Interactive
|
22
|
+
Fiction Games?</a></li>
|
23
|
+
<li><a href="#What is IFMapper">What is IFMapper?</a></li>
|
24
|
+
<li><a href="#Features of IFMapper">Features of IFMapper</a><br>
|
25
|
+
</li>
|
26
|
+
</ul>
|
27
|
+
</li>
|
28
|
+
<li><a href="#Installation">Installation</a><ul>
|
29
|
+
<li><a href="#What youll need">What you'll need</a></li>
|
30
|
+
<li><a href="#Where to get the stuff">Where to get the stuff</a></li>
|
31
|
+
<li><a href="#Installing from a zip file">Installing from a zip file</a></li>
|
32
|
+
<li><a href="#Installing or Upgrading using rubygems">Installing or
|
33
|
+
Upgrading using rubygems</a><br>
|
34
|
+
</li>
|
35
|
+
</ul>
|
36
|
+
</li>
|
37
|
+
<li><a href="#Starting IFMapper">Starting IFMapper</a><br>
|
38
|
+
</li>
|
39
|
+
<li><a href="#Using IFMapper">Using IFMapper</a><ul>
|
40
|
+
<li><a href="#The Interface">The Interface</a></li>
|
41
|
+
<li><a href="#Navigation">Navigation</a></li>
|
42
|
+
<li><a href="#Creating Locations">Creating Locations</a></li>
|
43
|
+
<li><a href="#Creating Connections">Creating Connections</a></li>
|
44
|
+
<li><a href="#Deleting Rooms or Connections">Deleting Rooms and Connections</a></li>
|
45
|
+
<li><a href="#Complex Connections">Creating Complex Connections</a></li>
|
46
|
+
<li><a href="#Moving Rooms in Map">Moving Rooms Around</a></li>
|
47
|
+
<li><a href="#Dealing with Multiple Sections">Dealing with Multiple Sections</a></li>
|
48
|
+
<li><a href="#Searching">Searching </a></li>
|
49
|
+
<li><a href="#Preferences">Preferences </a></li>
|
50
|
+
<li><a href="#Saving and Loading Maps">Saving and Loading Maps</a></li>
|
51
|
+
<li><a href="#Saving and Loading Maps">Locking Maps</a></li>
|
52
|
+
<li><a href="#Mapping Games from Transcripts (Automapping)">Automatically
|
53
|
+
Creating Maps from Transcripts (Automapping)</a><ul>
|
54
|
+
<li><a href="#How does the automapper distinguish locations">How does
|
55
|
+
Automapping work</a></li>
|
56
|
+
<li><a href="#Limitations on Automapping">Limitations on Automapping</a><br>
|
57
|
+
</li>
|
58
|
+
</ul>
|
59
|
+
</li>
|
60
|
+
</ul>
|
61
|
+
</li>
|
62
|
+
<li><a href="#Creating a new Inform/TADS3 game">Creating a new game for TADS3
|
63
|
+
or Inform</a><br>
|
64
|
+
</li>
|
65
|
+
<li><a href="#Appendix">Appendix</a><ul>
|
66
|
+
<li>
|
67
|
+
<a href="#I am new to Interactive Fiction. What games would you recommend">I
|
68
|
+
am new to Interactive Fiction. What games would you recommend?</a></li>
|
69
|
+
<li><a href="#Contacting the Author">Contacting the Author</a></li>
|
70
|
+
</ul>
|
71
|
+
</li>
|
72
|
+
</ol>
|
73
|
+
<p> </p>
|
74
|
+
<p><b><font size="5" color="#000080"><a name="Introduction">Introduction</a></font></b></p>
|
75
|
+
<p><b><a name="What are Interactive Fiction Games"></a>What are Interactive
|
76
|
+
Fiction Games?</b></p>
|
77
|
+
<p>These are adventure games, which usually contain little or no graphics but
|
78
|
+
use prose to describe locations, events and, hopefully, a good story. The
|
79
|
+
first interactive fiction game was created in the late 1970s and was known as
|
80
|
+
Adventure (or. Colossal Cave), albeit the genre became widely popular and
|
81
|
+
developed most of its conventions with the creation of Infocom in the 1980s.<br>
|
82
|
+
If you have never played an interactive fiction game, perhaps the best
|
83
|
+
comparison is that they are a grown-up version of "Dungeons and Dragons" or the
|
84
|
+
"Choose Your Own Adventure" series of children's books. <br>
|
85
|
+
Still, just like any good novel, interactive fiction has evolved into all sorts
|
86
|
+
of different styles, genres, and level of interactivity. And you can find
|
87
|
+
adventures being developed today in a lot of languages like English, Spanish,
|
88
|
+
Italian, German, etc. See the section: "I am new to Interactive
|
89
|
+
Fiction. What games would you recommend?"</p>
|
90
|
+
<p><b><a name="What is IFMapper"></a>What is IFMapper?</b><br>
|
91
|
+
<br>
|
92
|
+
IFMapper is a tool for easily mapping these interactive fiction games. As
|
93
|
+
these games rely mainly on text descriptions and often use compass directions
|
94
|
+
for navigation around the game world, it is relatively easy to get lost.
|
95
|
+
In the old days, players would use grid paper to draw their maps, using boxes
|
96
|
+
and lines to show each location and its exits. IFMapper is basically, the
|
97
|
+
21st century version of that old practice.<br>
|
98
|
+
Albeit IFMapper is mainly a mapping tool, it can also be used as a design tool
|
99
|
+
in the early stages of development of new games (for either Inform6 or TADS3).</p>
|
100
|
+
<p><b><a name="Features of IFMapper">Features of IFMapper</a></b></p>
|
101
|
+
<ul>
|
102
|
+
<li>Multiplatform</li>
|
103
|
+
<li>Very simple click interface</li>
|
104
|
+
<li>Complex paths supported (paths that loop on themselves or connect two
|
105
|
+
remote nodes)</li>
|
106
|
+
<li>Automatic connection of rooms thru complex paths using an A* algorithm</li>
|
107
|
+
<li>Mousewheel support for zooming in/out</li>
|
108
|
+
<li>Middle mouse scrolling</li>
|
109
|
+
<li>Rooms can have objects and tasks listed</li>
|
110
|
+
<li>Automatic numbering of rooms</li>
|
111
|
+
<li>Multiple map editing</li>
|
112
|
+
<li>Ability to easily move rooms in map with arrow keys</li>
|
113
|
+
<li>Written in a simple and great scripting language (Ruby)</li>
|
114
|
+
<li>Acrobat PDF output</li>
|
115
|
+
<li>Can read and save IFM files</li>
|
116
|
+
<li>Can read and save Inform/TADS3 source code files</li>
|
117
|
+
<li>Locking of maps</li>
|
118
|
+
<li>Search for keywords in room names, objects or tasks</li>
|
119
|
+
<li>Can automap games from Infocom-like transcripts, even while you play them</li>
|
120
|
+
<li>Free<br>
|
121
|
+
</li>
|
122
|
+
</ul>
|
123
|
+
<p><b><font size="5" color="#000080"><a name="Installation">Installation</a></font></b></p>
|
124
|
+
<p><b><a name="What youll need">What you'll need</a></b></p>
|
125
|
+
<p>In order to use IFMapper, you need to have the Ruby scripting language
|
126
|
+
installed and FXRuby. IFMapper was originally developed to run under
|
127
|
+
ruby1.8 and FXRuby1.2, but it will probably be compatible with later versions,
|
128
|
+
too.<br>
|
129
|
+
To print PDF documents, you will also need Austin Ziegler's PDF::Writer module.</p>
|
130
|
+
<p><b><a name="Where to get the stuff">Where to get the stuff</a></b></p>
|
131
|
+
<p>If your platform is Windows, your best bet is to download the One-Click Ruby
|
132
|
+
Installer from:<br>
|
133
|
+
<a href="http://rubyforge.org/projects/rubyinstaller/">
|
134
|
+
http://rubyforge.org/projects/rubyinstaller/</a></p>
|
135
|
+
<p>This installer comes with the latest stable ruby version and also with the
|
136
|
+
latest fxruby. It also comes with rubygems (see rubygems later).</p>
|
137
|
+
<p>If your platform is Linux or OSX, you may need to compile ruby from source
|
138
|
+
(note that OSX currently comes with ruby pre-installed, but a pretty old version),
|
139
|
+
albeit you might want to surf the web or do a search for some binaries first, so
|
140
|
+
you save yourself the hassle. For details on compiling ruby, see:</p>
|
141
|
+
<p><a href="http://www.rubygarden.org/ruby?RubyOnMacintosh">
|
142
|
+
http://www.rubygarden.org/ruby?RubyOnMacintosh</a><br>
|
143
|
+
<a href="http://www.rubygarden.org/ruby?RubyOnLinux">
|
144
|
+
http://www.rubygarden.org/ruby?RubyOnLinux</a></p>
|
145
|
+
<p>After you have ruby up and running, you should then proceed to install fxruby.
|
146
|
+
You can do this by first installing rubygems (what I'd recomment) or by not
|
147
|
+
using it. If you want to use rubygems, proceed to the "Using Rubygems"
|
148
|
+
section.</p>
|
149
|
+
<p>FXRuby can be found at:<br>
|
150
|
+
<a href="http://www.fxruby.org">http://www.fxruby.org</a></p>
|
151
|
+
<p>After you have fxruby installed, you should then be able to install ifmapper.</p>
|
152
|
+
<p> </p>
|
153
|
+
<p><b><a name="Installing from a zip file">Installing from a zip file</a></b></p>
|
154
|
+
<p>After you have ruby and fxruby properly installed, download the ifmapper zip
|
155
|
+
file from:</p>
|
156
|
+
<p><a href="http://rubyforge.org/projects/ifmapper">
|
157
|
+
http://rubyforge.org/projects/ifmapper</a></p>
|
158
|
+
<p>Use unzip, winzip or some other zip decompression tool to open the archive.
|
159
|
+
All files will be placed inside an IFmapper directory. You should be
|
160
|
+
ready to start IFMapper.</p>
|
161
|
+
<p>If you want to output PDF files from IFMapper, you will also need to install
|
162
|
+
the PDF::Writer library. You can do so using rubygems or by downloading
|
163
|
+
the PDF::Writer library from:</p>
|
164
|
+
<p><a href="http://rubyforge.org/projects/ruby-pdf/">
|
165
|
+
http://rubyforge.org/projects/ruby-pdf/</a></p>
|
166
|
+
<p> </p>
|
167
|
+
<p><b><a name="Installing or Upgrading using rubygems">Installing or Upgrading
|
168
|
+
using rubygems</a></b></p>
|
169
|
+
<p>Rubygems is a manager of ruby libraries that should help with automatically
|
170
|
+
installing any library dependencies that ifmapper may need. Rubygems comes
|
171
|
+
pre-installed with the One-Click Installer for Windows. For other
|
172
|
+
platforms, you can obtain it from:</p>
|
173
|
+
<p><a href="http://rubyforge.org/projects/rubygems/">
|
174
|
+
http://rubyforge.org/projects/rubygems/</a></p>
|
175
|
+
<p>Once rubygems is installed, you can then open a windows console or a shell
|
176
|
+
window and do:</p>
|
177
|
+
<p><font face="Courier New">> gem install -r ifmapper</font></p>
|
178
|
+
<p>This will download the latest version of ifmapper, as well as all the
|
179
|
+
libraries needed for ifmapper to run (in case they are not installed on your
|
180
|
+
system). If you don't have fxruby installed, it will get installed for you.
|
181
|
+
On Unix systems, you will probably still need to compile it yourself.</p>
|
182
|
+
<p>IFmapper (and other libraries) will then be placed inside your ruby install
|
183
|
+
directory, like:<br>
|
184
|
+
<font face="Courier New">C:/ruby/lib/ruby/gems/1.8/gems/ifmapper-{VERSION}</font></p>
|
185
|
+
<p> </p>
|
186
|
+
<p><b><font size="5" color="#000080"><a name="Starting IFMapper">Starting
|
187
|
+
IFMapper</a></font></b></p>
|
188
|
+
<p>Once installed, you can then run IFMapper by either clicking on the
|
189
|
+
IFMapper.rbw file inside the ifmapper directory or, invoking IFMapper.rbw from
|
190
|
+
any shell or console.</p>
|
191
|
+
<p>Assuming everything is installed properly, you should then see the IFMapper
|
192
|
+
window popup with an empty map.</p>
|
193
|
+
<p> </p>
|
194
|
+
<p><b><font size="5" color="#000080"><a name="Using IFMapper">Using IFMapper</a></font></b></p>
|
195
|
+
<p><font size="4"><a name="The Interface">The Interface</a></font></p>
|
196
|
+
<p><img border="0" src="../images/IFMapper_main.gif" width="800" height="600"></p>
|
197
|
+
<p>The IFMapper interface consists of a menu that allows you to access common
|
198
|
+
operations (open/save maps, change settings, etc), a toolbar with a similar
|
199
|
+
functionality, and one or more windows displaying a map canvas.</p>
|
200
|
+
<p>IFMapper allows you to edit multiple maps simultaneously.<br>
|
201
|
+
Each map can have multiple "sections", so as to keep different parts of the
|
202
|
+
games organized. Note that these sections have nothing to do with how printing
|
203
|
+
is done and two or more sections could end up being printed <br>
|
204
|
+
together in a page or a single section may end up getting split into a multiple
|
205
|
+
page document once printed.</p>
|
206
|
+
<p>When you start IFMapper for the first time, you should be placed in an empty
|
207
|
+
map that shows a grid of where rooms and straight connections can be placed.<br>
|
208
|
+
</p>
|
209
|
+
<p><font size="4"><b><a name="Navigation">Navigation</a></b></font></p>
|
210
|
+
<p>Use your mouse for navigation. If your mouse supports a mousewheel, this can
|
211
|
+
be used for zooming in or out of the map easily.<br>
|
212
|
+
To pan around the map, use the <b>Middle Mouse Button</b> or, alternatively, <b>
|
213
|
+
ALT + Left Mouse Button</b> (These hotkeys mimic the behavior of Maya and 3dmax,
|
214
|
+
both popular 3d packages). You can also scroll the map using the
|
215
|
+
scrollbars around the canvas.<b><font size="4"><br>
|
216
|
+
</font></b></p>
|
217
|
+
<p><b><font size="4"><br>
|
218
|
+
<a name="Creating Locations">Creating Locations</a><br>
|
219
|
+
</font></b>
|
220
|
+
<img border="0" src="../images/room_small.gif" align="right" width="342" height="377"><b><font size="4"><br>
|
221
|
+
</font></b>You create new Locations or Rooms in the map by just clicking on any
|
222
|
+
of those template boxes. The new location will then be given a default name and
|
223
|
+
settings ('New Location').<br>
|
224
|
+
Each room added will automatically receive a number, based on creation order.<br>
|
225
|
+
To modify the name and settings of a location, you can then double click on it
|
226
|
+
and a requester will pop up allowing you to do so.<br>
|
227
|
+
If you want the requester to pop up as soon as a new room is created, you can
|
228
|
+
turn on <b>Map->Options->Edit on Creation.</b><br>
|
229
|
+
This requester also has options to allow you to mark the room as in darkness and
|
230
|
+
to add a list of objects present in the room.<br>
|
231
|
+
As you play the game, you can also choose to list the tasks that you need to do
|
232
|
+
in the room to progress further (providing you some with a rudimentary walkthru/hint
|
233
|
+
functionality).<br>
|
234
|
+
This requester can be left open so as to quickly change from room to room.</p>
|
235
|
+
<p>Besides using the mouse, you can also use the numeric keypad with Num Lock on
|
236
|
+
and use the numbers from <b>1 to 9</b> to create a new room in the appropiate
|
237
|
+
direction.<br>
|
238
|
+
</p>
|
239
|
+
<p> </p>
|
240
|
+
<p> </p>
|
241
|
+
<p> </p>
|
242
|
+
<p><b><font size="4"><br>
|
243
|
+
<a name="Creating Connections">Creating Connections</a></font></b></p>
|
244
|
+
<p>You can then create connections among rooms by clicking on the non-boxed
|
245
|
+
areas of the map. Depending on where exactly you click, a simple connection will
|
246
|
+
be made between two rooms.<br>
|
247
|
+
<br>
|
248
|
+
In its default configuration, you can also click to create a connection on an
|
249
|
+
area where no rooms yet exist. IFMapper will then create the missing rooms
|
250
|
+
automatically for you, in addition to the connection.<br>
|
251
|
+
<br>
|
252
|
+
Note that you can change the behavior of how nodes and connections are created
|
253
|
+
from the <b>Map->Options</b> menu:<br>
|
254
|
+
<b>Automatic Connection - </b>will create a connection to the previous room for
|
255
|
+
each new room you create.<b><br>
|
256
|
+
Create on Connection - </b>will allow you to add both the connection and the
|
257
|
+
missing rooms when you click on some connection area in the map.<br>
|
258
|
+
<img border="0" src="../images/connection.gif" align="right" width="332" height="118"><br>
|
259
|
+
Connections can also be modified similarly to rooms, by clicking twice on them.
|
260
|
+
The connection requester allows you to specify the connection as a free, door,
|
261
|
+
locked or special connection. It also allows you to make the connection
|
262
|
+
travel in a single direction or in both directions. Finally, you can also
|
263
|
+
add text to the connections to indicate that connection takes you Up/Down or In/Out.</p>
|
264
|
+
<p>Changing the connection to<img border="5" src="../images/connection_menu.gif" align="right" width="342" height="241">
|
265
|
+
be one way can also be done by just <br>
|
266
|
+
clicking on them several times, without opening the requester.<br>
|
267
|
+
<br>
|
268
|
+
Finally, selecting a connection and using the right mouse button gives you
|
269
|
+
access to a context-sensitive menu that allows you to flip the direction of a
|
270
|
+
connection or to shift the connection to some other exit in the room.</p>
|
271
|
+
<p> </p>
|
272
|
+
<p> </p>
|
273
|
+
<p> </p>
|
274
|
+
<p> </p>
|
275
|
+
<p><b><font size="4"><br>
|
276
|
+
<a name="Deleting Rooms or Connections">Deleting Rooms or Connections</a></font></b><br>
|
277
|
+
<br>
|
278
|
+
To remove a room or connection, just select it by clicking on it with<br>
|
279
|
+
the left mouse button. Then, press the Delete or Backspace key.<br>
|
280
|
+
Note that there is currently no Undo, so deleted nodes or connections<br>
|
281
|
+
cannot be restored.<br>
|
282
|
+
<br>
|
283
|
+
<font size="4"><br>
|
284
|
+
<b><a name="Complex Connections">Complex Connections<img border="5" src="../images/complex_connection.gif" align="right" width="338" height="308"></a></b></font><br>
|
285
|
+
<br>
|
286
|
+
A lot of text adventures have mazes with exits that lead nowhere and exits that
|
287
|
+
change direction from one room to the next. We refer to these as complex
|
288
|
+
connections.<br>
|
289
|
+
To create a complex connection, type the letter <b>'x'</b> or use the <b>Edit->Add
|
290
|
+
Complex Connection </b>menu option. Afterwards, click on the exit next to the
|
291
|
+
first room you want to connect and then click on<br>
|
292
|
+
the exit of the second room.<br>
|
293
|
+
If you want to get out of the add complex connection mode, just hit Esc at any
|
294
|
+
time.<br>
|
295
|
+
IFMapper will then try to calculate a path along the map to take you from your
|
296
|
+
first room to the second one. <br>
|
297
|
+
For a complex connection to happen, the path between those nodes has to be
|
298
|
+
'free' of other rooms. IFMapper will also try to avoid inter-crossing
|
299
|
+
connections as much as it can, but will still allow them.<br>
|
300
|
+
To create exits that just loop onto themselves, you can do a complex connection
|
301
|
+
by clicking twice on the same exit or, you can just use<b> CTRL + Left Mouse
|
302
|
+
Button </b>without needing to go into the Complex Connection mode.<br>
|
303
|
+
<br>
|
304
|
+
<b><font size="4"><br>
|
305
|
+
<a name="Moving Rooms in Map">Moving Rooms in Map</a></font></b><br>
|
306
|
+
<br>
|
307
|
+
When building large maps on complex games, you will probably run into the need
|
308
|
+
to shift nodes around. To do so, select on the nodes you want to move by <b>CTRL-LMB
|
309
|
+
</b>on them, and then use the arrow keys to shift the nodes one grid unit at a
|
310
|
+
time.<br>
|
311
|
+
You can also use <b>SHIFT-LMB</b> to drag a box around the rooms to select. <br>
|
312
|
+
If there are any simple or complex connections, IFMapper will keep recalculating
|
313
|
+
those connections on the fly as you move the nodes.<br>
|
314
|
+
Note that complex connections can sometimes 'fail'. In those cases, you will see
|
315
|
+
the complex connection become taut and tinted red.<br>
|
316
|
+
</p>
|
317
|
+
<p><b><font size="4"><a name="Dealing with Multiple Sections">Dealing with
|
318
|
+
Multiple Sections</a></font></b></p>
|
319
|
+
<p>Some adventure games can be rather large and might be split into chapters.
|
320
|
+
In those cases, you may want to take advantage of using multiple sections in
|
321
|
+
your map. This will keep your map organized and may help you with printing
|
322
|
+
them also later on.</p>
|
323
|
+
<p>You can create and delete sections from the menu, in <b>Map->Sections->Create
|
324
|
+
Section</b> and <b>Map->Sections->Delete Section.</b></p>
|
325
|
+
<p>To move from one section to another, you can use the Arrows located in the
|
326
|
+
right section of the toolbar or <b>Map->Sections->Next/Previous Section.</b></p>
|
327
|
+
<p><br>
|
328
|
+
<br>
|
329
|
+
<b><font size="4"><a name="Searching">Searching</a></font></b><br>
|
330
|
+
<br>
|
331
|
+
You can search for words in locations, objects, tasks or descriptions in the
|
332
|
+
current section or in the whole map, using regular expressions.<br>
|
333
|
+
The search is interactive, a la Emacs, meaning that as you type, the rooms that
|
334
|
+
match the search get hilited.<br>
|
335
|
+
The number of matches for the map and the section is display in the status bar.<br>
|
336
|
+
You can use the Next/Previous button to keep centering your view on each match (and
|
337
|
+
automatically moving thru sections if you are matching stuff in the whole map)<br>
|
338
|
+
<br>
|
339
|
+
<br>
|
340
|
+
<b><font size="4"><a name="Preferences">Preferences</a></font></b><br>
|
341
|
+
<br>
|
342
|
+
IFMapper allows you to change and set preferences on a per map basis (colors,
|
343
|
+
editing options, etc). You can also save your preferences so that IFMapper will
|
344
|
+
boot with those settings in place for creating new maps.<br>
|
345
|
+
<br>
|
346
|
+
<br>
|
347
|
+
<font size="4"><b><a name="Saving and Loading Maps">Saving and Loading Maps</a></b></font></p>
|
348
|
+
<p>To save a map you are editing, you can go to <b>File->Save</b> or <b>File->Save
|
349
|
+
As</b>. The internal format of IFMapper's maps is the .map format, which
|
350
|
+
is binary format. This format saves all your map preferences as well as
|
351
|
+
all the connections and descriptions.<br>
|
352
|
+
To load a map, you can then use <b>File->Open</b>. Besides IFMapper's own
|
353
|
+
.map format, IFMapper also supports other popular formats within the IF
|
354
|
+
community. IFMapper can read:<br>
|
355
|
+
- .ifm files (Dave Chapeski's IFM, a popular free Unix mapping/walkthru tool)<br>
|
356
|
+
- .gmp file (GUEmap's maps, a commercial mapping tool for Windows)<br>
|
357
|
+
- .inf files (Inform6 source code files)<br>
|
358
|
+
- .t3m or .t files ( TADS3 makefiles or source code files )</p>
|
359
|
+
<p><br>
|
360
|
+
<b><font size="4"><a name="Locking Maps">Locking Maps</a></font></b><br>
|
361
|
+
<br>
|
362
|
+
Once you finish an adventure game, you can then lock the map for distribution.<br>
|
363
|
+
You can do so by going into <b>Map->Map Information</b> and click on the Read-Only
|
364
|
+
switch and making sure you save the map as .map file (IFMapper's native format).<br>
|
365
|
+
Making the map read-only will not allow you to modify the map anymore (and thus
|
366
|
+
will prevent accidentally moving or changing room descriptions by<br>
|
367
|
+
mistake).<br>
|
368
|
+
When reading any IFM file, Read-Only mode is entered automatically, as it is
|
369
|
+
assumed these maps were created and finished elsewhere. If you need<br>
|
370
|
+
to modify them, just untick the Read-Only switch in the Map Information box
|
371
|
+
again.<br>
|
372
|
+
<br>
|
373
|
+
<b><font size="4"><br>
|
374
|
+
<a name="Mapping Games from Transcripts (Automapping)">Mapping Games from
|
375
|
+
Transcripts (Automapping)</a><br>
|
376
|
+
</font></b><br>
|
377
|
+
New to v0.8, the feature of automapping was added. The way automapping works is
|
378
|
+
that it will read a transcript or log of your game, and will attempt to parse it
|
379
|
+
to generate rooms and connections (even while you are playing it!).<br>
|
380
|
+
<br>
|
381
|
+
To use automapping, go to your game and start a transcript. Usually this is done
|
382
|
+
by doing:</p>
|
383
|
+
<p><b>> verbose<br>
|
384
|
+
> script</b></p>
|
385
|
+
<p>and then specifying the name of the file.<br>
|
386
|
+
<br>
|
387
|
+
Then, go to IFMapper and go to a map (usually an empty one) and do:<img border="0" src="../images/automap.gif" align="right" width="413" height="428"><br>
|
388
|
+
<b>Map->Automap->Start</b>. This will pop up a file requester for you to feed
|
389
|
+
IFMapper the name of the transcript.<br>
|
390
|
+
Then, you will be asked thru a requester to select some options.<br>
|
391
|
+
The options include how will the automapper identify locations as being unique.
|
392
|
+
The automapper can determine whether you are in a new location by comparing the
|
393
|
+
room description (the default) or by comparing just the short name of the room.
|
394
|
+
Games that have rooms with the same short names (usually, mazes) will benefit
|
395
|
+
from being identified by the room description while games that often change the
|
396
|
+
room description on several visits to it might be mapped better using just short
|
397
|
+
names. Note that you can also switch from one method to another at any
|
398
|
+
time later on.<br>
|
399
|
+
Another option allows you to specify what type of transcript you are dealing
|
400
|
+
with. Most games use the "Classic" format, albeit some old Infocom games (mainly
|
401
|
+
Witness and Moonmist) used a tad different format.<br>
|
402
|
+
And voila. Immediately, you should see IFMapper get to work and start creating
|
403
|
+
locations and connections. <br>
|
404
|
+
If you continue playing your game and the 'script' command is still in operation,
|
405
|
+
IFMapper will try to interactively map your game. This works very well for games
|
406
|
+
running under WinFrotz, for example, albeit some other interpreters might not
|
407
|
+
append text to transcripts as soon as you run a command, leading to a less
|
408
|
+
interactive automapping (you'll probably have to type several commands before
|
409
|
+
the interpreter will update the transcript file).<br>
|
410
|
+
Besides trying to parse for locations and movements, automapper will also try to
|
411
|
+
parse for objects in the room, by monitoring your 'get' or 'take' commands and
|
412
|
+
remembering where each object was first found, so as to add it to the appropiate
|
413
|
+
room.<br>
|
414
|
+
Note that, at any point during your mapping, you can pop up the automapper
|
415
|
+
properties again to switch from automapping using descriptions to using short
|
416
|
+
names.<br>
|
417
|
+
<br>
|
418
|
+
<br>
|
419
|
+
<b><font size="4"><a name="How does the automapper distinguish locations">How
|
420
|
+
does the automapper distinguish locations?</a></font></b><br>
|
421
|
+
<br>
|
422
|
+
As we said before, the automapper will parse all the game text, looking for room
|
423
|
+
descriptions. Not just the replies to moving commands.<br>
|
424
|
+
This is done so that teleporting commands (such as magical words) or special
|
425
|
+
events that take you other places will work.<br>
|
426
|
+
Room locations are determined by finding the room's short name: a string of text
|
427
|
+
where all of its words of 4 or more letters are capitalized (or where the string
|
428
|
+
follows the format specified, in case of Witness/Moonmist format). <br>
|
429
|
+
The paragraph following that is assumed to be a room description.<br>
|
430
|
+
Depending on your automapper settings, the automapper will give preference to
|
431
|
+
the room description or to the room's short name to determine whether a certain
|
432
|
+
room has already been visited.<br>
|
433
|
+
<br>
|
434
|
+
<br>
|
435
|
+
<b><font size="4"><a name="Limitations on Automapping">Limitations on
|
436
|
+
Automapping</a></font></b><br>
|
437
|
+
<br>
|
438
|
+
Albeit automapping is very cool and powerful, there are some limitations on it
|
439
|
+
you should be aware of.<br>
|
440
|
+
First, it only works with games written in English.<br>
|
441
|
+
Second, you should try to use automapping with verbose mode. Automapping will
|
442
|
+
try to rely on the room description to distinguish one room from the next,
|
443
|
+
instead of just the room's short name.<br>
|
444
|
+
If your game is in brief or normal mode, automapping could end up getting
|
445
|
+
confused about interpreting a previously visited location as a new location, as
|
446
|
+
it could interpret an object or a character description as part of the<br>
|
447
|
+
room description.<br>
|
448
|
+
Even with full verbose mode, automapping may get confused if the
|
449
|
+
description changes dramatically (like the demolished house in Hitchhiker's
|
450
|
+
Guide to the Galaxy).<br>
|
451
|
+
Automapping also may not help much when it comes to mazes, where all their
|
452
|
+
descriptions are identical or in cases where exits are chosen at random (Adventure/Colossal
|
453
|
+
Cave).<br>
|
454
|
+
Some games don't follow the Infocom standard of labelling locations using a
|
455
|
+
short capitalized description (for example, FailSafe). These games cannot be
|
456
|
+
automapped.<br>
|
457
|
+
Finally, the layout algorithm used in the automapper is not exceptional and it
|
458
|
+
can lead to maps with intercrossings or with rooms placed too far apart.<br>
|
459
|
+
Remember, thou, that you can still help the automapper by manually moving or
|
460
|
+
removing rooms at any time if you are interactively automapping a transcript.<br>
|
461
|
+
If for some reason the automapper does not detect a room automatically, you can
|
462
|
+
also at any time create that room yourself and from then on, the automapper will
|
463
|
+
be aware of it.<br>
|
464
|
+
<br>
|
465
|
+
<b><br>
|
466
|
+
<font size="4"><a name="Creating a new Inform/TADS3 game">Creating a new
|
467
|
+
Inform/TADS3 game</a></font></b><br>
|
468
|
+
<br>
|
469
|
+
IFMapper now allows you to also spit out Inform or TADS3 source code for a map.<br>
|
470
|
+
This means you can now use IFMapper to easily create the basic skeleton for a
|
471
|
+
new game from scratch. <br>
|
472
|
+
With IFMapper, you can place your objects, your NPCs and locations with their
|
473
|
+
doors/exits in your game. You can also type in your descriptions for each
|
474
|
+
location.<br>
|
475
|
+
To do this, make sure to activate the display of room descriptions:</p>
|
476
|
+
<p><b>Map->Display->Location Description</b></p>
|
477
|
+
<p>You can then type in all your room descriptions and objects manually and then,
|
478
|
+
once your map is finished, use:<b><br>
|
479
|
+
<br>
|
480
|
+
File->Export->Export to Inform<br>
|
481
|
+
File->Export->Export to TADS3<br>
|
482
|
+
</b><br>
|
483
|
+
These option will create a set of Inform or TADS3 source files (one per map
|
484
|
+
section), which you can then immediately compile and play with.<br>
|
485
|
+
Obviously, for a real game, the .inf or .t files you get out of IFMapper are
|
486
|
+
just a skeleton, as you will still have to code manually all the logic in your<br>
|
487
|
+
game.</p>
|
488
|
+
<p> </p>
|
489
|
+
<p><b><font size="5" color="#000080"><a name="Appendix">Appendix</a></font></b></p>
|
490
|
+
<p><b><font size="4">
|
491
|
+
<a name="I am new to Interactive Fiction. What games would you recommend">I am
|
492
|
+
new to Interactive Fiction. What games would you recommend?</a></font></b><br>
|
493
|
+
<br>
|
494
|
+
If you can get a copy of it (Lost Treasures of Infocom or similar), I think
|
495
|
+
Wishbringer from Infocom is probably one of the nicest introductory games. <br>
|
496
|
+
Its puzzles are not that tricky and are also pretty logical.<br>
|
497
|
+
Once you master it, you could then try Planetfall, which has one of the most
|
498
|
+
lovable characters in any adventure game.<br>
|
499
|
+
Assuming you cannot get hold of those Infocom games, Emily Short's City of
|
500
|
+
Secrets is a very nice introductory game and probably one of the most polished
|
501
|
+
adventures I have seen.<br>
|
502
|
+
Andrew Plotkin's Dreamholder is also somewhat a nice introductory game as the
|
503
|
+
game will help you with your commands a little as you begin. Note, however, that
|
504
|
+
the game's puzzles are anything but easy. <br>
|
505
|
+
<font size="5"><br>
|
506
|
+
</font><b><font size="4"><a name="Contacting the Author">Contacting the Author</a></font><br>
|
507
|
+
</b><br>
|
508
|
+
Currently, I can be reached at:</p>
|
509
|
+
<p>ggarra AT domain</p>
|
510
|
+
<p>(Where "domain" is advancedsl.com.ar )<br>
|
511
|
+
<br>
|
512
|
+
</p>
|
513
|
+
|
514
|
+
</body>
|
515
|
+
|
516
|
+
</html>
|