【第3章-第3节】实战—其他常见问题分析

一、本节说明和用法指导

专刊马上进入尾声了,本节将会对剩下的一些笔试,面试中常出现的问题进行归纳总结。
重点题型有两大类:
  • 中小厂常考:游戏逻辑相关,程序向
  • 超级大厂必问:游戏商业化设计
次要的题型主要有两大类:
  • 冷门题型之一:游戏关卡
  • 文案方向类
我们直接进入例题讲解。

二、程序向的游戏逻辑

这类问题其实是算作系统策划方向,但由于其考点几乎和策划思维没多大关系。我便把它新归为一个大类。
由于游戏策划入行后必定会写“程序需求功能案/文档”,而大部分新人策划在初次写“程序需求文档”时出现的问题比较多。所以部分大公司和中小公司会提前考察这部分的能力。
在第1章第3节我也强调了策划的程序方向价值之一:
  • 如何让程序老哥理解自己的需求
所以,此类问题的出题目的,只有一个:
  • 考察候选人的逻辑思维,以及表达能力。逻辑思维这部分则更重点考察的是“逻辑完整性”。
我们来看几道例题:

1.多益网络18年秋招笔试:


显然,第一问是我在前面两节已经归纳的题型,这里就不作讲解。属于玩法设计和差异性分析的一道综合题。
第二问则是本节的题型,考察流程逻辑。
对于“流程式功能”的程序需求文档的制作,一般可以按照以下逻辑思维进行拆解:

⑴找变量

对于流程式的事件或者功能来说,一般有变量作为“标志”,什么意思呢?
对于玩家来说,玩家看到的是游戏的表现,对于计算机来说,计算机只能识别变量。
当策划确定应该做表现的时刻,其背后必定包含一个变量相关式,这个变量相关式是告诉计算机,你应该“做表现”了。
例如,你的体重的变化过程,策划想要在某一时刻告诉你“你超重了”,那么程序需求是什么呢?可以是:玩家体重=80kg,弹窗告诉玩家“你胖了”。

本题中的变量,显然是“善恶值”。因为整个过程是随着善恶值变化而变化的,非常简单。但有些题目的变量并不容易被找到。
另外需要注意,变量的使用范围,例如本题中,杀戮模式下击杀其他玩家

⑵划区间

变量找到了,我们需要想一想整个过程的开始到结束,作为玩家,应该看到哪些“提示(也就是游戏表现)”。
在变量的某一段,玩家可能看到A;在变量等于X值时,玩家可能看到B……
把游戏表现应该发生变化的点找到,把整个过程划分为几个阶段(区间的概念),接下来对每个区间的游戏表现和逻辑进行阐述即可。

⑶流程图制作和分段描述

接下来我们绘制流程图,起点一般为“玩家的输入”。即“变量为什么发生改变”。
然后对流程图进行分段说明。
对于每个区间来说,一般我们需要说明:
  • 开始
  • 过程
  • 结束(下一个开始)

⑷特殊情况

对于一些有限制的变量,我们还需要考虑当游戏状态不满足变量的应用范围时,游戏表现会发生怎样的改变?
我们直接来看参考答案。

⑸参考答案

①找变量

善恶值,前提条件:杀戮模式下击杀其它玩家。

②划区间

我们思考,哪些时候需要有表现呢?
  • 善恶值增加时:每击sha一个玩家,善恶值增加了多少需要告诉玩家。这属于玩家的“反馈”。
  • 善恶值即将达到临界值时:需要在玩家即将被送进监狱之前告诉他这个情况,提醒玩家“别sha了!再sha要受惩罚啦!”。毕竟我们的设计目的并不是惩罚玩家,而是降低恶性行为。
  • 即将达到临界值,怎么个提醒法呢:这个没有标准答案,一般采用从倒数第N个人开始提醒玩家,N值取决于游戏环境了。或者直接定一个N值。
  • 善恶值满了,要进监狱了:进监狱之前需要提示玩家“你该被惩罚了”,不然玩家都不知道为啥进监狱了。
  • 玩家出监狱,善恶值重置时:可以告诉玩家,善恶值规则,别再进监狱了。或者再进监狱,时长要增加之类的规则。

③分段描述(流程图制作)

在前面的第1章第3节,我们知道了基本的前后端交互原理。善恶值达到临界值,是每次善恶值增加时,后端都需要进行判断,而不是简单写一句“达到峰值”。
我们根据分析的逻辑,绘制出流程图,并且配上分段的描述。

