大富翁 3 游戏文件分析(六)

有了 4 planes 的知识,我们这次可以绘制出大富翁 3 的地图了

1 MAP.mkf 文件

我们可以根据之前拆解 mkf 的经验,把 map.mkf 拆分成 56 个小文件, 姑且称之为 smkf,我们来观察一下:

这几个文件最先引起我的注意,首先是 5000 这个很不一般的大小, 然后就跟随了一个体积很大的文件,而且正好是三对,而我们知道, 大富翁 3 里面有三张地图,正好可以对应索引和 tile,感觉是不是立刻接近了答案?

我们先看看大文件的文件内容:

看来这次文件头就没有宽高信息了,不过我们也有办法,因数分解一下:

478080 = 2 × 2 × 2 × 2 × 2 × 2 × 2 × 3 × 3 × 5 × 83

566784 =2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 3 × 3 × 3 × 41

762624 = 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 3 × 3 × 331

我们把共有的部分写到前面

478080 = 8 x 8 x 3 x 3 x 2 x 5 x 83

566784 = 8 x 8 x 3 x 3 x 2 x 2 x 3 x 41

762624 = 8 x 8 x 3 x 3 x 2 x 2 x 331

都有一个 24 x 48 的部分,我们知道,一个 byte 可以表示两个颜色, 所以 tile 的大小就是 48 x 48。

用 4 plane 的画法画一下吧:

看到了空地是不是就感觉放心了?好了,现在我们有了 tile 集, 而且很显然 tile 的个数超过了 256,那么我们需要两个 byte 来引用一个 tile:

5000 / 2 = 2500 = 50 * 50

2 结论

所以我们也知道了地图是一个 50 x 50 的 tile 集,换算成像素就是 2400 * 2400, 开画吧:

这就是台北市的完整地图了,我们可以看到其实上面还有很多空间没有用到, 不过鉴于是游戏的第一张图,小一点也是可以理解。不过这里只是提取了地图的图片, 只用到了 map.mkf 中的六个文件,其他文件派何用处,这里也不得而知。