游戏开发论坛

 找回密码
 立即注册
搜索
查看: 58661|回复: 78

[讨论] 我的RPG经验值公式设计方法

[复制链接]

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
发表于 2006-10-18 23:09:00 | 显示全部楼层 |阅读模式
到北京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

46

主题

497

帖子

677

积分

高级会员

Rank: 4

积分
677
发表于 2006-10-19 00:20:00 | 显示全部楼层

Re:我的RPG经验值公式设计方法

楼主的数学还学得不错,思路清晰!!

但以怪物数量作为计算参考不如直接用耗费时间量,然后再分别确定不同等级的经验效率(x点/小时)。这样虽然没那么简单直接,但为设计同等级不同怪物的难度和经验值时放松了限制,可以用稍微模糊的方式来做(简单一点)。另外这个公式应该只适用于低等级,级别高了之后等级之间的难度跨度会越来越大,所以公式应该是分段的函数。

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
 楼主| 发表于 2006-10-19 11:09:00 | 显示全部楼层

Re:我的RPG经验值公式设计方法

楼上过奖了!
其实,我一直觉得我的数学底子很差——大学里线性代数和高等数学都重修过,也就离散数学和概率还凑合。呵呵。

楼上的意思是——根据某一适当的函数分别确定每一级的升级效率,然后再根据每级的升级效率分别确定某级别时经验关于时间的函数;最后在确定了怪物提供经验值公式之后代入到经验值关于时间的函数中即得所需经验公式?

57

主题

1523

帖子

1583

积分

金牌会员

Rank: 6Rank: 6

积分
1583
发表于 2006-10-19 11:42:00 | 显示全部楼层

Re:我的RPG经验值公式设计方法

呵呵,这里推一下个人BLOG中的一篇文章:为什么我说不要升级经验公式

欢迎点击:)
http://blog.sina.com.cn/u/57638743010002fj

全文的总结的观点就是:其实经验公式并不是最重要的,重要的在于升级时间。因为时间才是与玩家关系最为密切的。

应该是根据所需要的升级时间,再来定下每一级的升级经验。而不是由固定的升级经验公式,来决定每级的升级时间。升级时间何来?根据游戏设计,玩点分配,游戏感觉等来决定。

而且升级经验也不应当写死,而是可以灵活的修改每级的经验。如果由一个公式推导出从1级到100级的经验,那要调整其中一级的升级经验,势必要牵涉很广。

因此,升级经验公式,不是一个好东西。特别是对于改动频繁且时常更新的网游来说。

因此,如果是我,便不正面作答他们的问题。而是提出自己的方案。

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
 楼主| 发表于 2006-10-19 17:23:00 | 显示全部楼层

Re:我的RPG经验值公式设计方法

楼上的是凌波迷?
你的观点我以前也想过——对于一个有等级封顶的游戏的确可以如此——把每一级的经验值写进数据库或者一个表中,需要时查表即可。这样做的好处是可以方便的对任意一级的升级效率进行调整而不会影响到其他,这个倒是和gthief采用分段函数的意义很相似。

但问题是——每级的升级效率具体怎样才算是合理?

57

主题

1523

帖子

1583

积分

金牌会员

Rank: 6Rank: 6

积分
1583
发表于 2006-10-19 17:35:00 | 显示全部楼层

Re:我的RPG经验值公式设计方法

呵呵,你好象是第一个看出来我的ID含义的人哦,rei + 初号机,赶紧握手下

具体升级时间,可以在内测,或者封测时候调整,公测当然也可以,最好不要在那时才发现问题啊。

比如这几级玩点少了,你就可以适当减少升级时间。要转职了,一个大兴奋点要到了,你可以适当拉长一点升级时间,玩家也会冲上去的。
你也可以故意设计一个个坎,比如逢5字尾的等级,就升级特别快。这些就具体问题具体分析了。

23

主题

3388

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440
 楼主| 发表于 2006-10-19 17:42:00 | 显示全部楼层

Re: Re:我的RPG经验值公式设计方法

reiangel01: Re:我的RPG经验值公式设计方法

呵呵,你好象是第一个看出来我的ID含义的人哦,rei + 初号机,赶紧握手下

具体升级时间,可以在内测,或...

握手握手 [em19]
向你学习——经验值都被你玩出花来了!原来经验值还可以用来给玩家制造跌宕起伏的心情,呵呵……又有收获挖

19

主题

651

帖子

677

积分

高级会员

Rank: 4

积分
677
QQ
发表于 2006-10-19 18:25:00 | 显示全部楼层

Re: 我的RPG经验值公式设计方法

看起来是设计了限制升级最快速度的公式,不过看不出是否合适,很多游戏在刚开区人多怪少的情况下升级普遍很慢,后期出新的升级方法后就会加快。
其实还可以反过来设计,设置(在提高技能的基础下)升级的最慢速度。升级跟现在网络游戏一样,可以拥有穿高级装备的能力,可以学习高级技能等等,但是不会因为升级本身获得技能点;升级技能需要技能点(技能点是需要海量的),必须作某些事情可以得到,比如战场、任务、活动等,普通farm是不给技能点的。
级别越高,提升同一个技能需要的点数也高。
这样,要变得很强的办法就是尽可能低的级别下把技能加高,级别高了升技能就越来越难了。所以玩家会自愿的尽可能不升级而争取技能点,当然级别最终也是要升的。如果做一个打BOSS任务完成后给技能点,玩家甚至会尝试“零斩”,尽可能不打小怪,在几乎没有经验的情况下战胜BOSS,完成任务获得技能点 (经过适当的技术处理后可以让不打小怪比打小怪更难,用更多时间)。如果任务是打10个小怪,那么玩家一定会放过无辜的第11只。
这样的公式会复杂得多,我暂时没弄出来,大家交流一下。

57

主题

1523

帖子

1583

积分

金牌会员

Rank: 6Rank: 6

积分
1583
发表于 2006-10-19 22:00:00 | 显示全部楼层

Re: Re: Re:我的RPG经验值公式设计方法

卡特铁角: Re: Re:我的RPG经验值公式设计方法


握手握手 [em19]
向你学习——经验值都被你玩出花来了!原来经验值还可以用来给玩家制造跌宕起伏的心情,呵呵……又有收获挖


惭愧,这个是公司前辈们的经验,借花敬佛而已
[em23]

46

主题

497

帖子

677

积分

高级会员

Rank: 4

积分
677
发表于 2006-10-19 23:41:00 | 显示全部楼层

Re: Re:我的RPG经验值公式设计方法

卡特铁角: Re:我的RPG经验值公式设计方法

楼上过奖了!
其实,我一直觉得我的数学底子很差——大学里线性代数和高等数学都重修过,也就离散数学和概...


我的意思其实跟4楼说的一样,重要的是升级时间,比如按照你的思路
一、先确定到各个级别(lv)需要时间的函数(t):t=f(lv),函数应该是2次或者以上,具体函数应该是分段函数,如果级别比较少的话干脆就用离散的形式列表,比如1级到2级是10分钟,100级到101级是40小时。

二、再确定不同级别时的平均练级效率v=g(lv),v的单位是“点经验/小时”,具体函数应该是平稳慢慢增长的,因为角色能力也是平稳慢慢增长的,一次函数比较适合。

三、经验公式exp=t×v=f(lv)×g(lv)

四、在设计怪物时,就根据v=g(lv)函数,依据相应级别击杀该怪物所需要的时间来确定怪物的经验。

ps:我没有做过游戏,纯粹猜想,不是实际经验,仅供参考。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-2 23:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表