Portal 101:使用 Portal SDK 工具与规则编辑器进行高级创作
2025年10月10日

你的愿景加上我们的 Portal SDK 工具,等于无尽的社区体验可能性。
在《战地风云》系列历史上,我们首次正式揭开游戏的面纱,允许玩家社区使用软件开发工具包 (SDK),创造自己想要的体验。我们看到了大家在《战地风云 2042》和我们的第一个 Portal 版本中所做的出色工作;有了 Portal SDK 工具及其编辑地图的功能,以及 Portal 创建器上规则编辑器的新增功能,接下来会发生什么让我们倍感期待。
话虽如此,我们并没有提供真正类似于大学的整学期课程来涵盖 SDK 工具和游戏设计概念的每一个细节。 相反,本指南详细介绍了首次通过该工具创建自定义体验,一直到将自定义地图导出到 Portal 创建器并使用规则编辑器:
安装 Portal SDK 工具
与 EA 网站上提供的 Portal 创建器不同,Portal SDK 工具软件程序必须下载到 Windows PC 上才能使用。Portal SDK 包括使用 Godot 游戏编辑工具对游戏关卡进行空间编辑所需的所有必要文件,以及帮助你创建自己的自定义游戏规则的示例脚本。
你可以通过单击此处下载该工具;它与 Portal 创建器网站上提供的下载链接相同。
我们不建议或允许在 EA.com 官方网站之外下载任何版本的 Portal SDK 工具。这样做可能会导致你的 PC 出现严重的安全相关问题。请仅从 EA.com 下载经过验证的 Portal SDK 工具及其更新
下载工具后,请打开 ReadMe 文件以完成安装。然后打开它,按照本首次 Portal SDK 工具体验演练进行操作:
Portal SDK 工具 - 地图编辑简要指南

上图:使用 Portal SDK 工具创建的自定义地图示例。
首先,将鼠标悬停在应用程序左上角的“场景”上;单击它,然后从下拉菜单中选择“打开场景”。打开“关卡”文件夹,查看所有可供编辑的地图的名称,然后选择要编辑的地图。
很可能,你会位于地图的可玩区域下方。在显示数字 3D 环境的中央窗口中,这些是你移动空间的主要工具:
- 相机瞄准或“查看” - 右键单击、按住并拖动鼠标光标以瞄准相机。
- 移动 - W、A、S、D 键用于二维移动(向前、向后、向左和向右),空格键进行“向上”移动,即始终是相对于你查看方向的 +90 度。
- 增加或减少移动速度 - 使用鼠标滚轮滚动;向前加速,向后减速。
打开关卡时,其所有对象 - 建筑物、掩体、道路等 - 都处于默认位置,就像在任何常规、经过验证的《战地风云 6》体验中一样。Portal SDK 工具用于执行附加修改;某些对象,如地形和关键建筑物,无法移除。
屏幕底部是你的对象库 - 展开它,然后点击省略号 (...)在库的搜索功能旁边“生成库”。这是获取所有可放置到地图上的对象更多细节的方法。现在你可以将这些对象拖放到地图上。注意:如果你已经运行了 Portal Setup,则无需此步骤。
按“Q”进入选择模式,这是选择对象进行操作或移动的主要方式,然后按“W”在地图中移动对象。当对象被选中时,你还可以按“E”进入旋转模式,使用 WASD 键将对象转向所需方向。如果你希望放大或缩小对象,请查看 3D 平面右侧的检查器窗口,在那里你可以均匀地使对象变大或变小。目前不支持对象的非均匀缩放。
导出并上传关卡到 Portal 创建器

想休息一下稍后完成你的创作?点击应用程序左上角的“场景”选项卡,然后点击“保存场景”以确保保存你的进度。
当你准备发布你的创作时,在右下角窗口(“BFPortal”)中查找“导出当前关卡”按钮。点击它,然后在同一窗口中点击“打开导出”以查看你的创作 - 这个 .JSON 文件就是你要上传到你选择的浏览器上的 Portal 创建器的文件。
如果尚未登录,请重新登录 Portal 创建器,然后选择现有模板进行修改,或者进行创建新体验的过程。
选择“地图轮换”选项卡,你会看到附加 .JSON 文件的选项;图标看起来像一个向下指向打开括号的箭头。在弹出的文件资源管理器窗口中找到该文件,选择它,然后点击打开。现在你应该在 Portal 创建器中看到你的导出关卡!
Portal 创建器中的规则编辑器:界面编辑和 AI 脚本编写

