An attempt to improve water and lava animation performance

By allowing one frame's worth of random shift to the animation start times, the load of redrawing water hexes is distributed more evenly across frames instead of all water always getting redrawn in the same frame. The visual impact of having animations in adjacent hexes be one frame apart should be practically imperceptible, although visibility in screenshots might be a legitimate problem.

Transition animations are kept synced, because there can be up to six transition images on one hex so it seems safer performance-wise to draw all transitions in the same frame instead of letting them all get individually shifted.

Also increased the frame durations from 100 to 125.
This commit is contained in:
ln-zookeeper 2017-08-30 09:51:34 +03:00
parent cf5a1b46f8
commit 68de9ece3d
2 changed files with 30 additions and 21 deletions

View file

@ -539,10 +539,10 @@ C*,K*,X*,Q*,W*,Ai,M*,*^V*,*^B*,_off^_usr#enddef
{NEW:WATER_342_180_TILE_FLAGS}
{NEW:WATER_342_180 Ql,Qlf,Mv unwalkable/lava 16}
{NEW:WATER_342_180 Ql,Qlf,Mv unwalkable/lava 16 DURATION=125 RANDOM_START=125}
{NEW:WATER_342_180 Wo,Wog,Wot water/ocean 21}
{NEW:WATER_342_180 Ww,Wwr,Wwf,Wwg,Wwrg,Wwt,Wwrt,Chw,Cm*,Km* water/water 17}
{NEW:WATER_342_180 Wo,Wog,Wot water/ocean 21 DURATION=125 RANDOM_START=125}
{NEW:WATER_342_180 Ww,Wwr,Wwf,Wwg,Wwrg,Wwt,Wwrt,Chw,Cm*,Km* water/water 17 DURATION=125 RANDOM_START=125}
{NEW:WATER_342_180_OVERLAY Wog,Wwg,Wwrg water/overlay-gray -502}
{NEW:WATER_342_180_OVERLAY Wot,Wwt,Wwrt water/overlay-tropical -504}
@ -918,8 +918,8 @@ C*,K*,X*,Q*,W*,Ai,M*,*^V*,*^B*,_off^_usr#enddef
# Double-sided animated transitions for water-to-water and sand-to-water
{NEW:TRANSITION Sm (!,Sm,!,W*,D*) -556 swamp/mud-long FLAG=transition3}
{NEW:WATER_342_180_TRANSITION Wo* (!,Wo*,!,W*,Sm) -550 "~O(50%)" water/ocean 21}
{NEW:WATER_342_180_TRANSITION Ww* (!,Ww*,!,W*,Sm) -551 "~O(50%)" water/water 17}
{NEW:WATER_342_180_TRANSITION Wo* (!,Wo*,!,W*,Sm) -550 "~O(50%)" water/ocean 21 DURATION=125 RANDOM_START=no}
{NEW:WATER_342_180_TRANSITION Ww* (!,Ww*,!,W*,Sm) -551 "~O(50%)" water/water 17 DURATION=125 RANDOM_START=no}
{NEW:WATER_342_180_OVERLAY_TRANSITION Wog,Wwg,Wwrg (!,Wog,Wwg,Wwrg,!,W*,Sm) -503 water/overlay-gray 0.20}
{NEW:WATER_342_180_OVERLAY_TRANSITION Wot,Wwt,Wwrt (!,Wot,Wwt,Wwrt,!,W*,Sm) -505 water/overlay-tropical 0.16}

View file

@ -2160,77 +2160,80 @@ X*#endarg
#arg DURATION
100#endarg
#arg RANDOM_START
no#endarg
[image]
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(0,0,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
is_water=yes
[variant]
has_flag=342x180_water02
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(54,36,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water03
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(108,0,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water04
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(162,36,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water05
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(216,0,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water06
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(270,36,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water07
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(0,72,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water08
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(54,108,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water09
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(108,72,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water10
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(162,108,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water11
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(216,72,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[variant]
has_flag=342x180_water12
layer={LAYER}
name={IMAGESTEM}[01~{FRAMES}].png~CROP(270,108,72,72){MASKIPF}{IPF}:{DURATION}
random_start=no
random_start={RANDOM_START}
[/variant]
[/image]
#enddef
@ -2240,13 +2243,16 @@ X*#endarg
#arg DURATION
100#endarg
#arg RANDOM_START
no#endarg
[terrain_graphics]
[tile]
x,y=0,0
type={TERRAINLIST}
set_no_flag=base
{WATER_342_180_TILE_VARIANTS "" -1000 "" {IMAGESTEM} {FRAMES} DURATION={DURATION}}
{WATER_342_180_TILE_VARIANTS "" -1000 "" {IMAGESTEM} {FRAMES} DURATION={DURATION} RANDOM_START={RANDOM_START}}
[/tile]
[/terrain_graphics]
#enddef
@ -2273,6 +2279,9 @@ X*#endarg
#arg DURATION
100#endarg
#arg RANDOM_START
no#endarg
[terrain_graphics]
map="
, 2
@ -2284,7 +2293,7 @@ X*#endarg
pos=1
type={ADJACENT}
set_no_flag=water_concave-@R0-@R5,water_concave-@R0-@R1
{WATER_342_180_TILE_VARIANTS "~MASK(terrain/masks/long-concave-2-@R0.png)" {LAYER} {IPF} {IMAGESTEM} {FRAMES} DURATION={DURATION}}
{WATER_342_180_TILE_VARIANTS "~MASK(terrain/masks/long-concave-2-@R0.png)" {LAYER} {IPF} {IMAGESTEM} {FRAMES} DURATION={DURATION} RANDOM_START={RANDOM_START}}
[/tile]
[tile]
pos=2
@ -2309,7 +2318,7 @@ X*#endarg
pos=2
type={ADJACENT}
set_no_flag=water_convex-@R0-@R5
{WATER_342_180_TILE_VARIANTS "~MASK(terrain/masks/long-convex-@R0-@R5.png)" {LAYER} {IPF} {IMAGESTEM} {FRAMES} DURATION={DURATION}}
{WATER_342_180_TILE_VARIANTS "~MASK(terrain/masks/long-convex-@R0-@R5.png)" {LAYER} {IPF} {IMAGESTEM} {FRAMES} DURATION={DURATION} RANDOM_START={RANDOM_START}}
[/tile]
[tile]
pos=3
@ -2337,7 +2346,7 @@ X*#endarg
pos=3
type={ADJACENT}
set_no_flag=water_convex-@R0-@R1
{WATER_342_180_TILE_VARIANTS "~MASK(terrain/masks/long-convex-@R0-@R1.png)" {LAYER} {IPF} {IMAGESTEM} {FRAMES} DURATION={DURATION}}
{WATER_342_180_TILE_VARIANTS "~MASK(terrain/masks/long-convex-@R0-@R1.png)" {LAYER} {IPF} {IMAGESTEM} {FRAMES} DURATION={DURATION} RANDOM_START={RANDOM_START}}
[/tile]
rotations=tr,r,br,bl,l,tl