【硬核知识】数字领主地图码的结构
2025/11/0439 浏览攻略
数字领主地图码由二进制数据经过zlib压缩后base64转码形成,其原始二进制数据按以下形式排列内容:
[Version][Title][Description][Author][DateTime][PlayerNumber][Width][Length][0x00000000][RandomSeat][CycleMap]
[StarMode][0x02000000][Area][BattleField][0x00000000][0x00000000][0x00000000][0xFF030000][0x00000000][0x01000000][Fog]
[OnlineTimePerTurn][OnlineTotalTime][0x03000000][PlayerInfo]
这里出现十六进制数占位的地方,每个数字表示四个字节的值,是目前为止还不清楚作用的位(对地图主体几乎没有影响)
其他位置的字节长度和表示的信息如下:
Version : [4位] 表示地图版本
Title : [字符串] 表示地图标题
Description : [字符串] 表示地图简介
Author : [字符串] 表示地图作者
DateTime : [8位] 表示地图创建时间,值使用时间戳表示,时间原点为0001/01/01 00:00:00
PlayerNumber: [4位] 表示玩家数
Width : [4位] 地图的宽
Length : [4位] 地图的长
RandomSeat : [1位] 是否开启随机出生 1开启0关闭
CycleMap : [1位] 是否开启滚动地图 1开启0关闭
StarMode : [4位] [0x00000000 ThreeStarTurn TwoStarTurn Star]
ThreeStarTurn: [1位]三星回合数
TwoStarTurn: [1位]两星回合数
Star : [1位] 是否开启星星模式 1开启0关闭
Area : [4位] 地图的地块数(等于Length*Width)
BattleField : [nxTile位] 地图中地块和兵的信息,一个Tile表示一个地块,该字段第一个四位表示坐标0处的地块,以此类推,第n个四位表示坐标n处的地块信息
Tile : [4位] [Terrain Belong Strength 0x00000000]
Terrain : [1位] 该值指示地块种类 0虚空1平原2据点3山地4海洋
Belong : [1位] 该值指示地块上兵的所属势力,如果是属于某个势力的兵,这个值与该兵所属势力Player的Seat属性一致,此外,0野生128空地255阻挡
Strength: [1位] 该值指示地块上兵的兵力,如无兵则填入默认值0
Fog : [1位] 是否开启迷雾模式 1开启0关闭
OnlineTimePerTurn: [4位] 联机模式下,每位玩家的步时限制,只能取[15,30,45,60,90,120,180]
OnlineTotalTime : [4位] 联机模式下,每位玩家的局时限制,只能取[60 , 180,300,600,1200,1800,3600]
PlayerInfo : [n*player位]
player : [Seat Name Team Computer Flag]表示一个势力的全部信息
Seat : [4位] 表示势力的行动顺序,首家为1,以此类推
Name : [字符串] 表示当前势力的名称
Team : [4位] 表示当前势力所属队伍,如为队伍k则值为2^(k-1)
Computer: [4位] 表示扮演当前势力的电脑难度,255休闲1普通2困难3疯狂
Flag : [4位] 表示当前势力使用的旗帜编号
上述说明中有一些字段的长度用「字符串」表示,这是数字领主地图码里一种可变长度的结构,「字符串」结构由[字符串长度n]+[字符串内容s]组成,其中「字符串长度」是1字节或2字节,表示字符串的长度,「字符串内容」长度是n字节,表示具体的字符串数据。
当n∈(1,128)时,「字符串长度」为1位,值等于n。
当n∈(128,256)时,「字符串长度」为2位,第二位不重要仅占位(但不是2),第一位值等于n
当n=256时,「字符串长度」为2位,第二位固定是2,第一位值等于256。
此外,使用多个字节表示数字的时候,前面的是低位,比如四位[0x01020000]就表示1+2x16²+0x16³+0x16⁴=513
基于此结构,你可以自己编写程序来创建可用的地图码,快去试试吧()

