EU4 全架空地图 制作教程
通信失常星人
编辑于 2026年04月03日 08:41
收录于文集
共2篇

序言

该教程分为5个部分:

前言、地图生成逻辑和文件功能介绍

序章、所需软件相关

一、地图模型与贴图相关图片的绘制

二、地图地块的生成

三、于现有地图的脚本编辑

河流,树林等次要部分


前言

基础流程介绍

根目录map文件夹下

map文件夹下的terrain文件夹,绿色划线处为基础纹理贴图,红色划线处为四季和水体的后期贴图

一、P社地图模型的生成步骤:

  • 根据heightmap.bmp灰度图上设定的高度生成3d模型,称为高度图

  • 再由terrain.bmp生成基础贴图,称为地形图

  • 最后再和terrain文件夹中的后期贴图文件叠加出来,效果如下图所示:

    该图就是用自己的高度图与地形图生成了模型与基础贴图,但是用了原版的外部贴图,所以看起来比较怪诞。当然最后还有一步河流和树木的生成,之后再说。


二、地图地块的生成:

  • provinces.bmp负责设置rgb与地块大小形状与位置

  • definition.csv负责将rgb地块和ID绑定定义进游戏程序

  • area,region,superregion,continent.txt等文件对地块按id进行分类,这是第三章要讲述的内容。

province.bmp和definition.csv的部分

三、脚本编辑:

    宗教文化发展度贸易地图修正历史政权自治度这些参数这里都称为脚本

    如果要手动编辑文档来实现脚本的修改,那未免太麻烦了,我这里极力推荐工具EU4-Mod-Editing-Tool,将在序章中介绍

政权,贸易地图,发展度,宗教文化,等等一切参数


序章

软件的准备

图像处理工具

这时候不能再靠piant.net那种轻量化工具了,需要大型的图像处理软件

  • 最推荐的当然是PS

  • 开源的图像处理工具GIMP

  • 如果你是板绘高手那就继续用板绘软件也可以,开源的如Krita

    GIMP上的保存相关设置更直观一些

    MapGen

MapGen页面

    MapGen本是钢丝古早版本的地块生成工具,可以根据你提供的图像生成地块,非常简便,不过地块边缘需要个人操刀精修就是了

    现在获取有些困难,故我将其上传到云盘(需要.NET库,不再缀述) 链接:https://pan.baidu.com/s/1hyApDKvlER18vqA5czK1DA?pwd=smab 提取码:smab

谷歌Google Chrome浏览器上的欧陆插件JoroDox

插件启用界面

JoroDox内部界面

    这个插件功能很多,但是其实很多都不好用,这里用它主要是用来生成刚刚提到的地块定义csv表格

(题外话,这个插件还有个功能很好用,就是3d模型的导入和贴图的替换,可以用fbx文件直接生成克劳塞维茨所需的mesh文件,并且可以直接设置纹理和法线贴图的路径,非常好用)

链接:https://github.com/DaanBroekhof/JoroDox

Eu4ModEditor

基本上可以修改/新建所有参数的万能编辑器,用于第三章节(不过发展度可能有点bug)

链接:https://github.com/CzerstfyChlep/Eu4-Mod-Editing-Tool/tree/DateEntries

、总结

  • 图像处理工具:PS/GIMP

  • MapGen

  • JoroDox Tools

  • Eu4ModEditor

  • 文本编辑兼ide:VScode


第一章 地图模型与贴图的相关文件绘制

(需要绘画或PS软件使用基础)

一、高度地图Heightmap.bmp  

最好跟原版的图片大小相同:5632x2048,所有地图文件的大小都要相同且为24倍数

RGB(94, 94, 94)是陆地和海洋的分界线,在画图前最好设置一个如下图的模版来作为蒙版,防止陆地和海洋边缘不明显:

之后画河流图也有用(小声)

想要顺滑的地形的话请善用PS的涂抹功能

图像模式修改

注意!Heightmap.bmp文件应处于灰度模式,保存于8位位图图像文件(.BMP)。GIMP不保存颜色空间信息)

制作完成后用PS的滤镜-3D-法线图功能生成法线贴图,另存为world_normal.bmp


二、地形地图Terrain.bmp  

最好按照这里的两个示例来画地形

最好按照这里的两个示例来画地形

