2d游戏的坐标系中,只有表示纵横两个方向的x和y轴。
但在3d游戏里,有z轴这个概念。
当然,《星际尖兵》当中的z轴并不是真正的z轴。
而仅仅是一个表示高度的数值。
游戏的地平面被设定为100。低于这个数值的就是下凹的坑。高过这个数值的便是凸起。
为了减少计算量。并不是地图信息中每个像素都有独立的高度值。
而是借助瓦片地图的“瓦片”这个单位。
每片瓦片元素有自己的高度值。
通过比较相邻的两个瓦片元素的高度差,就可以得到“坡度”这个数值。
游戏中的不同单位有不同的爬坡能力。
通过坡度值可以判定相邻的地图块是否可以通过、通过时要减速多少等等。
爬坡时人类载具的不同仰角,又或者是虫类的不同动作。靠的也不是3d即时演算的结果。
而纯粹是靠制作了各种角度的贴图动画而已。
至于地形信息的存储。
与其使用不直观的数组或结构体。齐东海提供了二十一世纪通用引擎中司空见惯的一种思路。
使用一张图片文件来记录高度值。
通过读取图片中特定像素点的颜色值,把颜色值转换为数字。用以标示地形的高度值。
当然,实际使用时,为了节省运行内存。
这张标示了地形的图片文件并不与游戏地图的像素一一对应。
而是每个像素表示一块“瓦片”。
这样做的好处是负责地图编辑的策划人员无需懂得代码。
只用绘图软件,像绘制等高线地图一样就可以标记出地图的起伏。
实际上,每个《星际尖兵》的用户,都可以得到一份地图编辑器程序。
但是这款游戏的地图编辑器有两种运行模式。
一种是傻瓜式的,只需要编辑地图块和资源等内容即可。
另一种,则可以更细致的编辑地形。甚至通过简单的脚本语言为地图增加特定的事件。
编辑出一张有特殊规则或者故事性的地图来。
既然网络时代已经来临