Portal Web 创建器中最先进的功能是规则编辑器,仅适用于自定义社区体验。类似于《战地风云 2042》中的工作方式,但带有新命令,基于逻辑的规则编辑器允许你将游戏内事件和条件(如玩家死亡或与总部距离)链接到触发特定动作。
“规则”的示例是征服模式中占领目标时发生的情况。想想进入目标区域:接下来会发生什么?首先,当你进入目标区域(事件或条件)时,会出现进度轮(动作),并且语音播报说你正在占领目标(另一个动作)。经过预设时间(条件)后,目标区域被占领(动作)。然后,因为目标区域处于你的团队控制下(条件),你会获得积分(重复动作)。
简单吧?规则编辑器有超过 200 个动作,可以实现不可计数的脚本组合,无论是否有机器人。就像所有其他规则编辑器选项卡一样,有工具提示可供遵循;右键单击规则编辑器中的块,然后点击“帮助”以获取更多信息。
AI 脚本编写
就像标准规则一样,AI 行为有自己的条件和动作块,用于修改它们的移动、战斗逻辑等。
对于更复杂的 AI 脚本编写或更复杂的模式,建议创作者使用 TypeScript。以下是一个简单的 AI 移动脚本示例:
[[注意:因为 TypeScript 用英语编写,所有示例代码均为英语。如果你由于与其他脚本代码的潜在冲突而未获得预期结果,你可能需要调整所使用的确切代码。]]
//This spawns a scriptable AI unit function OnGameModeStarted() { mod.SpawnAIFromAISpawner(mod.GetSpawner(1), mod.GetTeam(1)); }
// This is a simple "Follow" behavior that will tell the AI to Stand and Walk to another player's location. async function simpleAIFollowBehavior(player: mod.Player, target: mod.Player) {
// Set the AI Player's stance to Stand. mod.AISetStance(player, mod.Stance.Stand);
// Set the AI Player's Move Speed to Walk. mod.AISetMoveSpeed(player, mod.MoveSpeed.Walk);
// While this AI and the Target player is alive, run this loop which tells the AI to move to the location of the target player. while (mod.GetSoldierState(player, mod.SoldierStateBool.IsAlive) == true && mod.GetSoldierState(target, mod.SoldierStateBool.IsAlive) == true) {
// Call the AIMoveToBehavior on the AI Bot player and have it move to the location of the target player. mod.AIMoveToBehavior(player, mod.GetSoldierState(target, mod.SoldierStateVector.GetPosition));
// Wait for 1 second. await mod.Wait(1); } }
除了这个示例脚本外,其余部分留给你设计。学习游戏开发无所谓正确的方式;无论你决定参加游戏设计和编码课程,还是通过经验和各种互联网论坛学习,我们都相信你能够创建出令人惊叹的自定义体验。
开发者快速提示 - Portal SDK 工具和脚本编写

1. 成为开发者社区的一员。就像任何艺术社区一样,游戏开发在与同伴创作者积极互动时效果会更好。虽然本指南是编辑地图的绝佳起点,但最好的知识来自更有经验的同伴开发者。参与《战地风云》Portal 开发社区,例如官方 Discord,不要害怕提问!
2. 检查你的逻辑(和附件)。当规则编辑器中的规则不起作用时,最常见的两个原因是:其中一个块 - 规则、条件或动作 - 可能未链接回 Mod 块,或者你的规则逻辑不可能实现,例如将 true 条件分配给两个矛盾的值。在测试自定义体验之前,请务必仔细检查这些内容。
3.实验。实验。实验。99.9% 的情况下,你的第一个自定义地图 - 或你的脚本化 AI - 不会完全符合预期。不要气馁;继续编辑和测试,直到你的体验完全符合你的设想。
4. 为社区创作。游戏设计经常引用“用户体验(UX)”;这个概念值得上个完整的大学去学习,但从最简单的角度来说,这是你的玩家在玩你的自定义体验时的感受。用户体验测试可以简单到让朋友、家人或同伴社区成员玩你的自定义体验;邀请他们在游戏中玩耍,记录他们觉得难以理解的部分或阻碍乐趣的障碍,然后在开发最终产品时考虑这些。