[Stellaris][群星]Mod制作指南
1. 引言
欢迎阅读本指南,本指南将尽可能全面地介绍群星Mod的制作方法,并以制作一个希灵帝国Mod的形式作为样例。
注:本文中如见“UTF-8”无特别指明的情况下为UTF-8无BOM格式,如带BOM格式记为“UTF-8-BOM”。
目前正在编写中,预计将会在6月间完成。。大概╮(╯▽╰)╭
2. Mod编写规则
- 尽可能进行最小改动(下文将会提到Mod生效机制)
- Mod文件中,文本文件(*.txt)请使用UTF-8编码且不带BOM的格式,否则会出现乱码
- Mod文件中,语言文件(*.yml)请使用UTF-8编码且带BOM的格式,否则会出现乱码
- Mod文件中,脚本文件(*.lua)特殊,请参照原文件格式
- 可以考虑使用版本控制系统(如:Git),在调试过程中,可能出现Mod文件丢失、损坏等情况。
- 最好使用Tab进行缩进
- 可以使用#来进行注释
3.Mod文件结构
1.游戏目录文件结构
如果是Steam正版,游戏的根目录在SteamLibrary\steamapps\common\Stellaris
下
在mod根目录下参照游戏目录文件结构建立相应的mod文件,即可覆盖/增加相应内容。
当然不按照游戏文件结构建立也是可以的,群星的mod生效机制如下:
- 如果文件名与游戏原文件相同,将会覆盖
- 如果为文本文件(*.txt),你可以取任何文件名,放在mod根目录任意位置,游戏将会对文件内容进行融合操作(merge),如遇内容冲突,以文件名升序排列优先
- 如果为语言文件(*.yml),规则同上,请注意文件开头的语言种类语句(下文会说明)
- 如果为脚本文件(*.lua),请注意,只能覆盖,无法融合
具体文件结构详情,请参见:[Stellaris][群星]Mod制作指南-附录
2.Mod目录文件结构
Mod文件通常保存在C:\Users\<Username>\Documents\Paradox Interactive\Stellaris\mod
下(非Windows系统则在~/.local/share/Paradox Interactive/Stellaris/mod
下),但是在游戏根目录下建立mod文件夹,放入其中一样可以生效。
Mod文件夹中的目录结构通常如下:
mod(dir)
- cilin.mod
- cilin(dir)
- cilin.png
- descriptor.mod
- common(dir)
- traits (dir)
- 00_cilin_species_traits.txt
- traits (dir)
- event(dir)
- localisation(dir)
mod目录为根目录
- cilin.mod为mod基本信息文件,纯文本、UTF-8,只在开发时出现,用户使用时会转为descriptor.mod。
- cilin目录为mod文件主目录
- cilin.png为mod封面图片(也可以是其它名字,不过建议和mod目录名相同)
- descriptor.mod为mod描述信息,纯文本、UTF-8,该文件与cilin.mod内容相同,上传创意工坊时自动生成于工坊zip包中,开发时不会出现
- common、traits、event等目录结构同游戏根目录结构
cilin.mod文件格式:
name="CiLin"
path="mod/cilin"
archive="workshop/content/111111/111111111/cilin.zip"
tags={
"Species"
"Spaceships"
"Technologies"
"Total Conversion"
}
picture="cilin.png"
remote_file_id="111111111"
supported_version="1.1.0"
- name:名称
- path:路径(开发者使用,与archive互斥)
- archive:压缩包路径(mod用户使用,与path互斥)
- tags:标签
- picture:封面图片文件名(然而我并没有试验成功过!→_→)
- remote_file_id:上传Steam创意工坊的ID
- supported_version:支持的版本
4.特征
1.种族特征
种族特征就是初始建立文明界面中的天赋啦~当然后期也是可以DNA改造的,默认设置在common/traits/00_species_traits.txt
文件中。
下面将以希灵使徒种族天赋为例,介绍如何编写。
common/traits/00_cilin_species_traits.txt
###############################
# Custom Species Traits #
###############################
# 希灵使徒
trait_cilin = {
# 消耗的属性点
cost = 2
# 排斥的种族特征
opposites = {
# 农耕 节俭 勤勉
"trait_agrarian" "trait_thrifty" "trait_industrious"
# 智慧 天生工程师 天生物理学家 天生社会学家
"trait_intelligent" "trait_natural_engineers" "trait_natural_physicists" "trait_natural_sociologists"
# 极度变通 变通 不适
"trait_extremely_adaptive" "trait_adaptive" "trait_nonadaptive"
# 快速增殖 缓慢增殖
"trait_rapid_breeders" "trait_slow_breeders"
# 才华横溢 聪颖 愚笨
"trait_talented" "trait_quick_learners" "trait_slow_learners"
# 非常强壮 强壮 虚弱
"trait_very_strong" "trait_strong" "trait_weak"
# 游牧 定居 合群 独行
"trait_nomadic" "trait_sedentary" "trait_communal" "trait_solitary"
# 魅力非凡 令人厌恶
"trait_charismatic" "trait_repugnant"
# 顺从者 尊者 耐久
"trait_conformists" "trait_venerable" "trait_enduring"
# 颓废 快速恢复
"trait_decadent" "trait_resilient"
}
# 设置效果
modifier = {
# 食物 能量 矿物
tile_resource_food_mult = 15
tile_resource_energy_mult = 15
tile_resource_minerals_mult = 15
# 工程、物理、社会生产
tile_resource_engineering_research_mult = 20
tile_resource_physics_research_mult = 20
tile_resource_society_research_mult = 10
# 适居性 生长时间 领导者能力等级 领导者经验
pop_environment_tolerance = 20
pop_growth_req_mult = -10
leader_skill_levels = 100
species_leader_exp_gain = 25
# 军队损伤 矿物
army_damage_mult = 40
tile_resource_minerals_mult = 10
# 移民时间 重新安置价格
pop_migration_time = -50
pop_resettlement_cost_mult = -33
# 幸福度 其他种族的幸福 道德分歧 领导人寿命
pop_happiness = 5
pop_other_species_happiness = 1
pop_ethic_shift = -20
leader_age = 10000
# 没有奴隶的能源输出
# pop_eff_wo_slaves = -0.1
# 驻防健康 额外增加的防御工事
garrison_health = 100
pop_fortification_defense = 5
}
}
2.行星特征
行星特征,其实就是种族对行星的喜好以及行星的宜居性!
默认设置在common/traits/00_habitability_traits.txt
文件中,这个设置仅用于改变某种行星的宜居性(对AI也生效)或者在新增行星种类的时候使用。
关于行星特征的修改,将在下文中与新增行星种类一同介绍。
5.事件机制
1.事件类型
在群星中,有如下几种事件类型
- 全局事件(event)
- 国家事件(country_event)
- 行星事件(planet_event)
- 舰队事件(fleet_event)
- 舰船事件(ship_event)
- 派系事件(pop_faction_event)
- 人口事件(pop_event)
# 这是注释
# 全局事件
event = {...}
# 国家事件
country_event = {...}
# 行星事件
planet_event = {...}
# 舰队事件
fleet_event = {...}
# 舰船事件
ship_event = {...}
# 派系事件
pop_faction_event = {...}
# 人口事件
pop_event = {...}
不同类型的事件表示了事件的作用范围,但是这个并不是绝对的,
首先是作用域(Scopes),作用域是指语句中作用对象的类型/范围,不过在群星的事件中,作用域并不是很重要,它只是提供方便和性能上的考虑,实际上在任意类型的事件中,你可以操作各种范围。
2.事件检测时机
群星的事件检测时机有两种:
- 定时检测
- 行为检测
定时检测:
- MTTH事件每月检测一次
- 普通事件(国家事件或行星事件)默认为每隔20天检测一次,该值在
common/defines/00_defines.lua
中设定
NEngine = {
EVENT_PROCESS_OFFSET = 20
},
你可以设置该值为1,这样每天都会检测,只要你的CPU承受得起。╮(╯▽╰)╭
行为检测:在特定行为发生时检测,关于行为节点,定义于
common/on_actions/00_on_actions.txt
文件中。
具体行为节点详情,请参见:[Stellaris][群星]Mod制作指南-附录
注:触发不代表事件生效,触发只是一种“检查”如果不符合触发器或选项所设定的规则,则不会产生效果
3.标记
嗯,标记,flag,也就是喜闻乐见的立旗啦~!
群星中标记的使用非常简单!
# 全局标记建议命名规则:xxx_yyy_global
# 设置全局标记
set_global_flag = xxx_yyy_global
# 移除全局标记
remove_global_flag = xxx_yyy_global
# 检查全局标记
has_global_flag = xxx_yyy_global
# 国家标记建议命名规则:xxx_yyy_country
# 设置国家标记
set_country_flag = xxx_yyy_country
# 移除国家标记
remove_country_flag = xxx_yyy_country
# 检查国家标记
has_country_flag = xxx_yyy_country
# 行星标记建议命名规则:xxx_yyy_planet
# 设置行星标记
set_planet_flag = xxx_yyy_planet
# 移除行星标记
remove_planet_flag = xxx_yyy_planet
# 检查行星标记
has_planet_flag = xxx_yyy_planet
# 舰队标记建议命名规则:xxx_yyy_fleet
# 设置舰队标记
set_global_flag = xxx_yyy_fleet
# 移除舰队标记
remove_global_flag = xxx_yyy_fleet
# 检查舰队标记
has_global_flag = xxx_yyy_fleet
# 舰船标记建议命名规则:xxx_yyy_ship
# 设置舰船标记
set_global_flag = xxx_yyy_ship
# 移除舰船标记
remove_global_flag = xxx_yyy_ship
# 检查舰船标记
has_global_flag = xxx_yyy_ship
# 派系标记建议命名规则:xxx_yyy_pop_faction
# 设置派系标记
set_global_flag = xxx_yyy_pop_faction
# 移除派系标记
remove_global_flag = xxx_yyy_pop_faction
# 检查派系标记
has_global_flag = xxx_yyy_pop_faction
# 人口标记建议命名规则:xxx_yyy_pop
# 设置人口标记
set_global_flag = xxx_yyy_pop
# 移除人口标记
remove_global_flag = xxx_yyy_pop
# 检查人口标记
has_global_flag = xxx_yyy_pop