首页 游戏攻略 正文

《OW》地图工坊生化模式制作指南

OW守望先锋的地图工坊一曝光就引起了大量讨论,地图编辑器将会给游戏带来无限可能。下面就给大家带来OW地图工坊生化模式制作指南,看看如何用OW地图工坊做出来一个生化模式吧。

《OW》地图工坊生化模式制作指南

本文将介绍如何从零开始创造一个“生化模式”——相信很多人都玩过CSOL的生化模式。在阅读本文前,建议你先简单阅读[官方说明],对地图工坊有初步了解,或者进入游戏,简单看看官方的几个示例。

选择基本模版

OW基本模式有:推车、占点、AB点、混合。除此之外,还有个人死斗、团队死斗、突击模式。我们先想一下,哪个模式最合适?因为我们需要动态的修改敌对关系,所以我们只能选择个人死斗作为基础模式。

从基本功能开始

如何走出第一步?我建议从基本功能开始。“生化模式”的基本功能应该是感染。这个过程是什么样的?

僵尸抓了人一下

把人变成僵尸

所以,我们应该有一个这样的规则:

事件:玩家受到伤害

条件:受伤玩家是人,攻击方是僵尸

动作:受伤玩家变成僵尸

如何判断玩家是僵尸还是人类?考虑到人类英雄可能不止一个,用英雄来判断不是一个好的选择。我们可以用一个玩家变量(例如B)来标记一个玩家是人类还是僵尸,那么条件就是:

玩家变量(事件玩家, B) == 真

玩家变量(攻击方, B) == 假

动作:

设置玩家变量(事件玩家, B, 假)

开始强制玩家选择英雄(事件玩家, 英雄(僵尸英雄))

修改玩家分数(攻击方, 1)

完善整体框架

我们想想这个模式框架还要些什么:

倒计时后随机母体僵尸

获胜判定

倒计时后随机母体僵尸

查询手册,我们知道有一个值是“总计消耗时间”。它似乎和我们的要求一致。但仔细想想:它包括了准备时间和攻防转换时间。这和我们的要求有很大差别。目前没有直接能用的值,我们只能用变量来模拟:

有一个变量,一开始是30

游戏开始后,每秒将它-1

当它是0时,就代表时间到了

于是,我们写出这样一个规则:

事件

持续 - 全局

条件

游戏正在进行中 == 真

全局变量(C) >= 0

动作

根据条件跳过(比较(全局变量(C), >, 0), 3)

设置全局变量(Z, 数组随机值(所有玩家(所有队伍)))

设置玩家变量(全局变量(Z), B, 假)

开始强制玩家选择英雄(全局变量(Z), 英雄(僵尸英雄))

修改全局变量(C, 减, 1)

等待(1, 无视条件)

如条件为“真”则循环

当然,这只是最核心的部分,你可以加上如倒计时提示等功能,来改善游戏体验。

获胜判定

有两种获胜情况:

僵尸感染了全部人类,僵尸获胜

人类坚持到了最后一秒,人类获胜

考虑到游戏中可能有玩家进入、退出,我们最好这样判断:

事件

持续 - 全局

条件

游戏正在进行中 == 真

全局变量(C) < 0

空数组 == 已过滤的数组(所有玩家(所有队伍), 玩家变量(当前数组元素,B))

动作

宣告玩家胜利(全局变量(Z))

事件

持续 - 全局

条件

游戏正在进行中 == 真

全局变量(C) < 0

比赛时间 <= 0.200

空数组 != 已过滤的数组(所有玩家(所有队伍), 玩家变量(当前数组元素,B))

动作

设置全局变量(Y,数组中的值(已排序的数组(已过滤的数组(所有玩家(所有队伍), 玩家变量(当前数组元素,B)), 分数(当前数组元素,B)),0))

宣告玩家胜利(全局变量(Y))

完善游戏逻辑

这个时候我们的“生化模式”已经可以玩了!但是当你作为第一批玩家试玩时,你会发现少了一些东西:

有队友伤害

没有击退效果

僵尸不能自己回复生命值

僵尸死亡没有自动复活

队友伤害

我们只要保证同类型的玩家间无法互相伤害:

事件:玩家受到伤害

条件:玩家变量(事件玩家, B) == 玩家变量(攻击方, B)

动作:设置受到伤害(事件玩家, 0)

击退效果

我们想一下CSOL中是什么样的:

僵尸一瞬间的移动速度变得很慢

往人类-僵尸的方向上移动一小段距离

因此,我们可以写出这样的规则:

事件

玩家受到伤害

双方 全部

条件

玩家变量(事件玩家, B) == 假

玩家变量(攻击方, B) == 真

动作

设置移动速度(事件玩家,10)

施加推力(事件玩家,向量(位置(攻击方), 位置(事件玩家)), 3,至地图, 取消相反运动)

等待(0.500, 无视条件)

设置移动速度(事件玩家, 100)

僵尸回复生命值

