ifmapper 1.0.0 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. data/HISTORY.txt +648 -627
  2. data/IFMapper.gemspec +29 -28
  3. data/IFMapper.rbw +31 -31
  4. data/TODO.txt +8 -7
  5. data/bin/IFMapper +31 -31
  6. data/docs/en/index.html +0 -0
  7. data/docs/en/start.html +3 -2
  8. data/docs/en/start.html~ +516 -0
  9. data/docs/es/index.html +0 -0
  10. data/docs/es/start.html +13 -14
  11. data/docs/es/start.html~ +1280 -0
  12. data/docs/images/IFMapper_main.gif +0 -0
  13. data/docs/images/automap.gif +0 -0
  14. data/docs/images/complex_connection.gif +0 -0
  15. data/docs/images/connection.gif +0 -0
  16. data/docs/images/connection_menu.gif +0 -0
  17. data/docs/images/room_description.gif +0 -0
  18. data/docs/images/room_small.gif +0 -0
  19. data/icons/copy.png +0 -0
  20. data/icons/cut.png +0 -0
  21. data/icons/filenew.png +0 -0
  22. data/icons/fileopen.png +0 -0
  23. data/icons/filesave.png +0 -0
  24. data/icons/filesaveas.png +0 -0
  25. data/icons/help.png +0 -0
  26. data/icons/kill.png +0 -0
  27. data/icons/nextpage.png +0 -0
  28. data/icons/paste.png +0 -0
  29. data/icons/prevpage.png +0 -0
  30. data/icons/printicon.png +0 -0
  31. data/icons/redo.png +0 -0
  32. data/icons/room_e.gif +0 -0
  33. data/icons/room_e.xpm +0 -0
  34. data/icons/room_n.gif +0 -0
  35. data/icons/room_n.xpm +0 -0
  36. data/icons/room_ne.gif +0 -0
  37. data/icons/room_ne.xpm +0 -0
  38. data/icons/room_nw.gif +0 -0
  39. data/icons/room_nw.xpm +0 -0
  40. data/icons/room_s.gif +0 -0
  41. data/icons/room_s.xpm +0 -0
  42. data/icons/room_se.gif +0 -0
  43. data/icons/room_se.xpm +0 -0
  44. data/icons/room_sw.gif +0 -0
  45. data/icons/room_sw.xpm +0 -0
  46. data/icons/room_w.gif +0 -0
  47. data/icons/room_w.xpm +0 -0
  48. data/icons/saveas.png +0 -0
  49. data/icons/undo.png +0 -0
  50. data/icons/winapp.png +0 -0
  51. data/icons/zoom.png +0 -0
  52. data/lib/IFMapper/AStar.rb +250 -250
  53. data/lib/IFMapper/Connection.rb +202 -202
  54. data/lib/IFMapper/FXAboutDialogBox.rb +32 -32
  55. data/lib/IFMapper/FXConnection.rb +364 -364
  56. data/lib/IFMapper/FXConnectionDialogBox.rb +124 -124
  57. data/lib/IFMapper/FXDCPostscript.rb +404 -404
  58. data/lib/IFMapper/FXDCPrint.rb +15 -15
  59. data/lib/IFMapper/FXItemList.rb +108 -0
  60. data/lib/IFMapper/FXMap.rb +2147 -2116
  61. data/lib/IFMapper/FXMapColorBox.rb +88 -88
  62. data/lib/IFMapper/FXMapDialogBox.rb +127 -127
  63. data/lib/IFMapper/FXMapFileDialog.rb +34 -34
  64. data/lib/IFMapper/FXMapperSettings.rb +206 -205
  65. data/lib/IFMapper/FXMapperWindow.rb +1592 -1571
  66. data/lib/IFMapper/FXPDFMapExporterOptionsDialogBox.rb +46 -0
  67. data/lib/IFMapper/FXRoom.rb +263 -263
  68. data/lib/IFMapper/FXRoomDialogBox.rb +159 -159
  69. data/lib/IFMapper/FXRoomList.rb +95 -95
  70. data/lib/IFMapper/FXSearchDialogBox.rb +51 -51
  71. data/lib/IFMapper/FXSection.rb +33 -33
  72. data/lib/IFMapper/FXSectionDialogBox.rb +38 -38
  73. data/lib/IFMapper/FXSpline.rb +52 -52
  74. data/lib/IFMapper/FXWarningBox.rb +51 -50
  75. data/lib/IFMapper/GUEReader.rb +445 -445
  76. data/lib/IFMapper/IFMReader.rb +584 -584
  77. data/lib/IFMapper/IFMWriter.rb +245 -227
  78. data/lib/IFMapper/Inform7Writer.rb +579 -573
  79. data/lib/IFMapper/InformReader.rb +478 -478
  80. data/lib/IFMapper/InformWriter.rb +364 -359
  81. data/lib/IFMapper/Map.rb +202 -200
  82. data/lib/IFMapper/MapPrinting.rb +162 -162
  83. data/lib/IFMapper/MapReader.rb +900 -900
  84. data/lib/IFMapper/PDFMapExporter.rb +526 -483
  85. data/lib/IFMapper/Room.rb +153 -151
  86. data/lib/IFMapper/Section.rb +234 -234
  87. data/lib/IFMapper/TADSReader.rb +474 -471
  88. data/lib/IFMapper/TADSWriter.rb +375 -370
  89. data/lib/IFMapper/TranscriptDialogBox.rb +0 -0
  90. data/lib/IFMapper/TranscriptReader.rb +1361 -1359
  91. data/lib/IFMapper/locales/en/Messages.rb +446 -435
  92. data/lib/IFMapper/locales/es/Messages.rb +451 -440
  93. data/lib/IFMapper/locales/es/Messages_iso-8859-1.rb +455 -440
  94. data/lib/IFMapper/locales/es/runme.sh +3 -3
  95. data/maps/A New Life.map b/data/maps/A New → Life.map +0 -0
  96. data/maps/AMFV.map +0 -0
  97. data/maps/AllRoads.map +0 -0
  98. data/maps/Aotearoa.map +0 -0
  99. data/maps/Bronze.map +0 -0
  100. data/maps/Bureaucracy.ifm +0 -0
  101. data/maps/Bureaucracy.map +0 -0
  102. data/maps/CityOfSecrets.map +0 -0
  103. data/maps/DDIV.map +0 -0
  104. data/maps/Following_A_Star.map +0 -0
  105. data/maps/Heated.map +0 -0
  106. data/maps/Heroine.map +0 -0
  107. data/maps/History Repeating.map b/data/maps/History → Repeating.map +0 -0
  108. data/maps/Hollywood_Hijinx.ifm +0 -0
  109. data/maps/Janitor.map +0 -0
  110. data/maps/Jigsaw.ifm +0 -0
  111. data/maps/Jigsaw.map +0 -0
  112. data/maps/LGOP.ifm +0 -0
  113. data/maps/Mercy.ifm +0 -0
  114. data/maps/Ninjas_Fate.map +0 -0
  115. data/maps/Pen_and_Paint.map +0 -0
  116. data/maps/Planetfall.ifm +0 -0
  117. data/maps/Planetfall.map +0 -0
  118. data/maps/Plundered_Hearts.ifm +0 -0
  119. data/maps/QuietEvening.map +0 -0
  120. data/maps/Ralph.ifm +0 -0
  121. data/maps/Reliques_of_Tolti_Alph.map +0 -0
  122. data/maps/Revolution.map +0 -0
  123. data/maps/Robots_of_Dawn.ifm +0 -0
  124. data/maps/SavoirFare.map +0 -0
  125. data/maps/Seastalker.ifm +0 -0
  126. data/maps/Seastalker.map +0 -0
  127. data/maps/Sherlock.ifm +0 -0
  128. data/maps/SoFar.ifm +0 -0
  129. data/maps/Starcross.ifm +0 -0
  130. data/maps/Suspended.ifm +0 -0
  131. data/maps/Tangle.map +0 -0
  132. data/maps/The_Lost_Sheep.map +0 -0
  133. data/maps/Unforgotten.map +0 -0
  134. data/maps/Warbler's Nest.map +0 -0
  135. data/maps/Warbler's_Nest.map +0 -0
  136. data/maps/Westminster_Abbey.map +0 -0
  137. data/maps/WinterWonderland.map +0 -0
  138. data/maps/Wishbringer.ifm +0 -0
  139. data/maps/Wishbringer2.ifm +0 -0
  140. data/maps/Zork1.ifm +0 -0
  141. data/maps/Zork2.ifm +0 -0
  142. data/maps/Zork3.ifm +0 -0
  143. data/maps/Zork_Zero.ifm +0 -0
  144. data/maps/anchor.ifm +0 -0
  145. data/maps/anchor.map +0 -0
  146. data/maps/atrox.ifm +0 -0
  147. data/maps/awaken.ifm +0 -0
  148. data/maps/babel.ifm +0 -0
  149. data/maps/balances.map +0 -0
  150. data/maps/ballerina.map +0 -0
  151. data/maps/bear.map +0 -0
  152. data/maps/bluechairs.map +0 -0
  153. data/maps/break_in.map +0 -0
  154. data/maps/bse.ifm +0 -0
  155. data/maps/building.map +0 -0
  156. data/maps/change.ifm +0 -0
  157. data/maps/christminster.map +0 -0
  158. data/maps/curses.ifm +0 -0
  159. data/maps/curves.ifm +0 -0
  160. data/maps/deadline.map +0 -0
  161. data/maps/delusions.map +0 -0
  162. data/maps/devours.map +0 -0
  163. data/maps/distress.map +0 -0
  164. data/maps/djinni.map +0 -0
  165. data/maps/dreamhold.map +0 -0
  166. data/maps/drift3.map +0 -0
  167. data/maps/eas.map +0 -0
  168. data/maps/eas2.map +0 -0
  169. data/maps/eas3.map +0 -0
  170. data/maps/edifice.ifm +0 -0
  171. data/maps/fallacy.map +0 -0
  172. data/maps/frozen.ifm +0 -0
  173. data/maps/gamlet.map +0 -0
  174. data/maps/glow.ifm +0 -0
  175. data/maps/guilty_bastards.map +0 -0
  176. data/maps/heist.map +0 -0
  177. data/maps/heroes.map +0 -0
  178. data/maps/inhumane.map +0 -0
  179. data/maps/kaged.map +0 -0
  180. data/maps/library.ifm +0 -0
  181. data/maps/lurkinghorror.map +0 -0
  182. data/maps/metamorphoses.map +0 -0
  183. data/maps/mindelec.ifm +0 -0
  184. data/maps/minster.ifm +0 -0
  185. data/maps/mite.map +0 -0
  186. data/maps/moonmist.map +0 -0
  187. data/maps/muldoon_legacy.map +0 -0
  188. data/maps/muse.ifm +0 -0
  189. data/maps/paperchase.ifm +0 -0
  190. data/maps/party.map +0 -0
  191. data/maps/pawn.map +0 -0
  192. data/maps/photograph.map +0 -0
  193. data/maps/pkgirl.map +0 -0
  194. data/maps/pytho.map +0 -0
  195. data/maps/risorgimento.map +0 -0
  196. data/maps/sherbet.map +0 -0
  197. data/maps/simple.map +0 -0
  198. data/maps/slouch.map +0 -0
  199. data/maps/space_st.ifm +0 -0
  200. data/maps/splashdown.map +0 -0
  201. data/maps/spring.map +0 -0
  202. data/maps/squarecircle.map +0 -0
  203. data/maps/stationfall.ifm +0 -0
  204. data/maps/theatre.ifm +0 -0
  205. data/maps/toonesia.ifm +0 -0
  206. data/maps/tortoise.ifm +0 -0
  207. data/maps/trinity.map +0 -0
  208. data/maps/vespers.map +0 -0
  209. data/maps/vgame.ifm +0 -0
  210. data/maps/wasp.map +0 -0
  211. data/maps/weather.ifm +0 -0
  212. data/maps/windhall.ifm +0 -0
  213. data/maps/worlds.map +0 -0
  214. data/maps/xtcontest.map +0 -0
  215. data/maps/zdungeon.map +0 -0
  216. data/maps/zebulon.ifm +0 -0
  217. data/maps/zerosum.map +0 -0
  218. 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.0'
