齐伯霏论文.docx
- 文档编号:15132083
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:30
- 大小:67.13KB
齐伯霏论文.docx
《齐伯霏论文.docx》由会员分享,可在线阅读,更多相关《齐伯霏论文.docx(30页珍藏版)》请在冰点文库上搜索。
齐伯霏论文
游戏中平衡的意义及实现方法
中南财经政法大学游戏软件开发专业06级3班齐伯霏指导老师:
喻晓和
摘要
目前,国外的游戏设计已经形成了良性的产业链,而国内的游戏产业虽然在不断的发展,但是和国外尤其是和日韩以及美国的差距还是相当明显的。
游戏设计中,其中与可玩性最相关的关键因素,就是游戏的平衡的设定。
曾经有游戏大师说过:
“一个伟大的设计和一个杰出的游戏之间往往只有一个缺乏游戏平衡性的区别”由此可窥游戏平衡重要之一斑。
在一款平衡的游戏中,能够影响玩家最终成就的应该只是玩家的游戏技能和熟练程度,而不应该是偶然的运气或者是游戏中存在的优势策略。
换言之,游戏中的乐趣就是玩家和计算机、玩家和玩家之间的竞争,而使竞争存在乐趣的前提就是公平,这里的公平其实就是游戏的平衡。
我认为实现游戏平衡的前提是要有一个可以让游戏平衡的规则,其次是玩家在游戏过程中的平衡。
基于以上两点,我将结合游戏实例来探讨游戏平衡的意义以及游戏平衡的实现方法。
关键词:
游戏规则;优势策略;静态平衡;动态平衡
目录
第1章游戏平衡的分析3
1.1平衡的意义3
1.2简述游戏的平衡3
1.2.1什么是游戏的平衡3
1.2.2经典游戏不平衡分析4
1.3到可平衡性4
第2章游戏规则的平衡6
2.1游戏规则6
2.1.1什么是游戏规则6
2.1.2游戏规则的作用6
2.2设计规则的平衡7
2.2.1设计规则平衡的原则7
2.2.2设计游戏规则的方法和实现7
第3章游戏过程的平衡11
3.1公式设计的平衡性11
3.1.1静态平衡11
3.1.2动态平衡12
3.2游戏难易度的实现和分析13
总结23
游戏中平衡的意义及实现方法
齐伯霏
第1章游戏平衡的分析
1.1平衡的意义
在游戏设计中,其中与游戏过程最相关的关键因素,就是游戏的平衡的设定,也就是说,游戏设计是否平衡直接影响着游戏的生命周期和耐玩度。
曾经有游戏大师说过:
“一个伟大的设计和一个杰出的游戏之间往往只有一个缺乏游戏平衡性的区别”由此可窥游戏平衡重要之一斑。
在一款平衡的游戏中,能够影响玩家最终成就的应该只是玩家的游戏技能和熟练程度,而不应该是偶然的运气或者是游戏中存在的优势策略。
换言之,游戏中的乐趣就是玩家和计算机、玩家和玩家之间的竞争,而使竞争存在乐趣的前提就是公平,这里的公平其实就是游戏的平衡。
由此可见,一款游戏能够吸引玩家的前提或者说一款游戏可玩性的前提就是公平。
1.2简述游戏的平衡
1.2.1什么是游戏的平衡
SidMeier曾经说过:
“一个游戏是很多有趣的选择的集合。
”因此得出的是如果游戏失去平衡,就会减少这些选择而影响游戏性。
一个理想的游戏应该经过一系列的选择,最后以胜利或其它完成的条件结束。
有时一些选择明显成为唯一的选择,或明显是无效的。
如果在某一阶段,游戏出现仅有唯一的选择,而游戏却没有结束,就说明游戏的平衡性有了问题。
而暴雪对平衡的解释是:
“那些打败你的东西不是不平衡。
那些能克制你正在用的单位,而使你不喜欢的事物不是不平衡的。
不同的种族有强处也有弱点。
当某些东西过于以强大并且不是像我们所希望的那样作用的时候,他才是不平衡的。
”
对于网络游戏来讲,由于是多个玩家同时进行的游戏,并且每个玩家都在创造着自己的故事,因此必须为玩家提供一个公平的背景和社会基础以及各方面的AI设计。
对于单机版游戏(区别于在互联网上进行的大型游戏),由于在玩家人数上存在着局限性,因此对游戏的社会基础和社会背景方面的要求比较低。
单机游戏的平衡主要体现在游戏规则和过程方面的公平。
本文将主要对单机游戏的平衡的理论和实现做研究。
1.2.2经典游戏不平衡分析
几乎所有通常所谓的不平衡都来自选择权的减少。
例如,在一个策略游戏里,如果某一种部队的作用和费用相比过于划算,就会造成其它的部队几乎或完全没有作用。
这种情况不仅只留给玩家一个选择(无从选择),而且使玩家受到很多不相关的干扰。
这些干扰实际上让游戏变得比较迷乱,减损了游戏性,而且让玩家感到灰心。
一款很经典的游戏----大富翁(Monopoly)中就有很好的游戏不平衡性的例子。
在游戏的后期,玩家们总是尽量拖长呆在监狱里的时间。
显然,玩家在游戏后期的最好的策略就是进监狱而且不付钱出来,希望别人进入自己的领土而破产。
在玩大富翁的最后阶段,无需再作选择,游戏基本结束了。
没有人再选择是否购买财产,也很少有机会再根据游戏规则建设新的财产(因为房子已经被用完),而且因为资产已经被几个人集中,所以也不再有交易可做。
一旦产生这种情形,游戏就变成每个玩家有一定的机率获胜而基本上结束了。
此时玩家可以做的很少,除非靠运气得胜。
这情景与游戏前期及中期玩家往往忙于大施战术、巧妙夺取利益、陷害对手或谨慎购买地产大相径庭
1.3到可平衡性
游戏平衡性通常被认为是alpha或beta测试的事情,但事实上就像任何工程,好的准备工作是实现良好游戏平衡的关键。
优秀的游戏设计具有极大的可平衡性,也就是指游戏系统可以较容易地调整到平衡的状态。
如果系统没有可平衡性,费尽周折也不可能将游戏调整到平衡。
一个游戏是一个系统,在设计初期应用良好的系统设计方式将带来较好的可平衡性。
好的系统设计方式可以分成三个重要步骤:
游戏要素的模块性,连贯的设计宗旨及对复杂性的控制与调节。
在设计的早期就采用这些方法将为设计师在游戏测试的alpha和beta阶段节省大量的时间。
游戏要素的模块性
游戏要素的模块性归结于每个游戏要素只为了一个特别目的存在,如果可能的话,尽量做到只有一个单一的目的。
只要贯彻这个原则,调整一个游戏要素只会改变游戏的某个方面而不是许多方面。
有一个很好的例子,说明游戏要素缺乏模块性会造成游戏开发人不必要的麻烦。
在星际争霸的beta测试中,暴雪(Blizzard,星际争霸的开发人)有一套相当清晰的伤害系统,其中每一兵种各有三种伤害方式:
爆炸性的,标准型的或冲击性的。
每种伤害方式都有一个根据外型大小而不同的伤害系数——爆炸性伤害对大型目标最有效,冲击性伤害对小型目标最有效,而标准型伤害可用于任何目标。
其中一个兵种——飞龙(Mutalisk),不断给平衡性带来问题,因为就功能性上看,不可以被分为大、中或小型中的一种。
如果将飞龙设为中型兵种,则它对于爆炸性武器类型的兵种来说抵抗力太强;如将其设为大型,则使其相对爆炸性武器类型的兵种(这种兵种一般是飞龙的天敌)又过于脆弱。
暴雪(Blizzard)不能仅仅修改爆炸性相对于大型兵种或爆炸性相对于中型兵种的伤害系数,因为这样做的话就会影响一大批其它兵种的设置。
也无法修改爆炸性武器兵种的攻击值,因为这样会影响其它的很多的设置。
更让人困惑的是飞龙有两个重要角色——防空军与防步兵(陆战兵种没有空中攻击能力),并具有相同的基本伤害力,而其他类似的兵团(侦察机-Scout、幽灵战机-Wraith)却有不同的武器系统,可以根据具体角色进行调整。
因为在伤害系统和飞龙的设计上缺乏模块性的原因,暴雪直到游戏上市后五个月才使飞龙兵种达到平衡。
这并不是因为修正是不可能做到,而是因为缺乏系统模块性而使修正非常困难。
飞龙在星际争霸里具有一定独特的用途,如果暴雪将它的平衡参数与其它不相关的兵种分开设计,平衡将大为容易。
最简单的方法就是为飞龙(及其它类似兵团)添加一个独立的类型,并给予它一个针对各种伤害的自己的防御系数。
如果设计师将飞
龙的空军与地面攻击划分开来,调节平衡也会变得简单。
良好的系统模块性不仅是游戏平衡性的前提,它还是朝着解决的方向走近一步。
有一个良好的模块性可以使设计师针对各种特殊问题轻松进行调整,而不会影响到其它系统。
连贯的设计宗旨
连贯的设计宗旨可能是在初始设计阶段要遵守的最重要的原则,但是往往容易因为政策问题、疏忽大意或缺乏良好沟通而被忽视。
连贯设计宗旨的定义是如果游戏要素没有根据游戏的大局进行同步设计,这很可能损害主要的游戏感觉。
这种情况存在于缺乏中心控制或开发时间很长的游戏中。
较有名的多用户网络游戏(MUD)Duris:
LandofBloodlust(是Everquest—“无尽的任务”的原型Sojourn的姐妹版)就因此带来太多问题。
其中一个例子是,某个程序设计人自行编入一个他自己感兴趣的角色类型。
虽然这个角色类型本身很有意思,但是它使其它几个类型变得无用或大失威力。
这个角色类型拥有了其它种族专有的技能,而正是这些技能的专有性才使得这些种族实用而且好玩。
这个程序员还带来很多类似的游戏平衡性问题。
他的主要目的是创造一个他感兴趣的类型。
这与多用户网络游戏开发人想要创造有趣、独创的角色并与整个系统相吻合的愿望相冲突。
他的类型非但不独特(因为是从其它各类型中各取一小部分特点),还与游戏的其它部分格格不入。
复杂性控制
复杂性控制应概括为:
“保持简单、易懂”。
过于复杂的游戏系统让人费解,因此,也更难做到平衡。
一个过于复杂的系统通常是因为最初的设计太糟糕和无休止的添加补丁(理论上这些补丁是合理,但实际上是不连贯的一团糟),或者是太常见的“太多厨师呆在一个厨房里”的现象,这通常也说明缺乏设计宗旨一致性的问题。
复杂性控制的另外一个优点就是它避免了一些潜在的游戏性的问题。
尤其是,正如复杂的游戏系统让人费解也因此不好平衡,也更难让玩家理解,甚至从某一程度开始玩家很难再享受游戏。
一个很常见的设计错误是为了游戏复杂化而牺牲游戏深度,那将对游戏平衡调整造成极大的困难,并造成对游戏性的困惑和费解。
第2章游戏规则的平衡
2.1游戏规则
2.1.1什么是游戏规则
游戏规则,又称游戏机制,是游戏的操控部分。
游戏是按照一定的规则进行的交互式娱乐行为,同样的角色、场景、道具只要改变了游戏的规则,就变成了另一款游戏。
目前各种游戏的类型划分也是按照游戏规则的不同而划分的,可见游戏规则是游戏设计的核心要素。
规则的公平与否也就直接决定了游戏是否平衡、是否具有可玩性。
游戏规则是由相关事件、事件主体、对应规则三个要素构成。
相关事件就是能够触发某类规则的事件,其构成因素有二:
一为事件的完整性,二是与某个规则的关联性。
事件主体就是引发相关事件的人或其他物质。
对应规则就是依据相关事件进行的特定行为,包括直接和间接两种类型。
具体表现在电子游戏中,其表现方式为计算机公式,计算机公式一般包括两个部分,即运算规则和运算相关数据。
2.1.2游戏规则的作用
游戏规则是规定游戏如何运行的法则,其作用就像是现实生活中的法典。
如果生活中没有法律约束,那么社会必然出现动荡。
游戏也是一样,一款游戏没有规则控制游戏的各个方面,游戏将无法进行下去。
2.2设计规则的平衡
2.2.1设计规则平衡的原则
首先,公平的规则是第一前提。
游戏中如果不是面对玩家竞争,就是面对计算机AI控制的角色。
但是这些角色因为计算机程序规则的限制,往往不像真人那样灵活。
所以在游戏制作中,常常会允许计算机“作弊”,这样就不会显得计算机控制的角色竞技水平太低下。
其次,避免优势策略的存在。
当游戏设计者在游戏中为玩家提供不同的方法克服挑战时,他们通常会期待玩家体验各种不同的方法。
但是如果其中含有游戏的优势策略,那么其他的方法也就形同虚设了。
所以,要避免优势策略的存在以提高游戏的趣味性。
与此相对的,在减少软弱优势策略时应当注意,因为在一些棋类游戏中软弱优势策略还是很有价值的。
基于以上两点,在设计游戏时,要先设计一组核心的游戏规则,然后再设计游戏的其他内容,并一直遵循这些核心规则。
2.2.2设计游戏规则的方法和实现
下面以五子棋中的胜负规则用JAVA程序的实现为例来说明游戏规则的实现。
首先,要了解现实生活中五子棋游戏的胜负规则:
黑白双方的某一方按照一定的规律率先将五颗棋子连成一线者为胜。
通过这个例子的分析,可以了解规则的三要素,包括:
“五颗棋子按照一定规律连成一条线”——相关事件;
完成这一事件的主体“将五颗棋子按照一定规律连成一条线的某一方”——事件主体;
“胜利”——对应规则。
那么,什么样的连线方式算得上是“按照一定的规律”呢?
当然是五颗棋子横连、竖连和斜连为“一定规律”。
publicbooleangameWin1(intx,inty)//判断输赢横连
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++){
if(x1>15){
break;
}
if(bodyArray[x1+i][y1]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
for(inti=1;i<5;i++){
if(x1<1){
break;
}
if(bodyArray[x1-i][y1]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
if(t>4){
returntrue;
}else{
returnfalse;
}
}
publicbooleangameWin2(intx,inty)//判断输赢竖连
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++){
if(x1>15){
break;
}
if(bodyArray[x1][y1+i]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
for(inti=1;i<5;i++){
if(x1<1){
break;
}
if(bodyArray[x1][y1-i]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
if(t>4){
returntrue;
}else{
returnfalse;
}
}
publicbooleangameWin3(intx,inty)//判断输赢左斜连
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++){
if(x1>15){
break;
}
if(bodyArray[x1+i][y1-i]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
for(inti=1;i<5;i++){
if(x1<1){
break;
}
if(bodyArray[x1-i][y1+i]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
if(t>4){
returntrue;
}else{
returnfalse;
}
}
publicbooleangameWin4(intx,inty)//判断输赢右斜连
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++){
if(x1>15){
break;
}
if(bodyArray[x1+i][y1+i]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
for(inti=1;i<5;i++){
if(x1<1){
break;
}
if(bodyArray[x1-i][y1-i]==bodyArray[x][y]){
t+=1;
}else{
break;
}
}
if(t>4){
returntrue;
}else{
returnfalse;
}
}
}
第3章游戏过程的平衡
3.1公式设计的平衡性
3.1.1静态平衡
静态平衡是一种典型的游戏平衡,是一种过程。
为了避免那些使游戏崩溃的显性元素和逆行策略出现,必须确保游戏完美的和所有游戏元素紧密结合。
像上一章中提到的优势策略(强有力的优势策略)就会打破这种平衡。
这就是说一款游戏中的某些策略可能是正确的,但是它不一定有趣。
游戏中的玩家是人,如果硬要他们来用某一种策略完成游戏,可能游戏很快就会失去这一批玩家。
另一种很重要的平衡是对称平衡。
就是每一个玩家(包括电脑)都有同样的起始条件和能力。
这样就确保了游戏的结果只依赖于玩家的技能水平,但只这种方法只适合那些抽象的游戏。
下面就以俄罗斯方块中的时间限制为例(这是一个典型的对称平衡)。
所有玩家(包括电脑)的屏幕上相同的空间,方块下落到底所需要的时间是相同的,这样才能确保游戏的公平的原则。
//定时线程
classMyTimerextendsThread{
GameCanvasscr;
publicMyTimer(GameCanvasscr){
this.scr=scr;
}
publicvoidrun(){
while(true){
try{
sleep((10-ERS_Block.level+1)*100);
}
catch(InterruptedExceptione){}
if(!
scr.getBlock().fallDown()){
scr.deleteFullLine();
if(scr.isGameEnd()){
ERS_Block.isPlay=false;
suspend();
}else
scr.getBlock().reset();
}
}
}
classWinListenerextendsWindowAdapter{
publicvoidwindowClosing(WindowEventl){
System.exit(0);
}
}
3.1.2动态平衡
动态平衡意味着把游戏系统恢复到平衡位置。
那么,动态的游戏平衡就应该是假设游戏开始是一个需要恢复平衡的系统。
在某些方面,平衡的部分是玩家自己,没有必要为玩的好的玩家设置障碍,这样新手就能自己控制,可以很快感受到游戏的平衡。
游戏平衡的目的是使游戏中心一致、明了,不让那些利用游戏bug的玩家得到优势,另外一个目的就是确保游戏的娱乐性或者说是可玩性。
游戏系统最初应该是静态平衡的,一旦运转起来,就应该维持一种不同形式的平衡——动态平衡。
一般包括三种形式:
维护平衡、立平衡和破坏平衡。
维护平衡就是要保持住游戏现有游戏元素的现状,维护目前的平衡。
游戏中个元素维持的越久,游戏进行的时间越长,而一旦游戏平衡被破坏,游戏也就结束了。
如图3-1所示
图3-1
建立平衡就是玩家在游戏的过程中建立新的平衡,当新的平衡建立起来,游戏也就结束了。
如图3-2所示
图3-2
破坏平衡类游戏,就是游戏给予一个初始平衡后,玩家来破坏这个平衡,使某些元素消失,从而达到一个新的平衡。
大多数策略游戏就是这种类型的游戏。
如图3-3
图3-3
3.2游戏难易度的实现和分析
这里指的是游戏挑战由简单到困难的程度,必须是线性增长的,以便让玩家循序渐进,不至于一下子碰到克服不了的难题,或是突然挑战很容易克服的困难。
这在一些体育经济类游戏或者益智类游戏中经常会用到。
下面以扫雷游戏中的难易程度调整为例,分析其思路和实现。
这款游戏的整体难易思路(如图3-4)是呈线性分布的,比较低的等级其游戏难度就相应的比较小,也就是地雷的数量比较小,布雷密度比较小,从而确保了游戏难度比较低。
这样就有利于新玩家上手。
而高等级的游戏难度就比较大,适合技艺比较精熟的玩家来玩,这充分体现了游戏的公平性。
图3-4
//初级
voidCMineWnd:
:
OnMenuPrimary()
{
m_nXNum=PRIMARY_XNUM;
m_nYNum=PRIMARY_YNUM;
m_nMineNum=PRIMARY_MINENUM;
m_nLevel=LEVEL_PRIMARY;
InitGame();
}
//中级
voidCMineWnd:
:
OnMenuSecond()
{
m_nXNum=SECOND_XNUM;
m_nYNum=SECOND_YNUM;
m_nMineNum=SECOND_MINENUM;
m_nLevel=LEVEL_SECOND;
InitGame();
}
//高级
voidCMineWnd:
:
OnMenuAdvance()
{
m_nXNum=ADVANCE_XNUM;
m_nYNum=ADVANCE_YNUM;
m_nMineNum=ADVANCE_MINENUM;
m_nLevel=LEVEL_ADVANCE;
InitGame();
}
//设置等级菜单
voidCMineWnd:
:
SetCheckedLevel()
{
HMENUhSubMenu;
hSubMenu=GetSubMenu(m_hMenu,0);
CheckMenuItem(hSubMenu,IDM_GAME_PRIMARY,MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hSubMenu,IDM_GAME_SECOND,MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hSubMenu,IDM_GAME_ADVANCE,MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hSubMenu,IDM_GAME_CUSTOM,MF_BYCOMMAND|MF_UNCHECKED);
switch(m_nLevel)
{
caseLEVEL_PRIMARY:
CheckMenuItem(hSubMenu,IDM_GAME_PRIMARY,MF_BYCOMMAND|MF_CHECKED);
break;
caseLEVEL_SECOND:
CheckMenuItem(hSubMenu,IDM_GAME_SECOND,MF_BYCOMMAND|MF_CHECKED);
break;
caseLEVEL_ADVANCE:
CheckMenuItem(hSubMenu,IDM_GAME_ADVANCE,MF_BYCOMMAND|MF_CHECKED);
break;
caseLEVEL_CUSTOM:
CheckMenuItem(hSubMenu,IDM_GAME_CUSTOM,MF_BYCOMMAND|MF_CHECKED);
break;
}
}
//自定义游戏
voidCMineWnd:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 齐伯霏 论文