CSOL中有一个有意思的设定:僵尸在原地停三秒钟,就可以回复生命值,并且原地跳跃不算移动。我们不能直接知道玩家在几秒内有没有动,也不知道玩家几秒前的坐标。但我们可以换一个思路:我们每秒记一下玩家的位置。如果X、Z坐标与上一秒相同,那么我们就可以给计数器+1。计数器>3时,就可以给玩家回复生命值。

事件

持续 - 每名玩家

双方 全部

条件

玩家变量(事件玩家, B) == 假

动作

// 标记玩家的X坐标、Z坐标与上一秒钟的坐标是否相同

设置玩家变量(事件玩家,G, 比较(X方向分量(位置(事件玩家)), ==, 玩家变量(事件家,D)))

设置玩家变量(事件玩家,H, 比较(Z方向分量(位置(事件玩家)), ==, 玩家变量(事件家,E)))

// 如果任意一个坐标不相同,则跳过下一条给计数器+1的语句

根据条件跳过(或(非(玩家变量(事件玩家, G)), 非(玩家变量(事件玩家, H)), 1)

修改玩家变量(事件玩家,F, 加,1)

// 如果两个坐标都相同,则跳过下面重置计数器与坐标的语句

根据条件跳过(与(玩家变量(事件玩家, G), 玩家变量(事件玩家, H)), 3)

设置玩家变量(事件玩家, F, 0)

设置玩家变量(事件玩家, D, X方向分量(位置(事件玩家)))

设置玩家变量(事件玩家, E, Z方向分量(位置(事件玩家)))

// 如果计数器 < 3 或 玩家达到最大生命值,则跳过回复生命值的语句

根据条件跳过(或(比较(玩家变量(事件玩家, F), <, 3), 比较(最大生命值(事件玩家), ==, 生命值(事件玩家))), 1)

治疗(事件玩家,无,180)

// 等一秒后继续检查

等待(1, 无视条件)

如条件为"真"则循环

# 僵尸死亡自动复活

OW本身就提供了重生的函数,并且同时支持原地重生和随即地点重生,因此我们的规则也非常简单:

事件

玩家阵亡

双方 全部

条件

玩家变量(事件玩家, B) == 假

动作

重生(事件玩家)

初始化规则

初始化规则并不是一个一开始就设计好的,或者说单独存在的规则。它服务于我们的其他规则。例如,在上面的那么多规则里面,我们需要初始化一些变量:

全局变量C默认是倒计时秒数

玩家变量B默认是真

玩家变量F默认是0

我们将初始化规则写成两条,一条是全局规则,一条是玩家规则。事件分别是“持续 - 全局”和“持续 - 每名玩家”。原因是,“持续 - 全局”中不能使用“事件玩家”,操作每名玩家非常麻烦。而“持续 - 每名玩家”会对每名玩家都运行一遍,如果把初始化全局变量的功能放在这里面,就有可能引起变量的混乱。

《OW》地图工坊生化模式制作指南

总结

目前为止,我们的“生化模式”已经基本完成了,我们可以在此基础上完善一些细节,例如不同英雄的击退距离不一样等。这些就留给各位自行发挥了。

各位如果想自己设计一个有意思的模式,请记住:不要急于上手。建议各位仿照本文,将自己的模式分割为很多个小功能,然后一步一步完善。

另外给大家一个个人建议:在编写规则的时候,最好开一个记事本,记一下自己的变量都用来干什么了。否则规则一多,变量维护起来会很麻烦。例如本文中,我们用到了这些变量:

玩家变量B:是否是人类

玩家变量D:最后停止的X坐标

玩家变量E:最后停止的Z坐标

玩家变量F:停止计数器

玩家变量G、H:停止布尔(方便判断)

全局变量C:开始倒计时

全局变量Y:胜利人类玩家

全局变量Z:母体僵尸

相关信息

遗迹2戒指 阿卡里战争指环获取攻略
遗迹2戒指 阿纳斯塔西娅的灵感获取攻略
博德之门3威尔在哪
遗迹2戒指 白卒印记获取攻略
遗迹2戒指 保持封印获取攻略
遗迹2戒指 报应戒指获取攻略
艾尔登法环螳臂刀武器图鉴
遗迹2戒指 暴风之渠获取攻略
遗迹2戒指 编目员珠宝获取攻略
遗迹2戒指 补锌指环获取攻略
遗迹2戒指 超额指圈获取攻略
遗迹2戒指 储备充能器获取攻略
遗迹2戒指 刺客封印获取攻略
艾尔登法环兽人大弯刀武器图鉴
艾尔登法环习武修士火纹刀武器图鉴
博德之门3食人魔号角怎么获得
最终幻想16饰品冰之宝珠“冰河期”怎么获得
艾尔登法环恶兆之子大刀武器图鉴
博德之门3怎么区分鬼婆和梅丽娜
艾尔登法环骑兵马刀武器图鉴