易码技术论坛

 找回密码
 加入易码
搜索
查看: 392159|回复: 35

关于游戏设计的一些文章/想法/心得/技巧/资料[转]-->laugj转移

[复制链接]
发表于 2006-5-21 11:58:00 | 显示全部楼层
游戏AI算法

  深入A*算法----浅析A*算法在搜索最短路径中的应用

一、前言
        在这里我将对A*算法的实际应用进行一定的探讨,并且举一个有关A*算法在最短路径搜索 的例子。值得注意的是这里并不对A*的基本的概念作介绍,如果你还对A*算法不清楚的话, 请看姊妹篇《初识A*算法》。

这里所举的例子是参考AMIT主页中的一个源程序,你可以在AMIT的站点上下载也可以在我 的站点上下载。你使用这个源程序时,应该遵守一定的公约。

二、A*算法的程序编写原理

我在《初识A*算法》中说过,A*算法是最好优先算法的一种。只是有一些约束条件而已。 我们先来看看最好优先算法是如何编写的吧。

如图有如下的状态空间:(起始位置是A,目标位置是P,字母后的数字表示节点的估价值)


搜索过程中设置两个表:OPEN和CLOSED。OPEN表保存了所有已生成而未考察的节点,CLOSED 表中记录已访问过的节点。算法中有一步是根据估价函数重排OPEN表。这样循环中的每一 步只考虑OPEN表中状态最好的节点。具体搜索过程如下:


    1)初始状态:            
        OPEN=[A5];CLOSED=[];
    2)估算A5,取得搜有子节点,并放入OPEN表中;
        OPEN=[B4,C4,D6];CLOSED=[A5]
    3)估算B4,取得搜有子节点,并放入OPEN表中;
        OPEN=[C4,E5,F5,D6];CLOSED=[B4,A5]
    4)估算C4;取得搜有子节点,并放入OPEN表中;
        OPEN=[H3,G4,E5,F5,D6];CLOSED=[C4,B4,A5]
    5)估算H3,取得搜有子节点,并放入OPEN表中;
        OPEN=[O2,P3,G4,E5,F5,D6];CLOSED=H3C4,B4,A5]
    6)估算O2,取得搜有子节点,并放入OPEN表中;
        OPEN=[P3,G4,E5,F5,D6];CLOSED=[O2,H3,C4,B4,A5]
    7)估算P3,已得到解;

看了具体的过程,再看看伪程序吧。算法的伪程序如下:


    Best_First_Search()
    {
    Open = [起始节点]; Closed = [];
    while ( Open表非空 )
    {
    从Open中取得一个节点X,并从OPEN表中删除。
    if (X是目标节点)
    {
        求得路径PATH;返回路径PATH;
}
    for (每一个X的子节点Y)
    {
        if( Y不在OPEN表和CLOSE表中 )
        {
        求Y的估价值;并将Y插入OPEN表中;//还没有排序
        }
        else
        if( Y在OPEN表中 )
        {
            if( Y的估价值小于OPEN表的估价值 )
            更新OPEN表中的估价值;   
        }
        else //Y在CLOSE表中
{
            if( Y的估价值小于CLOSE表的估价值 )
            {
            更新CLOSE表中的估价值;   
            从CLOSE表中移出节点,并放入OPEN表中;
            }
        }
    将X节点插入CLOSE表中;
    按照估价值将OPEN表中的节点排序;
}//end for
    }//end while
    }//end func

啊!伪程序出来了,写一个源程序应该不是问题了,依葫芦画瓢就可以。A*算法的程序与此 是一样的,只要注意估价函数中的g(n)的h(n)约束条件就可以了。不清楚的可以看看《初识A*算法》。好了,我们可以进入另一个重要的话题,用A*算法实现最短路径的搜索。在此之 前你最好认真的理解前面的算法。不清楚可以找我。我的Email在文章尾。

三、用A*算法实现最短路径的搜索

在游戏设计中,经常要涉及到最短路径的搜索,现在一个比较好的方法就是用A*算法进行设 计。他的好处我们就不用管了,反正就是好!^_*

注意下面所说的都是以 ClassAstar 这个程序为蓝本,你可以在这里下载这个程序。这个程 序是一个完整的工程。里面带了一个EXE文件。可以先看看。

先复习一下,A*算法的核心是估价函数f(n),它包括g(n)和h(n)两部分。g(n) 是已经走过的 代价,h(n)是n到目标的估计代价。在这个例子中g(n)表示在状态空间从起始节点到 n节点的 深度,h(n)表示n节点所在地图的位置到目标位置的直线距离。啊!一个是状态空间,一个是 实际的地图,不要搞错了。再详细点说,有一个物体A,在地图上的坐标是(xa,ya),A所要到 达的目标b的坐标是(xb,yb)。则开始搜索时,设置一个起始节点1,生成八个子节点2 - 9 因 为有八个方向。如图:


仔细看看节点1、9、17的g(n)和h(n)是怎么计算的。现在应该知道了下面程序中的f(n)是如何 计算的吧。开始讲解源程序了。其实这个程序是一个很典型的教科书似的程序,也就是说只要 你看懂了上面的伪程序,这个程序是十分容易理解的。不过他和上面的伪程序有一些的不同, 我在后面会提出来。

先看搜索主函数:

    void AstarPathfinder::FindPath(int sx, int sy, int dx, int dy)
    {
    NODE *Node, *BestNode;
    int TileNumDest;
//得到目标位置,作判断用
    TileNumDest = TileNum(sx, sy);
    //生成Open和Closed表
    OPEN=( NODE* )calloc(1,sizeof( NODE ));
    CLOSED=( NODE* )calloc(1,sizeof( NODE ));
    //生成起始节点,并放入Open表中
    Node=( NODE* )calloc(1,sizeof( NODE ));
    Node->g = 0;
    //这是计算h值   
    Node->h = (dx-sx)*(dx-sx) + (dy-sy)*(dy-sy); // should really use sqrt().
    //这是计算f值,即估价值
    Node->f = Node->g+Node->h;
    Node->NodeNum = TileNum(dx, dy);
    Node->x = dx;
    Node->y = dy;
   
    OPEN->NextNode=Node; // make Open List point to first node
    for (;;)
    { //从Open表中取得一个估价值最好的节点
        BestNode=ReturnBestNode();
        //如果该节点是目标节点就退出
        if (BestNode->NodeNum == TileNumDest) // if we've found the end, break and finish
            break;
        //否则生成子节点
        GenerateSuccessors(BestNode,sx,sy);
    }
    PATH = BestNode;
    }

再看看生成子节点函数 GenerateSuccessors:


    void AstarPathfinder::GenerateSuccessors(NODE *BestNode, int dx, int dy)
    {
    int x, y;
    //哦!依次生成八个方向的子节点,简单!
            // Upper-Left
    if ( FreeTile(x=BestNode->x-TILESIZE, y=BestNode->y-TILESIZE) )
    GenerateSucc(BestNode,x,y,dx,dy);
            // Upper
    if ( FreeTile(x=BestNode->x, y=BestNode->y-TILESIZE) )
    GenerateSucc(BestNode,x,y,dx,dy);
            // Upper-Right
    if ( FreeTile(x=BestNode->x+TILESIZE, y=BestNode->y-TILESIZE) )
    GenerateSucc(BestNode,x,y,dx,dy);
            // Right
    if ( FreeTile(x=BestNode->x+TILESIZE, y=BestNode->y) )
    GenerateSucc(BestNode,x,y,dx,dy);
            // Lower-Right
    if ( FreeTile(x=BestNode->x+TILESIZE, y=BestNode->y+TILESIZE) )
    GenerateSucc(BestNode,x,y,dx,dy);
            // Lower
    if ( FreeTile(x=BestNode->x, y=BestNode->y+TILESIZE) )
    GenerateSucc(BestNode,x,y,dx,dy);
            // Lower-Left
    if ( FreeTile(x=BestNode->x-TILESIZE, y=BestNode->y+TILESIZE) )
    GenerateSucc(BestNode,x,y,dx,dy);
            // Left
    if ( FreeTile(x=BestNode->x-TILESIZE, y=BestNode->y) )
    GenerateSucc(BestNode,x,y,dx,dy);
    }

看看最重要的函数GenerateSucc:


    void AstarPathfinder::GenerateSucc(NODE *BestNode,int x, int y, int dx, int dy)
    {
    int g, TileNumS, c = 0;
    NODE *Old, *Successor;
    //计算子节点的 g 值      
    g = BestNode->g+1;    // g(Successor)=g(BestNode)+cost of getting from BestNode to Successor
    TileNumS = TileNum(x,y); // identification purposes
    //子节点再Open表中吗?   
    if ( (Old=CheckOPEN(TileNumS)) != NULL ) // if equal to NULL then not in OPEN list, else it returns the Node in Old
    {
        //若在
        for( c = 0; c <8; c++) if( BestNode->Child[c] == NULL ) // Add Old to the list of BestNode's Children (or Successors).
            break;
        BestNode->Child[c] = Old;
        //比较Open表中的估价值和当前的估价值(只要比较g值就可以了)
        if ( g g ) // if our new g value is Parent = BestNode;
            Old->g = g;
            Old->f = g + Old->h;
        }
    }
    else //在Closed表中吗?
    if ( (Old=CheckCLOSED(TileNumS)) != NULL ) // if equal to NULL then not in OPEN list, else it returns the Node in Old
    {
        //若在
    for( c = 0; c<8; c++) if ( BestNode->Child[c] == NULL ) // Add Old to the list of BestNode's Children (or Successors).
            break;
        BestNode->Child[c] = Old;
        //比较Closed表中的估价值和当前的估价值(只要比较g值就可以了)
        if ( g g ) // if our new g value is Parent = BestNode;
        Old->g = g;
        Old->f = g + Old->h;
        //再依次更新Old的所有子节点的估价值
        PropagateDown(Old); // Since we changed the g value of Old, we need
                // to propagate this new value downwards, i.e.
                    // do a Depth-First traversal of the tree!
        }
    }
    else//不在Open表中也不在Close表中
    {   
        //生成新的节点
        Successor = ( NODE* )calloc(1,sizeof( NODE ));
        Successor->Parent = BestNode;
        Successor->g = g;
        Successor->h = (x-dx)*(x-dx) + (y-dy)*(y-dy); // should do sqrt(), but since we don't really
        Successor->f = g+Successor->h; // care about the distance but just which branch looks
        Successor->x = x; // better this should suffice. Anyayz it's faster.
        Successor->y = y;
        Successor->NodeNum = TileNumS;
        //再插入Open表中,同时排序。
        Insert(Successor); // Insert Successor on OPEN list wrt f
        for( c =0; c <8; c++) if ( BestNode->Child[c] == NULL ) // Add Old to the list of BestNode's Children (or Successors).
            break;
        BestNode->Child[c] = Successor;
    }
    }

