《星球探险家》中如何编辑故事?下面小编带来“_17th_”《星球探险家》世界编辑器之故事编辑教程,一起来看吧。
a0.94发布后,现在故事编辑器编出来的剧情已经可以在Custom模式下运行了。
续上一个世界编辑器的教程,由于故事编辑器相对比较复杂,这里楼主只写一个简短的故事编辑器教程,希望能抛砖引玉。
还不知道世界编辑器的童鞋,先看世界编辑器教程
进入故事编辑器界面后,使用File -> New Scenario创建新的故事工程。
Scenario 即 故事工程
这里是创建故事工程界面,填写一个故事名称和工程路径,这个路径必须是一个空的路径。
为了培养良好的习惯,我们把所有的故事工程都放到E:/Stories文件夹下。
创建好故事工程后,你会看到三个页签,分别是 故事主界面,世界列表,玩家阵营配置。
现在画面停留在世界列表:
之前不是做了很多地图么。。 往故事工程里面加一个或几个。
这列表表示这个故事,要用到哪些图
那么我们现在总算是明白了,故事和世界的关系是这样的。。
若列表中某个世界出现【未发布】字样,则需要先将世界发布一下,这样故事编辑器才能加载。
下面介绍如何发布世界。
先暂时关闭故事编辑器,
打开提示【未发布】对应的世界工程,
查看是否有修改需要提交
提交世界地形数据的修改
然后File -> Export Project进行数据导出,路径选默认路径
导出完成后,可以看到【未发布】字样变成了【已发布】
其实刚刚那一堆事情都是在准备世界数据,
直到这个故事需要用到的世界全部是【已发布】为止,其实本教程才刚刚开始
如何决定玩家的出生世界以及初始位置?
打开【玩家势力设置】页签(Scenario -> Scenario Forces)
在这里可以配置势力列表和玩家列表。
玩家列表中,只有Controller属性为Human的,才是人控制的玩家,而其他【玩家】,你可以理解为电脑AI
(不会配置的,可以先直接试试右边的Preset,由于现在只支持单人游戏,所以最好就是Single Player)
下面我们打开世界工程确定出生点坐标
鼠标指上去,小地图下方有坐标,如图分别是 [X, Z] 高度 : Y
在相应的玩家设置中填上初始世界及坐标,格式 W|X,Y,Z W代表世界编号
好!
做了以上步骤后,如果不想要什么故事剧情,只想跑图的,已经OK了,现在你要做的,就是发布故事工程
最后一步:手动拷贝文件
这些官方教程中都有,这里就不啰嗦了。
下面楼主就来介绍如何写一个故事
其实写一个故事很简单,千万不要想得太复杂,无非就是两个概念:任务(Mission),触发器(Trigger)
故事是由任务来连接的
(虽然有些无聊的逻辑你感觉不到那是任务,但它可以是一个【隐藏的任务】)
任务可以在主界面中编辑:
一出来你会看见一个Core Mission,没错,那就是核心任务,整个剧情就靠它驱动,你可以把整个剧情想象成一个很大的任务,这个任务就是核心任务
然后在一个任务中,你又可以通过触发器来运行其他任务。
右键任务块,可以进行【打开】【拷贝】【删除】
双击也可以打开
单击一个任务块,右边有属性可以填。
下面来介绍触发器:
打开任务后,可以在任务中添加触发器。只要任务在游戏中运行起来了,那么这些触发器就全部待命了。
玩过其他游戏编辑器的童鞋们都知道什么是触发器,大同小异
那么星球探险家的触发器运行逻辑是这样的
简而言之,就是
【任务运行起来了】->【里面的触发器待命】->【事件触发】->【若条件通过】->【执行动作】
然后呢,Event(事件),Condition(条件),Action(动作)是可以由我们自由组合的
官方提供的游戏事件有:
TICK CYCLE - 每帧触发
MISSION BEGIN - 某个任务开始时触发
MISSION END - 某个任务结束时触发
GOAL ACHIEVE - 某个任务目标达成时触发 (后面还有相应介绍)
SELECT QUEST - 玩家选择某个NPC身上的某个对话时触发(后面还有相应介绍)
CHOOSE - 玩家做出某个选择时触发(后面还有相应介绍)
INTERACTION - 玩家与物体右键交互时触发
DEATH - 某个东西死亡时触发
DAMAGE - 东西A受到东西B攻击时触发
USE ITEM - 玩家使用物品时触发
PUT OUT ITEM - 玩家将某个物品从背包中拖出时触发
TIME OUT - 某个计时器时间到触发(后面还有相应介绍)
SLEEP - 玩家睡下时触发
WAKEUP - 玩家醒来时触发
CHANGE EQUIP - 玩家改变身上任何装备时触发
TAKE UP EQUIP - 玩家进入攻击状态时触发
PUT BACK EQUIP - 玩家退出攻击状态时触发
CUSTOM UI - 每帧触发,用于画自定义界面(后面还有相应介绍)
CUSTOM UI EVENT - 当玩家自定义界面的事件触发时触发(后面还有相应介绍)
以后官方可能还会提供更多的事件模板
官方提供的游戏条件有:
ALWAYS - 总是成立
NEVER - 总是不成立
MAYBE - 可能成立(可以设置概率)
COMPARE - 可以用该条件比较两个数的大小
GOAL ACHIEVED - 任务目标是否达成
POSITION - 检查某个物体的位置是否满足条件
ROTATION - 检查某个物体的旋转是否满足条件
DISTANCE 3D/2D - 检查某两个物体之间的距离是否满足条件(2D则忽略高度差)
LOOK AT 3D/2D - 检查某个物体是否(不)对着某个物体
OWN ITEM - 检查玩家背包的物品数量是否满足条件
STOPWATCH - 检查计时器秒数是否满足条件
HATRED - 检查仇恨关系是否满足条件
STAT - 检查某个对象的状态(如血量)是否满足条件
SLEEPING - 检查玩家是否在睡觉
EQUIPMENT - 检查玩家是否穿上某件装备
EQUIPMENT USING STATE - 检查玩家是否(不)处于拿起武器的攻击状态
WORLD - 检查玩家是否处于某个世界
以后官方可能还会提供更多的条件模板
官方提供的游戏动作有:
RUN MISSION - 开始运行一个任务
END MISSION - 结束一个任务,附带任务结果,如完成,失败,放弃。
(前面说过,一出来只有核心任务是正在运行的,其他任务需要靠调用这两个动作手动运行!)
SET ITEM GOAL - 设置一个以物品数量为依据的任务目标
SET KILL GOAL - 设置一个以杀怪数量为依据的任务目标
SET BOOL GOAL - 设置一个(是/否)的自定义任务目标
UNSET GOAL - 注销一个任务目标
WAIT - 等待数秒
ADD QUEST - 往NPC身上添加一个对话
REMOVE QUEST - 从NPC身上删除一个对话
BEGIN CHOICE GROUP - 开始一个选项分支组
ADD CHOICE - 添加选项
END CHOICE GROUP - 提交给玩家选择
(这三个可以实现比如有个人叫你去杀怪,你可以选择去,或不去)
PAUSE / RESUME CONTROLLER - 禁用/重启玩家对角色的控制权
PLAY / STOP ANIMATION - 播放、停止动画
PLAY SPEECH - 让某个NPC说话
SET POSE - 设置某个东西的位置和旋转
SHOW / HIDE SYSTEM UI - 显示 / 隐藏某个游戏界面,如人物信息,任务追踪等
MODIFY PACKAGE - 修改物品数量
SET / UNSET STOPWATCH - 设置/注销计时器,计时器会显示在屏幕上方提示玩家
SET VARIABLE - 设置自定义变量(变量设置后可由条件“COMPARE”来判断大小)
MODIFY STAT - 修改状态值,如血量,最大血量等
KILL - 直接杀死某个单位
CREATE OBJECT - 创建怪物等物体
REMOVE OBJECT - 移除物体(某类)
REMOVE SPECIFIC OBJECT - 移除具体某个ID的物体
ENABLE / DISABLE SPAWN - 开启关闭某个再生点
ORDER TARGET / VECTOR - 向某个AI下达命令,命令目标是另一个对象或坐标
CANCEL ORDER - 取消某个AI上的命令
SHOW TITLE - 展示标题,该标题会在屏幕中部偏上显示
SHOW TIP - 显示提示,该提示会弹出在左上角的提示框中
FAST TRAVEL - 快速旅行
CUSTOM UI STANDARD - 绘制自定义UI(注意:必须在 CUSTOM UI 事件触发时绘制)
CUSTOM UI COLOR - 设置下一个自定义UI的颜色
以后官方可能还会提供更多的动作模板
尼玛终于写完了手已残
接下来,编写故事就变成 “造句游戏” 了
比如什么:当小红受到伤害时,如果小明的血量大于1,小明就说“别怕!我来了!”
怎么样,简单吧
接下来,就要看各位的想象力了
需要再提醒一下的是
1.如果任务没有运行,任务里面的触发器不会运行。
2.任务结束后,里面正在执行动作的触发器不会立即停止,但是所有触发器不再响应游戏事件。
3.如果一个触发器需要多次触发,请将Repeat设置为相应的次数,若需设置为无穷大,填-1
补充一下自定义变量的用法
使用 SET VARIABLE 动作来设置或修改变量值
(将变量 a 的值加1)
注意,在填写变量名 a 的时候,填写到这一行:
然后,再某个时机,你可以判断 a 的值是否大于等于5
使用 COMAPRE 条件
关于条件的Group
如图 (a >= 5 且 b > 7)或者(c = 3)
关于动作的Group
关于事件的Order
如果两个触发器靠相同的事件触发:
那么Order小的那个事件先被触发。
一般不需要关心顺序的事件order就为0,
需要关心顺序,希望较早触发的,设置为负数,希望较晚触发的,设置为正数
PS:不是说把order填得越小,就一定先触发,而是要【相同参数的事件】同时发生,这时order才管用。
如何创建自定义界面
首先前面说了,必须在 CUSTOM UI 事件之下。
然后可以这样写触发器
意思是,如果lose这个变量为真,那么就显示一个红色(#FF0000)的【Start】按钮,按钮的位置是(170,70,120,30),四个数字分别为(X,Y,长,宽),左上靠齐,使用默认样式,
接下来注意了,按钮点击后,会发送OnStartClick事件。
那么如何收听这个OnStartClick事件呢?
接下来可以这样写触发器
若界面事件OnStartClick被触发(也就是点了按钮),条件同上,然后就是点了按钮过后的动作
hit变量设为0,
a设为10,
lose设为false。
当然,我的这些变量另作他用
这是我画的整个界面 Start 只是其中一个按钮。
这个小游戏是你要不断的点 Add number 按钮,每次点击都会把操作数+5,
但是在接下来的9秒内,操作数会被-3,-2,-1
你的目标是让操作数不能小于0,也不能超过30,否则就输了
然后最后看你能点击多少下
最后我点了216下,就输了。。
使用 GOAL ACHIEVED 条件可以判断某个目标是否完成
使用 GOAL ACHIEVE 事件可以捕捉某个目标完成发出的事件