最好先画高度图,再把高度图叠图后,按照高度图画出地形,更加合理和美观

地形RGB颜色板为

  • 平原(86 124 27)

  • 湿润丘陵(0 86 6)

  • 海滩(255 247 0)

  • 山脉(65 42 17)

  • 沼泽/湿地(75 147 174)

  • 草原/旱地(200 214 107)

  • 沙漠(209 169 99)

  • 干旱高地(158 130 77)

  • 干旱丘陵(112 74 31)

  • 雪顶(255 255 255)

  • 浅海(55 90 220)

  • 深海(8 31 130)

    注意!terrain.bmp文件应处于索引模式,保存于8位位图图像文件(.BMP)。颜色表不应改变。GIMP不保存颜色空间信息)

    三、河流地图(map/river.bmp)(可以先留个白底)

    河流地图为索引图片,索引颜色版意义如下

  • 绿: (0, 255, 0) - 一条河流的源头,一条河流只能有一个源头。

  • 红: (255, 0, 0) - 向主流流入源。用于加入多个“源头”路径进入一条河流。要注意,流入源不需要绿色源头像素。

  • 黄: (255, 252, 0 ) - 向外分支河流。用于从一条河流向外分支。

  • 蓝: (0, 225, 255) - 河流用最窄材质。

  • 蓝: (0, 200, 255) - 河流用窄材质。

  • 蓝: (0, 100, 255) - 河流用宽材质。

  • 蓝: (0, 0, 200) - 河流用最宽材质。

示意图 来源:hoi4英文wiki

注意!river.bmp文件应处于索引模式,保存于8位位图图像文件(.BMP)。颜色表不应改变。GIMP不保存颜色空间信息)

四、树木地图(map/trees.bmp)(可以先留个全黑)

    唯一不规定和所有地图大小相同的地图文件,图片越小树林越稀疏,但最好是从原版的树木地图上修改

RGB色板如下

稀疏的棕榈(30  139  109)

茂密的棕榈(18  100  78)

稀疏的树林(76  156  51)

茂密的树林(47  120  24)

稀疏的雨林(150  0  255)

茂密的雨林(88  0  138)

注意!trees.bmp文件应处于索引模式,保存于8位位图图像文件(.BMP)。颜色表不应改变。(GIMP不保存颜色空间信息)


第二章 地图地块生成相关

一、MapGen的使用

MapGen需要的4张图(图三其实不需要,把陆地全涂成橙色就行了)

须知,MapGen是用于钢铁雄心4的工具,所以需要在definition.csv中定义沿海和地形参数,欧陆风云则不需要,所以其实图三的陆地直接全部涂成橙色即可

请打开MapGen文件夹中的范例文件夹,里面有以下范例图片

1.设置陆地,将陆地涂成如图的紫色即可

陆地图片

2.设置地形如上图所说的全涂层橙色,我们只要图片,不要他的csv,我这里比较详细是因为这是生成钢丝图的时候用的)

地形图片

3.设置地块大小指示图片

    生成时,越白的位置地块越大,反之越小,所以需要用高度图p一下就能用在这里了。右下方的参数可以设置阈值和海洋地块的平均大小

大小指示图片

4.设置地界边缘

    在该图上用黑色1像素的线条画出地块边界,黑线最好细化到每个区域(area),并且沿着你设置的地形和河流边缘,这样生成出来的地块边界才会明显和美观(我这里画的很大,只是测试用,最好细化到1/20的大小,大工程)

地界边缘图片

5.导出图片

如图操作,生成之后再点保存

你将获得一个类似下图的图片

地块文件

新建一个mod文件夹,再在里面新建map文件夹,把这个图片重命名为provinces.bmp放进map文件夹,我们之后用。

注意!provinces.bmp文件应处于RGB模式,保存于24位图图像文件(.BMP)。GIMP不保存颜色空间信息)


二、JoroDox Tools的使用

1.打开谷歌浏览器,点插件栏后点击进入JoroDoxTools

2.Setting里设置路径为上一步的mod文件夹

3.Explore栏允许该插件读取文件(ACCESS)之后你将看到一个绿色的map文件夹

点击该文件夹,不用等地图显示完毕

点击Analyze provinces.bmp,就可以生成csv文件内容

