Ancients tileset errors

You can get help here if Freeciv doesn't start on your computer, or if you keep getting fatal errors while playing etc.
Post Reply
User avatar
GriffonSpade
Elite
Posts: 578
Joined: Mon Apr 29, 2013 4:41 pm

Ancients tileset errors

Post by GriffonSpade »

Originally posted in http://forum.freeciv.org/f/viewtopic.php?f=8&t=896
I think this probably deserves its own thread. It contains a usable fix for Ancients tileset.

Every MP tileset except ancients is loading in Qt 2.5.4. Perhaps your tileset is set to ancients, and that is why it is crashing as soon as built-in server starts?

In 2.6-r33044 it's also the top option in 2.6 overhead, and when set to overhead it's crashing. Oh, even better, the ancients RULESET does this too! (Though that is likely because it chooses the tileset automatically). Other 2.6 MP tilesets appear to all be working fine.

Worse, it crashes without creating a report or giving an error. I've only seen it do this before when it is trying to load a tilespec with a spec file that doesn't exist.

The different intro file setting isn't the cause, either (Or if it is, not the only one).
Lacking the trident/earth.spec reference isn't the reason either.

Missing a darkness_layer entry isn't it either, it seems.

Ultimately, I fixed them by backporting trident stuff to ensure compatability, leaving only the name/version info, intro image, and units.spec reference as what ancients had. (Those appear to be the only intended differences) Any issues appear to have arisen from (outdated) dependency upon trident files or lacking default references needed for compatability(such as railroads).

ancients.tilespec 2.5 fix

Code: Select all

[tilespec]

; Format and options of this tilespec file:
options = "+Freeciv-2.5-tilespec"

; A simple name for the tileset specified by this file:
name = "Ancients"
priority = 5

; TODO: add more overall information fields on tiles,
; eg, description, authors, colors, etc.

; Basic tile sizes:
normal_tile_width  = 30
normal_tile_height = 30
small_tile_width   = 15
small_tile_height  = 20

; Basic tile style.
type = "overview"
is_hex = FALSE

; Was fogstyle 0 (old iso style)
fogstyle = 2

; Was darkness style 3 (15 sprites)
darkness_style = 4
; Which terrain layer darkness is drawn top of (0-2)
darkness_layer = 0
 
; offset the flags by this amount when drawing units
unit_flag_offset_x = 0
unit_flag_offset_y = 0
city_flag_offset_x = 0
city_flag_offset_y = 0
 
; offset the units by this amount when drawing units
unit_offset_x = 0
unit_offset_y = 0

; offset the city bar text by this amount (from the city tile origin)
citybar_offset_y = 27

; offset the tile label text by this amount
tilelabel_offset_y = 10

; Font size (points) to use to draw city names and productions:
city_names_font_size = 10
city_productions_font_size = 10

; These are special because they get freed and reloaded
; as required:
main_intro_file    = "ancients/intro"
minimap_intro_file = "misc/radar"

; Below, the graphics spec files; must be somewhere (anywhere) in
; the data path. Order may be important for color allocation on
; low-color systems, and if there are any duplicate tags (lattermost
; tag is used).
files =
  "misc/overlays.spec",
  "misc/citybar.spec",
  "trident/tiles.spec",
  "trident/earth.spec",
  "misc/small.spec",
  "misc/governments.spec",
  "misc/specialists.spec",
  "ancients/units.spec",
  "trident/select.spec",
  "misc/flags.spec",
  "misc/shields.spec",
  "misc/cursors.spec",
  "trident/grid.spec",
  "trident/roads.spec",
  "misc/buildings.spec",
  "misc/space.spec",
  "misc/techs.spec",
  "misc/treaty.spec",
  "misc/icons.spec",
  "misc/editor.spec",
  "trident/fog.spec",
  "trident/cities.spec",
  "trident/explosions.spec"


; Include color definitions
*include "misc/colors.tilespec"

; Terrain info - see README.graphics

[layer0]
match_types = "desert", "forest", "grassland", "hills", "jungle", "mountains", "water", "plains", "swamp", "tundra"

[layer1]
match_types = "water", "land"

[layer2]
match_types = "water", "arctic"