6
- spec.author = "Gonzalo Garramuno"
7
- spec.email = 'GGarramuno@aol.com, ggarra@advancedsl.com.ar'
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("fxruby", ">= 1.6.0")
22
- spec.add_dependency("pdf-writer", ">= 1.1.1")
23
- spec.extra_rdoc_files = ["HISTORY.txt", "TODO.txt"] +
24
- Dir.glob("docs/*/*")
25
- spec.has_rdoc = true
26
- spec.rubyforge_project = 'ifmapper'
27
- spec.required_ruby_version = '>= 1.8.0'
28
- end
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 = '.' 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 = 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.&nbsp; 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>ggarra AT domain</p>
510
- <p>(Where &quot;domain&quot; is advancedsl.com.ar )<br>
510
+ <p>ggarra13 AT domain</p>
511
+ <p>(Where &quot;domain&quot; is gmail.com )<br>
511
512
  <br>
512
513
  &nbsp;</p>
513
514
 
@@ -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
+ &nbsp;</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
+ &nbsp;</li>
35
+ </ul>
36
+ </li>
37
+ <li><a href="#Starting IFMapper">Starting IFMapper</a><br>
38
+ &nbsp;</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
+ &nbsp;</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
+ &nbsp;</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.&nbsp; 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>&nbsp;</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.&nbsp; 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 &quot;Dungeons and Dragons&quot; or the
84
+ &quot;Choose Your Own Adventure&quot; series of children's books.&nbsp; <br>
85
+ Still, just like any good novel, interactive fiction has evolved into all sorts
86
+ of different styles, genres, and level of interactivity.&nbsp; And you can find
87
+ adventures being developed today in a lot of languages like English, Spanish,
88
+ Italian, German, etc.&nbsp; See the section:&nbsp; &quot;I am new to Interactive
89
+ Fiction.&nbsp; What games would you recommend?&quot;</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.&nbsp; 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.&nbsp;
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.&nbsp; 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
+ &nbsp;</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.&nbsp; 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.&nbsp; 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.&nbsp; 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.&nbsp;
146
+ You can do this by first installing rubygems (what I'd recomment) or by not
147
+ using it.&nbsp; If you want to use rubygems, proceed to the &quot;Using Rubygems&quot;
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>&nbsp;</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.&nbsp;
159
+ All files will be placed inside an IFmapper directory.&nbsp;&nbsp; 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.&nbsp; 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>&nbsp;</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.&nbsp; Rubygems comes
171
+ pre-installed with the One-Click Installer for Windows.&nbsp; 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">&gt; 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).&nbsp; If you don't have fxruby installed, it will get installed for you.&nbsp;
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>&nbsp;</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>&nbsp;</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 &quot;sections&quot;, 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
+ &nbsp;</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).&nbsp; You can also scroll the map using the
215
+ scrollbars around the canvas.<b><font size="4"><br>
216
+ &nbsp;</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-&gt;Options-&gt;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
+ &nbsp;</p>
239
+ <p>&nbsp;</p>
240
+ <p>&nbsp;</p>
241
+ <p>&nbsp;</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-&gt;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.&nbsp; It also allows you to make the connection
262
+ travel in a single direction or in both directions.&nbsp; 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&nbsp; 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>&nbsp;</p>
272
+ <p>&nbsp;</p>
273
+ <p>&nbsp;</p>
274
+ <p>&nbsp;</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-&gt;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
+ &nbsp;</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.&nbsp;
320
+ In those cases, you may want to take advantage of using multiple sections in
321
+ your map.&nbsp; 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-&gt;Sections-&gt;Create
324
+ Section</b> and <b>Map-&gt;Sections-&gt;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-&gt;Sections-&gt;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-&gt;Save</b> or <b>File-&gt;Save
349
+ As</b>.&nbsp; The internal format of IFMapper's maps is the .map format, which
350
+ is binary format.&nbsp; 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-&gt;Open</b>.&nbsp; Besides IFMapper's own
353
+ .map format, IFMapper also supports other popular formats within the IF
354
+ community.&nbsp; 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-&gt;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>&gt; verbose<br>
384
+ &gt; 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-&gt;Automap-&gt;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.&nbsp; 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 &quot;Classic&quot; 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.&nbsp; 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&nbsp;
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.&nbsp; 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-&gt;Display-&gt;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-&gt;Export-&gt;Export to Inform<br>
481
+ File-&gt;Export-&gt;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>&nbsp;</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 &quot;domain&quot; is advancedsl.com.ar )<br>
511
+ <br>
512
+ &nbsp;</p>
513
+
514
+ </body>
515
+
516
+ </html>