概述
玩家可以通过库页面或商店页面轻松访问《异星前哨》的创意工坊,免费订阅其他玩家上传的模组,也可以在此上传自己制作的游戏模组。所谓模组,也就是我们常说的mod,是指非官方制作的修改或增加游戏内容的程序包,例如角色、道具、游戏模式和关卡等,大多数是免费发布,通过扩充游戏内容让玩家们体验加倍快乐。
进入主界面的“其它”页面,可以看到“启动编辑器”和“创意工坊”两项,点击“创意工坊”即可管理已经订阅的mod,上传mod的功能并不在“创意工坊”,而是集成在编辑器内。
《异星前哨》的创意工坊目前仅支持上传游戏内地图编辑器中创作的地图,之后会开放皮肤、语音包等其它类型的模组上传功能。本篇内容会针对内置编辑器进行介绍。
一.创建地图
启动编辑器,点击菜单栏的“新建”或“打开”创建空白关卡或打开已有的关卡文件。新建关卡之后,在“关卡信息”页填写关卡介绍。设置完基本信息记得保存关卡,关卡文件的文件名最好和关卡名一致,这样便于查看。
场景类型:因为是自定义关卡,场景类型只是影响艺术风格,选择喜欢的即可。
关卡描述:展示在创意工坊页面的模组简介,让玩家对该模组的特点有大致了解。
玩法说明:需要包含的玩法信息更为详细,会显示在游戏内供玩家随时阅览。
二. 关卡地图
1. 绘制地形
地形是地图的重要构成部分,“绘制地形”功能允许玩家使用正方形笔刷以格子为单位绘制地形,笔刷大小可以调节,空地相当于橡皮擦。操作时使用左键绘制,右键拖动地图画布,滚轮放大缩小画布,选择笔刷后右键快速取消当前选择。
说是绘制地形,其实除了地形外,还有绘制常驻敌人的异形笔刷。异形笔刷能够将网格设置为指定异形的生成区域,数量不定。为了更清晰地观察放置单位、地形和常驻敌人,可以根据需求单独勾选地图上方的“显示地形网格”和“显示异形网格”。
2. 生成地形
实际操作过程中,直接绘制地形效率较低,适合进行局部修改。因此除非有特殊需求,更推荐使用生成地形功能。该功能能够对各类地形类型分别进行生成和演化,演化会使地形边缘更为平滑,对大块的地形作用比较明显,如果不满意可以点击下方重置按钮清空地形。
起/终点半径:0~200的整数,生成地形的起始/结束位置,数值为网格到地图中心的距离。如图所示,固定半径划出的范围并不是圆形,而是正方形。
生成数量:0~1的小数,数值为生成格数/总格数,数值越大,地形占地越大。
离散倾向:0~1的小数,数值越高越分散,越低越聚集。(离散倾向为1的情况见图)
演化校正值:-1~1的小数,演化中会有地形被平滑成空地,也有个别空地出现地形的情况,变成空地会累积校正值,以此控制地形占比不过分变化。
演化地形次数:0-50的整数,字面意思。
3. 放置单位
放置单位包括功能性单位(士兵、异形之类)、己方建筑和敌方建筑,决定了关卡的初始状态。功能性单位的位置可以随意挑选,建筑则需要对齐网格。需要注意的是,在创建功能性单位时如果勾选了“创建友善类型”这个选项,即便创建的是异形也会是己方单位,反之如果没有勾选,则创建的都是敌方单位。
左键单击要创建的类型,在右侧场景中点击想要的位置创建,连续点击可以连续创建,右键取消创建当前类型。放置有不满意的,在左下方列表和场景点击单位都可以进行选中操作,选中后拖动单位可以调整位置,选中后点击单位列表下方的“删除”可以删除单位。
三. 关卡设计
这一部分是最有意思的,不过友情提醒,编辑过程中记得使用Ctrl+S时常保存关卡文件。
1. 属性编辑
属性编辑集合了所有单位(建筑和战斗单位)的属性参数,用于配合玩法修改,一刀9999就看今朝。对于各项参数的说明在对应参数前的“?”处可以查看,其中特别需要解释的一项是“待汇总资源”,这些资源不会实时结算,而是每8小时汇总一次统一结算。
修改属性不满意时,点击左下方按钮重置当前或所有单位为默认属性。设计地图期间也可以调整个别单位属性,例如扩大迷雾视野,来帮助快速测试。
2. 事件编辑
所谓事件,就是设置一系列的触发器,即当XXX发生时,如果满足XXX条件,则执行XXX行为。理解这个基础逻辑,就能理解如何将需求转化为触发器。
触发器列表中的三类触发器默认设置有些许不同,事件触发器的默认触发事件是开始新游戏时,轮询触发器的默认触发事件是每帧结束时,而定时触发器在条件中设定了默认时间。其实三类触发器本质上没有什么区别,只是分类后更方便管理。自带的“游戏初始化触发器”会在开始游戏时初始化,正常来说保持不动即可。
“事件编辑”是编辑器的唯一难点,但有了模板的辅助事情就轻松很多。模板能够将触发器可视化,便于玩家快速设置,不用到处翻找指令。例如下图中游戏开始时给予初始资源的模板,很好理解,就是【当游戏开始时】,如果满足【无】条件,则执行【发放资源】行为。在模板中,玩家只需要选择发放的资源,而无需关心这些触发条件和发放资源的具体代码指令。
观察模版是学习编写触发器中很重要的方法。对照模版和编辑器的表达式可以看出,AddCreBonus(401, 1)指添加奖励ID:401的单位一个,AddBuildingBonus(20, 1)指添加奖励ID:20的建筑一个,而SystemAddRes({worker = 1}, "system")意为添加系统资源“worker”(即人口)一个,那么其中的参数“system”又指什么呢?
其实不在意这些细节也能正常使用,但想要进一步研究就需要万能的说明文档。点击触发器配置的右上角“数据查询”即可查询所有项目ID和各种表达式的具体说明。由此,我们发现SystemAddRes({worker = 1}, "system")中的"system"会将奖励记录为由“system”发放。
事件中比较核心的是玩家任务,设计一个任务需要【设置任务】/【监测和更新任务进度】/【判断任务成功与否】三步,此处以基础的任务模板,即名称由“任务1”开头的模板4~6号为例。这也是优秀的命名示范,非常清晰,一目了然。
任务1:初始化_击杀异形
● 触发事件:当开始新游戏时(根据需求可通过设置为“当游戏天数/小时变化时”设定为定时任务,相关参数在右侧会有提醒,比如会告诉你day是天数,hour是小时数)
● 条件:无(可指定时间等条件,例如day==1 and hour==1)
● 执行行为:
CreateMissionItem("11", ">=", 10, "击败异形 (%1v/%2v)")
SetMissionItemValue("11", 0)
CreateMission("1", {"11"}, "基础任务")
其中CreateMission("1", {"11"}, "基础任务")指创建id为“1”的任务,名为“基础任务”,该任务包含id为11的子任务,任务id唯一根据需要也可以增加更多的子任务。
CreateMissionItem("11", ">=", 10, "击败异形 (%1v/%2v)")指是创建id为11的子任务,任务是击败异形>=10个,(%1v/%2v)是显示在任务面板上的进度。
SetMissionItemValue("11", 0)指将id为11的子任务进度设置为0,也就是说(%1v/%2v)最开始会显示为(0/10)。
这里的“击败异形”只是显示出来的文字,真正使之成为任务目的的是接下来这步,也就是在击败异形时更新任务进度。
任务1:更新_击杀数量+1
● 触发事件:当单位死亡时
● 条件:IsDuringMission({"1"}) and not cre:IsOwnUnit() (处于id为1的任务期间并且死亡的不是己方单位,根据需求可以更换成更具体的单位)
● 执行行为:ModifyMissionItemValue("11", 1)(id为11的子任务进度+1)
最后一步,在每次任务进度变化时判断任务是否完成。
任务1:判断是否完成
● 触发事件:当任务项的状态变化时
● 条件:IsDuringMission({"1"}) and IsMissionItemComplete("11")(处于id为1的任务期间并且id为11的子任务进度已满)
● 执行行为:DeleteMission("1", true)(id为1的任务完成,删除任务,如果任务失败则将true改为false)
以上就是最简单的任务框架,在此基础上能做出很多拓展,比如限时任务,再比如这边任务1完成后只是简单的删除了任务,实际关卡中也可以发放奖励或者失败后进行惩罚。任务2的模板包含两个子任务,复杂一些,但不多,可以自行观察。任务事件配合对话框触发器是剧情故事的好选择,更多的奇思妙想就等待大家去发掘了。
之前浅画了一个反塔防关卡,邪恶的人类指挥官意图带领军队占领虫虫们的星球,需要在食物耗尽前(一定天数内)击破四座大型防卫虫巢来解除核心塔的超强防御状态,最终破坏控制虫族命脉的核心塔,清除星球上的虫族。
大概设定思路里,越靠近中心的位置敌方越强,并且会有debuff装置,由于占地范围有限,远程攻击建筑的视野范围也会比默认的更低,击破各型防卫虫巢会获取大量奖励以供战力升级。当然,更多的细节例如建筑位置和一些参数还需要调整。
四. 完成关卡
1. 测试关卡
地图完成的差不多了,就可以进入测试阶段。测试关卡需要回到游戏,点击自定义关卡,选择要测试的关卡进行游玩。遇到一眼无法看透的问题可以查看错误文件output_log.txt,该文件位于C:\Users\Administrator\AppData\LocalLow\YCGAME\T15,其中AppData可能是隐藏文件夹,需要额外设置。
2. 上传关卡
测试完成,觉得没什么问题就可以上传到创意工坊和其他玩家分享。在编辑器内进入“创意工坊”界面,此处的Steam创意工坊ID是自动生成的唯一标识,可用于在创意工坊查找该项目,预览图片是在创意工坊显示的项目预览图,自选,表情包也不是不行,随你喜欢。
选择Steam创意工坊可见性,是否公开或者仅好友可见,在更新日志填写关卡的版本信息,点击上传按钮就完成了。后续更新关卡内容时,记得用更新日志记录本次更新的内容,点击上传按钮即可上传当前版本内容。
恭喜你,现在你已经学会制作关卡了,快来试一试吧!