【硬核知识】数字领主地图码的结构

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
基于此结构,你可以自己编写程序来创建可用的地图码,快去试试吧()
猜你想搜
数字领主 地图码结构
2
2