
我们将继续为大家带来第二部分关于一些对模组制作者友好的功能的详细解析,这些功能即将推出。让我们深入了解: 资源断言抑制 [将于1.5版本推出] 在《太阳帝国的原罪》初代中,曾有一个关闭断言的设置。那些喜欢进行奇思妙想创作的模组,其内容往往游走在游戏功能的边缘,因此经常会触发断言,即便这些模组在功能上并无危害。考虑到这一点,我们不希望玩家为了某个模组而关闭断言,之后在游玩原版游戏时遇到问题或崩溃,却因断言未显示而无法了解可能的原因。因此,我们对系统进行了一些调整,并创建了一个独立文件,模组可以包含此文件,只要该模组处于启用状态,就能抑制断言。这简直是两全其美;我会在下方附上示例,以便你了解其工作原理。


一个仅含单一条目的简单文件,它会强制关闭断言功能,停用后则恢复正常行为。对于模组,我们未来可能会考虑为特定功能添加一些小条目,但目前它仅用于断言功能。 2026年推出 打击 craft 容量限制 如果你是一名模组制作者,希望确保你的完全转换模组的每一个元素都尽可能符合原作设定,有什么简单的方法呢?没错,就是强制稀缺性。特别是在打击 craft 方面。这个模组需求相当直接,尽管实现起来有点麻烦(这是我第一次深入研究打击 craft 系统)。不过最终还是取得了成果,现在可以分享给大家了。

