点选交错地图
这是正文公式的交互示意;坐标为自选样例,格子没有实际地形。
01研究范围
KOK 的地图在画面上像铺开的菱形格子,逻辑坐标却不能当成一张普通正方形棋盘直接绘制。IKOK 在还原客户端的空间关系时,把服务器坐标、相对视窗和屏幕像素分别处理,这样人物移动、物件位置与鼠标点击才能始终指向同一格。
这篇经验说明 IKOK 当前采用的交错坐标对应方法。它描述画面与已有服务器状态怎样衔接,不把网页窗口大小解释成服务器的可见范围,也不生成游戏地图中尚未取得的地形。
02纵坐标每增加一,画面只下降半个菱形
交错格的相邻行左右错开半格。IKOK 的投影采用菱形宽 80、高 40 个绘图单位,行间距是 20。因此纵坐标相差 1 是相邻的交错行;同一竖直列上下移动一个完整菱形,会表现为纵坐标相差 2。
这组 80、40、20 是网页画布的绘图尺寸,可以等比例调整。真正需要保留的是“半格交错”以及它与逻辑坐标奇偶的关系。改变画面尺寸,不应改动服务器的 X、Y。
目前完整视窗有 21 行:偶数相对行放 11 个格子,奇数相对行放 10 个格子,当前角色固定在相对位置 (5,10)。这是 221 个格子的交错布局,并不是横向、纵向各有 21 个独立坐标的方阵。
03世界坐标怎样变成视窗里的格子
设人物服务器坐标为 (px,py),待显示对象为 (gx,gy),相对行先计算为:
row = gy - py + 10
col = gx - px + 5
若 py 为奇数且 gy 为偶数:col 再减 1再把相对格子投影到画布:
画面 X = 左边距 + col × 菱形宽 + 奇数相对行的半格宽
画面 Y = 上边距 + row × 半格高奇偶修正让玩家换到另一种交错行时,周围对象仍在正确一侧。只写“坐标减去玩家坐标”,短距离看起来可能相近,却会在经过奇偶边界时错半格。
举一个纯示意坐标:玩家在 (100,100) 时,自己落在相对 (5,10);对象 (100,101) 落在相对 (5,11),显示时向右错半格。若玩家来到 (100,101),对象 (100,102) 则要经奇偶修正落在相对 (4,11)。两次都是纵坐标加一,画面上的左右关系却不同。
04八个方向不是八组固定的 X、Y 增量
生物移动消息在 IKOK 中读取原 X、原 Y 和方向码,再调用地图状态更新。横向与竖向的增量固定,四个斜向还取决于移动前纵坐标的奇偶。
| 原 Y 为偶数时的 (ΔX,ΔY) | 原 Y 为奇数时的 (ΔX,ΔY) | |
|---|---|---|
| 0 | (+1,0) | (+1,0) |
| 1 | (-1,0) | (-1,0) |
| 2 | (0,+2) | (0,+2) |
| 3 | (0,-2) | (0,-2) |
| 4 | (0,-1) | (+1,-1) |
| 5 | (0,+1) | (+1,+1) |
| 6 | (-1,-1) | (0,-1) |
| 7 | (-1,+1) | (0,+1) |
这张表对应 IKOK 当前的移动实现。研究脚本路径时,应先按交错格规则理解位置变化,再讨论距离和邻格;不要把每个斜向一律写成 X±1、Y±1。
05同一个格子还可能有不同对象层
人物、地面物品与设施不是同一种对象。IKOK 的地图状态使用 (X,Y,Z) 保存对象,其中人物消息写入人物层 Z=3。这里的层值承担对象分类与管理用途,不应擅自解释成地势海拔。
物件图片可以高出格子、人物武器也可以伸到旁边;这些像素属于美术表现。查找、查看和拾取仍应以真实对象的逻辑位置为依据,不能从图片的外接矩形反推服务器坐标。
06点击时走一遍相反方向
浏览器缩放后,鼠标坐标先从屏幕尺寸换算回画布尺寸,再判断落在哪个菱形内。IKOK 使用相对于菱形中心的归一化距离:横向距离除以半格宽,加上纵向距离除以半格高;结果不大于 1 时,点在菱形内。找到格子后,才把它还原为服务器坐标并交给交互逻辑。
这样,放大、缩小、窗口变化只是显示转换。地图变大不会让角色多看见远处敌人,图片挪动一点也不会改变拾取目标。调试地图时,让格子、对象脚点与命中结果同时可见,比单看一张漂亮截图更容易找出真正的半格偏差。
本篇对应已存在的状态更新与投影源码;所列示意坐标不是玩家位置,绘图参数也不是服务器地图尺度。用于其他客户端或不同版本时,应重新核对移动定义与投影关系。
↗来源与版本
飞梦/17KOK、渔夫与2001年典藏版出现数值或机制冲突时,以飞梦所记相应服务器的后续有效规则为正文依据;同站更新按明确生效日期处理。旧规则保留年代与服别,未明日期的差异就近说明;原资料对照用于追溯。
对照原资料
查看 1 份来源与保存记录
IKOK 与 KOK 客户端对应研究 · 看懂 KOK 的交错地图:坐标、方向与鼠标落点
查看保存记录
- 来源编号
staggered-map-coordinates-20260912- 保存时间
- 2026-09-12
- 项目事实源
- 已核读的协议处理、地图投影与客户端资源表;原创整理