; Water graphics referenced by terrain.ruleset
;
[tile_coast]
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"
mine_sprite = "tx.oil_mine"

[tile_floor]
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"
mine_sprite = "tx.oil_mine"

[tile_lake]
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"
mine_sprite = "tx.oil_mine"

[tile_inaccessible]
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"
mine_sprite = "tx.oil_mine"

; Land graphics referenced by terrain.ruleset
;
[tile_arctic]
blend_layer = 0
num_layers = 3
layer0_match_type = "tundra"
layer0_match_with = "tundra"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "arctic"
mine_sprite = "tx.oil_mine"

[tile_desert]
blend_layer = 0
num_layers = 3
layer0_match_type = "desert"
layer0_match_with = "desert"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.oil_mine"

[tile_forest]
blend_layer = 0
num_layers = 3
layer0_match_type = "forest"
layer0_match_with = "forest"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.mine"

[tile_grassland]
blend_layer = 0
num_layers = 3
layer0_match_type = "grassland"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.mine"

[tile_hills]
blend_layer = 0
num_layers = 3
layer0_match_type = "hills"
layer0_match_with = "hills"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.mine"

[tile_jungle]
blend_layer = 0
num_layers = 3
layer0_match_type = "jungle"
layer0_match_with = "jungle"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.mine"

[tile_mountains]
blend_layer = 0
num_layers = 3
layer0_match_type = "mountains"
layer0_match_with = "mountains"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.mine"

[tile_plains]
blend_layer = 0
num_layers = 3
layer0_match_type = "plains"
layer0_match_with = "plains"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.mine"

[tile_swamp]
blend_layer = 0
num_layers = 3
layer0_match_type = "swamp"
layer0_match_with = "swamp"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.mine"

[tile_tundra]
blend_layer = 0
num_layers = 3
layer0_match_type = "tundra"
layer0_match_with = "tundra"
layer1_match_type = "land"
layer2_match_type = "water"
mine_sprite = "tx.oil_mine"

[roads]
styles =
    { "name",        "style"
      "road.road",   "ParityCombined"
      "road.rail",   "ParityCombined"
      "road.maglev", "ParityCombined"
      "road.river",  "River"
    }
ancients.tilespec 2.6 fix

Code: Select all

[tilespec]

; Format and options of this tilespec file:
options = "+Freeciv-2.6-tilespec"

; A simple name for the tileset specified by this file:
name = "Ancients"
priority = 5

; Version numbering so that until freeciv version a.b has stable format,
; version here is some a.b-pre, a.b-dev, or a.b-alpha. The first version
; with the stable format is a.b-0, then a.b-1...
version = "2.6-0"

; Summary and full description of the tileset.
summary = _("Tileset to be used with Ancients ruleset.")
;description = ""

; TODO: add more overall information fields on tiles,
; eg, authors, colors, etc.

; Basic tile sizes:
normal_tile_width  = 30
normal_tile_height = 30
small_tile_width   = 15
small_tile_height  = 20

; Basic tile style.
type = "overhead"
is_hex = FALSE

; Was old iso style
fog_style      = "Darkness"

; Was darkness style "CardinalFull" (15 sprites)
darkness_style = "Corner"
; Which terrain layer darkness is drawn top of (0-2)
darkness_layer = 0
 
; offset the flags by this amount when drawing units
unit_flag_offset_x = 0
unit_flag_offset_y = 0
city_flag_offset_x = 0
city_flag_offset_y = 0

; offset the city occupied sprite by this amount
occupied_offset_x = 0
occupied_offset_y = 0

; offset the units by this amount
unit_offset_x = 0
unit_offset_y = 0

; offset of the normal activity icons
activity_offset_x = 0
activity_offset_y = 0

; offset the cities by this amount
city_offset_x = 0
city_offset_y = 0

; offset the citybar text by this amount (from the city tile origin)
citybar_offset_y = 27

; offset the tile label text by this amount
tilelabel_offset_y = 10

; offset the upkeep icons by this amount from the top of the unit itself.
; The default is the normal tile height, which means that the upkeep icons
; appear below the unit icon if the unit icons are equal to tile height
; (typical in overhead tileset), or overlay lower part of the unit icon,
; if unit icon is higher than tiles (typical in iso tilesets)
;unit_upkeep_offset_y = 0