哈哈!A*算法我懂了!当然,我希望你有这样的感觉!不过我还要再说几句。仔细看看这个程 序,你会发现,这个程序和我前面说的伪程序有一些不同,在GenerateSucc函数中,当子节点 在Closed表中时,没有将子节点从Closed表中删除并放入Open表中。而是直接的重新的计算该 节点的所有子节点的估价值(用PropagateDown函数)。这样可以快一些!另当子节点在 Open 表和Closed表中时,重新的计算估价值后,没有重新的对Open表中的节点排序,我有些想不通, 为什么不排呢?:-(,会不会是一个小小的BUG。你知道告诉我好吗?

好了!主要的内容都讲完了,还是完整仔细的看看源程序吧!希望我所的对你有一点帮助,一 点点也可以。如果你对文章中的观点有异议或有更好的解释都告诉我。
 楼主| 发表于 2006-5-21 11:59:00 | 显示全部楼层
游戏设计理论

     要设计一个游戏,首先你必须要确定几个重要方针,第一是你要设计的游戏是属於那一种类型,第二是时代背景,第三是模式,第四是程式技术,第五是表现手法,第六是市场定位,第七是研发时间,在掌握上述七个方针之後,你就可以再做详细的规划内容及调配资源,那麽何谓是七项方针呢? 笔者以范例来说明之!
一、类型:
   所谓的类型是指这个游戏所着眼的一个游戏方式,通过这个方式来使玩者达到娱乐的目的,这个游戏方式有专有名词来各别予以命名,兹如下述:

(1) RGP角色扮演:
   这个类型的游戏以通过故事剧情牵引来使玩家能溶入主角所存在的一个世界,这类型态的游戏多半透过战斗升级系统及人物对话的方式来一步步完成设计者所布下的剧情路线,最具代表的作品有日本史克威尔所设计的 "太空战士系列" 及国内大宇资讯所设计的"仙剑奇侠传",当然还有很多部作品例如"神奇传说"等也是此中的佼佼者。
   在RGP的类型中,在近几年来又分支了几个类似的型态,例如说Blizzard的"暗黑破坏神"Dirblo"被定位为"动作RPG",因其动作成分相当高所至,而"神奇传说"、"超时空英雄传说"则被定位尽"战略RPG",只因战略成分比重较高所以又有别於传统RPG。

(2) SLG战略:
   谈起战略游戏,大家最耳熟能详的应是日本光荣公司所出品的"三个系列",KOEI的三国志风靡东亚,从一代进化到现阶段的六代皆为玩家们所津津乐道,而所谓的战略游戏则是透过经营→战争→扩大领土三个手段来蠃得游戏最终目标,一般而言动态成分少,最较偏重於花费脑力的游戏,但从WestWood的新型态战略游戏"沙丘魔堡"问世之後,战略游戏也有了重大的分野,一是以KOEI代表的三国志系列被称为回合制战略游戏,一是以WestWood代表的C&C及Blizzard所代表的魔兽争霸被称为即时制战略游戏,和回合制所不同的是,即时制拥有较多可由玩家与电脑互动的机会,比较不花费脑力,所进行的 方式是建设→生产→攻击→歼灭,在业界有句俏皮话是这样说的:「玩回合制游戏像是自己当了个大将军(元首),运筹帷幄决胜千里之外,而玩即时制游戏则像是个士官长(部队指挥官),只能一味的打打杀杀」由此你可以了解到这两个型态的异同的了。

(3) ACT动作:
   所谓的动作游戏其实就完全靠玩家的反应来做过关的条件,较有名的像DOOM、古墓奇兵、QUAKEⅡ 等,在动作游戏中也分支了相当多的类型,例如快打旋风、铁拳Ⅲ等被定位为格斗型态,主要游戏方式就是二人到四人互相对打一直到分出胜负为止,而DOOM、古墓奇兵则被定位为3D动作冒险游戏,主要目的为杀敌闯关,再来像阿比逃亡记、黑暗之心被定位为横向卷轴游戏,游戏方式就是以攻击跳跃等动作来走过一连串的关卡,表现方式多为2D卷动画面的方式在进行,再如飞龙骑士、极上疯狂大射击则被定为动作射击游戏,游戏方式就是闪躲射击冲过火网进而歼灭守关魔王为止,这些分支型态有共 通特点却又那样的不同,这也是动作游戏吸引人的重要原因。

(4) PZL益智:
   这类型的游戏以趣味性的思考为游戏的主轴,内容可以包罗万,思维模式也可朝物理性及逻辑性方向着眼,具代表性的是大宇资讯的"台湾十六张麻将"、"大富翁"、"仓库番"等,而棋盘式的思考方式着名的有"决战中国象棋"及光谱资讯的"五子棋大师"等,这些游戏入手容易且不分男女老少皆喜欢的特性,使得益智型态的开发较有市场,成本也较低。

(5) ADV冒险:
   冒险游戏的内涵多半脱离不了解谜的成分,是的!这类型的游戏让玩家抽丝剖茧的找出设在游戏背後暗藏的谜底,以顺利完成游戏,具代表作有恶灵古堡、异星搜奇、幽魂等,这类型的游戏年龄层较高,比较不适合国内厂商来研发。
   当你在构思一个新的游戏企划时即应预先想的所属意的类型,然後才进行下一步的计划,一般而言国内市场接受度最高的莫过於 RPG角色扮演类型,这也是为何国内厂商会如此的大力研发RPG型态的游戏。

二、时代背景:
   对於游戏美术来说是一个很重要的方针,因为决定一个时代背景所意味的是资料的搜寻工作方便与否,与美术人员在制定造形时需依据的范例;以国内市场来说多半能接受中国古代时代背景,基本上时代背景有好几种,例如说WestWood的红色警戒架构在公元2000年左右的未来,而魔兽争霸则定在虚幻的欧洲中古世纪中,三国志定位在汉朝末年,星海争霸架构在外太空世界,轩辕剑则定在春秋战国时代等。
时代背景绝对是企划人员在第一阶段规划整个游戏时已先决定好了,如此美术人员才能放心的去搜集资料。

三、模式:
   当决定好类型及时代背景之後,再来就开始要去构思游戏中所要呈现的模式,如假设你的背景订在古代中国,而类型是定为即时战略,这时你必去思考出游戏内容的进行方式,可能你的游戏需要生产的因素,这个因素是什麽? 可以是粮食、矿产及木材,也可以是火山能源、石油、太阳能或天然气等,随着你故事情节上的需要而去制定项目,在作战方式上你所设计的模式可能会去考虑到地形因素、天候因素及资源因素,而且会大量运用到各种战术及攻击方法等,因为如此所以同一种类型的游戏虽多,但模式上却各有特色各有偏重的游戏路线,也各自聚集了拥护者,这就是模式设定的一个重要性,切记千万不可去抄袭他人所定的模式,因为这样一来,当你所设计的游戏完成之後,眼尖的玩家们会把你的产品以过时抄袭为由而弃如敝履,这在这剧烈竞争的国内市场而言是无法存活太久的。

四、程式技术:
   无论你对一个游戏想得多好,架构设计多庞大,如果程式人员本身的技术无法配合的话,那其实一切还是流於空谈,所以在设计一个游戏之前必要先去徵询程式人员的意见,在现在这个环境中不仅程式人员要会Windows98及Wi-ndows NT相关技术,一个完整的系统分析及系统规划是不可缺少的,如此可以避免掉在程式中不可预期的错误出现,而且在一个游戏设计中最好有二个程式人员在运作,一个负责内部程式 (游戏核心引擎) ,一个负责外部程式(介面程式),这样方可发挥完整的战力。

五、表现手法:
      在这个环节中,企划人员、程式人员、美术人员要做完善的沟通及讨论,一般我们知道大部份的电脑游戏是256 色的系统,在这些游戏中对於色盘的控制有相当严苛的要求,为了达到最好的视觉效果,美术人员通常会向程式人员要求多重色盘的资源,而程式人员则会考量到切换时的状况及记忆体配置是否能完全充份,在系统上的问题确定之後,企划人员会提出呈现效果的建议,例如说爆炸效果的表现方式,由内而外扩张到消失的火焰激烈型或包容大量烟雾的燃烧型,这要由企划人员依故事内容来给予定义,同时以物理性逻辑给予美术人员一个建议,再由美术人员前去绘制。
   还有一个例子,以"C&C之红色警戒"与"AGO Empir世纪帝国"的海岸来说明,在"AGO Empir 世纪帝国"的海岸表现是静止的,海水不会流动,最多只有鱼在海中央跳跃,而"C&C"之红色警戒"的海岸表现手法是会流动的,但海中没有任何的特异之处,这两种表现手法各有各的好处及考量,但以笔者而言仍较偏爱"C&C之红色警戒"。
    游戏内容的表现手法通常伴随着同类型游戏间的相异处而有不同的评价及支持者,而不光是美术效果的表现手法,企划人员构思的游戏玩法及程式人员的程式表现都有密切的关系。

六、市场定位:
   不论你所设计的游戏构想如何的好,如果你没有去清楚的定位出你的市场走向,那麽到时制作完成的游戏软体可能会面临到销售不佳的窘状,所以在设计游戏之前你得知道你所定位的族群在那里,从下表中你可作一个市场定位的叁考:
年龄层               教育程度适合的类型内容

7~12岁 国小动作、益智较多趣味性、教学性
13~18岁 国中、高中动作、益智、 较多思考性质、图形精美化同 角色扮演、战略时又较多反射
19岁以上 低知识水平益智、动作较暴力及冒险、趣味性质,操 作简单
19~30岁 大专、大学以上角色扮演、战略富含多重思维性,可以影射周 、冒险、模拟、 遭事物,解谜及创造性运动

七、研发时间:
      这是企划人员在初步规划中的最後一个项目,针对上述的制作方针你必须对美术人员及程式人员安排一个完整的SCHEDULE,从这个SCHEDULE中去研判律发时间,从企划的角度来说,为了不使良好的点子被其他游戏公司抢先推出,同时也要避免推出後模式已落伍,一个游戏的研发最好在一年内,最多不可超过18个月,以成本控制的角度来说比较符合获利标准。
       假设你规划这个游戏需要一年的时间,那麽你就要去区分出美术制作时间 (第一线)及程式制作时(第二线)间的差异,并考量推出DEMO 版及游戏完成的时间,在适当时机打出游戏知名度,为游戏销售上打下一记商机。

制作流程
   一个游戏的制作如果不能充份控制整个作业程序,那即有delay 的危险,大家都知道游戏软体delay对於销售上的影响会有多大,所以如何尽量避免de-lay是每个游戏设计者应极力去避免的,而要去避免游戏开发作业上delay的情况最重要的是严密控管作业流程及计划表。
   那麽究竟游戏制作流程是一个什麽样的情形呢? 首先企划人员在执行制作的前一个月即要定出企划大纲及搜集可用资源,并经程式人员及美术人员确认後开始执行,我们以一个即时战略的游戏来说明,在制作分期程式人员即投入地图编辑器的撰写,而地图编辑器的逻辑设定要由企划人员先期规划,然後程式人员才根据企划人员的规划而进行程式写作。
   在此同一时期美术人员即开始分工合作,一般一个游戏工作小组会有四位美术人员,他们分别负责造形、人物动作、介面、地图四个部分来制作,但这只粗分法,国内游戏公司较常使用这样的组合,在国外美术人员分为造形、人物动作、介面、地图、片头、过场、後制分镜、场景等九大部份,每个部份皆可能都有二人以上在作业,并有一名监制在执行风格及水准的品质控管,这些人统一由後制人员来与程式人员做交图及配合修图等沟通上的交流,所以说後制作美术人员的成败实关系到整个游戏品质的高低。
由於程式人员在设计地图编辑器时需要利用到一些图素来做测试,所以地图图素设计人员要先一步绘制出程式人员所需要的图素,
   在程式人员测试通过之後方可进入大量生产的阶段,由於地图编辑器的设计者多半直接负责游戏引擎的制作,所以在初期企划人员便开始着手人工智慧AI的逻辑判断作详细的叙述,以期在程式人员撰写地图编辑器之後能立即作人工智慧AI的撰写,而在此同时负责撰写介面的程式人员亦与负责介面设计的美术人员作密切的配合,开始着手制作各个介面,因为介面不仅在游戏中是一个主司控制整个游戏的操作盘,同时也是一个游戏的外观,一个拥有优良创意的介面是很受 玩家喜欢的。 在测试地图编辑器时,程式人员亦需要利用移动物件(人)来测试地图上的障碍物判断及最短路径搜寻法,所以设计人物动作的美术人员在此时要先去做出一组人物动作供程式人员作测试,待程式人员把地图编辑器制作出来之後,人物动作设计的美术人员则只要不断的做并不断的把图给程式人员即可。
 楼主| 发表于 2006-5-21 12:00:00 | 显示全部楼层
游戏理论研究

  成功的游戏设计者们应该能够而且必须超越直觉判断和草率行事,他们必然在设计中或有意或无意地遵循着某些准则,正是对这些准则的正确理解和灵活运用保证了一部游戏作品在商业上和艺术上的成功,而这些准则是以下列形式出现的:
1.底层游戏理论及模型
2.专门技术及艺术表达手段
3.具体实践及反馈信息
构成了一种三层金字塔结构
其中游戏理论及模型构成了金字塔结构的底层。游戏之所以为游戏,不同于艺术形式或娱乐形式,必然有其自身内在的规律。游戏理论,顾名思义是有关游戏的理论。它应该能超越具体单个游戏的纷繁复杂的外部特性,对有关游戏最本质最共性的问题进行理性的思考,最终提炼出游戏的一般模型,确立游戏设计的多项推则,对游戏的设计开发工作起根本的指导作用。游戏理论涉及艺术理论、心理学、计算机科学等诸多领域,从多角度探讨游戏与游戏设计者、游戏者之间的复杂关系。分层次研究游戏所包含的科学技术层、艺术审美层产、心理情感层等问题。对上述问题的思考和阐述,不仅对有志于成为游戏设计者的人们,而且对广大对游戏抱有无比热忱的游戏者都是有益的。
建立游戏理论的目的,不仅在于针对那个被称为游戏的对象去考察和阐述有关其性质的永恒真理,而更重要的是针对游戏设计者在设计实践出现的某些问题,通过思考找出某些解决办法来。本文所涉及的一切都直接地或间接地与当今游戏界的状况有着实际的关联。

1.游戏模型

无论RPG、SLG还是ACT,透过游戏干差万别的外部特性,考察游戏本身和游戏者构成的统一的游戏系统,可以发现这是一个动态的多层模型系统。如图2所示。游戏本体包含游戏内核(内层)和交互层两层。通过交互层,游戏可以有效地向游戏者展示内层的某些信息,又能接受游戏者的输入,交互层是游戏者眼中所能见到的游戏。而内层对游戏者来说相当于一个黑箱,游戏者通过交互输入一定的行为,内层根据自己的内部机制产生一定的反应,又通过交互层输出。这种根据一定输入决定产生什么样输出的内部机制对游戏者来说是不可见的。一个设计出色的游戏必须要细心地隐藏内层的运行机制,因为内层的运行机制一旦泄露,游戏者完全掌握了其规律,游戏在游戏者眼中将失去一切挑战性和趣味性。则游戏的生命周期也就至此结束了。
目前在游戏界存在的一种不良倾向,即忽略了游戏内核的设计,只注重游戏的交互层,甚至只注重属于交互层的一部分的外部效果,在32位机上许多游戏使用三维动画技术产生了令人膛目结舌的视听效果,但被广大游戏者认为徒具外表,操作性游戏性则十分缺乏。因为游戏的交互层细分起来包括游戏的外部效果和操作性两部分。外部效果指展现在游戏者面前的画面、动画、音乐、音效和文字等。游戏者对外部效果是处在被动欣赏的位置。而操作性才是游戏所特有的使游戏者有一定主动性的关键内容。显然,游戏的操作性的重要性应引起设计者重视。而更关键的则是游戏内核,因为游戏的操作性只是决定了如何进行输入/输出行为,而并不决定输入/输出什么,决定输入/输出集及输入/输出响应策略的是游戏内核,它才是游戏真正的核心,才是游戏最深层次的灵魂,才是吸引游戏者为之废寝忘食的魔力所在,应把盲目投入外部效果的努力投入到对游戏内核的严格设计审核上,拥有了优秀的游戏内核,才有发挥外部效果的可能性,否则游戏的外部效果将成为无源之水、无本之木。这一点迄今为止都没有引起大多数游戏设计者的重视,他们大多数都被外部效果这一叶所障目,不见真正游戏实质之泰山。于是赶潮流、追风头,正如DOOM系列成功后,产生了一大批DOOM LIKE的游戏;取得显著成功的MYST也产生了大量的模仿者。它们和原型作品同样具有精细的三维动画、动人的音响效果、具有神韵的对象,光线颜色俱佳的画面,总而言之在可视媒体素材上它们一样的丰富,但模仿者并未享受到与原著相同的欢迎度。而开发出著名的MYST的Broderbund在开发新游戏时,先做出游戏的工作原型,再利用70人花费数个月对其测试,这种原型是游戏的一个纯文本版本,而与媒体的开发无关。调试人员考察此纯文本版本,摆脱具体媒体效果的影响,以便游戏内部的运行机制和交互功能得到彻底的测试。测试的目的主要是看用户对游戏机制的反应,最终决定游戏的内核是否真正吸引游戏者,值得去为它加上媒体的绚丽的外壳,进行实际的开发工作。
最后着重强调由游戏分层模型引出的第一条游戏设计准则:
决定游戏成功与否的永远都是游戏的内核而非游戏的外部效果。在游戏的设计中,特别是前期设计中,应给予游戏的内核足够重视,不要贪多求快、盲目地过早进入具体的外部效果设计。

 楼主| 发表于 2006-5-21 12:00:00 | 显示全部楼层
倘若一部游戏不能使游戏者获得某种深层的情感,那么它所受到的欢迎程度将是有限的。在确定了具有竞争性的游戏内部机制后,下一步需要考虑的就是游戏的情感世界,实际上是特定游戏者群的情感世界。下面要讨论的是游戏采用何种手段使游戏者获得情感体验.我们将会看到游戏独有的虚拟情境,以及普遍存在的焦虑产生及释放过程,还要附带提及期待及悬念问题。

2.1、虚拟情境

如果一件制造品的设计意在激起一种情感,并且不想使这种情感释放在日常生活的事务之中,而要作为本身有价值的某种东西加以享受,那么,这种制造品的功能就在于娱乐。娱乐并不实用而只能享受,因为在娱乐世界和日常事务之间存在着一堵滴水不漏的挡壁.娱乐所产生的情感就在这间不漏水的隔离空里自行其谊。游戏作为一种娱乐形式,也存在着自己的情感隔离室.称为虚拟情境。
游戏是以不干预实际生活的方式释放情感的一种方法,为了使情感可以不影响生活地释放出来.必须创造一种虚报情境。所谓“虚拟”情境被理解为情感会因为被释放而“接地”,它不会涉及到那些在实际生活条件下会涉及到的种种后果。在现实生活中.如果一个人要表示对另一个人的忿恨,朝他挥舞拳头进行威胁等等,通常他会被认为是一个危险人物,而对被他威胁的那个人来说是尤其危险的;于是那个人会采用种种步骤来保护自己:或平息前者怒气,或申请警察的保护。如果人们认识到不会出这类事情,生活将照样进行,那么,在其中表现馈怒的哪种情境就被称为虚拟情境。
为了在游戏和实际生活之间比较.我们可以把情感分成两部分,显然在游戏者游戏过程中,情感本身被当做目的加以对待;而在现实生活中,情感本身不是目的而是后果。现实生活中的情感也许会渗入游戏的虚拟情境的情感中,而游戏的虚拟情境中的情感不会影响到现实生活中来,因为在游戏中它们已经被“接地”释放了。

2.2、焦虑及其释放

从动态观点来考虑,任何情感在其存在过程中都有两个阶段;负荷即兴奋阶段,以及释放阶段。一种情感的释放,是在那种情感的推动下完成的动作,借助这一动作我们就消除了那种情感,也就使我们自己从情感释放以前加在我们身上的紧张中解脱出来了。与此对应,虚拟情境的主要任务主要有两个:

1.唤起游戏者某种情感
2.在那种情感的推动下完成某些动作,借助这些动作最终消除那种情感

这正是游戏的独特性。我们发现很有趣的现象:在游戏中我们获得的愉悦和兴奋,其实是在一个高度负荷的情思释放过程中获得的,游戏也为这种释放过程提供了虚拟情境(场所)和游戏行为系统(手段),而产生这一高度负荷的情感及其所带来的焦虑、紧张等不适感的恰恰正是游戏本身。游戏本身在扮演一个“双簧”的角色,它实际上在一定程度上“玩弄”了游戏者。这一点与音乐带给我们的情感体验是一样的,在交响乐作品中,作曲家通过反复重现一个旋律片段,使我们进入某种情感体验,但随着旋律重复的继续,我们开始期待看它的变化和完成,产生疑惑、焦虑的情绪,随着时间的流逝.听众的紧张度越来越大,迫切需要从这种精神状态中解脱出来,这时作曲家等待听众的紧张度达到承受的极限,马上使用与上一个旋律截然对立的另一个旋律来打破上一个旋律,从而使听众从某一个感情的高点跌落下来。获得强烈的解脱感。在RPG游戏中,为了让游戏者最终获得打败大魔头的快感,游戏往往通过无休止的三、四流小妖反复进攻游戏者,在游戏者长时间的鹰战中增加焦虑和紧张感,而游戏设计者也适当掌握着度数,达到一定阶段后,游戏者最终通过艰苦战斗获得胜利,产生无以名状的快乐。
因此我们看到,游戏的目的在于产生确定的、预期的效果,即在某种类型的游戏者身上唤起某种情感,并在虚拟情境内释放这种情感,情感释放使游戏者获得快乐。游戏设计者把通过唤起某些情感来取悦游戏者作为自己的任务。整个游戏过程中,游戏者将体验许多个这样的焦虑——释放过程,他的情绪也处于波动之中,被游戏设计者灵活调动、层层推进,见图3。

2.3、期待、悬念

游戏的一个重要组成部分是不可预见性,由此产生期待与悬念。游戏者在游戏前对游戏的最后目标将是什么有一个大概的感觉,但是关于当前这个过程将怎样带他到达那里,在途中将遇到什么曲折和障碍,他是不能断定的。游戏者在游戏中由于并不知道游戏内核的运行机制,因此对于自己动作的结果有一种忐忑不安的期待。在所有的游戏中,游戏者总是通过经验实现对不可预测性的抗争。从不可预测性上看,游戏可分为两种,一种称为技能游戏,另一种称为机会游戏。前一种游戏的内部运行机制是确定的,不可预测性产生的原因是由于游戏设计者故意隐藏了运行机制,游戏者可以最终通过对游戏运行机制的理解和控制(即某种技能)解除这种不可预测性。而后一种游戏中游戏本身的运行机制具有模糊性,具有随机因素,不能完全通过对游戏机制的解码消除不可预测性,游戏动作产生的结果是机会的。
期待是在与特殊的游戏规律相联系中发展起来的习惯反应。游戏者不断根据自己的期待决定动作,在根据动作结果修正期待,如果期待长期偏离则产生紧张、焦虑感。在游戏中,期待和对期待的控制很有意义。不能使游戏者的期待完全落空,这特使游戏者产生严重的挫折感,也不能使游戏者的期待完全应验,否则游戏将失去不可预测性。应该时而使游戏者的期待变成精确的结果,使其增强信心,获得欣喜;时而抑制游戏者的期待,使其产生疑惑,疑惑的时间持续越长,悬念的情绪就愈强烈,建立起来的悬念紧张度越大,由解决引起的情感上的解脱感就越强。悬念产生的价值不在其本身,而在于随之而来的解脱。期待、悬念及其解除过程实际上与焦虑、释放过程是相对应的。只不过一个更偏重于经验方面,另一个更偏重于情感方面。

最后着重强调由游戏的情感世界引出的第二条游戏设计准则:

在虚拟情境中要故意制造某种情感的负荷,使游戏者产生焦虑、镊张憾绪,然后巧妙地调动引导游戏者,最终使其解除焦虑状态,产生意度的解脱感和兴奋感。同时要针对游戏者的期待,适度产生悬念对抗游戏者不断增长的经验,使其能感到游戏处于一种动态的变化中。
 楼主| 发表于 2006-5-21 12:01:00 | 显示全部楼层
3.游戏的行为系统

游戏的行为系统,实际上是游戏内部运行机制决定的游戏的输入/输出集,它决定了游戏者在特定的游戏系统中可以做什么,不可以做什么。游戏行为系统的功能就是作为情感释放手段,它也是游戏交互性的重要组成部分。

3.1、封闭系统

任何游戏的行为系统,都是一个封闭系统。游戏者所具有的选择能力和处理能力都被严格限制在这一封闭系统中。这个封闭系统具有自己特有的反应机制,对应一定的输入产生一定的输出。
一个封闭的行为系统有两个组成要素:交互手段(输人/输出手段)。交互法则(输入/输出映射关系)。

3.2、交互手段

目前我们所熟知的与计算机交互的手段,如:菜单、窗口、鼠标操作等。都是建立在计算机科学与技术前一阶段研究的基础上。象前面列举的构成GUI(图形用户界面)的诸要素,就是先在大学的实验室中得到实验与应用,后来成为工业界的实际标准。而作为软件中对市场和底层技术反应最快的游戏软件,往往最早应用这些研究成果。当然目前的交互手段有很大局限性,带有太大的计算机色彩,象键盘、鼠标,VR战士们是不应该通过一连串乱七八遭的按键(按键的设定就是一个稳定的封闭的行为系统)出拳的。目前很热门的研究领域如:人机交互(Human-Computer Interaction),虚拟现实(Virtual Reality),如能突破技术难关,则比之现在的交互手段将会有很大进步直至飞跃,将使我们置身于梦幻般的虚拟游戏世界,带来强烈的临场感受。这样一个虚拟的物理世界和一个虚幻的情感世界结合在一起,将产生一门最具震撼力的娱乐形式,其表现力将使电影、电视相形见拙。当然这大概是很远的将来的事情了,因为技术上的难度很大。(虚拟现实系统的实时处理能力和游戏故事情节多线拓扑结构及其数据组织是为游戏增添更大自由度的两个最大的瓶颈,此不赘述)

3.3、交互法则

作为行为系统第二个要求的交互法则(输入/输出法则),应该具有一定的动态性,也就是说在游戏者游戏过程中,游戏行为系统的反应机制从来都不是一成不变的。游戏者在游戏过程中通过学习、运用、获得反馈,内部机制。这时游戏应该改进反应机制,迫使游戏者调整自己的学习一反馈一掌握一运用曲线,基本保持游戏的全程新鲜感。当然反应机制应该采用渐改的方法,向下兼容、渐进发展的行为模式,现在的经验是将来可用的、有用的,但将来的情况又不是现在的经验完全对付得了的。即现在是将来的真子集。

第三条游戏设计准则:

游戏的行为系统是一个封闭系统,但不是一个静态系统,应采取向下兼容、渐进发展的行为模式,使游戏尽可能不被游戏者“琢磨”透,使其尽可能长地具有挑战性。
 楼主| 发表于 2006-5-21 12:02:00 | 显示全部楼层
4.RPG游戏

RPG游戏 (角色扮演类游戏)无疑是最受欢迎的游戏类型。但很难对其进行确切定义。本文采取用其性质或者说其构成要素来定义其本身的方法,在阐述了下述问题之后,对RPG游戏的定义问题也就得到了解决。

4.1、对人生的模拟

如果说飞行模拟类(Flight Simulation)、体育类[Aethetics)、动作类(Action)等游戏都是对现有的某项人类活动的再现与模拟的话,那么RPG游戏体现的则是对整个人生的再现与模拟。正因为如此,RPG游戏所构造的情感世界是所有类型的游戏中最为强大的,能带给我们深刻的体验感。这种体验感来源于每个人内心深处对人生的感悟和迷茫,无奈与苛求,失意与希望,在RPG游戏所构造的虚拟的人生的情感世界中得到了共鸣。

4.2、RPG游戏的三维空间

可以用一个三维坐标系统来定位RPG游戏,所有类型的RPG游戏部位于这个坐标系所界定的三维空间中。

上图的三个坐标轴所表示的内容分别为构成RPG游戏的三大特性,即为:
1.艺术性(Z轴)
2.故事性(Y轴)
3,交互性(X轴)

倘若我们把每个坐标轴的最大坐标值定为1,那么坐标点(0,0,1)代表纯粹的艺术作品、如:视觉艺术(Visual Arts)、音乐作品等;(1,O,0)点代表完全的操作性活动,如:体育运动;(0,1,0)点则代表故事情节及其纯线性的展现和播放,如:电影剧本、VCD和录象磁带。而RPG游戏则位于点(X,Y,Z)。其中:0<X<1,o<Y<1,o<Z<1。而不同类型的RPG游戏,在这个三维空间所处坐标不同。偏重交互性的,其X值较大;偏重故事性的,其Y值较大。需要指出的是:X,Y,Z的值都不能为O,因为构成RPG的三大特性或者说三大要素对任何一个RPG游戏都是必不可少的。
在艺术性上,RPG游戏和其它类型的游戏一样,借助于多媒体现听(MAV)的强大能力,综合了美术、动画、音乐、音效、文学、戏剧等多种艺术娱乐表达形式。在故事性上,与其它游戏类型相比, RPG游戏和电影的关系更为密切。因为它们的“情节”都是由“剧本”严格限定的,也就是单线发展的。但与被动欣赏的电影不同的是RPG游戏给游戏者提供了虚假的主动性。在RPG模型中我们将要看到这种虚假的主动性是如何达成的。这种虚假的主动性和被动的故事设定情节相结合而构成了RPG游戏的交互性。

4.3、RPG模型

剥去各种RP6游戏的外部特性,我们可以看到RPG游戏的普适模型。如图5。这也是所有RPG游戏的拓扑结构。这是一种单线发展的RPG游戏。它由两部分构成:一部分是主控部分,也就是交互部分。当主控部分起作用时,游戏的操纵权被授予了游戏者,游戏者可以充分利用游戏所赋予的交互手段进行输入;另一部分是设定的被动的剧情,由线性排列的一连串事件组成。所谓事件,就是在一定时间内从游戏者手中剥夺游戏的操纵权,从而使游戏按设定的轨道向下发展,比较普遍的是被动地显示一段动画。在游戏过程中,游戏者获得操纵权后,进行输入。一引发某个事件(显然单线RP6游戏同一时刻只可能引发一个唯一的事件),游戏者操纵权被剥夺。当事件完成后,操纵权又被赋与游戏者,用来引发下一个事件。游戏者就是这样不停地交替地被赋予和剥夺游戏操纵权,事件也就这样按设定的轨道发展下去。所以我们发现:RPG游戏中游戏者只是虚假地拥有主动性,游戏者实际上只拥有决定何时弓发事件的权利(玩RPG游戏的能力高低就在于是否能很快找到引发事件的“点”,能力低者会淹没于RPG游戏中各种信息的海洋中,不知那个信息是决定事件发展的关键),而不具有任何决定事件发展顺序或事件本身的权利。

4.4、多线RPG游戏遇到的问题

实际上上面所述的单线RPG结构在七八年前就很成熟并定型了,直至今日未有太大发展。现今的一些所谓RPG大作,扣PC上的<仙剑奇侠传>,SFC上<CHRONOTRl6GER>等从本质上说比之八十年代FC上处于胚胎期的RPG游戏没有什么不同,只不过画面更精致了。有了花哩呼哨的动画,高保真度的音效、音乐等等。那么使RPG游戏真正具有一定的主动性,这一梦想无疑对游戏设计者来说是极具挑战性的。但遗撼的很,技术上难度相当大,起码在现在看不出任何曙光。因为这里面的问题早已超越了RPG游戏的本身。
我们知道,超媒体(Hypermedia)或超文本(Hypertext)技术出现之前,人们读一本书,一般是按一定章节顺序读的,也就是线性的。书的组织也是按一定的线性顺序组织的。超媒体(文本)技术出现以后,在多媒体出版领域成为事实的标准,它们实际上是通过在文章中设定关键字跳转,使线性的书形成一种网状结构。这样从同一个起点浏览,碰到关键字后跳转的可能性成N次方级激增。正如回字有几种写法一样,同一本多媒体读物,包含同样的素材,但可以有无数种读的方法。但这种多媒体读物一般适用于百科类图书,相当于资料汇编。对于有故事情节的文学性著作就无能为力了。具有情节性的RPG游戏现在也是线性结构,若采取多线结构,首先面临的是选择一个合适的拓扑结构。从数据结构角度看,可以有树状结构,网状结构等。如图6所示。

如上图可见,在多线RPG中,事件的含义与单线RPG有很大不同。在单线RPG中事件是一个无交互的叙事性段落。而在多线RPG中,事件不仅是触发后的一段叙事段落,更重要的是一个选择点,它决定了事件流的导向。正如人生中遇到的许多选择一样,不同的选择将导致截然不同的结果。这样游戏者不仅拥有决定事件发生时刻的权利,同时也拥有了决定发生什么事件的权利、当然,在选择时他们并不能预期将要发生什么,后果如何,这还是由游戏设计者决定的。但游戏者确实拥有了真正的选择的权利,尽管选择的范围也是被游戏设计者设定的。但树状结构与网状结构不同的是,在一次游戏过程中,树状结构遵循因果律。事件是分级的,不同级的事件发生的先后顺序是确定的,有因有果,并且同一级只能有一个事件发生,则这一级其它事件(节点)及其以后的事件(子树)在以后的游戏过程中将不起任何作用。而网状结构则提供了在事件集中任意漫游的可能。无分级的概念,无因果的约束,任何事件都可能被触发。显然网状结构不符合我门日常的生活实际,但网状结构的研究对多线RPG还是很有意义的。
考察树状结构,我们发现其实现的最大障碍不是技术上的,而是其数据(资源)费效比太氏,数据(资源)冗余度太大,以至于完全不能按理想的树状结构去设计一个游戏,倘一个RPG游戏有10级,形成完全二叉树(每一个事件点上游戏者面临两个选择项),游戏者在一次游戏中只可能经历10个事件。但游戏设计者为了实现二叉选择这一功能,将不得不准备2的45次方个事件的有关数据,这简直是个天文数字(当然这和真正的人生有些相似,人生中每一天每一小时每一分钟每一秒的可能性都是无穷的,在每一天每一小时每一分钟每一秒做出的选择导致的一连串因果相循的后果可能性也是无穷的)。
目前几种标榜多线的游戏,采取下图的拓扑结构。

这种简化的结构是使单线结构出现了几个小支路,最后还归并到主线的不同地方。这实际上只是一种改进了的单线结构,实际意义令人怀疑。从心理上分析,游戏者在费很长时间很大精力玩完一谊游戏后一般不会为了几个无关紧要的支路再重新将主线遍历一遍。一般来说,第二次玩RPG游戏时,只有当游戏的2/3主线具有新内容才能被游戏者接受。但这样大规模对主线附加支路,将使RPG游戏的拓扑结构变得象图8所示。

可以看到,冗余度仍然相当大,接近200%。但这是目前技术所能实现的,有一定多线性的RPG结构。
在网状结构中,每一个事件都是可能发生的,平等的,这是一种有效的数据(资源)组织形式,不存在资源浪费(冗余)问题。可以设想是否可将因果性的树状结构和非因果的网状结构结合;从而解决真正对人生选择的模拟和海量数据冗余之间难以调和的矛眉的问题。当然这有待于进一步研究,而且也并非一朝一夕就可以解决的。

5.游戏设计与开发

5.1.游戏设计者

对游戏设计怀有兴趣的人大致可分为两类:具有技术素质的艺术家和具有艺术趣味的技术人员。前者熟知他们所要表达的最终效果,并能用准确的语言、文字、图象和音乐等形式表达出来。但对于如何达成这一最终效果往往缺乏足够的技术能力和专门知识;而后一类人员,由于所受的训练,他们所擅长从事的,正是前一类入做得很差或根本无法做到的事情。他们并不能独立地、明确地提出艺术方面的标准和意见,但能将各种艺术形式表述最终效果反推、翻译成软件工程计划书、各种设计文档直至程序代码和数据文件,并用严谨的工程技术手段实现整个游戏设计。这两类人部属于跨越学科局限,文理界限的边缘型人才。他们是游戏设计群体的核心人物,在纯粹的技术开发人员和纯粹的艺术设计人员之间的鸿沟上架起了桥梁。但作为游戏设计开发的主管人员,上述两类人各有其弱点:第一类具有技术素质的艺术家对技术的理解片面而且肤浅,没有工程的观点,容易沉溺于艺术表现的激情中不能自拔;后一类具有艺术趣味的技术人员对艺术的理解力、创造力都不能胜任游戏的全面设计工作,而且往往比较实际,缺乏想象力,用技术复现代替了艺术创新。针对这两类人的情况,我们会看到在下面我们将游戏的整个产生过程划分为设计阶段和实现阶段后,前一类人胜任于设计阶段,后一类人胜任于开发阶段。而这两类人不仅需要成为技术人员和艺术设计人员沟通的桥梁,他们之间也需要进行沟通和合作。

5.2.设计与开发

设计与开发是两个不同的阶段。有两种论点:一种认为应将这两阶段完全割裂开。设计阶段应完全将游戏设计的构想固化,解决游戏的用户视图及开发人员视图(Gamers'View and Developers'View)。这样在开发阶段软件开发人员可以较顺利地应用开发人员视图(软件蓝图,计划书,文档等),美工等可较方便地利用用户视图(界面,形象设计等)按部就班地进行开发工作。这种观点是较经典的软件工程方法。主要是从如何最有效地实施软件工程的角度考虑的,也较理想化。另一种观点较实际,认为设计和开发阶段总是交替在一起的,无法完全割裂,因此需要多次反馈、修改。但不营怎样,大部公认设计人员与开发人员是不同的两类人,承担不同的工作,需要不同的素质。
另外,游戏的设计与开发实际都是采取软件工程中经典瀑布模型和原型法相结合的方法。尤其是原型法显得更为重要。

6.小结

本文所述是笔者在自己几年的摸索实践中一点粗浅想法,由于学业在身、时间仓促,以上观点还很不成熟,愿与有志于游戏事业者共讨。

参考书目:
1.<艺术原理>,[英]罗宾.乔治.科林伍德,中国社会科学出版社,1985年
2.<音乐的情感与意义>,[美]伦纳德·迈尔,北京大学出版社,1991年
3.<软件工程导论>,清华大学出版社
4.<数据结构>第二版,严蔚敏,清华大学出版社
5.<Designing the User Interface,Strategies forEffective Human -Computer Interaction>,
Ben Shneiderman,Addison-Wesley
Publishing Company,1995
6.<红花会密令.设计文档>,YY STUDIO
 楼主| 发表于 2006-5-21 12:03:00 | 显示全部楼层
一般而言游戏定位必须回答一下几个重要问题:
谁是目标玩家(Who is the target customer?)
什么是你游戏的关键优势(What are the benefits of your game?)
竞争者是谁(Who is the competition?)
与竞争者相比,你有什么关键特色。(What is the key difference between your game and competition?)
事实上,回答这些问题能够帮助你更好的理解游戏的设计,一个常见的误区是:开发者去创建一个“Cool”游戏,并想当然的认为游戏必然获得好的市场,事实上这是很难的,很少发生这种情况,所以在开发游戏前进行市场分析是十分有必要的。
目标玩家
在这里,你必须回答目标玩家的年龄层次,你必须知道你为什么人开发游戏,知道这一点,能够很好的帮助你将开发进程控制在正确的轨道上。
主要优势
列出你的游戏被认为“Cool”的地方,为什么你的游戏能够与众不同。但要注意,不要长篇累牍的描述你的优势,要集中在几个真正特殊的优势上。
竞争者
除非你创建一个新的游戏类型,否则必然有竞争者,告诉读者其他游戏是什么样子的,并且让他们了解,为什么你的游戏是不同的,更有希望的,更好的。
关键特色
定义你的游戏与其他竞争者之间最关键的不同,注意,最好用一句话描述它,创造一个另人难忘的的描述,可以更好的打动游戏的发行商――增强他对游戏的理解和他对游戏的信心。

 楼主| 发表于 2006-5-21 12:04:00 | 显示全部楼层
如何开始设计一个系统
这里列出来的只是提纲,并且没有时间整理完善,不过只要大家明白大概的意思就好了!
国战系统设计
设计者的目的
突出阵营之间的对立
大规模战争场面的引进
促进阵营内部之间的团结
多人之间的互动
向多人暂时自己的才能,战斗才能、指挥才能
短暂的改变玩家游戏的目的,让玩家得到喘息的机会

游戏者的目的
奖励吸引
特殊物品的使用
荣辱存亡
友情帮助
仇视引导
破坏掠夺
荣誉感
对于大规模战争的渴望

可控因素
时间
地点
参与者
PK值装备
资源消耗
战场设计
战果统计
如何参加
胜利条件
空间概念
死亡处理
国战惩罚
特殊道具
团队指挥
设置需求


 楼主| 发表于 2006-5-21 12:04:00 | 显示全部楼层
系统之间的相互约束
停止更新这段时间还是有很多朋友在支持,让本人实在是感动。今天抽出时间来写上一小段。本来是准备讲联系与约束的。但是这样写起来一会也写不完,就先讲约束了。

在相互联系的系统之间,要避免出现联动的感念。因为这样到随着系统的增加,会使得维护越来越困难。这里教大家一个方法,就是利用一个系统为另外一个系统设置一个门槛。在这里就举一个简单例子,比如:
武器熟练度系统
新手导师系统
乍看起来这两个系统没有什么联系,但是如果玩家装备的武器或者武器的威力要依靠武器熟练度的话,那么实际上导师带新手练级我们就没有必要做太多的限制了,因为即使其等级被带高了,他还是需要花费一定的时间来修炼武器熟练度。

 楼主| 发表于 2006-5-21 12:05:00 | 显示全部楼层
新手策划如何快速的提高自己的水平
经常有朋友在QQ或者通过邮件问我,如何才能够快速的提高自己的策划水平,所以在这里集中的回复一下。需要注意的是:我说的这个主体并不是如何成为一个合格的策划!

想要提高自己的策划水平,我觉得最重要的还是玩其他人的游戏,并不要求有多长时间,但是玩了之后一定要写自己的心得,比如这个游戏设计的优点、缺点;有那些方面的优点、缺点,注意在写的时候不要太笼统,能有多细就写的多细,这样,写多了,自己的水平也得到了一定的提高。再定期的回去看看以前自己写的文档,有时会发现自己的意识有了一定的进步,这个时候不要删除原来的文档,而是在边上标出现在自己的想法,并标明日期。

另外就是多看看一些其他人的心得,而且心得这个东西是随着自己水平的提高,感受也在不断提高的。所以暂时看到一篇你不以为然的文章不要先忙着否定,也写下自己为什么不认同他的原因,如果有可能最好是能和其他人讨论一下,说服别人的同时你也在考证着自己的理论!

最后:能够迅速提高自己的水平的还是参加实践的工作,但是已经参加工作的要注意,不要把自己每天都陷入进琐碎的事情中,半个或者一个月的时候应该总结一下自己,平时注意写开发日记,主要是记录当时自己的心得,等项目做完之后,用市场的反应再回头来对照自己的开发心得,我想您的进步肯定是阶段性的,也就是说你的水平会有一个非常大的进步!

1、学习基本知识,万丈高楼平地起需要坚实的基础
2、多看多想多学,只有厚积才能博发
3、多玩游戏并进行总结
4、自我检讨并检讨别人
5、多来这里灌水,潜水有理灌水无罪
6、多认识些朋友好混吃混喝混烟抽(注:我不抽烟)
7、头脑风暴、风暴再风暴,当然一个人的风暴不如N个人的风暴,所以大家经常在这里大脑风暴下
8、没事来个马拉松,身体是革命的本钱
9、。。。。。。,只可意会,不可言传
9、。。。。。。。(嘘!~说了会被砍)
 楼主| 发表于 2006-5-21 12:06:00 | 显示全部楼层
自己决心走向游戏策划,最开始可能就是一些个人爱好吧。爱玩游戏,喜欢在游戏中得到自己所喜爱的。玩过暗黑,体验过官服中站队的团结;玩过天骄,那份真挚的友谊一辈子也忘不了。同时也遇到过许许多多的游戏本身不平衡或运营商徇私舞弊之事,从而萌发了投身于网游中,让自身微薄之力为网游策划之海洋加一滴淡水。
在我看来,一款能够成功的游戏,离不开2种策划:游戏策划与市场活动策划(有可能这2种策划分别存在于游戏开发商和运营商两侧)
§1、游戏策划。一款网络游戏的平衡以及可持续性再发展都是由游戏策划来一手操办。所以,游戏策划水平如何在某种意义上会影响一款游戏的生命周期,短浅的眼光也可能让一款很有前途的游戏而早早命丧黄泉。
§2、网络游戏市场策划:叫好不叫座,不仅仅在电影界广为流传,在游戏业界也是一种很普遍的现象了。Why?市场策划不到位,该做的没做,不该做的可能白费了功夫。这就需要市场策划来积极配合游戏本身,来搞好线上线下的各种活动。以达到其宣传的效果。

不管游戏策划也好,市场策划也罢,两者都是相互相通的:好的游戏需要市场去支援,而想得到更好更广泛的市场,同时也要游戏策划去完善游戏本身,这样才能让更多的消费者(玩家)来认知并参与。
现在我们讨论的主要是从游戏制作和平衡本身来考虑策划一职,所以将来希望能有更多的人来参与到讨论市场活动策划中,让好的游戏不仅叫好,而且叫座!!!
 楼主| 发表于 2006-5-21 12:06:00 | 显示全部楼层
帮助系统
帮助的范围:
什么时候进行什么样的帮助
帮助的范围扩大化,不要仅仅限于游戏
帮助的程度
根据用户定位来设计
帮助的过程
讲究循序渐进
帮助的方式
彻底的了解用户的心理,
帮助的细节
不要用简单的文字进行表述
帮助的表现
帮助的表现要和主体符合

我认为游戏帮助的制作境界是“润物细无声”
一个好的帮助系统,首先应该无论是对新手还是老手都有一定的帮助,这是前提,不能只是想到新人需要帮助,老人也要经常查看一些必要的内容吧。这点上,可以通过tkgame现在推出的宝典就可见其作用之大了。
帮助的内容应该包括:游戏上手指南,任务介绍(这点应该在任务帮助里,越全面越好,玩家没心思跟你捉迷藏),各职业技能的详细介绍,地图及NPC介绍等等。
帮助的细节:帮助系统应该简单,明了,一针见血,不能说玩家看过了帮助后是一团糟,还要去问其他的玩家。举个例子,白居易总是先把做出来的诗先给当地的老百姓读,他们懂了,才加以保留——大多数人群接受的才是最好的。我个人觉得可以把编写出来的帮助系统给一些没有玩过游戏的人,起码他要看得懂大部分的内容,拿起游戏能玩,这才达到要求的标准。 可以适当的使用一些切图做以辅助。
想指出现在普遍的帮助系统不足之处:
1、简单而不简约,玩家看得不清不明;
2、玩家想得到的信息得不到,比如像什么级别可以打什么怪,在哪里打等等;
3、不进行及时的更新。游戏系统都要定期的更新,那么为什么不把帮助系统同时也更新一下呢

新人需要帮助是为了尽快熟悉游戏和所存在的虚拟社会,至于老玩家一般关心的是与自己角色成长有关的东西,一个20级的玩家是不会再去看怎么聊天的,如果到20了帮助系统还提醒它怎么操作,那么它会有什么反映?天空宝典我也看过,里边是什么东西看过的人都明白,它的作用是里边大量玩家的经验等文章而非官方的帮助系统。
帮助应该点到为止,没有必要做的尽善尽美。玩游戏玩的是乐趣,不是喝开水。作为一个策划,没有必要也没有权利怀疑玩家的智商。简单明了是必须的,一针见血未免过头了点吧,因为探索也是游戏的重大乐趣之一。某些情况下,玩家成就感的获得和游戏的感觉就是来源于对未知世界的探索。比如说吧,你要做任务,接了任务后系统会自动给你画出到任务地点的路径,到了地方后系统会自动标明那个怪物是你需要的任务怪物,在你杀怪的时候系统会自动刷出NPC帮助你,然后完成任务后自动把你传送回接任务的NPC处。呵呵,这样的任务详细吧,但是不觉得与开水一个味道吗?
我个人认为,帮助最重要的第一次进入游戏的前10分钟。这个10分钟一般就会决定它会不会继续玩你的游戏。如果,这个游戏留不住人,那么无论你后边的东西做的再好、帮助做的再详细也是白搭。所以,对于新人的帮助应该尽最的可能贴心和人性话。至于后边的过了新人期的帮助,那就应该另当别论了。

虽然说没有权利怀疑玩家的智商,但有些事情不得不体现某种不懂。我玩游戏是不喜欢看帮助的,因为RPG游戏的操作大多大同小异。
在设计界面上能比较明确的体现各项操作,可以说打怪练级基本没问题。
但也会遇到一些人,除了会攻击外,连组队、交易等等都不甚清楚,几乎要手把手的交才会,那么就只好在帮助系统里尽详细的说明 -_-!  不过也有人是连帮助都不懂看的。。。只好在新人刚进入游戏的时候就强行进行帮助。
------------------------
有些游戏在新人进入就会有特别的新人任务,关于操作帮助的,完成就有一定的奖励,这个感觉不错。而有些游戏没有帮助,界面指示也不明显,一个不小心把聊天框弄没了,到处找都找不到,官网等也没见到相关帮助。。。于是成了哑巴,顿时减了不少兴趣。

对于帮助系统主要是针对刚进入游戏的玩家.一般新接触一个游戏,主要了解是,游戏的特色,操作.一般比较好的方式就是新手任务,让玩家了解怎么聊天,组队,加好友,怎么攻击怪物,那里买卖东西,各种NPC的功能,怎么交易等等.等有高级点的话就开放帮助新手任务,这样不仅可以让新手更容易上手还可以交几个朋友,还可以得到一点奖励.
 楼主| 发表于 2006-5-21 12:07:00 | 显示全部楼层
网游核心是什么?
首先借这个机会向狂刀和各位朋友道个歉,最近因为我工作变动,所以造成长时间不能发挥代理管理员的职责,使对本站有期望和关注的朋友失望,希望我今后能更多的服务于大家。

网游的核心是什么?这是我今天想和大家一起探讨的问题。在探讨之前,大家可能需要商讨一下网游的概念,我认为网游是具有中国特色的名词,简单的解释成网络游戏似乎范围太广,绝大部分是MMORPG(大型多人网络角色扮演游戏)。

那么是什么因素让人上瘾呢,让人感觉是“电子海洛因”呢。网游可以说是在中国启动了一个无聊市场,把中国无聊网民(和他们身边的无聊非网民)的无聊时间开垦了出来。如果有某种东西能够贪婪的占用大众的时间,从无聊的时间入侵到以前不无聊的时间,同时还能够吸纳大众的金钱,这就是非常可怕的东西,它在历史上以不同形式存在过,大家应该都能数出来几种。打麻将只是无聊时的一种可能,实际上无聊是非常难得的状态,而且它能让人变得聪明。

除了消磨时间,再有就是升级带来的成就感。

RPG的核心要素就是升级,升级的手段就是打怪积累经验值或者完成任务(绝大多数还是要打怪)赢取经验值,就算画面上没有血光四溅,杀戮是不可少的。有人说游戏的目的就在于挑战,挑战自己,挑战他人,那么升级系统本身就符合这种目的,你既可以闷头挑战自己而练级,也可以互相较劲而冲级,级别越高升级越难(有些游戏的最高级别干脆是不可能达到的),永无止境,这样的环境能避免上瘾吗?
RPG的核心要素就是升级,升级的手段就是打怪积累经验值或者完成任务(绝大多数还是要打怪)赢取经验值,就算画面上没有血光四溅,杀戮是不可少的。

如果依这样的方式刨析的话,那么RPG的核心应该为一个字:砍。你打怪升级是砍,你完成任务是砍,你挑战自己是砍,你挑战别人还是砍,总之在游戏中你是离不了砍的,从出生砍老鼠、兔子等到砍高级的生物甚至砍别人都是砍。

我觉得还有一个要点就是人与人之间的交流,MMORPG的一个要点就是多人在线的交互游戏,在游戏中玩家的相互交流也容易让人上瘾。
      升级肯定是游戏的核心因素,让升级的方法多样化应该是个问题。
      我在策划中还是想通过以升级为网游的核心,但是不想让游戏人物升级做为唯一的核心。想改变这种情况必须要限制升级,例如在每天只有几个有效的时间适合练级。(不知道是不是可行)只有把这些时间分割出来才能让玩家在游戏中做其他的事情(从事生产和劳动)
      其实游戏的目的就是把玩家尽量拖在游戏中,但是现在的一些游戏也能把玩家拖在游戏中,但时间长了容易让玩家厌烦,导致离开游戏。



网络游戏,是社会的产物。网游,为什莫有如此大的市场,吸引了数以万计的玩家,答案只有一个:因为我们在游戏里能得到太多现实里得不到的东西。
     现实里有太多的规矩教条,我们身在其中不知所措。每个人都向往自由,就像每个人心里有一种想要裸跑的冲动,只不过敢于行动的人很少罢了。在网络游戏,无论一个多莫害羞的男孩,都有勇气对一个女性角色说:你好,美女!这是很平常的事,但是在现实中,也许他的一生都不会出现这样的场景。没有规矩不成方圆,网游也有它的规矩,它的准则,但是和我们现实相比,它显得太轻了,真是轻于鸿毛,每个人都可以接受。我们还为来到这个世界上,我们的姓氏甚至姓名早就被决定了,这个名字取决于父母的生活背景和受教育程度。在游戏里就没有规矩,想叫什莫就叫什莫,这也是自由的一种体现。
梁朝伟做过一个海飞丝的广告,第一句台词是:“我喜欢黑色,因为它能把我藏起来。”
其实我们很多人都想把自己藏起来。无论何时,当我们受到挫折,更多的人愿意找个陌生人倾诉。网络就给我们提供了这样一个平台。有句话说:“没人知道电脑屏幕后面坐着的是不是一条狗。”我们既想要把自己藏起来,又向往和更多的人交往,国外比较聪明,没有网络以前,他们发明了化妆舞会。看看网络游戏,里面何尝又不是一个一个带着面具的人呢。
成就感,满足感,每个人都需要。葛优在《卡拉是条狗》里充分的给我们展示人性的这一面。即使是一个底层的小人物,他也要不惜一切代价养一条时刻讨好他,对他摇尾乞怜的小狗。MMORPG最大的成功就是开始很容易让人得到成就感,比如说前多少级很容易升上去,前期的装备也很容易获得。等到以后,可能做上帮主,做上了帮主又想攻一座城,有了城就麻烦了,创业容易守业难。
社会的发展,物质进步了,精神上离我们理想的境界越来越远,从当代的大学生上可见一斑,越来越多人的感到浮躁,有几本书,像《草样年华》,《活不明白》,就真实的剖析了那一部分人的生活。其实不只是大学,社会上也有越来越多的人感到空虚,所以当网络游戏的出现,立即被空虚浮躁的人们紧紧抓住不放。不过在玩过以后,浮躁的依旧浮躁,空虚的更加空虚。

每个人在现实中所展示的是一个虚假的自我,而心中都压抑着一个真实的自我,而如今的网络世界却可以给人提供一个释放真实自我的平台,所以人在会沉迷于网络,在其中营造一个属于自己理想国度的虚幻世界.
      网游说白了,其实就是让人在一个虚幻的世界中得到尽情发泄的产物,因而它才在市场上有了生存的空间与土壤

 楼主| 发表于 2006-5-21 12:08:00 | 显示全部楼层
游戏引擎设计理论

  小谢
 
    早想写一点游戏设计的文章与大家交流,一是经验的问题,二是公司正在紧张的游戏制作期,实 在抽不出多少时间,一直没有动手,今天忽然头脑发热,写了一段,以后准备陆续写一些游戏创意,策 划,制作,流程管理,和制作工具等方面的文章供大家参考.
   
   我们的游戏设计经验主要是冒险游戏和角色扮演游戏,但我们设计游戏工具时尽量适应其余题 材,不过是否可行未经检验. 写这篇文章的意图一是想为游戏界做点事,抛砖引玉吧,另外是公司正在寻找志同道合的战友, 我写一点文章交一交朋友,许多东西仅仅是我们的经验,不一定很好.参考而已吧
   
   游戏设计工具包括游戏编辑工具和游戏引擎两块;
   编辑工具:交互编辑游戏数据,生成游戏引擎所需的数据文件,包括以下几个功能块: 图像编辑,场景编辑,物品编辑,动画编辑,人物编辑,事件编辑等,具体介绍在以后的 文章介绍.
   
先从游戏引擎说起.
语言:VC5.0
操作系统:WIN95
图像引擎IRECT X 5.0
   支持游戏风格:各种类型和视角以及多层次的冒险游戏和角色扮演游戏
   
整个游戏引擎包括以下功能块:
   
   资源管理:图像库CIMGLIB,声音库CSOUNDLIB,通过编辑工具形成的资源文件来定义,每种资源 包括定义管理和一些操作接口.图像库图"像包括多种格式(BMP,GIF.AVI,FLC等)以及他形成的内存 格式定义,子图定义(每一张图片包括许多小图,需定义它的小图位置,当然可以自动生成),游戏需 要的特殊定义,比如行走,身体性质,中心定位点,触发区,可以根据自己的要求扩充各种性质定义. 图像最好允许图像组合定义.声音库包括WAV和 MID的定义和再现. 资源由IMGLIB.DAT和 SOUNGIMG.DAT定义,调试版本中最好不要将资源打包,而是指向正常的 文件名,发行版本中再打包,这样修改和不同工作人员协调容易一些,否则最好有一个自己的资源 管理器.我们在调试版本中数据文件采用文本描述格式.许多数据可以手工编写而不需要专门的 编辑工具.
   资源管理对象还包括内存管理,比如设置时间阀释放长期不用的资源.

   声音管理:CSOUND,包括Creat(),Sound(char *fileName...),SetPos(),等,DirectSound有一 些函数,我们要做的是封装简化,减少对外的接口.
窗口系统:接管标准窗口系统,一个完善的游戏引擎最好有一个自己的界面系统,至于简单还是 复杂根据自己情况具体分析,一个具备基本功能的界面系统1000行程序就可以对付下来,需要窗口 系统的原因是一般的图像引擎不支持标准窗口,二是可以便于移植到别的操作系统.在我们的游戏 引擎中,游戏只是窗口系统的一种特殊控件(CWINGMCTR),因此可以实现多窗口游戏等特殊要求.
CWINGMCTR是一种特殊控件,通过他来控制游戏.包括控制和显示.

   图像引擎:所使用的图像引擎的管理,我们使用的是DirectX,包括Creat(),CreatSurface(), OutToScr(),Bilt()等对外接口;他不是游戏的重点,我们尽量将图像引擎细节封装起来.

    图像管理:这是处理图像的中心,一般处理游戏显示喜欢以某种图像引擎为中心来设计,我觉得 最好设计自己的对象来封装别人的图像引擎,这样不会因某引擎而受限制,移植也比较容易,我们虽 然使用的DIRECT X ,但实际上对外的接口是一种CPICPAGE的界面,他不但包括DIRECT X 的surface, 也包括标准的位图,AVI界面,GIF动画界面,以及自定义的格式,他将各种类型的图像统一起来,对外 使用统一操作,比如DRAWTEXT,BILT,LINE等标准图形图像操作,以及扩充的ALPHA通道,透明度等操 作.为了减少内存的需求,特别是16M高彩,不要将全部图像使用DIRECT X的表面,对一些刷新不多的 图像,比如背景,可以使用标准256色位图,甚至一种GIF表面,需要时再解压,我们还使用一种单色位 图用来从背景中抠图,比如一所场景中一棵巨大的树,只要不是动画,我们可以用单色抠图的形式从 背景中扣除来作为另外一层,这样我们可以大大降低图像的内存需求.因此采用全部手绘(或3D场景), 而不是小图拼贴的场景成为可能.通过各种手段可以节约60%的内存需求.
   CPICPAGE可以通过TimeTrace()以及多线程来改写内容,比如AVI的改变.

   游戏控制:这部分包括显示和控制,由CGAME->CGAMEPAGE->CGMOBJ对象组成,CGAME是总控对象, 包括许多CGAMEPAGE游戏页,CGAMEPAGE是一个具有连续场景的游戏片断,有点类似于游戏的一关, CGAMEPAGE由一系列CGMOBJ组成,CGMOBJ是游戏的基本对象,由他继承出地图,物体,物品,人物,武器, 动画,触发器,多媒体按钮等特殊

   游戏对象,这是一个根据游戏要求不断丰富和改写的部分,对外的 接口是:SendDraw(),Draw(),TimeTrace(),AcceptMsg(),SendNetMsg(),AcceptNetMsg()等,他是通 过CWINGMCTR来调用,每种对象有许多控制参数,对象之间允许通讯,以及有自己的生长死亡发展的 控制,尽量做到对象与外界减少直接接口,通过消息实现交流.

   对象分为两类:景色对象和活动对象,
   景色对象定义了组成场景的元素,包括背景和前景两层,可以是由整个图片组成或由RPG常用的 图片拼贴法的组成,它的特点只作为背景或前景,活动物是在他们的之间活动,一般定义后不做改变, 也不做控制,由于支持图像界面多格式,所以我们可以方便地使用AVI或 GIF动画作为背景来增加场 景的效果和真实性.景色还包括了行走性质定义,我们采用的是8x8为一单元,每个单元定义了一种 性质,比如平地,草地,障碍物等.

   活动对象是在背景和前景之间活动,他们之间有相互的位置关系,前后关系随着位置改变会不断 改变,因此他在所属的CGAMEPAGE中次序是动态的.对象的关系一般是由Y轴定义,由于要支持斜视角和 复杂的地形结构,光靠Y轴是不够的,我们引入了地基线的概念,通过在地基线之上还是之下来判断前 后关系,地基线的定义在图像定义中描述.活动对象有复杂的参数,可以接受外界消息,可以有自己的 各种反应.我们在引擎中使用了一种描述语言来描述他们的反应,比如对鼠标击打,人物经过等产生 参数改变,发声,对话等的回应.描述语言将作为专门的一章来介绍. 游戏显示过程是这样的, 在每次刷新期时窗口的游戏控件调用他所属的游戏页 CGAMEPAGE->SendDraw(); 游戏页将要显示的对象按前后次序送往窗口,同时注明此对象是否改变,窗口分析改写的区 域,调用每个对象的Draw()接口来刷新活动的区域,为了增加速度,并不是显示所有的区域,而是只改 写活动区域,因此我们设计了一个CCLIP的对象来管理刷新定义,它的原理是将表面分为16*16的单元, 最终显示时计算出优化后的多个剪切区域.整个窗口系统和每个游戏控件拥有自己的CCLIP对象.另 外一项增加速度的方案是游戏控件拥有一个比显示窗大两倍的显示页,这样场景滚动时只要将显示 位置改变即可 ,不用刷新所有区域. 游戏控制的过程是这样的:AcceptMsg()来接受各种消息调用脚本来改变自己参数和状态并影响 别的对象,另外每次时钟来时,调用每个对象的TimeTrace()来改变状态,比如动画改变,运动轨迹改变, 观察周围的对象做出反应等.

   系统控制模块:对系统的参数做出反应.不同的题材控制不一样,比如即时战略等.只要改写这部 分以及扩充游戏对象,引擎便能支持不同的题材.至于人工智能,智能行走,只是对象的方法,比较简 单,只是需要时间. 游戏控制部分比较复杂,每一种游戏对象都有许多控制的细节,在这篇文章里不做具体描述,以后 再说吧.
最后一个是网络模块:我们正在开发的是国内第一个图形化MUD游戏,网络是它的核心部分,介绍 网络的内容很多,需专门文章.我们使用的不是DirectPlay,使用的是WinSoct,考虑的是UNIX作为服务 器的需求.网络要解决的难点是安全,同步和数据压缩,这里要用到许多技巧.

   游戏是通过数据文件来定义:

   数据文件格式:数据文件包括资源定义文件和游戏定义,界面定义文件,文件的数据格式我们采用 的是文本形式,类似于WEB的文本,这样的好处一是版本升级容易处理,二是可以减少前期对编辑工具的 功能要求,因为我们可以用文字编辑器处理大部分数据,然后有时间再设计一个强大的工具比较现实, 当然,最终提供给用户的是处理后的数据文件.他中间有一个转换模块.
   游戏的运行流程描述(不是真正的过程,按DOS格式描述):
CreatGameWindow();//初始化window窗口
CreatDraw(hWnd); //初始化图像引擎
CreatSound();//初始化声音引擎
CreatAvi()//初始化AVI引擎
CreatNet();//初始化网络引擎
LoadGameData();//读取游戏定义数据,包括资源定义文件和游戏定义,界面定义
While(1)
{
WINTraceMsg();//处理系统消息,比如鼠标,键盘等
GameTimeTarce();//处理活动的游戏页的时间反应
WinPaint();//刷新游戏显示
OutToScr();
}

   我们这里介绍的是单线程结构,许多部分可以用多线来加快游戏速度,但结构是一样的,就不多介绍了.
   游戏引擎的系统分析是游戏设计技术方面的成功关键,是最容易走弯路的部分,希望我们的文 章能给大家一点启发,由于今天的游戏趋向于多类型综合,设计引擎时一定不要拘泥于某一单项题材, 我们在策划这套引擎时要求他支持的游戏非常广,甚至支持多媒体设计,这套引擎只要扩充或改写参 数管理以及游戏对象,便能支持各种风格的2D类游戏.将来我们要做的是一套可以交互设计各种游戏 的开发平台,当然不是<<游戏工厂>>似的玩具.

   今天就写到这里,这只是对引擎结构的大概介绍,其中每一点将来都有详细的描述,欢迎同志商讨. 我们尽量回答朋友们的意见,欢迎加入我们的队伍.

 楼主| 发表于 2006-5-21 12:08:00 | 显示全部楼层
角色扮演游戏的升级系统研究

     
  在一般的角色扮演游戏中,人物的成长是一件相当重要的事,无论是角色扮演游戏或是目前热门的策略型角色
扮演游戏(简称RSLG),这些升级系统都是游戏的一个重要部份。不过在一般的角色扮演游戏中,人物的升级
以及成长却有着很多种的处理方式。在本文中,笔者将为各位介绍各种角色扮演游戏中常用的升级方式,并且
分析各种作法的优缺点。

在一般的角色扮演游戏中,最常用的升级方式就是乱数式的成长方式。在这种模式中,当一名角色获得升级的
时候,程式会使用乱数来决定升级的各项指数,也就是说所有的升级数值都不是在控制中,而是依据一个乱数
表来决定提升的数值。这种升级的方式是如何处理的呢?

当人物到达升级的标准时,就会进入处理升级的副程式中,在这个副程式中程式会依设计者所定出的一个乱数
范围,来计算出这名角色所得到的升级指数,然後将这个数值加到需要增加的属性上。

在这种乱数决定升级的情况下,玩者所能够获得的升级数值,完全是由设计者订定的范围中求出,无论是升级
的上限或是下限都是在这个范围内,绝对不会有意外的情况发生,就算是设计者如何提高上限与下限,都不会
改变这些。这种作法虽然可以让设计者很轻松的订出升级的上下限,但是却不能控制升级时的不利因素,那就
是乱数的成份实在是太高了。若是有一名角色因为运气不好一直只有获得下限的升级数值,那麽它可能会比一
个一次就获得上限升级数值的角色要弱。举例来说,当这个乱数的范围是一到五的时候,若是角色甲和角色乙
分别获得上限和下限的升级数值,那麽会发生以下的状况:

┏ ┳ ┳ ┓
角色甲 角色乙
┣ ╋ ╋ ┫
LV1 10 10
LV2 15 11
LV3 20 12
LV4 25 13
LV5 30 14
LV6 35 15
┗ ┻ ┻ ┛

各位看看上表,是不是可以看到角色甲在第二级时的数值就已经和角色乙第六级的数值是相同了。由於乱数式
的升级方式会有这种不公平的情况发生,因此常会使得玩者的努力需要有一些运气的成份在里面;若是运气不
好,可能原本的努力都无法发挥所要的功效。

由於乱数式的升级方式有这样的缺点,因此有两种不同的改进办法,首先就是百分比制的升级方式。在这一种
办法里,角色在升级的时候还是使用乱数来进行,不过在每一个数字的出现比例上却做了一些调整。例如同样
的升级的范围还是从一到五,但是每一个数字的出现比例调整如下:

┏ ┳ ┓
数值 出现比例
┣ ╋ ┫
1 10%
2 20%
3 40%
4 20%
5 10%
┗ ┻ ┛

各位从上表中可以看到,在这一种处理方式上,每一个数字出现的比例做了一些调整。原本的乱数式中,每一
个数字的出现比例都是相同的,就以上面的例子来说,每个数字出现比例是百分之二时,因此上限和下限的数
值比较容易出现,发生不幸的情况比较多;但是在这样子调整後,上限和下限的数值出现的机会就减低了不少
,会发生不幸的情况就降低了。

虽然这样的作法可以降低不幸的发生机会,但是还是无法完全的克服所有的状况,因为还是有可能会发生相同
的状况,使得玩者陷入属性不佳的情况中。因此另外一种改良的方式~修正值升级方式就这麽出现了。

其实修正值的升级方式和原本的乱数处理法在计算的时候是完全相同的,只不过是它在升级到一个程度的时候
,会来做一次计算并且取出一个修正值,以免玩者因为运气不好无法达到升级的功效。

在这种作法上,上半部和乱数式的做法完全相同,唯一的不同是下半部的副程式。而这个副程式的作用就是在
帮一些升级时运气比较不好的玩者取得一点修正值。

我们就以前面所说的升级的数值是从一到五来做个例子,让玩者每升五级时就可以取得一点修正值。因此若是
一名角色在五次升级中都只有获得一点的升级值,那麽目前它的数值就是:

10 + 1 + 1 + 1 + 1 + 1 = 15

不过在我们的升级表内中等的数值是三,因此当角色升了五级之後,应该可以获得以下的数值:

10 + 3 + 3 + 3 + 3 + 3 = 25

这麽说来这名角色因为前五级的升级运气不好,因此少获得了十点的升级指数,所以我们就在这一次把这个缺
少的数值以修正值的方式补足,从修正值的计算式中可以得出:

25 - 15 = 10

就将这个数值加到角色的属性中,让角色不会因为运气太差而有不利的情况。若是角色在升级中都获得比较高
的数值,那麽修正值就是负的,也就表示不需要有修正值的存在了。

这种作法完全是为了不让玩者因为升级时运气不好使得属性太低,因此只能算是修正部份数值的作法,虽然不
能完全解决乱数式的问题,但是可以将不利的因素降低,因此在某些游戏里的确有采用这样的作法。

除了乱数式的作法外,还有一种是表列式的升级方式。在这种升级方式中,每一名角色的升级数值都是设计者
已经订好的,完全不会有任何的变动。它的好处是设计者可以完全掌控所有的升级状况,但是相对的这样子的
表格需要占掉较多的程式空间。

举例来说,某个游戏若是采用这种升级方式,那麽在它的记忆体中就需要有这样子的升级表格。若是游戏中有
七项属性会获得升级,等级共有一百级的变化,那麽基本上它就需要有七百个不同的数值表放在程式中。若是
一个数值用了两个位元(BYTE),那麽就需要用到1K左右的记忆体。如果说游戏中有四名角色,它们升级情况
又都是不同,那麽占掉的记忆体就将近有5K了。这麽算起来各位可能觉得不会很多,但是当这种资料越来越多
的时候,记忆体的消耗也就越来越多,使得程式的空间也越来越小了。

由於表列式的作法会使得升级的情况比较单调,因此大多数的游戏并不愿意采用这种作法,再加上这一类的作
法对於记忆体的占用空间也比较高,因此如果不是必要,大多数都不会用这种作法。

除了以上这些作法之外,还有一种就是指数型的升级方式。这种作法其实就是表列式的改良,因为它将升级的
表格简化成一个叁数,在升级的时候就依这个叁数来计算能够获得的升级值。现在我就举一个例子来示范。目
前有一名角色的属性以及升级指数如下:

o 生命:10 生命指数:10
o 法力:10 法力指数:10
o 力量: 3 力量指数: 2
o 智慧: 2 智慧指数: 2
o 反应: 2 反应指数: 2
o 体能: 4 体能指数: 2
o 运气: 1 运气指数: 3

那麽当他获得升级的时候,程式就会依这个升级指数来计算升到下一级时的各项属性值。因此在升了一级之後
,各项属性的数值就是以下的数字:

o 生命:20
o 法力:20
o 力量: 5
o 智慧: 4
o 反应: 4
o 体能: 6
o 运气: 4

用这种作法,在程式内不需要复杂的升级属性表,只需要几个简单的叁数就可以,若是能将各项叁数之间的关
系加以变化,并作一些运算,那麽可以使升级时的变化更多。举例来说生命的增加和体能有关,或是法力的增
加和智慧有关,那麽在计算起来时会有比较多的变化,使得整个升级的表现不会太单纯。

以上这些作法大部份的变化程度都不会很多,没有办法表现出一个人的成长情况。就像我们有时候会形容一个
人「大器晚成」或是说他「小时了了」这样子的情况都不能表现出来。因此後来又有一种成长曲线的升级方式
。在这种升级方式中,我们首先要订出几种不同的升级情况。像是:

A. 平衡成长
B. 大器晚成
C. 小时了了

要达成这种效果,我们需要将升级的总等级数分成几个阶段。我们以一个可以升到一百级的游戏来说,将每十
级分成一个区块,就可以订出这三种成长情况各要给它多少的数值。

其实这种曲线式的升级方式,在处理上和指数式的作法差不多,只不过指数式的作法一个人物每一种属性只会
有一个数值,这个数值是不会改变的。但是在曲线式的作法中,会依不同阶段有不同的升级指数,才可以造出
不同的成长情况。我们就以一名「大器晚成」的角色来说,这一类的角色在开始成长的比较慢,但是当人物成
长到一个阶段後,成长的速度就会加快,因此我们可能在前两个阶段只给他们一点的升级指数,後面几个阶段
再给他们较高的升级指数,使这名角色会在游戏後期升得比较快。

反过来说,若是要设计一名「小时了了」的角色,那麽我们在初期可以给他较高的升级指数,但是到了後期就
要给它较低的指数,如此一来就可以表现出这样的情况。

事实上,在游乐器中的「光明与黑暗续战篇」就曾经用过这一种作法,使得游戏中的每个角色都有各自不同的
特色。特别是有些属於大器晚成的角色,曾经因为初期成长的速度太慢而被玩者抛弃,但是後来知道这名角色
的特性之後,再回过头来训练的这种情况,正是这种曲线式升级的特色。这种作法使得角色除了单纯的数字属
性之外,还增加了一些隐藏的特性,会让游戏更有味道。

如果以笔者个人的喜好来说,我是比较欣赏曲线式的升级方式,因为这种方式比较可以隐藏角色的特色,也不
会因为数字的变化太过单调而让玩者觉得过死板。比起乱数式的不定性和升级指数式的单纯来说,这一种作法
可以说是兼具了两种的特色,同时还有全新的表现,是一种不错的升级方式。只惜目前国内的游戏很少使用这
种作法,大多还是采用乱数式的作法,对於国内玩游戏的玩者来说,实在是有些可惜,因为大家没有办法体会
到这种作法的优点。

 楼主| 发表于 2006-5-21 12:09:00 | 显示全部楼层
RPG游戏的对话系统

     
  我要和各位谈谈角色扮 演游戏中的最重要的一个部份~那就是交谈系统。若是各位 玩者接触的角色扮演游戏够多的话,应该会知道在角色扮演 游戏中有着单句式以及关键字两种完全不同的交谈系统,今 天我们就来看看这两个不同系统。

  要怎麽分辨单句式和关键字系统呢?我们可以简单的从在 游戏中玩者和游戏中的人物交谈时是如何获得讯息来看。在 一般国内的角色扮演游戏中,经常使用的就是单句式的交谈 系统,也就是那种玩者只要和角色对话,对方就会一股脑的 将所有的消息告诉你,而玩者也就可以获得所有的讯息,这 种就是属於单句式系统(如大宇的轩辕剑系列、仙剑奇侠传 等等)。就算是有的游戏用比较刁钻的方式,会要求玩者多 问几次才会出现真正需要的讯息(像精讯的乱世伏魔录), 也不过是这一种系统的延伸使用罢了。

  那麽关键字系统呢?我想最有名的应该就是创世纪系列, 在创世纪的前几代中,玩者需要自行输入各个关键字 ,来 询问各式各样的问题,随着玩者输入不同的关键字,就会有 不一样的答案。但是也因为这个原因,使得一 些英文程度 不好的玩者在接触那几代的游戏时相当的辛苦(反过来说, 也有一些玩者因为玩这个游戏而使得英文程度大增),也使 得许多的玩者不愿意接触创世纪。但是到了创世纪七代的时 候,由於采用了滑鼠来进行游戏,因此整个关键字系统就做 了很大规模的改进了,玩者可以由画面选择要问的关键字, 因此不再会有找不到关键字来问的状况发生了。

  那麽我们来看看国内的几个采用关键字系统的角色扮演游 戏吧。在笔者的印象中,好像只有精讯的聊斋志异、大宇的 妖魔道、以及软体世界早期推出的一个侠影记而已。在这几 个游戏中,笔者觉得精讯聊斋志异的关键字系统是最成功的, 至於为什麽笔者会这麽认为,绝对不是因为笔者自己曾经叁 与过这个游戏的制作,而是从关键字系统的结构来看,这个 游戏才是真的使用到关键字系统的精髓。

  所谓的关键字系统,正如同它的名称一样,是一个以关键 字来串连游戏剧情的交谈系统,因此玩者必需要能够从某一 个游戏中人物的口中获得某个关键字後,再使用此一关键字 到另一名人物的口中发挥作用,这才能说是使用了关键字的 妙用。在聊斋志异这个游戏中,玩者要获得第一座塔~金形 塔的八字真言,就必需要先从一位书生的口中获得四字真言, 然後再到酒店里找一位酒女,用这前四个字的真言向她询问 後四个字的真言。而所   谓的关键字系统的巧妙,也就是当玩者若是没有获得前一 个关键字的时候,在後面的那个人口中是无法取得下一个关 键字的。在聊斋志异这个游戏中,若是玩者不能先由书生的 口中套出前四个字的真言,那麽在酒女的对话选单中是不会 出现那四个字供玩者选择,因此玩者就无法获得後四个字了。 也就是说,关键字系统是一个凭着玩者选项不同会有不同情 况的对话系统。

  那麽我们回过头来看看另外两个游戏的关键字系统吧,首先我们来看看大宇的妖魔道吧。在这个游戏中也有关键字系统,但是它的关键字系统所发挥的作用并不是在对 话上,而是当某些任务还没有解决时,这些关键字就会出现 在对话的选单中,让玩者可以选择它取得所需的资料,当这 一项任务或是事件解决了後,这个关键字就会从选项中消失。 这种作法并没有真正发挥「关键字」的作用,只是用它来提 供玩者多次获得相同的问题解答而已。

  接下来我们看看侠影记这个游戏,这可以说是关键字系统 使用的错误范例,因为在这个游戏中,提供玩者选择的关键 字并没有影响其他地方事件的作用,反而把原来简单的可以 在单句中表现的讯息切成一段一段的文字,让玩者需要将所 有的关键字选择完之後才可以知道全部的讯息。再加上一些 关键字所得到的讯息又都是没有用的讯息,使得这个游戏的 交谈系统完全没有表现出关键字系统应有的特色。

  现在我们就来探讨一下这两种系统在资料结构上究竟有什 麽不一样的地方。首先我们来看看单句式的资料结构 ,记 得在讨论剧情结构的那一篇文章中(第52期),笔者曾经 举过一个单线式剧情的范例吗?那种的结构就  是单句式交谈系统的标准结构。因为在单句式交谈系统中, 在玩者遭遇一名游戏中的角色时,角色会依据当时  游戏中的剧情发展情况,决定出要说那一句话,若是在剧 情没有改变的情况下,就会重复的使用这一句话。

  在这种系统中,当玩者控制的角色和游戏中的角色交谈时, 程式会依据这名角色所相对的几个旗标,判断出目前该显示 出什麽样的讯息。若是同时有几个旗标都成立的话,也只会 以最优先的旗标为准。在这种系统之下,讯息的结构相当的 单纯,程式也只要将每一句对话编上相对的代码,然後用判 断式就可以决定出要显示出那一句讯息。同样的,这种系统 的资料结构也比较单纯。

  接下来我们看看关键字系统的资料结构吧。在前面说明单 句式系统的时候,笔者曾经说过要以旗标来判断显示那一句 讯息,其实这个所谓旗标就是游戏中控制剧情目前发展到那 里的指标。同样的在关键字系统中这些旗标也存在着,只不 过除了它们之外还要再加上一组关键字的旗标,而这些关键 字的旗标就是这种交谈系统的重心 。

  在游戏中,当玩者从其中一位角色的口中获得一个关键字 之後,这个关键字的旗标就会打开,之後若是有遇到对这个 关键字有所了解的角色时,在交谈的选单中就会出现这个关键字。

  在这种系统中,交谈的时候,程式会先判断目前玩者已经 获得那些关键字,然後再看这一名交谈的对象对於那些关键 字会有反应,接下来在在选单中就会出现这些有反应的关键 字让玩者选择。在选择了某个关键字之後,相关的讯息就会 显示在画面上,同时若是有某个关键字会因为问了这一句话 之後打开,也会在讯息显示之後将   此一关键字的旗标打开。接下来我们看看下面这个例子:

  在这个例子中,会有某甲以及某乙两个人,在游戏的过程 中玩者必需先从某甲的口中获得一句暗号,然後用这   个暗号向某乙询问,才可以获得所需的资料。因此在游戏中某甲的资料如下:

  某甲【无关键字】:喔,是你呀。我相信你一定是想要加入这个秘密的组织,不过若是没有组织的口令的话,是不可能加入的。

                  ◎在这句讯息後关键字「口令」打开

  某甲【口令    】:你想要知道口令?好吧,那我就告诉你,我们的口令就是神出鬼没。

                  ◎在这句讯息後关键字「神出鬼没」打开

  某甲【神出鬼没】:不对不对,这句口令不是对我说的,必需要找到我们组织的某乙,然後对他说出这个口
令,就可以加入我们的组织了。

  因此在这个地方我们可以看到,在开始的时候玩者和某甲交谈时会先获得「口令」这个关键字,接下来这个关
  键字就会出现在交谈的选单中。而玩者选择口令这个关键字之後,就可以再获得进一步的资料以及「神出鬼没
  」这个关键字。之後再以神出鬼没这个关键字向某甲询问,就可以得知这个关键字的使用方式。接下来我们再
  看看某乙方面的资料:

  某乙【无关键字】:对不起,我什麽事都不知道,
请你不要来打扰我好吗。

  某乙【神出鬼没】:你知道我们的口令,那麽你可以加入我们的组织了。我们的任务是要推翻目前的政府, 希望你也为这件事尽一份力。

                  ◎成功的加入判乱组织了

  从这里我们可以看到,若是玩者在还没有获得神出鬼没 这个关键字的时候来找某乙交谈,那麽是无法从某乙的   口中获得任何的消息。但是当玩者从某甲的口中获得了「神出鬼没」这个关键字之後,在交谈的选单中就会出   现这个选项,选择後从某乙处就可以得到回应,也就可 以加入判乱组织了。这一种的交谈讯息结构,也就是关   键字系统真正能够发挥作用的地方。

  在设计关键字系统的时候有一件事要注意,那就是需要 适时的将某些没有作用的关键字关掉。就以上面的例子   来说,当玩者成功的加入了判乱组织之後,这一部份的 事件可以说是已经结束了,此时就可以将「口令」以及   「神出鬼没」这两个关键字关闭。不过若是这两个关键 字还有作用的话,就不可以这麽轻率的关闭它。

  说到这里也许有人会说其实这种剧情不需要用关键字系 统,就算是单纯的单句式结构就可以处理了。但是请各位 想想看,这里的剧情若是当玩者一和某甲交谈,某甲就将 所有的消息一股脑的都说了出来,那麽不是很没有   意思吗?除此之外,关键字系统在玩者被游戏卡 住的时候,还可以让玩者重复询问相同的关键字来获得讯息,   比起单句式结构那种不小心没有看到就会被卡住的情况来说, 是不是也显得比较人性化呢?

  前面所说的都是关键字系统的好处,但是为什麽目前的游 戏很少使用关键字系统呢?那都是因为要设计关键字系统的 话交谈的资料结构就绘变得比较复杂了。各位想想看,原本 在规划交谈的讯息资料时只要针对每个游戏 中的角色,配 合不同的剧情段落配上讯息就可以。但是在关键字系统中, 设计者必需要将关键字妥善的分配到
  各地的剧情对话中,才能使关键字系统真正的发挥作用, 因此在设计剧情的时候有比较多的困难。 除此之外,目前 国内的公司大多有将游戏推向国外的计划。由於中国字并不 是拼音系的文字,因此这些关键字 一但翻译成其它国家的 语言(像是韩文、英文等等)时,就会发生翻译出来的单字 变成好长一串的文字,若是 勉强的将一串文字删成适度的 长度时,又会有可能会文不对题的问题(这种情况就好像 魔法门三代中的问题被变成中文的问题那样奇怪),或是 因此要增加文字显示的区域。也因为这些原因,使得国内 的公司尽量的不去 碰这样的系统,以免自找麻烦。

  事实上关键字系统其实是个扩展性相当大的系统,就连游乐器的游戏中也曾经有采用过这样的系统。正因为它对於剧情的掌握比单句式的要强,以及它更结构化的 资料结构,它绝对是一个完美的交谈系统。
 
 楼主| 发表于 2006-5-21 12:10:00 | 显示全部楼层
游 戏 的 基 本 因 素

  翻译: 99.2.18 by 余建斌
 
    电子游戏在整个计算机产业的带动下不断地创新、发展着。自从计算机发明,向各个领域发展,到成为我们现在每天工作和生活必不可少的一部分的这个过程中,电子游戏也逐步渗入我们每个人的娱乐活动中。尽管已经有大量讨论计算机游戏如何设计的文章,但我始终坚信,对这么一个内涵丰富的媒体来说,即使再多的文章都不会显得多余。好,让我们来开始,首先,计算机游戏的基本元素是什么? 我把计算机游戏分割成5个元素。它们是图像,声音,操作界面,游戏性和故事。下面分类地介绍。 图像当玩家观看你的游戏时,图像是打动他们的第一步。图像的风格和具体形式将会马上告诉玩家你游戏的大致轮廓。图像也是沉浸的第一步,要让你的玩家体验到他自己仿佛就在你所创造的世界中。
  最新,更好,更快,更大从游戏的任何角度看,图像都是进步最快的方面。每年,图像的基本标准都会提高不少,画面变得越来越精美。游戏制作变成了绘画密集型的产业。在设计游戏时,你要决定需要什么尺度的图像,如果你不估计自己的实力,作过高的要求,比如要在游戏中使用精美的3D图像,绘画师需要花费大量的时间和精力来保持同样的水准,这会大大增加制作成本.同时,你还需要高水平的程序师来制作高效的3D图形引擎,否则你的游戏软件在处理图像时会消耗掉大量的CPU时间,使游戏的流畅感受到影响. 所以, 你必须在所采用图像的尺度与所拥有的资金实力间找到一个平衡点。
  2D图像在制作和使用上比3D的要简单明了得多,如果你的游戏不是非要用3D不可,那么2D也是可以接受的。在1998年8月,采用2D图像的游戏在销售量上排名第一,2D图像离最终被淘汰还遥遥无期。显示的视角虽然每一个游戏都有它自己不同的显示视角,但是通常可以归纳为以下几类。象Command & Conquer和 Starcraft 这样的游戏是斜45度俯视的角度, 而Doom 和 Quake 是第一人称的视角, Civilization则是概览地图的视角. 每一个游戏都有至少一种显示的视角。象在NFS3中,玩家在开车时既可以以身临其境的第一人称视角操作, 也可以以第三人称的尾随视角来操作.而在回放时, 更是以多种摄像的角度来表现,大大丰富了玩家的视觉感觉. 作为一个设计者,你必须决定游戏以什么样的视角来展现给你的玩家。
  每一个游戏都想与众不同,但如果你的游戏太不同了, 以致使学会游戏的控制变得很难,那么你将会失去一部分潜在的玩家。就象生活中知名的商标品牌都需要经过长期的市场考验才能得到用户的肯定一样,你的游戏表现方式同样也需要经过严格的测试才能获得玩家的肯定。
  声音声音在游戏中也是很重要的,但是经常被忽视,因为你能够建立一个没有声音的游戏,而不能建立一个没有情节或图像的游戏。实际上早期的大量游戏,声音效果确实很差。当然, 当时的硬件环境也是制约的因素.现在,设计者不必再用计算机自带的小喇叭来放音乐了,通过先进的多媒体硬件支持,他们已能够播放逼真的音效和CD品质的音乐了.
  声音比图像更具沉浸感当图像把你带入一个场景时, 在背景中演奏的音乐将和图像一起在玩家的头脑中建立一个真实的虚幻.音乐能够烘托出气氛,增强表现力.声音也经常用来提示游戏中的重点. 在QUAKE中,怪物时远时近的咆哮声就隐约地指示了它们的方位, 如果没有声音,那么游戏的真实感和可玩性会下降不少.
  在影片Jaws中,一只鲨鱼绕着一艘船游来游去,船上的水手不断地射出密集的枪弹来攻击鲨鱼,这时,影片并没有音乐. 突然,伴随着一个特殊的音效,鲨鱼跃出海面,吃掉甲板上的某个水手。这个声音与影片内容紧密地接合在一起,让人提心吊胆。随着影片的继续,鲨鱼越来越频繁地进行攻击,音乐节奏也越来越快,它紧紧地抓住你的心,你的身体会不自觉地向前倾,紧张地注视水面的情况。在最后攻击前,急促的音乐渐渐隐去,一个低沉的音效出来了,鲨鱼张开大嘴,开始吞噬人们。这时,几乎所有的观众会发出尖叫。
  为什么设计者经常忽视游戏中的声音?
  当玩家玩游戏时,他们注视着图像。他们关注于屏幕上发生的事。他们习惯了评论图像的优点和缺点。他们并不会分出一部分注意力来留意能听到什么。因为声音只是辅助效果,比起图像来与玩家的距离较远。因为声音对玩家来说只是一种模糊的意识, 而可视的东西给玩家是明确的意识。如何让他们对音乐关注,就是尽可能地用音乐去影响他们。
  操作界面所有的五个方面对游戏本身来说都是重要的,但对设计者来说, 对操作界面需要特别重视.它是玩家和游戏间的联系纽带. 图像将使他们印象深刻,音乐将使他们感动, 但是如果没有一个适当的操作界面,那么玩家就象在看一部影片一样.
  那我从哪开始呢?
  通过控制来开始.玩家将要用什么样的操作来获得游戏的信息呢? 对玩家来说,通过这些操作来控制游戏是否容易呢?
  如果玩家不能很好地操作游戏,那么对这个游戏来说是一个致命的弱点. 对Quake的老玩家来说,左手操作键盘,右手使用鼠标是一个很好的操作方式. 然而世界上还有很多人不能以这种流行的方式来控制Quake. 他们不能很好地操作这类3D游戏,经常撞上墙壁,失去方位,在游戏中迷路,直到放弃这个游戏.
  解决的方法是什么?你必须了解你的玩家,他们是怎么想和愿意怎么玩的. 一旦你知道了这一点,那么你就有了一个良好的开端. 如果你想让游戏新手们也能很快上手,那么你的界面必须具有广泛的亲和力, 起码在游戏的开始阶段是简单易学的.
  我并不是说你不能有较复杂的选项, 但是如果你想让一个新手也能轻易地进入到游戏中去, 那么就必须使操作界面具有这种可能性.
  控制键任何界面系统都包括若干控制键.每个键都有它自已独特的功能. 控制键越多,游戏就越难以掌握,像有些飞行模拟类游戏,定义了十几个控制键,这样玩家学会如何操作就比较困难。对游戏机来说,操作手柄上只有一个方向圆钮和固定的几个功能按钮,玩家能够很快地进入一个游戏,几乎不需要再学习。较少的控制键就意味着容易上手。然而,为了更好地控制游戏,往往需要定义很多的控制键,这个冲突如何解决?在游戏机上已经很好地解答了,就是把复杂的功能通过有限的几个控制键来完成,如在双人格斗游戏中,通过方向键与控制键的有机组合能发出很多额外的绝招。
  键位的分布也要尽是合理,以DOOM这个游戏为例, 它让玩家用四个方向键在这个世界中移动,这是一种直觉, 四个方向键代表了前后左右四个基本的方向, 用数字小键盘来操作也可以.在DOOM中,这二种方式是并列的. 有些游戏使用数字小键盘,而且使用的键都挨在一起,就象1,2,3,5键一样, 1是向左,3是向右,5是向上,2是向下,尽管这种操作方式几乎和方向键操作一样, 但是对玩家来说这种方式很容易出错,仔细分析键盘布置就可以发现, 四个方向键是相对独立的,旁边没有别的键, 而1,2,3,5的上下左右还有别的很多键, 玩家在操作中很容易按到别的键上,这种控制键的排列方式就比较差.对于不使用鼠标的玩家,DOOM中提供用CTRL来开火,方向键来移动的全键盘方式,原因是CTRL在键盘的最左下角,当玩家用右手来控制移动方向时,左手能很轻易地操作CTRL键。多种操作方式的并存,使DOOM能够适合不同操作习惯的玩家。
  为了使这个界面尽可能地简单友好,你必须照顾到一些从未接触过计算机的人. 试着向他们解释要做些什么,指导他们如何去做。你需要合理地划分功能,并尽可能地使操作简单方便。

 楼主| 发表于 2006-5-21 12:38:00 | 显示全部楼层
NPC们的日常生活~事件包的管理模式

     
  前期处理:
  一、把事件包们与NPC、DAT相分离;
  二、把“房子事件包”、“箱子事件包”与“小玩意儿事件包”相分离。
      (跟一个NPC对话,他说:“我刚吃饱饭。”;
       或打开一个宝箱,得到纹银十两;
       这些无关紧要的事件,就是“小玩意事件包”。)
      (“房子”、“大箱子”、“小箱子”、“箱子里的小玩意们”,
       说到底都是“箱子”,都是事件包。那为什麽要给它们划分等级
       呢?
       为了管理的方便。
       ——即使是个人创作,软件工程的理念还是要贯彻的。)
  三、把“因循守旧的NPC、DAT”与“顺应潮流的NPC、DAT”相分离。
  房子、大箱子、小箱子,前面都已编过号了是吧?
  小玩意们也应有统一的编号。
  然后列表:
  《表壹——因循守旧的NPC、DAT及其对应的小玩意们》
     (这类NPC、DAT,其负责的事件包的内容是固定不变的。无论
      情节发展到哪里,只要你能触发它,它干的都是固定的一套活计。
      最明显的例子:安排一个人站在城门口,给它一个工作:
             若有人跟他对话,就让他说:
               “欢迎到楼兰古城来做客!”
           或者是一个宝箱,也有它固定的一套工作:
             若有人调查它,
               若宝箱是关着的宝箱,那就:
                 打开箱盖,给那人三块钱;
               若宝箱是开着的宝箱,就啥也不给他。
      因循守旧者所负责的事件包,都是小玩意等级。)
  列表格式:
    …………………………………
    |因循守旧|该NPC负责|
    |的NPC|的事件包的编|
    |的编号 |号     |
    |————|——————|
    |……  |……    |
    |……  |……    |
    |……  |……    |
    …………………………………
  因循守旧的DAT也一样。
  《表贰——顺应潮流的NPC、DAT及其对应的事件包们》
     (这类NPC、DAT,在情节发展的不同地步、包括某个事件的序
      幕、开端、发展、结局、尾声这几个不同的阶段,他们做不同的工
      作。他们所负责的事件包,可以是任何等级。)
  列表格式:
    ……………………………………………………………………
    |箱子|阶段|对其负责的NPC、|对其负责的N、D|
    |编号|  |DAT的编号   |所负责的事件包 |
    |——|——|—————————|————————|
    |……|序幕|……       |……      |
    |  |  |……       |……      |
    |  |  |……       |……      |
    |  |——|—————————|————————|
    |  |开端|……       |……      |
    |  |——|—————————|————————|
    |  |发展|……       |……      |
    |  |  |……       |……      |
    |  |  |……       |……      |
    |  |——|—————————|————————|
    |  |结局|……       |……      |
    |  |  |……       |……      |
    |  |  |……       |……      |
    |  |——|—————————|————————|
    |  |尾声|……       |……      |
    |  |  |……       |……      |
    |  |  |……       |……      |
    |——|——|—————————|————————|
    |……                      |
    |——|——|—————————|————————|
    ……………………………………………………………………
  自由RPG中,我们常常同时面对数个事件,就象打开一个大箱子我们常常会看到里面摆着数个小箱子。那麽,NPC和DAT们面对着众多的事件,将该如何各行其是?妖精下回有分解。
 楼主| 发表于 2006-5-21 12:39:00 | 显示全部楼层
WOW的一些数据计算公式
在公式上,我的认识曾经发生了几次大的转变,前期也一直存在着一些没有解决的问题,看了wow的计算公式获益匪浅。强烈建议大家把这些公式多看上几遍!!!!提醒一句,公式是为游戏设定服务的,也希望不要唯公式论



  一、攻击力(Attack Power,简称AP)的计算公式:

  Warrior/Paladin:AP=角色等级*3+力量*2-20

  Hunter/Rogue:AP=角色等级*2+力量+敏捷-20

  Shaman:AP=角色等级*2+力量*2-20

  Druid:AP=力量*2-20

  Mage/Priest/Warlock:AP=力量-10

  角色DPS=AP/14+武器DPS

  单次攻击伤害(最小/最大)=攻击速度*AP/14+武器伤害(最小/最大)+技能附加伤害

  二、防御力(Armor)的计算公式:

  1敏捷(Agilty)=2Armor

  Armor减少伤害%=0.75%*防御力/(攻击方等级+9)

  例:防御力5000的角色, 被61级敌人攻击时,可以减少伤害0.75%*5000/(61+9)=53.6%

  被51级敌人攻击时,可以减少伤害0.75%*5000/(51+9)=62.5%

  伤害减小值的封顶值是75%,这时角色的防御力为100*(敌人等级+9),也就是说杀62级敌人时防御要在7100以上才能达到封顶效果。我不知道现在最高防御能达到多少,但在绝大多数情况下,杀同等级敌人是不可能达到封顶值的。

  三、敏捷对物理攻击重击(crit)、闪避(Dodge)几率影响的计算公式:

  在不计装备和天赋影响的情况下,重击和闪避几率受以下因素影响:

  1.重击/闪避的基础值和变化值

  角色的重击/闪避几率中,有一部分是不受敏捷影响的(这里称为基础值),另外一部分受敏捷影响(这里称为变化值)。

  角色重击/闪避的计算公式为:基础值+变化值*角色的敏捷/敏捷标准值。

  对一般的职业来说,当角色敏捷等于标准值的时候,重击/闪避几率为5%。也就是说基础值+变化值=5%。变化值越高表示敏捷对这个职业的影响越大。

  敏捷标准值是与等级和职业相关的一个参数。1级时一般职业的标准值为20,盗贼和猎人为23。60级的时候战士敏捷标准值100,即敏捷100时重击/闪避几率为5%。

  敏捷标准值似乎没有计算公式,是通过查表获得的,也可以自己推算,我在后面会附上算法,大家有兴趣可以自己计算。

  各个职业的重击/闪避基础值和变化值:

  Rogue:重击基础值0%,变化值10%;闪避基础值0%,变化值20%

  Hunter:重击基础值0%,变化值5%;闪避基础值0%,变化值10%

  Warrior:基础值0%,变化值5%

  Paladin:基础值0.7%,变化值4.3%

  Druid:基础值0.9%,变化值4.1%

  Shaman:基础值1.7%,变化值3.3%

  Warlock:基础值2%,变化值3%

  Priest:基础值3%,变化值2%

  Mage:基础值3.2%,变化值1.8%

  2.角色的武器技能等级(熟练度)和防御技能等级

  即属性栏里显示的attack和defense。其中attack影响角色重击几率,defense影响角色闪避几率。具体来说就是重击/闪避受一个(attack(或defense)*0.04-等级/5)%的修正。

  大家知道角色每升一级attack/defense上限会增加5级,正好和等级/5抵消,也就是说如果把attack/defense修满,重击/闪避几率就不受任何惩罚,如果没有修满,则每差一个等级减少0.04%的重击/闪避几率.。反之如果通过装备把attack/defense加的超过上限就会有额外奖励。

  例:一个60级战士,敏捷90,defense330级,那么他的闪避为0+5%*90/100+(330*0.04-60/5)%=5.7%

  四、格挡几率(Block)和招架几率(Parry)

  基本几率5%,受防御技能(defense)的影响,每级防御技能增加0.04%格挡/招架几率。或者说同闪避一样受(defense*0.04-等级/5)%的修正

  附:角色敏捷标准值的算法

  首先注意把与重击/闪避或者防御技能相关的装备都拿掉,最好不要加任何天赋,战士不能出于,以免引起混乱。

  记录敏捷值A和闪避/重击几率D。将attack/defense对D值的修正还原,如你的角色武器技能差N级达到上限,就在D上加N*0.04%。

  敏捷标准值=敏捷A/(1+(闪避或重击几率D值-5%)/闪避或重击变化值)

  最后,可以更换一下敏捷装备,使敏捷发生变化,再根据上面给的公式检验一下计算结果是否正确。

  重击几率可以在角色的基本技能“Attack”上查看,闪避几率可以在角色的基本技能“Dodge”上查看

 楼主| 发表于 2006-5-21 12:39:00 | 显示全部楼层
翻译:张三丰 语嫣
作者:Tom Cadwell


概要:关于游戏平衡性技巧的资料并不普及。这篇文章有意通过描述游戏平衡和不平衡的性质,以及如何达到游戏平衡的过方法这两个方面来填补这个信息空白。这个方法非常依赖于现有的系统工程技能以及公认的游戏设计理论。大量的案例学习及小故事被采用来帮助将方法和具体的设计结合起来。

一个伟大的设计和一个杰出的游戏之间往往只有一个缺乏游戏平衡性的区别。多数游戏策划要通过反复试验才学会游戏平衡的基本原理。如果他们幸运的话,也许可以得到同事传授的一两个小窍门。精通游戏平衡的人往往警惕地保守着自己的秘密,或者无心与人分享。结果是虽然有关游戏平衡性的信息确实存在,但是可得到的却很少。这篇文章试图阐述一个获得游戏平衡性的方法。


什么是游戏平衡?

Sid Meier 曾经说过:“一个游戏是很多有趣的选择的集合。”因此得出的是如果游戏失去平衡,就会减少这些选择而影响游戏性。一个理想的游戏应该经过一系列的选择,最后以胜利或其它完成的条件结束。有时一些选择明显成为唯一的选择,或明显是无效的。如果在某一阶段,游戏出现仅有唯一的选择,而游戏却没有结束,就说明游戏的平衡性有了问题。

几乎所有通常所谓的不平衡都来自选择权的减少。例如,在一个策略游戏里,如果某一种部队的作用和费用相比过于划算,就会造成其它的部队几乎或完全没有作用。这种情况不仅只留给玩家一个选择(无从选择),而且使玩家受到很多不相关的干扰。这些干扰实际上让游戏变得比较迷乱,减损了游戏性,而且让玩家感到灰心。

游戏大富翁(Monopoly)中就有很好的游戏不平衡性的例子。在游戏的后期,玩家们总是尽量拖长呆在监狱里的时间。显然地,玩家在游戏后期的最好的策略就是进监狱而且不付钱出来,希望别人进入自己的领土而破产。在玩大富翁的最后阶段,无需再作选择,游戏基本结束了。没有人再选择是否购买财产,也很少有机会再根据游戏规则建设新的财产(因为房子已经被用完),而且因为资产已经被几个人集中,所以也不再有交易可做。一旦产生这种情形,游戏就变成每个玩家有一定的机率获胜而基本上结束了。此时玩家可以做的很少,除非靠运气得胜。这情景与游戏前期及中期大相径庭,那时玩家往往忙于大施战术、巧妙夺取利益、陷害对手或谨慎购买“重量级”黄色、绿色或深蓝色的地产。

这只是一个不平衡性的举例说明。在游戏中存在许多不同种类的不平衡性。所有的不平衡性都与没有选择性或缺乏选择性有关。

● 太昂贵却用处不大和便宜而且有效:游戏选择通常与游戏代价相联系,不管是牺牲其它的选择、游戏金钱或其它的商品。当一个选择太昂贵以致用处不大,或者太便宜而成为明显的选择时,游戏的不平衡性就出现了,因为有一些游戏选择无效了。虽然此类不平衡性最为普遍,但是通常经过简单地调整这些选择的价格或者是效果就可以纠正过来。

● 玩家时间的不平衡:大多数游戏平衡性对比的基础是以玩家为一个选择而必须放弃其它的各种不同选择的代价来衡量。我们很容易忽视玩家必须消耗时间执行每一个选择。在一个即时游戏里,玩家在游戏里没有无限的时间,所以时间不仅是一个资源,而且是一个有限的资源。在一个非即时游戏里,游戏时间不受限制,但是玩家的时间是受限制的。这种不平衡性基本上是另一种太昂贵或太廉价不平衡性的表现,只是这里这些游戏的代价不是有形的。游戏星际争霸(Starcraft)里的虫族(Zerg)就是一个很好的这种不平衡的例子。虽然虫族从价格上与其它族类是平衡的,但是就玩家的时间而言他们很容易被制造及使用。主要由于这个特点,虫族在游戏星际争霸发行之后大约长达6个月中,在联赛与竞赛中一直是最受欢迎的种族。

● 技术水平的不平衡性:随着玩家的游戏技能不断提高,不同的游戏选择的相对有效性也会改变。如果一种选择容易操作,而另一种极难操作,则结论是一个资深玩家和一个新玩家的对这两种选择的相对有效性的判断是完全不同的。这是游戏开发者的一个常见的陷阱,因为他们一般比较接近“高级玩家”的水平,所以经常看不见新玩家所要面对的问题。但是从另一方面看,随着操作水平的提高,而游戏性也同时“进化”,通常被认为是一件好事。所以注意到这种平衡性很重要,但是也要认识到上面说的现象也很普遍。

● 强制的劣势或优势:在一个对战的游戏里,一些操作的组合使得某一方更具有优越性。这样不仅是典型的不平衡性(因为有一个选择明显最好),这种状况还是不公平的。在一个多人游戏中,最好避免不公平的情况出现,这也是保证游戏平衡的重要一招。

所有的不平衡性最终归结为没有选择性。只要记住这个原则,就容易区分可校正的不平衡性及根本的不平衡性。


如何达到可平衡性

游戏平衡性通常被认为是alpha或beta测试的事情,但事实上就像任何工程,好的准备工作是实现良好游戏平衡的关键。优秀的游戏设计具有极大的可平衡性,也就是指游戏系统可以较容易地调整到平衡的状态。如果系统没有可平衡性,费尽周折也不可能将游戏调整到平衡。

一个游戏是一个系统,在设计初期应用良好的系统设计方式将带来较好的可平衡性。好的系统设计方式可以分成三个重要步骤:游戏要素的模块性,连贯的设计宗旨及对复杂性的控制与调节。在设计的早期就采用这些方法将为设计师在游戏测试的alpha和beta阶段节省大量的时间。


游戏要素的模块性

游戏要素的模块性归结于每个游戏要素只为了一个特别目的存在,如果可能的话,尽量做到只有一个单一的目的。只要贯彻这个原则,调整一个游戏要素只会改变游戏的某个方面而不是许多方面。

有一个很好的例子,说明游戏要素缺乏模块性会造成游戏开发人不必要的麻烦。在星际争霸的beta测试中,暴雪(Blizzard,星际争霸的开发人)有一套相当清晰的伤害系统,其中每一兵种各有三种伤害方式:爆炸性的,标准型的或冲击性的。每种伤害方式都有一个根据外型大小而不同的伤害系数——爆炸性伤害对大型目标最有效,冲击性伤害对小型目标最有效,而标准型伤害可用于任何目标。其中一个兵种——飞龙(Mutalisk),不断给平衡性带来问题,因为就功能性上看,不可以被分为大、中或小型中的一种。如果将飞龙设为中型兵种,则它对于爆炸性武器类型的兵种来说抵抗力太强;如将其设为大型,则使其相对爆炸性武器类型的兵种(这种兵种一般是飞龙的天敌)又过于脆弱。暴雪(Blizzard)不能仅仅修改爆炸性相对于大型兵种或爆炸性相对于中型兵种的伤害系数,因为这样做的话就会影响一大批其它兵种的设置。也无法修改爆炸性武器兵种的攻击值,因为这样会影响其它的很多的设置。

更让人困惑的是飞龙有两个重要角色——防空军与防步兵(陆战兵种没有空中攻击能力),并具有相同的基本伤害力,而其他类似的兵团(侦察机-Scout、幽灵战机-Wraith)却有不同的武器系统,可以根据具体角色进行调整。

因为在伤害系统和飞龙的设计上缺乏模块性的原因,暴雪直到游戏上市后五个月才使飞龙兵种达到平衡。这并不是因为修正是不可能做到,而是因为缺乏系统模块性而使修正非常困难。飞龙在星际争霸里具有一定独特的用途,如果暴雪将它的平衡参数与其它不相关的兵种分开设计,平衡将大为容易。最简单的方法就是为飞龙(及其它类似兵团)添加一个独立的类型,并给予它一个针对各种伤害的自己的防御系数。如果设计师将飞龙的空军与地面攻击划分开来,调节平衡也会变得简单。

当然,星际争霸的多数设计都有相当程度的模块性。施法者(Spellcaster)兵种具有清晰的用途和相对特殊的角色就是一个很好的例子。事实上许多魔法(Spells),包括寄生虫(Broodling)和EMP振荡波(EMP Blast),具有非常特殊的作用,使调整这些兵种的平衡性就容易得多。

良好的系统模块性不仅是游戏平衡性的前提,它还是朝着解决的方向走近一步。有一个良好的模块性可以使设计师针对各种特殊问题轻松进行调整,而不会影响到其它系统。


连贯的设计宗旨

连贯的设计宗旨可能是在初始设计阶段要遵守的最重要的原则,但是往往容易因为政策问题、疏忽大意或缺乏良好沟通而被忽视。连贯设计宗旨的定义是如果游戏要素没有根据游戏的大局进行同步设计,最好的结果是它会使玩家偏移主要的游戏感觉,最坏的可能性是它会损害主要的游戏感觉。这种情况存在于缺乏中心控制或开发时间很长的游戏中。

较有名的多用户网络游戏(MUD)Duris:Land of Bloodlust(是Everquest—“无尽的任务”的原型Sojourn的姐妹版)就因此带来太多问题。其中一个例子是,某个程序设计人自行编入一个他自己感兴趣的角色类型。虽然这个角色类型本身很有意思,但是它使其它几个类型变得无用或大失威力。这个角色类型拥有了其它种族专有的技能,而正是这些技能的专有性才使得这些种族实用而且好玩。这个程序员还带来很多类似的游戏平衡性问题。他的主要目的是创造一个他感兴趣的类型。这与多用户网络游戏开发人想要创造有趣、独创的角色并与整个系统相吻合的愿望相冲突。他的类型非但不独特(因为是从其它各类型中各取一小部分特点),还与游戏的其它部分格格不入。


复杂性控制

复杂性控制应概括为:“保持简单、易懂”。过于复杂的游戏系统让人费解,因此,也更难做到平衡。一个过于复杂的系统通常是因为最初的设计太糟糕和无休止的添加补丁(理论上这些补丁是合理,但实际上是不连贯的一团糟),或者是太常见的“太多厨师呆在一个厨房里”的现象,这通常也说明缺乏设计宗旨一致性的问题。复杂性控制的另外一个优点就是它避免了一些潜在的游戏性的问题。尤其是,正如复杂的游戏系统让人费解也因此不好平衡,也更难让玩家理解,甚至从某一程度开始玩家很难再享受游戏。一个很常见的设计错误是为了游戏复杂化而牺牲游戏深度,那将对游戏平衡调整造成极大的困难,并造成对游戏性的困惑和费解。

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-6-17 00:29 , Processed in 0.034179 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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