我这里给出简单的参考示例(没有绘制完整,可以自己补全):
然后搭配文字,我这里流程图没有绘制完,正常来说,如果绘制完整,也可以不配文字描述,只需要配一些特殊情况说明即可。
在这里考虑到笔试和面试,我给出较完整的文字描述:
  • 玩家击杀其它玩家时,判断是否处于杀戮模式。
  • 若是杀戮模式,记善恶值增加K点,服务器发送信息给前端,给出提示“您的善恶值增加了K点,请小心行事”。
  • 计算当前善恶值M和差值L(最大值减当前值)。
  • 判断M和最大值的关系,若M≥最大值,服务器发送信息给前端,给出提示玩家“您的善恶值已满,即将进入监狱”。
  • 若M<最大值,判断差值L和设计者N的关系,若L≤N,服务器发送信息给前端,给出提示玩家“您的善恶值即将达标,请不要再sha人了!”
  • 玩家出狱时,善恶值重置,给出提示“小心行事,下次再进入监狱时长将加倍”。
一般回答成这样就完全OK了。大家请仔细阅读,体会其中的逻辑关系,并不难。

⑹答题注意事项

在答题时,注意以下几点:
  • 有流程图最好,时间不够画,可以画个简单版的流程图,然后配上文字描述

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

游戏策划0基础求职相关的知识。专刊共计16篇。 我将以个人校招经历和入职后对岗位的理解,详细讲解游戏策划求职中掌握的知识。涵盖基础理解,游戏设计专业知识,游戏设计理论及其应用,校招笔试和面试的试题分析等。多角度的知识讲解,能让你轻松应对游戏策划的校招,收获offer。 校招是一场游戏,实力不一定决定结果,打法和技巧才是秘诀。 目前已超过3000人订阅本专栏!超过百人收获offer。

