I kind of wish tactical battle (terrain) had more variation than:
this is a tree
this is a hill
this is flat-land
...
but instead had either various hill types (for various heights) and various tree types (for various plant thickness) ...
OR ... have Elevation scores (z scores) etc ... just from the lowest point in the battlefield.
So This is a mound 5 feet off the ground, or this is a mound 10 feet off the ground, or this is a hill 50 feet off the ground ... something like that.
Now ... obviously this would be easier (Without) tiles ... but I think its still do-able with tiles, just more abstracted.
(aka you can't have a 50 foot hill surrounded by 0 foot plains ... you need at least a 10 foot mount surrounding it on all sides ... unless you wanted an "impassable cliff")
IE elevation changes more than 40 feet in difference become an impassable cliff, and you have to find smoother terrain jumps to proceed.
Terrain will effect Archer's Range, and (effective damage) range will increase or decrease based upon terrain.
Also, some terrain (like forest) will get MORE anti-ranged defense than anti-melee defense.
(relative)Elevation will also play a part in RANGED DEFENSE (but not damage)
If the Target's RELATIVE elevation is lower ... and within Effective range ... Target's defense is slightly reduced for the ranged attack.
If the Target's Relative elevation is higher ... Target's defense is slightly increased within effective range, and greatly increased beyond effective range.
Basically, all (or most) ranged weapons have a max range ... and then a smaller ring of Effective range.
Damage within Effective range is normal (and can make a critical hit) ... Damage outside of Effective range is lowered (as little as half damage) and cannot make a critical hit.
Also ... characters that take PRECISION skills will get a Bonus to Attack within the Effective Range.
Characters that take MARKSMAN skill will not have a penalty when targeting an enemy locked in melee with an Ally.
Edit: Each elevation tile needs at least one Adjacent tile (at lower elevation) that has access to it. (so higher elevation tiles with access doesn't count). Unless the tile is at 0 elevation .... it can be accessed by other 0 elevation tiles. (doesn't need a lower elevation)