|
到北京10日余,二次面试均以失败告终。但仍有所得,比如一家公司的笔试中有一题是设计一个合适的经验公式。思索半小时有余,渐渐明晰,遂填于卷上……
今将吾所得之一放在此处,与新手分享,请老鸟指正。
=================================================
题目:请设计一个经验公式,使玩家能在8小时的游戏时间内升到20级(假设玩家在此8小时内的主要活动是打怪获取经验值)。
解:
分析:
1)通常,玩家刚刚进入游戏会比较迫切的想获得一些小小的成就感——这对于鼓励玩家继续玩下去十分重要——如果玩家刚进入游戏就受到过长时间的压抑而不得释放,那么他很可能因受挫放弃这个游戏。但是一味降低游戏各方面的难度(对于有级别设定的游戏,比如升级难度),又会降低游戏的粘性,使玩家在很短的时间内就“通关”了而失去继续游戏的兴趣——不再能获得足够的成就感。因此在经验值(级别)公式的设定上,通常采取使每升一级所需时间越来越长的方式。2次函数可满足以上要求。当然也可以采用3次函数或一些双曲线函数,但双曲线函数通常存在区间限制(当超过一定级别时会使需要的经验值为负值)。
2)但在游戏中玩家角色的能力(杀怪效率等)要随等级提升而不断增加。为防止玩家始终打最低级的怪物,需要在游戏中设置“经验惩罚”或使怪物死亡所提供经验值随怪物等级而增加。同时保证玩家无法过多的越级打怪(比如命中率惩罚或伤害惩罚等)。尽量使玩家只有打与其同等级的怪才能获得最高的升级效率。
根据以上分析:
1)设:玩家杀死一个同等级怪物所花的平均时间(包括找怪、跑动所花的时间)为30秒,得:
8小时内玩家大约可以杀1000只同等级怪物。
设杀怪数量关于玩家等级(lv)的公式为:sum=a*lv^2+b,根据等级为1时经验值为0(需要杀死0只怪),以及等级为20时需要杀1000只同等级怪可列出方程组,求解得:a略等于2.5,b略等于-2.5,即sum=2.5*lv^2-2.5。
据此,我们可以得到从(lv-1)级升至lv级所需杀死等级为(lv-1)的怪物数量为5*lv-2.5(比如从1级升到2级需要玩家杀死5*2-2.5=7.5只1级怪)。
2)再设杀死级别为mlv的怪物所获得的经验值10*mlv,由1)中公式得经验公式:
exp=(5*2-2.5)*(10*1)+(5*3-2.5)*(10*2)+……+(5*lv-2.5)*(10*(lv-1))
分析此数列,得最终经验公式(数列求和公式):
exp=(50/3)*lv^3-(25/2)*lv^2-(25/6)*lv |
|