全部评论
出手顺序: 1. 对玩家速度进行从大到小的列表排序。 2. 定义本次战斗的回合速度常数为速度最快的玩家的速度。 3. 对每一位玩家分别定义回合速度参数,初始为0。 4. 回合开始: 5. 首先每位玩家的回合速度变为当前回合速度加上自身的速度 6. 然后用每位玩家的回合速度除以回合速度常数,进行整除计算,若商等于1,则回合速度变为当前回合速度减去回合速度常数且该玩家加入行动列表,若商等于0,这回合不行动即不需要进行后续处理。 7. 在行动列表中对每位玩家的回合速度从大到小排序,若回合速度相等则参照玩家速度,若玩家也速度相等则二者或多者随机排序。 8. 按照行动合集中回合速度排序出手 9. 战斗计算 10. 回合结束 11. 返回第4步循环 演示 A.Speed = 50,B.Speed = 25 1. 排序:List_Speed = [A, B] 2. 回合速度常数为50, Speed_Turn = 50 3. 回合速度, A.Speed_Turn, B.Speed_Turn = 0 4. 第一回合: 5. 回合速度,A.Speed_Turn = 0 + 50 = 50, B.Speed_Turn = 0 + 25 = 25 6. 判定: A.Speed_Turn/Speed_Turn = 50/50 = 1, 则A.Speed_Turn = 50 - 50 = 0且A加入List_Act B.Speed_Turn/Speed_Turn = 25/50 = 0, 则不操作 7. 行动列表中对每位玩家的回合速度从大到小排序, List_Act = [A] 8. A行动 9. 战斗计算 10. 回合结束 11. 第二回合: 12. 回合速度,A.Speed_Turn = 0 + 50 = 50, B.Speed_Turn = 25 + 25 = 50 13. 判定: A.Speed_Turn/Speed_Turn = 50/50 = 1, 则A.Speed_Turn = 50 - 50 = 0且A加入List_Act B.Speed_Turn/Speed_Turn = 50/50 = 1, 则B.Speed_Turn = 50 - 50 = 0且B加入List_Act 14. 行动列表中对每位玩家的回合速度从大到小排序, 此时A.Speed_Turn = B.Speed_Turn,按照List_Speed的排序,应该A在前,List_Act = [A,B] 15. A行动,然后B行动 16. 战斗计算 17. 回合结束 ....
1 回复 分享
发布于 2020-03-07 12:51
出手顺序: 1. 设定一个初始路程L,假设为100 2. 计算每个玩家在当前速度下执行一次行动所需的时间t(L/速度v) 3. 以t值最小的玩家作为第一个行动,将其的t值设置为0,其余玩家的t值减去该最小的t值,更新t值,并依据t值从小到大排序出手顺序 4. 出手玩家进行战斗结算,同时结算时若对其他玩家有加减速判定,设定加减速率为a,默认为0,加速为正减速为负,则根据新的t值为(t*v)/[v*(1+a)] 更新对应玩家的t值且重新排序 5. 出手玩家回合结束结算,依据当前玩家的速度v(加减速计算后的速度)计算t值(L/v)并进入排序 6. 重复从第三步开始进行结算
点赞 回复 分享
发布于 2023-06-12 18:07 江苏
文案策划的题目在哪里刷呀···到处都找不到XD
点赞 回复 分享
发布于 2020-09-08 17:17
笔试只有文本框怎么做流程图制作
点赞 回复 分享
发布于 2020-03-28 12:41
出手顺序: 回合开始: 1. 结算之前回合的减速buff以及复活因其他玩家技能被复活的玩家。 2. 对生存玩家的速度进行从大到小的列表排序,相等则随机排列。 3. 定义本次战斗的回合速度参数为速度最慢的玩家的速度。 4. 定义一个以(玩家,回合用时)为元组的二维数组。 5. 对每一位玩家分别定义行动时间,行动时间=回合速度参数/该玩家速度。 6. 对每一位玩家分别定义行动次数,行动次数=该玩家速度/回合速度参数,此处为整除。 7. 对每一位玩家分别定义回合用时,回合用时初始为0。 8. 再对每一个玩家的每一次行动分别计算回合用时,回合用时=行动时间*n, n取1,2,...,行动次数,每次输出(玩家,回合用时)的元组并加入二维数组。 9. 在二维数组中对回合用时从小到大排序,若回合用时相等则参照玩家速度列表,玩家速度快的在前。 10. 将排序好的二维数组中的玩家数列输出即为出手顺序排列。 11. 玩家操作及战斗伤害计算,伤害结算规则:玩家先行动并结算此次行动造成的添加buff>治疗>伤害,此时buff只添加状态不进行任何结算,行动结束后结算玩家受到buff影响的治疗>伤害,若此时生命值归0不进行任何判定。 若在轮到玩家操作时角色生命值归0则开始判定: 若玩家能够主动复活自身,进行选择并消耗出手(1)选择复活,玩家复活并清除一切异常buff,(2)不选择复活,则将主动选择复活的选择功能移除并死亡。 若玩家不能主动复活自身,直接跳过出手并死亡。 12. 回合结束,返回循环。 整体是按照一个时间线取节点的思路做的,也能够简单的兼容减速buff和复活机制,这个设计方案导致了 1. 减速buff结算不是按照每次出手实时结算的。 2. 若玩家速度比值在为1:1.9,每一回合只形成先后出手顺序,速度的收益是一个不连续函数。 这些特点能让玩家更简单的进行速度的收益计算,感觉在部分的游戏设计上还是有适用性的。 若是做成完全按时间线完全实时结算同样也有缺点,速度收益过大,也可能会导致玩家在基础属性的选择和战斗技能的选择都严重偏向速度。 还想问一下,这类题目作答的程序向程度要如何把控,例如有时候规则上能写出的循环不是程序能直接完成的,但是按照程序能执行的要求,规则会复杂很多。
点赞 回复 分享
发布于 2020-03-07 16:12
因为题目说了在A:B是2:1的情况下,是A连续两次出手后,B再出手,按日常生活逻辑A的第二次出手和B的出手应该是同时,虽然回合制游戏一定有先后顺序,但是题目强调A的第二次出手要在B之前,此时可以有2种推论:第一,在这种情况下按照速度快的先手,第二,等速度快的全部出手结束速度慢的才出手,虽然知道第二种不太可能,但是在代码设计上明显是要简单很多,故有此问
点赞 回复 分享
发布于 2020-03-07 14:12
想问一下这里若A:B:C:D=4:3:2:1,应该是A连续出手4次,然后B出手3次,然后C出手2次,D出手一次,还是按照ABACBAABCD的顺序,或者说这个顺序本身就是规则设计要考虑的范围呢
点赞 回复 分享
发布于 2020-03-07 13:23
偏题了一点,依照题意应该是一回合多次出手,应该改为以速度最慢的玩家的速度为回合速度常数的思路
点赞 回复 分享
发布于 2020-03-07 12:57

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务