地形数据存储方案
2018-03-24 17:51:35 5 举报
游戏地形存储方案
作者其他创作
大纲/内容
2
3
A0x,y
1
A1x-1,y+(x+1)%2
2,0
3,1
4,0
0
1,3
A4x+1,y-(x+0)%2
0,3
......
理解上就是一个存在六个方向的双向链表结构
A2x-1,y-(x+0)%2
4,2
2,2
3,3
2,1
2,3
.......
这是一个的拓扑结构,它内部包含了所有可以抵达的目标箭头,对于真实世界的完整模拟,与上面方案相比,这个方案更灵活。比如某个方块不能移动到上面,那么地形可以预处理该方块的路径切断。而上面方案则须提前模拟移动到该处后执行判断是否可以移动到上方,然后撤回。缺点是花更多空间换取灵活和时间。比如维护通路状态,比如不能像上面方案那样直接随机访问。优势很简单,模拟真实世界的处理数据交互从理解上最自然,而不是像公式一样跳转然后处理。
A5x+1,y+(x+1)%2
4,1
0,1
以下为逻辑结构
1,1
以直角二维坐标映射到数据中参考一些数学知识,可以直接公式映射周围点面边。假设取(1,2)面来获取周围六个面(0,3)——A1(0,2)——A2(1,1)——A3(2,2)——A4(2,3)——A5(1,3)——A6(也就是逆时针转了一圈)N(1,2)=A1则N=(x - 1,y + (x + 1)%2)N(1,2)=A2则N=(x - 1,y - x%2)可参考下图:面到面的关系注解:(x+1)%2与(x+0)%2实际上就是0和1的关系,取决与x,如果x是奇数则结果为0,反之为1。
A6x,y+1
3,0
A3x,y-1
4,3
以下为物理结构
0,0
1,0
以上为二维存储思路:构建一个二维数值,选取某一边界做起点。以下为一维存储思路:构建一个一维树状数组,从中心起点开始。(完全数学极坐标存储思路面临的各种复数代数转换比较麻烦,而且华而不实,就不在此处说明了。)
3,2
1,2
0,2
0 条评论
下一页