; Like unit_upkeep_offset_y, but to be used in case there`s only small
; space for the overall icon produced. Defaults to unit_upkeep_offset_y -
; not having alternative layout.
; Set it to overlay lower part of the unit icon instead of taking extra
; space below.
unit_upkeep_small_offset_y = 20

; Font size (points) to use to draw city names and productions:
city_names_font_size = 10
city_productions_font_size = 10

; These are special because they get freed and reloaded
; as required:
main_intro_file    = "ancients/intro"
minimap_intro_file = "misc/radar"

; Below, the graphics spec files; must be somewhere (anywhere) in
; the data path. Order may be important for color allocation on
; low-color systems, and if there are any duplicate tags (lattermost
; tag is used).
files =
  "misc/overlays.spec",
  "misc/citybar.spec",
  "trident/tiles.spec",
  "trident/earth.spec",
  "misc/small.spec",
  "misc/events.spec",
  "misc/governments.spec",
  "misc/specialists.spec",
  "ancients/units.spec",
  "trident/select.spec",
  "misc/flags.spec",
  "misc/shields.spec",
  "misc/cursors.spec",
  "trident/grid.spec",
  "trident/roads.spec",
  "misc/buildings.spec",
  "misc/space.spec",
  "misc/techs.spec",
  "misc/treaty.spec",
  "misc/icons.spec",
  "misc/editor.spec",
  "trident/fog.spec",
  "trident/cities.spec",
  "trident/explosions.spec"

; Include color definitions
*include "misc/colors.tilespec"

; Terrain info - see README.graphics

[layer0]
match_types = "desert", "forest", "grassland", "hills", "jungle", "mountains", "water", "plains", "swamp", "tundra"

[layer1]
match_types = "water", "land"

[layer2]
match_types = "water", "arctic"

; Water graphics referenced by terrain.ruleset
;
[tile_coast]
tag = "coast"
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"

[tile_floor]
tag = "floor"
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"

[tile_lake]
tag = "lake"
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"

[tile_inaccessible]
tag = "inaccessible"
blend_layer = 0
num_layers = 3
layer0_match_type = "water"
layer0_match_with = "water"
layer0_sprite_type = "corner"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "water"
layer2_match_with = "water"

; Land graphics referenced by terrain.ruleset
;
[tile_arctic]
tag = "arctic"
blend_layer = 0
num_layers = 3
layer0_match_type = "tundra"
layer0_match_with = "tundra"
layer1_match_type = "water"
layer1_match_with = "water"
layer2_match_type = "arctic"

[tile_desert]
tag = "desert"
blend_layer = 0
num_layers = 3
layer0_match_type = "desert"
layer0_match_with = "desert"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_forest]
tag = "forest"
blend_layer = 0
num_layers = 3
layer0_match_type = "forest"
layer0_match_with = "forest"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_grassland]
tag = "grassland"
blend_layer = 0
num_layers = 3
layer0_match_type = "grassland"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_hills]
tag = "hills"
blend_layer = 0
num_layers = 3
layer0_match_type = "hills"
layer0_match_with = "hills"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_jungle]
tag = "jungle"
blend_layer = 0
num_layers = 3
layer0_match_type = "jungle"
layer0_match_with = "jungle"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_mountains]
tag = "mountains"
blend_layer = 0
num_layers = 3
layer0_match_type = "mountains"
layer0_match_with = "mountains"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_plains]
tag = "plains"
blend_layer = 0
num_layers = 3
layer0_match_type = "plains"
layer0_match_with = "plains"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_swamp]
tag = "swamp"
blend_layer = 0
num_layers = 3
layer0_match_type = "swamp"
layer0_match_with = "swamp"
layer1_match_type = "land"
layer2_match_type = "water"

[tile_tundra]
tag = "tundra"
blend_layer = 0
num_layers = 3
layer0_match_type = "tundra"
layer0_match_with = "tundra"
layer1_match_type = "land"
layer2_match_type = "water"

[extras]
styles =
    { "name",          "style"
      "road.road",     "RoadParityCombined"
      "road.rail",     "RoadParityCombined"
      "road.maglev",   "RoadParityCombined"
      "road.river",    "River"
      "tx.irrigation", "Cardinals"
      "tx.farmland",   "Cardinals"
      "tx.mine",       "Single1"
      "tx.oil_mine",   "Single1"
      "tx.pollution",  "Single2"
      "tx.fallout",    "Single2"
      "tx.village",    "Single1"
      "base.outpost",  "3Layer"
      "base.fortress", "3Layer"
      "base.airstrip", "3Layer"
      "base.airbase",  "3Layer"
      "base.ruins",    "3Layer"
    }
User avatar
dunnoob
Elite
Posts: 327
Joined: Mon Dec 23, 2013 3:13 am
Location: Hamburg
Contact:

Re: Ancients tileset errors

Post by dunnoob »

GriffonSpade wrote:It contains a usable fix for Ancients tileset.
Okay, I consider this as an experiment, here's what I did:

(1) Go to my .freeciv/patch/REPORT.ME folder, create a new ancients sub-directory with sub-sub-directories old25, old26, new25, new26.

(2) Get ancients with a 2.6 alpha r33170 MP. I already had ancients for 2.5. Copy ancients.tilespec for 2.5 to old25, and for 2.6 to old26. Copy your fixes with name ancients.tilespec to new25 and new26, respectively. Fail: MP claims that it could not install ancients, but I got the wanted ancients.tilespec and simply assume that this is the reason why you fixed it. :!:

(3) Visually compare old+new with windiff.exe as quick plausibility check, no obvious showstoppers, Open a command line window in .freeciv/patch/REPORT.ME/ancients and try diff -u -b old25/ancients.tilespec new25/ancients.tilespec. Looks good, redirect output to 2.5.ancients.tilespec.patch. Repeating this for 2.6 ended up as 2.6.ancients.tilespec.patch.

(4) Go to Gna! freeciv patches, check that I'm still logged in, and click on submit on the sub-menu for patches. Select category rulesets in the web form. Suggest priority 4 between low (3) and normal (5). Recycle thread title Ancients tileset errors as summary, link to this forum thread in the body.

(5) Attach 2.5.ancients.tilespec.patch and 2.6.ancients.tilespec.patch, click on submit. The result was patch #7468. Clean-up, delete old25, old26, new25, new26, and move ancients from REPORT.ME to reported.

Open question, presumably it makes no sense to submit fixed *spec files in diff-format, a complete file with dummy extension *.txt might be better suited. Somebody has to check this anyway, and other folks could submit or download complete files instead of patches.

It could be also faster to submit the complete fixes on Gna! directly, and then link to it from here for further discussions, instead of copy+paste from the forum to Gna!, where four tools have to agree on getting it right (= whatever passes as Unicode with MIME type text/plain or even text/x-diff in the forum, in the browser, in a text editor, and on Gna!).
User avatar
GriffonSpade
Elite
Posts: 578
Joined: Mon Apr 29, 2013 4:41 pm

Re: Ancients tileset errors

Post by GriffonSpade »

The fixes actually came about because I was trying to find out why GTK2 was crashing when loading freeland. i noticed 2.5.4 and 2.6 were crashing from ancients as well.

As for GNA, I tried to make an account once and was asked the command for cloning sheep. Haven't looked at again, and since it lost the ability to post anything without being logged in...And then I've normally only got about 2 minutes of internet at a time, just enough to paste a post from notepad and upload a file or two.
User avatar
dunnoob
Elite
Posts: 327
Joined: Mon Dec 23, 2013 3:13 am
Location: Hamburg
Contact:

Re: Ancients tileset errors

Post by dunnoob »

GriffonSpade wrote: I tried to make an account once and was asked the command for cloning sheep.
I got away with one of Orwell's books before I finally gave up and created accounts on Wikia and Gna! in no particular order (and here, later). Somebody filed an Anti-Spam Bot Sheep Cloning Device support request. :lol:

Sadly create account doesn't help against determined spammers, as users 665 + 666 + 667 + 668 just demonstrated with (meanwhile deleted) 901 posts in a forum here. :(
Post Reply