There are many scenarios extant from the version 5 of Xconq. Many of them are good games despite some of the quirks of version 5 that they had to work around. Converting these scenarios to the new GDL syntax should provide some great new modules and at any rate provide a goldmine of ideas for updated Xconq game modules.
A set of conversion scripts are provided that will help to ease the transition from version 5 to version 7, but they won't save you from learning the new GDL syntax or features. These scripts will NOT generate working games modules, but they will generate valid GDL syntax, and thereby spare you much tedium in conversion.
The first thing to consider is the naming of the files/modules.
There are already some loose guidelines for naming version 7 game
modules (see section Game Module Organization).
Terrain or worlds should be in modules named t-xxx.g
.
These are roughly equivalent to version 5 .map
files. Collections
of units, such as the cities to populate world maps, should be in
files named u-xxx.g
, where xxx
generally identifies which
map they go with in addition to a general identifier (e.g. 1942
).
Name generators are in files of the form ng-xxx.g
, but you probably
don't know or care about these yet. And finally, if you are building
a set of scenarios based on a core set of rules, you should consider a
naming scheme that will link them all together so that players can
find them easily.
Having said all that, let's get on to the conversion. The conversion scripts go somewhat blindly on the assumption that you've split everything up in the "standard" way. That is, assuming that you've got a spiffy big scenario, that it comes in three parts: a period definition, a map and a scenario file. If not, if you've dared to combine some of these files, you should split them manually before starting the automated part of the conversion.
Convert the map using map2g
. You want to use the -o option and your
new t-something name and the -b with a full pathname to the period
file that has the terrain type definitions in it. This allows map2g
to set the default base module and the get the appropriate character
list for creating the map file. The generated world will have its
circumference set to match the width of the generated area,
i.e. it will wrap from side to side.
This is because all maps are cylindrical in version 5.
Next, do a pass over the .scn
file with scn2g
.
Again you should use -o to get the naming the way you want it.
This should leave you with
a very pretty set of units and a very rough hack at a set of victory
conditions (i.e. scorekeepers). The scorekeepers will need to be
completely reworked, since they work rather differently in version 7.
Now the home stretch, convert the .per
file with per2g
.
Keep an eye on the output.
If it complains about "unknown keywords" then you've
probably used one of the more obscure features of version 5. Don't
panic because your obscurity will be preserved--commented out--in the
resulting game module.
Now you have to edit the module and start sorting out the
bits that per2g
couldn't handle. Search for occurances of FIX.
These are lines inserted by per2g
to note places that need
your attention.
per2g
may have done nothing to the line except comment it out,
or it may have done a partial (or partially correct) conversion,
or it may have done a complete and valid conversion but wishes to call your
attention to related forms that can be added.
For this process you are going to need to have the documentation close at hand to make sure you get the syntax right. The best thing to do is read thru this chapter of the manual and then have the Reference Manual chapter on hand while editing the module.
Generally the place to start will be the make
and maker
lines from the old period definition.
These are not converted at all by per2g
(because the machinery has changed so radically in version 7),
but are often essential to being able to start up a game. From there you
can work your way through the rest of the file with frequent references
to the manual and occasional test runs. Check out the debugging tips
in this chapter.