Displays a variety of reports about the objects in the Simutrans pak. e.g.,


-t translation_file   (e.g., path to
-r pak_source_dir     Recursively process *.pak in and under the source_dir
-v                    Verbose


perl -t ~/simutrans-pak128.britain-Std/text/ \
   -r ~/simutrans-pak128.britain-Std/boats/


Originally written in 2009 for the Simutrans forum


Changes one or more hues in a PNG file (as used when authoring Simutrans paks) to other hues, or to player color gradients or alternate color gradients.

The desired changes are specified as a single comma-separated list, without internal spaces. Each component specifies a source color range, a dash, and a destination (output) color range. Components are of this form:


where only the hue and new_hue are required. Tolerance defaults to 10. The forced saturation is ignored when the output is set to player or alternate gradients.

The following switches are available:

-i <input file>
-o <output file>
-p <paksize>
-x <crop single X offset>
-y <crop single y offset>
-M   lists the hues of all (bright) mapcolors [7, 15, etc.]
     and exits
-v   Verbose. Primarily prints an explanation of how the
     components in the change-list were parsed.


./alter_hue -i INFILE -o OUTFILE 20+7-m100,40-180,60-p

(assuming the alter_hue program file has the +x (execute) attribute) which will change:

Alternately color map can be, for example: p-m70,a-m25

which would change:

When converting to player or alternate gradients, an offset level may be specified. A component thus would have the form:

[HUE][+TOLERANCE]-[p|a][L offset_level]

For example,

./alter_hue -i INFILE -o OUTFILE 188+5pL30

would convert hue 188, with tolerance of 5, to player gradient, using an offset level of 30. This would have the effect of darkening the output by about 20% compared to the standard transformation.

Note that Hue is specified in the HSV system. If your modifications seemingly have no effect, please verify that your graphic editing program is displaying HSV.


Only core Perl, plus the Imager module (try: cpanm Imager)