复制一个原版的definition.csv文件,用VScode等文本编辑器打开,将网页上的内容全选复制进去替换,并在批量替换选项中把“;?”替换为“”(什么都不要写,就是空,连空格都没有),这样你获得了一个完善的definition.csv文件。


第三章 地图模型与贴图的相关文件绘制

很多机械劳作

一、初始化操作

    找个小程序,生成从1到最后一个地块ID的数字排列,由空格隔开,我这里是用python写了个小程序,用来生成从1到1999的id排序

代码块
JavaScript
自动换行
复制代码
import os
import numpy as np

def creat():
    start = 1  # 起始值
    stop = 1999  # 结束值
    step = 1  # 步长
    sequence = list(range(start, stop, step))
    print(sequence)
    return(sequence)

def main():
    start = 1  # 起始值
    stop = 70  # 结束值
    step = 1  # 步长
    sequence = list(range(start, stop, step))
    print( "Z" , sequence)
    with open('output.txt', 'w') as file:
# 遍历序列并写入文件

        for num in sequence:
            file.write(str(num) + ' ')
            num = "add_to_faction = Y" + str(num)
            print(num)

if __name__ == main():
    # numa = creat()
    # with open('output.txt', 'w') as file:
    # # 遍历序列并写入文件
   
    #     for num in numa:
    #         file.write(str(num) + ' ')
    #         print(num)
    main()
复制成功

1.把本体map文件夹下的那些txt文件复制到你的map文件夹中,

2.打开area文件夹,清除除了random_new_world_area和它的括号以外所有内容,添加一个并把刚刚生成的所有ID复制到括号内

代码块
JavaScript
自动换行
复制代码
begin_area = { 
}
复制成功

3.打开region.txt,清除除了random_new_world_region以外的所有内容,添加一个

代码块
JavaScript
自动换行
复制代码
begin_region = { 
	areas = { 
		begin_area 
	}
}
复制成功

4.打开superregion.txt,同上,添加一个

代码块
JavaScript
自动换行
复制代码
begin_superregion = {
	begin_region
}
复制成功

5.打开climate.txt,清空括号内所有内容,把ID填入arid的括号内

6.打开continent.txt,清空括号内所有内容,把ID填入Europe或者随便一个其他大洲的括号内

7.打开terrain.txt,清空所有括号内ID,把ID填入任意一个陆地地形的terrain_override括号中

二、Eu4ModEditor的使用

外观

1.设置路径和职能

    设置游戏本体和刚刚那个mod文件夹的路径,点击检查

    之后在下方选择都由谁生效,因为我们只设置了地图,所以只把map相关的选项勾选为mod,其他都选Game,最后点击最下方的确认等待加载

(我的mod完成度较高,所以这里勾选上的多,只跟着教程的话只能勾选map相关的选项)  

加载页面

这里你可以看到一些报错,可以帮你Debug。由于分辨率问题,可能会不显示确认按钮,需要双击上框,就能全屏此窗口以看到确认按钮

全屏后的加载页面

2.介绍Eu4ModEditor(路就带到这里了)

这个工具由三个部分构成

1.地块视窗

初始为省份地块颜色视图(我的地块是手画的(悲)),可以点击省份,此时主面板要修改的对象将会改变,也可以按住shift多选

2.视图选择面板,在这里可以设置地图上地块的染色样式,如下图

政治视图

文化视图

地区(area)视图

3.主面板

什么都能改

里面的内容根据点到的省份改变,初始化时的操作再在此面板进行细化。

恭喜你!至此,我们已经完成了架空地图的基础制作!


第四章 杂项

四季贴图和水体贴图

用GIMP保存为dds文件

四季贴图可以让地图在通过透明度改变来表现四季变换的效果,而且也提供地形最上层的贴图,你不仅可以用它来实现树叶的变化和冰雪的出现,也可以用它来实现魔幻效果(血河,黑水诅咒,生化荧光绿)发挥你的想象力。

水体贴图能呈现水体的反射和颜色,最好是用你的高度图为基础制作。

PS:(此教程所用素材多来自我的宫崎骏风之谷的娜乌西卡mod,现在已经转钢丝了,有兴趣可以在贴吧联络我 更新记录贴:https://tieba.baidu.com/p/8497169714)(已停止制作,不想当千古罪人啊)