其作用是对打击 craft 类型进行基于“种类”的限制。该系统完全可选,但允许你按单舰手动限制每种打击 craft 的数量。这能让你在打造完美、尽可能接近 99.99% 官方设定的模组时获得更高层级的控制权。 航母战机建造的单独选择 如今,“种类”系统在单位建造和建造领域扩展方面的一大局限在于,当你命令航母建造某一“种类”时,实际上是在要求它建造该派系拥有的“所有战机或轰炸机”。这存在一定限制,因为你无法排除任何机型。当你受到这样的限制时,很难打造出完美契合原作设定的装备配置;因此我们找到了一个解决方案,它既尊重当前的运作方式(以确保存档兼容性),又提供了一个不错的可选覆盖功能,让你拥有更多选择。其原理是为用户提供一个字段,用于覆盖航母/机库可建造的星际战机类型。具体操作如下: 方法1:星际战机种类(默认) [c]"carrier": { "base_max_squadron_capacity": 2, "strikecraft_kinds": [ "interceptor", "bomber" ] }[/c] 使用此方法时,航母/机库的建造栏将显示这些“种类”,这意味着它会自动列出该势力已注册的所有战斗机或轰炸机。方法2:特定打击 craft 单位(覆盖) [c]"carrier": { "base_max_squadron_capacity": 0, "strikecraft_kinds": [ "interceptor", "bomber" ], "specific_strikecraft_units": [ "trader_interceptor_strikecraft", "trader_bomber_strikecraft", "vasari_interceptor_strikecraft", "vasari_bomber_strikecraft" ] }[/c] 此替代方法可单独使用,也可与“类型”系统结合使用。它允许对航母/机库可建造的单位进行精确的实际覆盖。现在,模组制作者可以创建10种不同类型的战斗机/轰炸机等,而不必担心它们会出现在每一个建造打击 craft 的界面上。它可以根据你的需求进行定制。粒子网格阿尔法淡出 对于不熟悉它的人来说,这个功能可能看起来有些特别,但实际上它在少数特定场景中非常有用。正因如此,它也成了许多模组制作者颇为期待的功能。本质上,它能让粒子网格实现基于时间的可变透明度。这是一个相对简单的功能,只需在各系统间建立足够的连接机制即可实现,同时还配备了完善的太阳熔炉控制选项,以便你轻松编辑和可视化调整。
这个不需要太多技术数据,只有两个简单的淡入和淡出字段。以秒为单位输入时间,系统会处理剩下的事情。 网格动画 首先我要说明的是,这并非完整的骨骼动画系统。这是我上个月最大的工作,也是至关重要的一项。自《太阳帝国的原罪1》时代以来,任何类型动画面临的最大问题之一就是必须通过粒子系统来实现。这种方式操作繁琐,效果也不尽如人意,而在《太阳帝国的原罪2》中,由于轮廓着色器的存在,粒子系统更是直接不复存在。因此,使用粒子系统始终是一种权衡。你获得了动画效果,却失去了实际物理模型的呈现。现在这已经算是一个基本解决的问题了;我们仍在进行反复检查,以确保使用该功能不会产生连锁反应,尤其是在在线或多人游戏中(不同步问题真的很让人头疼)。不过,我们已经可以进行演示,向大家展示当它最终实装到游戏中时会是什么样子。在我们展示那些超酷的视频之前,先来讲一些技术细节,让大家熟悉这个系统的工作原理。这是组件系统的一次相当大的扩展(对于不熟悉术语的玩家来说,组件指的是生成在舰船——尤其是泰坦或星港——上的单位物品)。它们是在特定条件下附着于舰船或建筑的独立模型。现在,你能做的不仅仅是附着它们了。
这是[c]in_phase_jump_or_charging[/c]的演示。索瓦的舱体已全部设置为组件。除了控制战斗机在动作完成前禁止发射外,舱体的移动完全是出于美观考虑。当接近井边缘时,索瓦的引擎将开始充能,飞行舱会降下——就像开场过场动画中那样。这是我们的最终目标。 以下是当前限制条件的基本列表: [c]"child_meshes": [ { "mesh_alias_name": "component_flight_pod_0", "mesh_point": "child.""component_flight_pod_0","is_weapon_effects_destination": true,"will_transition_positions": true,"state_constraint": "in_phase_jump_or_charging","default_state_index": 0,"transition_time": 1.5,"transition_delay": 1.2,"position_states": [{"state_name": "pitched_up","position_offset": [0.0, 0.0, 0.0],"rotation_offset": [1.0, 0.0, 0.0, 0.0, 0.766044, -0.642788, 0.0, 0.642788, 0.766044]},{"state_name": "folded_down","position_offset": [0.0, 0.0, 0.0], "rotation_offset": [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] }] },[/c] 以下是实际应用的演示。对于此约束,状态的命名很大程度上由用户决定;两个状态名称都可以随意命名,而[c]default_state_index[/c]将决定哪个是舰船的默认状态。在这个例子中,默认位置是0,即向上,当触发约束时,驾驶舱将按设定的间隔移动到下一个位置。当需要错开执行时,还存在过渡延迟。我们还加入了功能,可延迟战斗机的发射,直到过渡完成。 [c]"block_launch_when_child_meshes_transitioning": true,[/c]
这是[c]on_unit_construction_complete[/c]的演示。我复用了“苏瓦”号其他地方的一些舱门,将它们都设置为组件,当建造进度达到98%时,舱门就会打开。以下是用JSON表示的样子。 [c]{ "mesh_alias_name": "component_bay_door_0", "mesh_point": "child.component_bay_door_0", "is_weapon_effects_destination": true, "will_transition_positions": true, "state_constraint": "on_unit_construction_complete", "default_state_index": 0, "transition_time": 1.0, "transition_delay": 0.0, "construction_progress_threshold": 0.98, "position_states": [ { "state_name": "关闭", "position_offset": [0.0, 0.0, 0.0], "rotation_offset": [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] }, { "state_name": "开启", "position_offset": [18.0, 0.0, -10.0], "rotation_offset": [0.866025, 0.0, -0.5, 0.0, 1.0, 0.0, 0.5, 0.0, 0.866025] }] }, { "mesh_alias_name": "component_bay_door_1", "mesh_point": "child.""component_bay_door_1","is_weapon_effects_destination": true,"will_transition_positions": true,"state_constraint": "on_unit_construction_complete","default_state_index": 0,"transition_time": 1.0,"transition_delay": 0.0,"construction_progress_threshold": 0.98,"position_states": [{"state_name": "closed","position_offset": [0.0, 0.0, 0.0],"rotation_offset": [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]},{"state_name": "open","position_offset": [-18.0, 0.0, -10.0], "rotation_offset": [0.866025, 0.0, 0.5, 0.0, 1.0, 0.0, -0.5, 0.0, 0.866025] }] }] 过渡效果的时长有相关控制选项:包括过渡时间、延迟时间和构建阈值。同样,状态名称完全由用户自定义。
以下是[c]后坐力技能[/c]的演示,通过为杜诺夫级战舰侧炮射击时的动画进行测试。 [c]{ "mesh_alias_name": "component_side_cannon", "mesh_point": "child.component_side_cannon", "is_weapon_effects_destination": true, "will_transition_positions": true, "state_constraint": "ability_recoil", "default_state_index": 0, "transition_time": 0.15, "transition_delay": 0.0, "position_states": [ { "state_name": "rest", "position_offset": [0.0, 0.0, 0.0], "rotation_offset": [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] }, { "state_name": "后坐力", "position_offset": [0.0, 0.0, -15.0], "rotation_offset": [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] }] },[/c] 这是一种相当简单直接的方法。用户可以控制状态名称以及状态之间的切换。
这是[c]is_unit_factory_idle[/c]和[c]is_unit_factory_building[/c]的演示。当未进行任何建造时,物体将停留在一个位置;当建造开始时,它会先移动到下一个位置,然后再开始建造。 [c]{ "mesh_alias_name": "component_scaffold_0", "mesh_point": "child.component_scaffold_0", "is_weapon_effects_destination": true, "will_transition_positions": true, "default_state_index": 0, "transition_time": 0.5, "transition_delay": 0.0, "position_states": [ { "state_name": "is_unit_factory_idle", "position_offset": [0.0, 0.0, -1030.0], "rotation_offset": [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] }, { "state_name": "is_unit_factory_building",[/c]
2026-02-13 09:00:32 发布在
Sins of a Solar Empire II
说点好听的...
收藏
0
0
