﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-游戏策划咨讯-随笔分类-单机游戏</title><link>http://www.blogjava.net/yangsail/category/370.html</link><description>做一个游戏并不难，难的是做一个好游戏；完美在于积累！
</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:14:59 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:14:59 GMT</pubDate><ttl>60</ttl><item><title>《RPG游戏》企划大纲</title><link>http://www.blogjava.net/yangsail/archive/2005/07/23/8256.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sat, 23 Jul 2005 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/07/23/8256.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/8256.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/07/23/8256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/8256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/8256.html</trackback:ping><description><![CDATA[<SPAN id=lblContent>一、游戏的定位 <BR><BR>1、游戏所产生的时代背景，人文情况 <BR>这里的世界可是现实中的世界，也可以是脱离现实，架空的一个世界。这一点决定了整个游戏的风格的世界观。对于人文情况，如果是现实的世界就要给出现实的历史情况，而对于架空的，则需要一个完整的世界与之相呼应，使之成为一个有机的整体。这一点可以参见AD&amp;D，FF系列等游戏对游戏世界的设计。这一点对游戏的整体风格和世界观有很重要的影响。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;2、这个游戏所要侧重的玩点在何处 <BR>&nbsp;&nbsp;&nbsp;&nbsp;这里的侧重点是指这个游戏用什么因素可以吸引玩家在这个游戏世界中生存，要知道，游戏世界也是一个相对存在的世界，玩家在这个世界中存在，就一定要有可以吸引他的因素在里面，这因素就是这个游戏的玩点。当然这些玩点可以是玩家的个人行为，但是一定要满足玩家的心理。例如：可以让玩家成为一个武功盖世的英雄，或是一个末日的救世主，或是一个强大的国家的君主，或是成为满足玩家心理的一些其它的角色。建议多看一些游戏中每个角色的设计，从中体会一些不同的点，以作为本游戏的出发点。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;另一个玩点则在于团队的协作与配合上，这一点多出现在一些网络游戏中，在网游中，玩家可以是一个团队的队员，也可以是队长，甚至是一个家族的族长，不论如何，玩家是在一个大的人与人的环境中生存的，玩家可以体会到在现实生活中所没有的一种人与人的公平协作的感觉，玩家可以带领家族或是队伍冲锋，也可以协作全队完成一些重要的任务，砍翻BOSS级的人物等，从而使玩家在这一系列的人与人的互动中得到满足感。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;这一些需要多研究各种游戏中的亮点，并总结出它们为什么会吸引玩家在这个虚拟的世界中生存的原因。并将其有机的融合到自己的游戏中来。此处对于出现在游戏中的玩点要详细的描述，因为在以后的内容中，有很多的关键点甚至是整个世界的设定都会与这些点相连接，只有把这些玩点真正的融入世界中，这些玩点才成功。<BR><BR>二、游戏的世界 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;1、游戏的世界陈述 <BR>&nbsp;这里要详细描述的就是这个游戏所存在的世界，同样也是玩家所存在的世界。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;相信有很多人在第一次玩一个游戏时都会有这么一个疑问，那就是这个游戏是什么样的呢？这里的“什么样”就是我们这里所说的这个游戏的世界，很可能玩家在刚刚走入这个世界时不会明白整个世界的样子，可是当玩家玩的越多，就越可以体会到这个世界的亮点时，玩家就会很乐意地在这个世界中生存下去。所以我们提供的这个世界一定要是一个完整的世界，不一定是庞大的世界，但是一定完整，这样可以让玩家很乐于在这个世界中进行各种各样的冒险，并且很乐意在这里成长，这一些可以参见（DIABLO系列，UO等知名的游戏）<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我们看到国内有很多的人不重视这个游戏世界的定义，其实如果这个世界定义的不好，就会让玩家玩的时候无所适从，或是通关后就没有了任何的印象，这样对于游戏的后继就会有不良的影响。这里有一点要说明：有些游戏的世界不是一版就确定下来的，可能是通过好几版的完善和丰富才逐渐形成的，对于这样的世界，在前一个版本中一定留下与后一个版本相衔接的接口，以便让整个的世界看起来连贯并且一致，而不会出现世界的断层。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;对于世界，我们要详细的给出描述 <BR><BR>1这个世界所存在的时代 <BR>远古，古代，中世纪，近代，现代，未来，还是架空的世界。<BR><BR>2这个世界所存在的背景 <BR>在这个世界所存在的那个时代，有过什么重要的事件，典故。如果是架空的，那么就需要我们为它人工指定一个背景，是魔法的世界，还是一个卡通的世界，这一点很重要。 <BR><BR>3这个世界的历史 <BR>游戏中的这个世界是怎么发展的，我们要给出一套完整的历史，这些可以参考一些历史的文献，当然对于架空的世界，我们则要充当一回史学家，人工来为你设计的世界写一个完整的历史。 <BR><BR>4这个世界的人物 <BR>每个世界都有他知名的人，就像我们现实生活中的拉登，布什，我们的游戏中也要有这们的名人，他可以是正面的角色，也可以是负面的角色，他会影响我们在这个世界冒险的每一个过程，甚至是最后的结局。当然，我们的世界里不仅只有这些名人，还有一些普通的人物，他们在这个世界中也同样是忙忙碌碌的，为着他们的目标。对于他们，我们称为NPC，他们可能会给玩家一些重要的情报，可以会帮助玩家，当然也可能什么都不做。除了这些正面的外，就是一些有负面影响的人物了，在这里我们称他们MONSTER，他们可能会攻击玩家，甚至杀死玩家，是我们必须要认真对付的一种角色。关于这两种角色，我们会在以后相关的模块中做出具体的描述，但是在这个游戏世界的介绍里，他们是不能不出现的重要人物，不论他们是我们所说的好人还是坏人。 <BR><BR>5这个世界里发生的重大的事件 <BR>这个游戏世界当然不是一个太平和安宁的世界，他会有争斗，会有矛盾，也会有战争，这些都给我们这个世界带来了不安定的因素，所以我们的英雄就出现了。当然，这人世界里还会发生一些很重要的事件，这些事件可能就是玩家在游戏里玩下去的最终诱因，也可能是玩家最终要完成的目的。并且在这系列的事件上还可以有更多一些的分支，让我们的世界更加的迷离，也更加的精彩。 <BR><BR>在这里我们尽可能的把我们想要表现的这个世界完整的陈述出来，因为这是在后面系统的相关设计时程序和美术方面都要参考的东西，所以一定要做细致。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;2、出现在游戏中的世界的设定 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;这个世界是玩家所进入一个游戏后最直观看到的一个世界。这里需要我们给出一个详细的设定。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;首先，我们的世界里面要有一个让玩家出生的地方，不论它是一个城镇还是一个乡村或仅仅是一个营地。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;在我们前面已经定下来的世界里，安排一些可以让玩家出生，补给的城市。这些城市分布在这个大陆上的任何一个地方上。这里有一点要注意，即时战略类的游戏，他的城市更多的是靠玩家控制在哪里建设，如文明，所以在设计的时候也一定要注意城市出现的合理性。我们针对RPG类的游戏来说，城市显然是很重要的，它可以提供玩家一个休息和实现多项职能的地方，这一点对于玩家很重要。再有一些，开放的城市要考虑到整个硬件系统所能承受的上限，如果超出了上限，我们能面对的就只是砍掉我们心爱的城市了。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;另外，我们还要归纳出这个世界中的地形要素。例如，有山地，沙漠，沼泽，丘陵，湖泊等等。当然了，我们还要定一下是不是有昼夜的变化，是不是有四季的交替。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;然后，我们要在这个世界中分出一些重要的场所。这里根据它们彼此的作用不同，要详细的分列出来。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;例如，我们的城市在游戏里起到了什么样的作用，乡村的作用是作用，哪里是战场，我们可以在哪些地方行走，哪些地方则不行，这些地方的大体布局又是什么？里面会有一些什么样的地形原素？这些都是我们在这一段里要说明的。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;地形说完了，下面我们可以说一说在这个游戏里出现的人物了。这里的人物就是玩家，我们的玩家要扮演世界中的一个角色，那么这个角色是什么样的？就是我们在这里给出一个设定。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;现在有很多的设定方法，而人物的分类也有很多，最流行的就是AD&amp;D的那一套规则，很详细也很全面，这里我们可以参考一下那里面对人物种族的分类，并完全可以采用一些里面的设计方式为我们所以。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;例如，我们可以给我们的人物加上职业的设定，或者是让我们的人物可以选择自己的职业，但是给他们加上一个种族的设定，而针对每一个种族又会有不同的职业倾向。又或者，我们只给他们加入性别的设定，具体玩家想发展成什么样子，全由玩家自己来操控。再或者我们就给定玩家一个固定的角色来使用，玩家只可以在技能上面有些差异等等，要根据不同的游戏形式，设计不同的玩家形式，以达到在有限的范围内给玩家最大的自由度。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;有了人物，我们就可以设定一套为人物服务的武器系统了，我们的玩家在这个世界里冒险是不可能没有武器的，而武器也会有精良的和劣质的，所以我们要设计不同的武器，而且可以让每一个等级的玩家都有可以使用的武器来使用，而不是不到一个等级时只能用一件垃圾装备来凑合着用。在这个系统里，我们一般分为武器，防具，宝物，道具，当然还有一些与游戏相关的特殊的道具，如骑乘，特定的物品等。我们分出了类别后，就要给一个相应的标准，以便我们以后来设计具体化的道具，如，武器里面都有什么样的武器，分别是什么样的人可以使用的，防具又是什么样的，有哪些人可以使用哪些道具。宝物怎么使用，怎么得到，道具都有哪几类，作用是什么。这些都需要我们在这里给出一个大概的设计。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;最后，就是我们这个世界里的另一项重要的陈设了—建筑。这里的建筑是说我们的游戏里会出现什么样的建筑，它们分别都有什么样的作用？这里要分门别类的给出来，例如，道具店可以买卖物品，旅馆可以休息，酒店可以探听情报等等。在这里我们需要用到什么的建筑，我们又给它指派了什么样的功能，我们都要一一的描述出来。 <BR><BR>三、游戏系统 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;说完了游戏里的世界和人物，这里我们就要来定义我们的游戏系统了，这里关系到我们的游戏是怎么玩的，都有哪一样想着的因素和可玩的点。这一点是很重要的。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;第一、我们要定义一下我们的玩家系统 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我们的玩家在游戏里是什么样的呢，这里都需要一个完整的玩家系统来给我们的玩家一个详细的定义了。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;这里包括，玩家在第一次登陆时所需要的相关信息，玩家可以修改哪些参数？例如玩家的姓名，性别，职业，和一些相关到的基本的参数。这里需要我们给出定义。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;因为我们的玩家是一个由各项数值组成的一个整体，所以这里面的每项数值都是要我们来指定的。例如玩家可以有强壮度，可以有敏捷度，可以精神度，而这些又可能会关联到玩家的其他的属性上，例如生命值，生命值上限，气力值，气力值上限，生命力、体力、经验值、名望值、攻击力、防御力、移动速度、攻击速度、命中率、训练度、士气等等，所以在这里我们要把组成我们玩家角色的所有数值项都列出来，以方便程序方面为人物搭建数据结构。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;当有了一个玩家系统后，我们就要赋予玩家技能了。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我们的玩家在整个世界里要使用什么样的技能呢，如果有职业的情况下，我们玩家的技能可能会受到职业的制约，当然我们也可以给定玩家一个固定技能列表，每当玩家升到一定的等级后，我们就可以开放一个技能给玩家。当然还可以有别的办法，例如让玩家自主去学习等等。而我们玩家所会的技能可能不仅仅只有物理性的攻击，可能还会有一些法术的攻击方式，这些都要根据不同的职业来做不同的区分。一般分为武术技能，法术技能，还有一些特殊的技能，例如领导技能等，我们还要给这些技能分开主动还是被动技能，因为主动技能是要求玩家主动释放的，而被动技能则不同，当玩家得到这个被动技能后，就可以一直使用它，直到玩家死亡。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;为了让玩家在这个游戏世界里过得更有意思，我们可以再加入一些特色的玩家系统，例如玩家的称号，玩家的官职，玩家的知名度等等，这样可以满足一些玩家的心理。也可以使游戏变得更有趣味更人性化。而这些特色的玩家系统将要如何获得，需要在这里给出一个明确的方式。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;第二、我们的玩家要在游戏里做什么——游戏的任务系统&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;玩家在进入一个游戏世界后，就需要我们提供一个相应的任务系统来供玩家来使用了。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我们的任务可以是分为单线程的，也可以是多线程的，这里要根据游戏的复杂度和游戏的性质来决定，例如网络游戏就不可能有太过庞杂的游戏系统，而单机游戏的任务系统太过简单了，则会导致整个游戏的失色。这些都有它们相应的程度，要我们在平时的策划过程中不断的积累，最终达到一个相对平衡的程度。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;在任务的方式上也要注意，在网络游戏中我们要尽量做到玩家与玩家的对抗。但是在这方面有很多要考虑的因素，如玩家与玩家之间的作弊问题，洗钱，洗声望等，这些都要在任务中加以限制，使大家可以在一个相对平衡和公平的环境中对抗。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;在除了人与人的对抗以外，还可以有一些玩家与机器之间的对抗活动，即玩家与MONSTER之间的战争，其实这些在游戏中还是占有很大的分量的，只不过任务的方式有些单一，要想一些有新意的，可以令玩家投入的玩的因素。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;第三、我们怎么做战——游戏中的战争系统 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;玩家有了武器，有了任务，那么玩家就可以在这个游戏世界中冒险了。那么玩家会碰到各种不同的MONSTER，这些MONSTER会对玩家造成不同的伤害，有些很轻，有些则可能致命，所以玩家必须用手中的武器来保护自己，于是就有了这个系统——战争系统。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;在这里，可以把这个系统拆成两个系统来说明。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;战斗系统 <BR>&nbsp;&nbsp;&nbsp;&nbsp;玩家在游戏里不可避免的会遇到各种各样的战斗。小到砍死一个不值得一提的小怪物，大到与大家合力或是费尽气力打死一个终极的大BOSS。这些都是战斗，是玩家与MONSTER或是玩家之间的战斗，而这里面的规则就相应的要简单一些，杀死敌人后就可以获得相对应的奖励了，但是这里有一些要注意的是，这里当玩家与玩家做战时，如果玩家打死了其他的玩家，这里应该做什么样的处理，当然现在的MMORPG里是不主张的玩家与玩家的PK的，而且都带有一定的惩罚措施，所以我们在设计这里时就要注意，当真的出现了玩家PK的情况时要怎么处理。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;战争系统 <BR>&nbsp;&nbsp;&nbsp;&nbsp;这个系统则要高于整个的战斗系统，因为有了各种各样的战斗才会有战争，所以这个系统包括了上面的战斗系统。而这里，我们要把出现在游戏中的战斗都分门别类的划分开来，使之有一个完整的系统来对所有的战斗进行分类，管理。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;在游戏里可能出现的战争中有以下几种（网络游戏中） <BR>战争分为攻城战（国战）、家族战（敌对势力之间）、排名战（势力内部家族之间）、任务战（承接战斗性质任务）、野战（玩家小团体或个人行为的战斗）和练习战（军营等地的战斗。），此外，还可以根据游戏的形式做一些适当的调整，或添加或是删除一些相应的战争的方式，以便让玩家在游戏中体会到战斗最大的乐趣。 <BR><BR>四、游戏的音乐 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;同样，这个环节也是不能放松的一个环节，任何一个成功的游戏就不能没有一个能够紧密烘托其游戏气氛的游戏。音乐在游戏中起到的作用是不能忽视的，很可能直接的影响到玩家对这个游戏的认识，感觉。而这些东西最终还是决定玩家是不是还是继续玩这个游戏。所以，音乐也是一个很重要的游戏构成因素。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;在音乐的设计时，一定要使音乐可以通过游戏的场景来把气氛烘托出来，使玩家有一种在这个场景中的感觉。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;除此之外，当然还可以把一些可以让游戏生色的东西在这份大纲上体现出来，以作为游戏的玩点，并在讨论与设计时加以研究，使之完善起来，最终成为一个游戏最吸引人的地方。 <BR><BR>到此为止，就把我们的游戏里的其本的框架搭了起来，使我们对这个游戏有了一个最初的理解，它可以让我们大体看到一个游戏的世界，人物，事件，战斗等等很多的方面，下面的工作就是怎么把我们在上面描述的这些东西细化，并将其独立的分离出来，作为一些相互呼应相互关联的模块，处理好它们相互之间的关系，使之成为一个有机的整体。 <BR><BR><BR>BTW：这只是一个企划案，这里面策划人员要把自己想要用到游戏中的想法尽可能全的汇总起来，然后与各个部门讨论其可行性，最后留下真正可以实施的，整理成游戏的策划案</SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/8256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangsail/" target="_blank">蓝色雪焰</a> 2005-07-23 21:55 <a href="http://www.blogjava.net/yangsail/archive/2005/07/23/8256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>游戏策划</title><link>http://www.blogjava.net/yangsail/archive/2005/02/17/1285.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Thu, 17 Feb 2005 11:47:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/17/1285.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1285.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/17/1285.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1285.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1285.html</trackback:ping><description><![CDATA[<FONT size=2><STRONG>游戏策划<BR></STRONG>（转贴自<IMG src="http://www.move2008.com/bbs/pic/url.gif" align=absMiddle border=0></FONT><A href="http://www.gamemaker.com.cn" target=_blank><FONT color=#000000 size=2>http://www.gamemaker.com.cn</FONT></A><FONT size=2>）<BR><FONT color=#0000ff>1．什么是游戏策划？</FONT> </FONT>
<P></P>
<P><FONT size=2>　　我们今天的主题是游戏策划。因此，我们应该首先明白一个问题，什么是游戏策划？曾经有朋友拿着自己的一些故事来找我们，觉得自己的故事非常感人，如果作出游戏来会非常轰动。如此说来，写一些感人的故事是否是游戏策划？就我们自身的例子来说，我们感到一个好的故事离一个好的游戏相差实在是太远了。我们的《水浒英雄传—火之魂》是根据中国古典名著改编的，为了融合现代人的观点和口味，对原著的改编非常之大，就我们本身的故事脚本而言，可以说看了都说好。但做成游戏后就是另一回事了。且不说玩家的评论，单说我们自己都感到没有完全表达出脚本的内涵。并非用好的原料就能作出一道好菜。</FONT></P>
<P><FONT size=2>　　这不是说我们的制作人员的水平问题，而实实在在是人与人之间的思维和感受的不同所造成的。对一个故事而言，并非所有人都有同样的感受和评论。即使是一部电视剧，不同的人就会有不同的评论。就更不用说将一个故事给了七、八个甚至更多的不同个性不同思想的人，让他们做出一个让成千上万人欣赏的故事，其结果是可想而知的了。讲这些的目的是使有兴趣于此的朋友注意一点----一个故事对一个游戏而言，只是万里长征的第一步。</FONT></P>
<P><FONT size=2>　　当然，有一些游戏根本就与故事扯不上边，如模拟类、体育类游戏大多于此。还有一些朋友拿着一厚沓脚本来与我们商量，把他们的脚本制作出来。在他们的脚本中有详细的故事、菜单设计、游戏规则设计，表面上非常全面。他们管这个叫做游戏策划。也就是说他们认为写了一个故事，设计了一些菜单的功能，制订了一些游戏的规则，就是游戏策划。如果真的是这样，事情就变得简单多了。</FONT></P>
<P><FONT size=2>　　我相信，看这篇文章的朋友都抱着各种心态----好奇！看一看游戏制作的内幕！或者是自己想尝试一下。别人的游戏玩多了，总觉得自己有一些好的想法，绝对能策划个好游戏。但如果你真是想策划一个游戏，并且真是想有人能够制作出来的话，那么，我们有一个非常重要的前题是----谁来做这个游戏！！！你千万不要指望不顾程序和美术部分，而将故事、菜单、规则制订下来之后，你就万事大吉了。如果那样的话，你肯定得不到自己的作品，当程序和美术人员完成了工作的时候，拿给你的东西将与你想的完全不一样。你会看到----那根本不是同一个游戏。反复说这些话的原因，就是想告诉对此感兴趣的朋友们，千万不要以为游戏策划只是一个编故事、制订规则。那么作为一个游戏策划人，应该具备什么样的素质呢？什么样的人才有资格成为游戏策划呢/&nbsp;</FONT></P>
<P><BR><FONT color=#0000ff size=2>2．游戏策划人应该具备什么条件？</FONT></P>
<P><FONT size=2>　　怎么样？被我前面的话吓住了吧？这也不是，那也不是。什么样的人才是游戏策划人呢？</FONT></P>
<P><FONT size=2>　　现在我再告诉你，一个理想的游戏策划人应该具备如下条件：</FONT></P>
<P><FONT size=2>A．玩的游戏足够多，并且对各个游戏有过一番研究。因为只有这样，才能对自己的游戏进行充分的设计，才能扬长避短。也只有玩过足够多的游戏才能明白玩家的一些约定俗成的东西，比如YES、NO按钮谁在左面？谁在右面？如果反了，有些玩家会经常误操作。</FONT></P>
<P><FONT size=2>B．&nbsp;对程序的制作十分精通，精通游戏图形和音乐编程及人工智能。这样，你就能充分地发挥程序的作用，在不增加工作量的情况下，使游戏变得更加有趣。比如说在场景中有满街乱走的小人儿，如果不考虑更多的人工智能，这些人只是简单地随机乱走的话，一百个人和两个人几乎是用相同程序处理的。但如果两个人情况下，其中有一个人在一定的条件下，需要去一次酒馆的话，给程序方面增加的工作量，比增加一百人可大多了。而为游戏最后的测试又增加了许多工作。你必须创造必要的条件，看他去不去酒馆。而如果这个条件是随机出现的话，你不走运的话，可能会为此等上一天。</FONT></P>
<P><FONT size=2>C．对美术部分十分精通，精通各种平面、三维和动画软件，具有非常扎实的美术基础。并对摄影和镜头剪接有充分的了解。如果你真的具备这一点，你就能使参与游戏的其他美术人员充分了解游戏的整体感觉。你可以告诉他们整个游戏的色调是偏暖或是偏冷。如果是卡通的话，是采用迪斯尼的卡通风格还是日本的卡通漫画家的风格？你可以亲自设计出游戏的主要角色的人物形象定位和场景效果图，这样有经验的美术人员会充分体会你所要表现的游戏气氛。是欢快活泼的趣味风格，还是阴风阵阵的恐怖风格。</FONT></P>
<P><FONT size=2>D．对音乐十分精通，精通乐理并擅长古今中外各种风格的音乐。由于人们对音乐有着极强的感受和理解能力，所以一个有气氛的场景应该配合相同气氛的音乐。或是利用一种特殊的音乐效果表达特殊的气氛。我们曾经试图使一个音乐制作人明白我们为什么想将中国古典音乐与现代摇滚音乐相结合，但最后终于没有成功。</FONT></P>
<P><FONT size=2>E．&nbsp;有深厚的文学功底和丰富的中外历史知识，最好也能明白一些表达心理学方面的知识。这样你就能设计出动人的角色对话----表现动人情节的一个最重要的法宝，也有助于你烘托游戏时代背景。如果想设计科幻背景的游戏，你还必须熟悉未来科技的一些知识和趋势。</FONT></P>
<P><FONT size=2>　　也许这是一个游戏策划的标准人才，但这样的人才我们从来还没有遇到过。因为一个人的一生是有限的，在有限的时间里不可能在各个方面都能得到充分的发展。没办法，只能依靠我们自己来解决了。幸好我们也许在上述几点的其中一点非常突出。那么就让象你我这样的人来策划游戏吧。但我们能够成功，因为我们拥有两件必胜法宝----谦虚好学和不懈的努力。现在让我们开始吧。</FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT color=#0000ff size=2>3．如何开始一个游戏策划？</FONT></P>
<P><FONT size=2>　　开始一个游戏的策划，某种意义上说就是开始一个游戏的制作过程。首先，你必须明白一点，你的时间是有限的。如果你想成为一个专业人员，你时刻应该记住的事情是你正在制作的是一个商品，它有成本，面临蚀本的风险。而降低成本降低风险的最有效的方法就是牢牢控制住时间，在策划阶段就要充分考虑到这点。如果你是一个业余人员的话，你也不要忘记，如果你花上两年时间想做出一个好游戏的话，两年后，你的游戏可能已经烂得不成了。这样的例子真是太多了。更不用说，因为你自己的精力和时间所限，使你不得不半途而废。所以在一开始你必须有一个计划和目标，游戏的完成时间八个月？十二个月？十八个月？总之，你必须有一个明确的时间表，在这个时间表的基础上，你也许不得不抛弃或改变一些想法。</FONT></P>
<P><FONT size=2>　　现在我们开始吧，策划游戏需要一支笔（最好是铅笔）、一沓草稿纸，如果需要的话还要一个计算器。</FONT></P>
<P><FONT size=2>　　我们重玩了很多西方的模拟建设类游戏之后，突然产生了一个想法，如果游戏中的房屋全是我们自己的民族建筑会怎么样？那么我们就有了一个游戏的最基本的元素。</FONT></P>
<P><FONT size=2>★在一个也许是沙漠、也许是草原的空场上建造民族特色的房屋。</FONT></P>
<P><FONT size=2>　　下面我们需要为玩家设置一些障碍和奖励，这是使得游戏使人动脑筋的重要手段之一。顺便说一下，并非所有的玩家都喜欢动脑筋。但你永远不要指望一个游戏能满足所有玩家的喜好。</FONT></P>
<P><FONT size=2>　　游戏的历史背景是第二个问题。这个问题十分容易解决，我们现在所在的北京就是一个十分合适不过的地理和历史背景了。建设古代的帝都北京。一个十分吸引人的题材不是么？我们有了游戏的第二个元素。</FONT></P>
<P><FONT size=2>★以北京建都作为自己的历史背景。</FONT></P>
<P><FONT size=2>　　建筑需要金钱、人力、物力和时间，玩家必须想方设法地得到这些必要的基础才能获得最后的成功。这就形成了游戏的第三个基本元素。</FONT></P>
<P><FONT size=2>★玩家必须获得足够的金钱、人力、为人力所准备的粮食、建筑材料。</FONT></P>
<P><FONT size=2>　　下面我们组合这些基本元素使它们成为一个比较完整的体系。这个体系基本如下：将建筑进行分类，分别用于获得金钱、人口、粮食、建筑材料等等。这些有特定功能的建筑最后分别被定义为商号、民居、粮站、官府。从商号的经营活动中，通过税收的手段获得金钱是一个很自然的事。而人口都是从民居中产生的也是一个不假思索的选择。粮站的概念则完全取决于历史背景，古代的用粮一直是依靠从南方通过水路和陆路运输而来的，所以我们可能不用考虑种地的问题了，但由此引发了一个新的元素----道路和交通，于是我们又增加了两个设施：道路和运河。至于官府取得建筑材料，主要是因为古代皇宫的建筑材料主要是通过官府征集而来的。</FONT></P>
<P><FONT size=2>　　为了表现古代北京的城市概念，我们的建筑中又加入了庙宇、戏楼等等许多附属建筑；为了表现古代北京缺水的特点，我们又增加了水的因素和获得水的建筑----水井。</FONT></P>
<P><FONT size=2>　　好像一个比较完整的游戏规则的雏形产生了。但在你想继续之前，你必须回答以下几个问题。</FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT color=#0000ff size=2>4．其它的问题</FONT></P>
<P><FONT size=2>首先一个问题是你的场景或者称为地图有多大？这关系到以下问题：</FONT></P>
<P><FONT size=2>A．在有限的场景中你只能放置有限的建筑，而有限的建筑中有多少是商号呢？</FONT></P>
<P><FONT size=2>B．&nbsp;用这么多的商号能用多少时间产生多少金钱？用这些金钱你能建造多少建筑呢？</FONT></P>
<P><FONT size=2>C．多少钱一个建筑，而多长时间可以把地图上盖满建筑呢？</FONT></P>
<P><FONT size=2>D．&nbsp;每个建筑的尺寸是多大呢？</FONT></P>
<P><FONT size=2>　　你可能没有想到的是，问题答案的一部分是从你的游戏最终用户的机器配置得来的。如果你问程序员，他会告诉你，一张640X480X256色的图占用内存中的尺寸是300K。计算方法是640X480/1024（1K）=300。而一张同样大小的24BIT真彩的图在内存中则占用900K的空间，正好是300K的三倍。如果你的目标运行环境是486/16M的话，显然DOS系统是目标操作系统。在16M内存中，除了程序的运行部分和数据部分可能占3-4M空间外，即使其它地方都被图形占满，你也只能放大约12个640X480X24BIT大小的图。这意味着只有3X4个全屏的大小，太可怜了。你可以用一张1920X1920大小的图感受一下。</FONT></P>
<P><FONT size=2>　　如果你用了硬盘作为虚拟内存的技术，可能会加大场景，但运行速度可能会受到相当大的影响。</FONT></P>
<P><FONT size=2>　　如果考虑采用256色的话，你的美术人员必须面对一个更加严峻的问题----调色板，这是一个令无数英雄豪杰头痛不已的问题。它不但意味着图形质量的严重下降，还意味着工作量的成倍增加。可能你没有直接的感受，但是我们可以告诉你，过去在DOS环境下开发游戏，大约有60%的时间在解决调色板的问题。</FONT></P>
<P><FONT size=2>　　指望用户在WIN95下运行游戏是你的明智选择。这样用户的机器配置也会随之提高。同时由于WIN95的虚拟内存技术和更快的硬盘驱动程序。你的场景会大大提高。但还是有着方方面面的因素在影响你的选择。</FONT></P>
<P><FONT size=2>　　当场景的大小定下来后，你就可以制订一些参数了。首先你需要合理的设计出一个城市，所谓合理是指使绝大多数玩家不感到别扭。然后，再找出其中有多少是商业建筑，多少是民居，多少是官府。在此基础上再确定建造一个城市需要的金钱数，你需要给整个城市中的每一种建筑制订价格。然后再与其它因素一起计算出需要的金钱，判断一下玩家建造一个城市能忍耐的时间，太短会有不过瘾的感觉，太长就会将你的游戏束之高阁。然后，你就给你的建筑制订等级，并确定不同等级建筑的效能。总的来说，就是保证各种等级之间的平衡。比如，将计算出的金钱数分配给不同等级的商号。在分配过程中，你可以通过参数的调整引导用户建造更多的某个等级的商号。你可以在攻略中或手册中说明哪种等级的商号更加合算。</FONT></P>
<P><FONT size=2>　　象这样使你头晕的问题非常之多，你都要一一去面对并加以解决。你可能会说，这样不是已经进入游戏的制作过程了吗？其实不是，当这些参数被真正在游戏中体现出来的时候，你就会发现，有许多你没有意想到的东西。但即便如此，你也需要在具体实施制作之前，在你的脑海中，就象真正在玩这个游戏一样，将这个游戏的设计模拟一遍又一遍。以期从中发现问题。然后再分割成美术和程序人员都看得懂的脚本，再分别交给美术和程序人员进行制作。</FONT></P>
<P><FONT size=2>　　你看，游戏策划有的时候更需要的是细致和耐心，需要对程序和美术有一定的了解。并不断地与他人进行沟通。</FONT></P><img src ="http://www.blogjava.net/yangsail/aggbug/1285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangsail/" target="_blank">蓝色雪焰</a> 2005-02-17 19:47 <a href="http://www.blogjava.net/yangsail/archive/2005/02/17/1285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RPG游戏公式</title><link>http://www.blogjava.net/yangsail/archive/2005/02/17/1284.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Thu, 17 Feb 2005 11:04:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/17/1284.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1284.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/17/1284.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1284.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1284.html</trackback:ping><description><![CDATA[<STRONG><FONT size=2>RPG游戏公式<BR></FONT></STRONG>
<P></P>
<P><FONT size=2>１、很久以前，在一个遥远的地方，有一班勇者，一个魔王，一堆虾&nbsp;兵蟹将，一众可有可无的村长和村民，以及一个感人（？）的故事。&nbsp;　　<BR>２、所谓的勇者，一开始比任何生物都弱，连一只鸟或单细胞生物都打不赢。&nbsp;　　<BR>３、魔王有村庄不去住，只喜欢建立一个黑暗复杂的迷宫把自己关起来，一动不动地等勇者来。<BR>４、魔王会派出虾兵蟹将对付勇者，但为了使勇者能轻易应付，&nbsp;会根据勇者的等级派出不太强又不太弱的对手，偶然有一些太强的对手以致勇者打不赢，便一定有另一段偶然的故事救了勇者一命。<BR>５、魔王令他的虾兵蟹将将一些优质装备，道具及钱带在身上，&nbsp;却又不许使用，等勇者打败他们后来自用。<BR>６、魔王在自己住的迷宫里四处弃置宝箱，为勇者提供足够的装&nbsp;备和道具，以确保勇者能见到魔王。<BR>７、魔王传令：如勇者逃跑，绝不能追杀，更加不能随便行动，不得上下楼梯，不得擅自开门。&nbsp;<BR>８、最后，魔王被勇者打败了，有了以下结局：&nbsp;　　</FONT></P>
<P><FONT size=2>版本一：勇者杀死魔王，世界回复和平。&nbsp;　　<BR>版本二：勇者打败魔王，王子和公主便过着快乐的生活。&nbsp;　　<BR>版本三：魔王大叫：可恨啊……我会再回来的……然后消失了，&nbsp;（请期待下个故事）。&nbsp;　<BR>版本四：一阵强光过后，勇者和魔王一起消失了，只留下勇者的剑。&nbsp;　　<BR>版本五：女主角与魔王同归于尽或女主角牺牲的所谓永恒的悲剧。&nbsp;　　<BR>版本六：这次的勇者变了魔王，下次请打他吧。&nbsp;　　<BR>版本七：有个傻瓜梦醒了。&nbsp;　　<BR>版本八：——THE&nbsp;END——　一堆字幕&nbsp;　　</FONT></P>
<P><FONT size=2>版本九：C:&gt;</FONT></P><img src ="http://www.blogjava.net/yangsail/aggbug/1284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangsail/" target="_blank">蓝色雪焰</a> 2005-02-17 19:04 <a href="http://www.blogjava.net/yangsail/archive/2005/02/17/1284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一封游戏策划书</title><link>http://www.blogjava.net/yangsail/archive/2005/02/15/1226.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Tue, 15 Feb 2005 09:10:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/15/1226.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1226.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/15/1226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1226.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1226.html</trackback:ping><description><![CDATA[<P><FONT size=2>总体构想：<I></I> <BR>　　当前游戏的总体发展趋势是利用硬件提供的一切可能性来提升游戏的仿真性，而且似乎这是唯一吸引人的追求；因为当人们有了高配置的计算机以后，倾向于认为如果运行不能占用全部资源的游戏就是一种浪费，既然那些更加复杂、更加占用资源的游戏可以做到更好的仿真性，那么不用到这种计算机的处理能力似乎本身就代表了不好。这是广泛存在的思维误区。虽然我们并不能扭转用户的这种心理，而要善意地去理解；但是我们不能忽视这样一个现实，那就是编制技术复杂的、充分耗用CPU及其他计算机资源而达到极高仿真度的游戏是非常困难的，对一个缺乏经验和天才的游戏制作公司来说，尤其如此，象尚洋公司和他们编制的《血狮》就是这样一个典型的例子。<I></I> <BR>　　并不是所有的用户都有机器的迷信，仍然有相当多的玩家更加注意游戏的可玩性，而可玩性并不多取决于游戏的仿真度，而是取决于游戏的内涵。虽然这是老生常谈的问题，但是真正注意到的公司并不多。那么什么是游戏的内涵呢？说法与解答都很多。我认为游戏的内涵就是虚拟世界和用户的梦的结合，而且用户的梦是两者的重心所在。不关心当前的人们在想些什么，不做这样的调查，是不可能知道用户想要什么样的游戏的。<I></I>&nbsp;&nbsp;</FONT></P>
<P><FONT size=2>　　中国社会正处在转型期，人们的心理状态异常复杂。社会大众对纯文学的疏远并不表明当前的人不需要一种心灵的抚慰，而是恰恰相反，这方面的供求缺口非常之大。如果有一类游戏能反映当今的社会现实，回应人们的内心诉求，提供一种严肃的思考过程，那么它在商业上的成功是可以期待的。<I></I> </FONT></P>
<P><FONT size=2>　　这一类游戏的重心将放在人性的刻画上，主要通过文字和情节取胜，不需要太高的编程技术和机器配置，如果在剧本的编写上能做到精益求精、尽善尽美，相信可以在市场中占有相当的份额。<I></I> </FONT></P>
<P>&nbsp;</P>
<P><FONT size=2>游戏名称：在钢筋丛林中<I></I> </FONT></P>
<P><FONT size=2>游戏类型：单人/经营类<I></I> </FONT></P>
<P><FONT size=2>游戏行进方式：强制剧情+即时+回合<I></I> </FONT></P>
<P><FONT size=2>游戏主题：大城市中的个人奋斗<I></I> </FONT></P>
<P><FONT size=2>游戏角色：可选六人中之一人进行游戏。<I></I> </FONT></P>
<P><FONT size=2>　　角色1林强男24岁原在一家制鞋厂做行政助理，工资少得可怜，所学非所用，单位人际关系复杂，心情苦闷。此时从大学起就相爱的恋人提出分手，绝望的主人公决定背水一战，离开原来的环境，到外面的世界去闯荡一番。目标是实现自我价值，找到真爱。<I></I> <BR>（特殊失败条件：回原单位、到42岁还未完成目标、）<I></I> </FONT></P>
<P><FONT size=2>　　角色2李兰女23岁在某个广告公司工作，本来工作很令人满意，但其上司不断对她进行性骚扰，且这个上司在城市广告界有绝对的威势，李兰被迫离开这个公司之后，她无法在其他广告公司找到职位，只能转行。目标是真正摆脱她讨厌的上司的纠缠并且找到真爱。<I></I> <BR>（特殊失败条件：离开这个城市、到32岁还未实现目标）<I></I> </FONT></P>
<P><FONT size=2></FONT>
<P><FONT size=2>角色3姚奉男37岁某纸箱厂下岗职工，学历很低，没有积蓄，上有病弱的老父，下有还在读书的14岁的女儿。为了一家老小的生活，不得不自谋出路，开始自我创业。目标是存款达到20万。<I></I> <BR>（特殊失败条件：无）<I></I> </FONT></P>
<P><FONT size=2>　　角色4陈小勇男18岁某商贸中专毕业生，在学校没有学到任何实用技能，只知道吃喝玩乐。喜欢同班的白杨，但白杨一点儿也看不上他。受此刺激，他决心好好地干出一番事业来。目标是成为千万富翁，并且娶到白杨。<I></I> <BR>（特殊失败条件：到21岁时，听闻白杨已经嫁人）<I></I> </FONT></P>
<P><FONT size=2>　　角色5张娜若女19岁美丽的乡下妹，随在建筑工队打工的男友到城市，为一户人家做保姆。进了城以后，她的观念有了很大的变化。她不满男友杨火对她提出的性要求，以及以后婚后自己可能的处境，与他分手。虽然如此，她还是爱着他，期待着能在城市里以另一种方式与他重逢。<I></I> <BR>（特殊失败条件：答应杨火的要求，道德指数低于20）<I></I> </FONT></P>
<P><FONT size=2>　　角色6顾芸女22岁相貌一般，在电脑公司工作。她在网上认识一个男友，开始了网恋。两人都是真心相爱，但又恐惧着网恋的破灭，一再推迟见面的时候。对顾芸来说，能和男友现实地相爱下去，是最关键的事情。目标是美梦成真。<I></I> <BR>（特殊失败条件：男友不再爱她）<I></I> </FONT></P>
<P><FONT size=2>　　共同失败条件<I></I> <BR>　　生命值为0、信心为0<I></I> </FONT></P>
<P><FONT size=2>游戏模式<I></I> <BR>　　每个角色在游戏开始后都将进行一段强制剧情模式。强制剧情模式中含有少量的分支选项，玩家不同的选择对应着最终不同的结局。完成剧情模式以后，每个角色以一定的身份，一定量的资金在城市中为了达到自己的目标，开始自己的奋斗。这时游戏的模式改变为象《卧龙传》那样的即时模式。角色将进行各种各样的经营活动，自我培养。当角色的某些数值达到剧情设定的时候，会再穿插剧情模式。这是一般经营活动和养成而言，角色要完成最终目标，还必须要达成相当数量的特定目标。游戏将采用回合制的方式，让玩家就某个特定的目标和电脑在某个划定区域里进行周旋。这也是这个游戏唯一需要编制机器AI的地方。<I></I> </FONT></P>
<P><FONT size=2>　　虚拟的城市<I></I> <BR>　　本游戏设定在某一个城市内部进行。游戏将展现完整而细致的城市环境，包括建筑、机构、人。<I></I> </FONT></P>
<P><FONT size=2>　　建筑<I></I> <BR>　　斜45度的假3D造型，比如象《模拟城市2000》的场景，但比例应该更大，由手工绘制，能够看出建筑物类型。在操作上，如果能用鼠标点选建筑的方式进行一般移动，将会很方便玩家。<I></I> </FONT></P>
<P><FONT size=2>　　机构<I></I> <BR>　　政府行政机构、商业组织、金融机构、服务行业。完全模拟一个大城市的这些情况是完全不可能的，但数量上应该尽量多，主要是提供给玩家选择不同的奋斗道路。<I></I> </FONT></P>
<P><FONT size=2></FONT>
<P><FONT size=2>　　人<I></I> </FONT></P>
<P><FONT size=2>　　剧情相关人物、一般人物。预计有姓名者总共300人以上。<I></I> </FONT></P>
<P><FONT size=2>　　角色的数值体系<I></I> </FONT></P>
<P><FONT size=2>　　角色的数值体系对经营类和养成类游戏的成功非常关键。本游戏角色的数值包括：<I></I> <BR>　　一类：现金、存款、票证<I></I> <BR>　　二类：信誉、生命、信心、运气、道德<I></I> <BR>　　三类：各种技能经验等级<I></I> </FONT></P>
<P><FONT size=2>　　多结局<I></I> <BR>　　在强制剧情模式里，玩家不同的选择，在即时模式里的成果，以及在回合制模式里的胜败将会有多种不同的结局。<I></I> </FONT></P>
<P><FONT size=2>　　仿真性<I></I> <BR>　　本游戏的仿真性不在游戏画面上，而在于各种数值的真实性与行进手段的真实性上，同时还必须注意它的游戏性。如何把三者有机地统一在一起，将是这个游戏成功的关键。<I></I> </FONT></P>
<P><FONT size=2>　　结语<I></I> <BR>　　本游戏应该注意剧本编写中的人性刻画、情节曲折；数值设定上的平衡合理；美工上的特色风格；操作界面的友好。</FONT></P>
<P><FONT size=2>　　严格地说这个游戏策划并不是一个mud，但是我认为要改成mud也是很好的，期待能打动你。<I></I> </FONT></P><img src ="http://www.blogjava.net/yangsail/aggbug/1226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangsail/" target="_blank">蓝色雪焰</a> 2005-02-15 17:10 <a href="http://www.blogjava.net/yangsail/archive/2005/02/15/1226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典游戏制作教程</title><link>http://www.blogjava.net/yangsail/archive/2005/02/15/1222.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Tue, 15 Feb 2005 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/15/1222.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1222.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/15/1222.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1222.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1222.html</trackback:ping><description><![CDATA[<P><FONT size=2>经典游戏制作教程<BR><BR>peng<BR><BR><BR>1.游戏制作的主要流程<BR>-------------------------------------------------------------------------------<BR><BR>电脑游戏开发小组中的任何一个人（这个角色通常有策划担任），只要有了一个新的想法 或念头，就孕育着一个新游戏的诞生。在这个创意被充分讨论之后，再加上对其操作过程的趣味性及市场销售的可行性的预测等因素的准确判断，一个完整的策划方案才可能产生。在经过充分的讨论后，策划人员必须将讨论的重点写成文字，也就是提出完整的策划方案，经决策者同意认可后，才能进下一步的工作。这份策划方案就像一部电影的剧本，它必须完整地涵盖整个游戏的故事、流程、内容、方式、游戏画面、角色造型、 场景规划、人工智能、硬件配备、市场评估等。对整个游戏过程的详细描述及实施规划都应 记录在案。 当进入创作过程之后，策划还必须随时和美术设计师和程序设计员保持联系，以免游戏程序的编写失控。策划应能对游戏设置的内容与精神了如指掌，与各个小组及时沟通，并且控制整个游戏制作的进程。 <BR><BR><BR><BR>2.游戏设计基本论 <BR>-------------------------------------------------------------------------------&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp; 要设计一个游戏，首先你必须要确定几个重要方针，第一是你要设计的游戏是属於那一种类型，第二是时代背景，第三是模式，第四是程式技术，第五是表现手法，第六是市场定位，第七是研发时间，在掌握上述七个方针之後，你就可以再做详细的规划内容及调配资源，那麽何谓是七项方针呢? 笔者以范例来说明之! <BR>一、类型：<BR>&nbsp;&nbsp; 所谓的类型是指这个游戏所着眼的一个游戏方式，通过这个方式来使玩者达到娱乐的目的，这个游戏方式有专有名词来各别予以命名，兹如下述：<BR><BR>(1) RGP角色扮演：<BR>&nbsp;&nbsp; 这个类型的游戏以通过故事剧情牵引来使玩家能溶入主角所存在的一个世界，这类型态的游戏多半透过战斗升级系统及人物对话的方式来一步步完成设计者所布下的剧情路线，最具代表的作品有日本史克威尔所设计的 "太空战士系列" 及国内大宇资讯所设计的"仙剑奇侠传"，当然还有很多部作品例如"神奇传说"等也是此中的佼佼者。<BR>&nbsp;&nbsp; 在RGP的类型中，在近几年来又分支了几个类似的型态，例如说Blizzard的"暗黑破坏神"Dirblo"被定位为"动作RPG"，因其动作成分相当高所至，而"神奇传说"、"超时空英雄传说"则被定位尽"战略RPG"，只因战略成分比重较高所以又有别於传统RPG。 <BR><BR>(2) SLG战略：<BR>&nbsp;&nbsp; 谈起战略游戏，大家最耳熟能详的应是日本光荣公司所出品的"三个系列"，KOEI的三国志风靡东亚，从一代进化到现阶段的六代皆为玩家们所津津乐道，而所谓的战略游戏则是透过经营→战争→扩大领土三个手段来蠃得游戏最终目标，一般而言动态成分少，最较偏重於花费脑力的游戏，但从WestWood的新型态战略游戏"沙丘魔堡"问世之後，战略游戏也有了重大的分野，一是以KOEI代表的三国志系列被称为回合制战略游戏，一是以WestWood代表的C&amp;C及Blizzard所代表的魔兽争霸被称为即时制战略游戏，和回合制所不同的是，即时制拥有较多可由玩家与电脑互动的机会，比较不花费脑力，所进行的 方式是建设→生产→攻击→歼灭，在业界有句俏皮话是这样说的：「玩回合制游戏像是自己当了个大将军(元首)，运筹帷幄决胜千里之外，而玩即时制游戏则像是个士官长(部队指挥官)，只能一味的打打杀杀」由此你可以了解到这两个型态的异同的了。<BR><BR><BR><BR>(3) ACT动作：<BR>&nbsp;&nbsp; 所谓的动作游戏其实就完全靠玩家的反应来做过关的条件，较有名的像DOOM、古墓奇兵、QUAKEⅡ 等，在动作游戏中也分支了相当多的类型，例如快打旋风、铁拳Ⅲ等被定位为格斗型态，主要游戏方式就是二人到四人互相对打一直到分出胜负为止，而DOOM、古墓奇兵则被定位为3D动作冒险游戏，主要目的为杀敌闯关，再来像阿比逃亡记、黑暗之心被定位为横向卷轴游戏，游戏方式就是以攻击跳跃等动作来走过一连串的关卡，表现方式多为2D卷动画面的方式在进行，再如飞龙骑士、极上疯狂大射击则被定为动作射击游戏，游戏方式就是闪躲射击冲过火网进而歼灭守关魔王为止，这些分支型态有共 通特点却又那样的不同，这也是动作游戏吸引人的重要原因。 <BR><BR>(4) PZL益智：<BR>&nbsp;&nbsp; 这类型的游戏以趣味性的思考为游戏的主轴，内容可以包罗万，思维模式也可朝物理性及逻辑性方向着眼，具代表性的是大宇资讯的"台湾十六张麻将"、"大富翁"、"仓库番"等，而棋盘式的思考方式着名的有"决战中国象棋"及光谱资讯的"五子棋大师"等，这些游戏入手容易且不分男女老少皆喜欢的特性，使得益智型态的开发较有市场，成本也较低。<BR><BR>(5) ADV冒险： <BR>&nbsp;&nbsp; 冒险游戏的内涵多半脱离不了解谜的成分，是的!这类型的游戏让玩家抽丝剖茧的找出设在游戏背後暗藏的谜底，以顺利完成游戏，具代表作有恶灵古堡、异星搜奇、幽魂等，这类型的游戏年龄层较高，比较不适合国内厂商来研发。<BR>&nbsp;&nbsp; 当你在构思一个新的游戏企划时即应预先想的所属意的类型，然後才进行下一步的计划，一般而言国内市场接受度最高的莫过於 RPG角色扮演类型，这也是为何国内厂商会如此的大力研发RPG型态的游戏。<BR><BR>二、时代背景：<BR>&nbsp;&nbsp; 对於游戏美术来说是一个很重要的方针，因为决定一个时代背景所意味的是资料的搜寻工作方便与否，与美术人员在制定造形时需依据的范例；以国内市场来说多半能接受中国古代时代背景，基本上时代背景有好几种，例如说WestWood的红色警戒架构在公元2000年左右的未来，而魔兽争霸则定在虚幻的欧洲中古世纪中，三国志定位在汉朝末年，星海争霸架构在外太空世界，轩辕剑则定在春秋战国时代等。 <BR>时代背景绝对是企划人员在第一阶段规划整个游戏时已先决定好了，如此美术人员才能放心的去搜集资料。<BR><BR>三、模式：<BR>&nbsp;&nbsp; 当决定好类型及时代背景之後，再来就开始要去构思游戏中所要呈现的模式，如假设你的背景订在古代中国，而类型是定为即时战略，这时你必去思考出游戏内容的进行方式，可能你的游戏需要生产的因素，这个因素是什麽? 可以是粮食、矿产及木材，也可以是火山能源、石油、太阳能或天然气等，随着你故事情节上的需要而去制定项目，在作战方式上你所设计的模式可能会去考虑到地形因素、天候因素及资源因素，而且会大量运用到各种战术及攻击方法等，因为如此所以同一种类型的游戏虽多，但模式上却各有特色各有偏重的游戏路线，也各自聚集了拥护者，这就是模式设定的一个重要性，切记千万不可去抄袭他人所定的模式，因为这样一来，当你所设计的游戏完成之後，眼尖的玩家们会把你的产品以过时抄袭为由而弃如敝履，这在这剧烈竞争的国内市场而言是无法存活太久的。<BR><BR>四、程式技术：<BR>&nbsp;&nbsp; 无论你对一个游戏想得多好，架构设计多庞大，如果程式人员本身的技术无法配合的话，那其实一切还是流於空谈，所以在设计一个游戏之前必要先去徵询程式人员的意见，在现在这个环境中不仅程式人员要会Windows98及Wi-ndows NT相关技术，一个完整的系统分析及系统规划是不可缺少的，如此可以避免掉在程式中不可预期的错误出现，而且在一个游戏设计中最好有二个程式人员在运作，一个负责内部程式 (游戏核心引擎) ，一个负责外部程式(介面程式)，这样方可发挥完整的战力。<BR><BR>五、表现手法：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这个环节中，企划人员、程式人员、美术人员要做完善的沟通及讨论，一般我们知道大部份的电脑游戏是256 色的系统，在这些游戏中对於色盘的控制有相当严苛的要求，为了达到最好的视觉效果，美术人员通常会向程式人员要求多重色盘的资源，而程式人员则会考量到切换时的状况及记忆体配置是否能完全充份，在系统上的问题确定之後，企划人员会提出呈现效果的建议，例如说爆炸效果的表现方式，由内而外扩张到消失的火焰激烈型或包容大量烟雾的燃烧型，这要由企划人员依故事内容来给予定义，同时以物理性逻辑给予美术人员一个建议，再由美术人员前去绘制。<BR>&nbsp;&nbsp; 还有一个例子，以"C&amp;C之红色警戒"与"AGO Empir世纪帝国"的海岸来说明，在"AGO Empir 世纪帝国"的海岸表现是静止的，海水不会流动，最多只有鱼在海中央跳跃，而"C&amp;C"之红色警戒"的海岸表现手法是会流动的，但海中没有任何的特异之处，这两种表现手法各有各的好处及考量，但以笔者而言仍较偏爱"C&amp;C之红色警戒"。 <BR>&nbsp;&nbsp;&nbsp; 游戏内容的表现手法通常伴随着同类型游戏间的相异处而有不同的评价及支持者，而不光是美术效果的表现手法，企划人员构思的游戏玩法及程式人员的程式表现都有密切的关系。<BR><BR>六、市场定位：<BR>&nbsp;&nbsp; 不论你所设计的游戏构想如何的好，如果你没有去清楚的定位出你的市场走向，那麽到时制作完成的游戏软体可能会面临到销售不佳的窘状，所以在设计游戏之前你得知道你所定位的族群在那里，从下表中你可作一个市场定位的叁考： <BR>年龄层&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 教育程度适合的类型内容 <BR><BR>7~12岁 国小动作、益智较多趣味性、教学性 <BR>13~18岁 国中、高中动作、益智、 较多思考性质、图形精美化同 角色扮演、战略时又较多反射 <BR>19岁以上 低知识水平益智、动作较暴力及冒险、趣味性质，操 作简单 <BR>19~30岁 大专、大学以上角色扮演、战略富含多重思维性，可以影射周 、冒险、模拟、 遭事物，解谜及创造性运动&nbsp; <BR><BR>七、研发时间：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是企划人员在初步规划中的最後一个项目，针对上述的制作方针你必须对美术人员及程式人员安排一个完整的SCHEDULE，从这个SCHEDULE中去研判律发时间，从企划的角度来说，为了不使良好的点子被其他游戏公司抢先推出，同时也要避免推出後模式已落伍，一个游戏的研发最好在一年内，最多不可超过18个月，以成本控制的角度来说比较符合获利标准。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 假设你规划这个游戏需要一年的时间，那麽你就要去区分出美术制作时间 (第一线)及程式制作时(第二线)间的差异，并考量推出DEMO 版及游戏完成的时间，在适当时机打出游戏知名度，为游戏销售上打下一记商机。<BR><BR>制作流程<BR>&nbsp;&nbsp; 一个游戏的制作如果不能充份控制整个作业程序，那即有delay 的危险，大家都知道游戏软体delay对於销售上的影响会有多大，所以如何尽量避免de-lay是每个游戏设计者应极力去避免的，而要去避免游戏开发作业上delay的情况最重要的是严密控管作业流程及计划表。 <BR>&nbsp;&nbsp; 那麽究竟游戏制作流程是一个什麽样的情形呢? 首先企划人员在执行制作的前一个月即要定出企划大纲及搜集可用资源，并经程式人员及美术人员确认後开始执行，我们以一个即时战略的游戏来说明，在制作分期程式人员即投入地图编辑器的撰写，而地图编辑器的逻辑设定要由企划人员先期规划，然後程式人员才根据企划人员的规划而进行程式写作。 <BR>&nbsp;&nbsp; 在此同一时期美术人员即开始分工合作，一般一个游戏工作小组会有四位美术人员，他们分别负责造形、人物动作、介面、地图四个部分来制作，但这只粗分法，国内游戏公司较常使用这样的组合，在国外美术人员分为造形、人物动作、介面、地图、片头、过场、後制分镜、场景等九大部份，每个部份皆可能都有二人以上在作业，并有一名监制在执行风格及水准的品质控管，这些人统一由後制人员来与程式人员做交图及配合修图等沟通上的交流，所以说後制作美术人员的成败实关系到整个游戏品质的高低。<BR>由於程式人员在设计地图编辑器时需要利用到一些图素来做测试，所以地图图素设计人员要先一步绘制出程式人员所需要的图素，<BR>&nbsp;&nbsp; 在程式人员测试通过之後方可进入大量生产的阶段，由於地图编辑器的设计者多半直接负责游戏引擎的制作，所以在初期企划人员便开始着手人工智慧AI的逻辑判断作详细的叙述，以期在程式人员撰写地图编辑器之後能立即作人工智慧AI的撰写，而在此同时负责撰写介面的程式人员亦与负责介面设计的美术人员作密切的配合，开始着手制作各个介面，因为介面不仅在游戏中是一个主司控制整个游戏的操作盘，同时也是一个游戏的外观，一个拥有优良创意的介面是很受 玩家喜欢的。 在测试地图编辑器时，程式人员亦需要利用移动物件(人)来测试地图上的障碍物判断及最短路径搜寻法，所以设计人物动作的美术人员在此时要先去做出一组人物动作供程式人员作测试，待程式人员把地图编辑器制作出来之後，人物动作设计的美术人员则只要不断的做并不断的把图给程式人员即可。 <BR><BR><BR><BR><BR>3.游戏设计十诫律<BR>------------------------------------------------------------------------------- <BR><BR><BR>Travis S. Casey <BR><BR><BR>1. 编写你所喜爱的游戏 <BR>不要人云亦云。只要你和你的朋友喜爱就可以了。 同样道理，不要编写某个游戏主题仅仅因为它当前流行而已。编写你所喜欢的题材， 这样才能激发你的热情。 <BR><BR>2. 经验是最好的老师 <BR>学习游戏编程最好的方法就是阅读大量的游戏程序。玩和分析这些游戏，然后设计 你自己的游戏或扩展游戏。我最主要的经验都是角色扮演类游戏，我的许多游戏范 例也来自它们，但思路却适用于所有类型的游戏。 我阅读过大量的RPG类游戏，粗略算算大约有七十多个。其中大部份我都玩过，精 通四十多个。不但玩和精通这些游戏，我还分析它们。是什么使得这些游戏好或者 不好？我如何修改它？哪些部份表现的出色？哪些部份不尽人意？为什么？ 玩和分析过其它游戏后，我把这些知识用于我自己的游戏。比如在“超级英雄”类 游戏中，“斗士”和“英雄”在使用了“指数特性的换算法”取得较好的效果。如 果我想设计“超级英雄”类游戏时，我就知道“指数换算法”很可取。这样的分析 能给你许多被验证过的思想用于你的工作中。 <BR><BR>3. 测试、测试、再测试 <BR>测试你的游戏，尽可能多次的玩。最好当你不在场的情况下，让别人来玩，过后再 告诉他们。(让别人当你不在的时候玩游戏称为：“盲测”) 还有，推敲你的规则。考虑假设情况，解决概率复杂性。比如，如果你正在设计一 个RPG，试着找出平均人们用弓箭从一米、五米、十米、五十米和百米范围内射中 人形大小目标的百分机率。对于二战游戏，检测你的监视器和解决一个小步兵摧毁 一辆坦克的机率。反复计算在不同的条件下，如：不同的地形、夜间等等。这将有 助于你找到在数学中出错的地方或建立了一个不好的假设。 <BR><BR>4.学习背景知识 <BR>如果你想编一个中世纪的神奇游戏，就要去读中世纪的文学和历史。读有关魔法的 书及现有的中世纪传奇游戏。对其它类型的游戏也是如此，如果你想做一个越南战 争的游戏，就应去读有关战争的正史及野史，特别是战略、战术的分析。 所有的背景知识可以用于几种途径：首先，能帮助你创造出逼真的角色。另外它能 减少你在术语及背景知识方面，出现重大错误的可能性。当然，资料应该本身就很 有趣。如果对于所要学的都不感兴趣，那为什么还要编写这方面的游戏呢？ <BR><BR>5. 正规教育 <BR>选一门介绍概率和统计的课。试着读一些游戏方面的数学理论。你可能觉得那没什 么用，但它能帮助透视算法的掌握。斟酌你的英语(或其它你发表游戏所用的语言) 当游戏描写得好的时侯，就更容易学，至少不能有大量的语法错误。 如果你想制作电脑游戏而没上过任何编程课时，不妨学几门。你可能学不到什么编 程序的具体东西，但一门好的课程可以教会你如何组织程序使之更容易维护和发现 错误。 建立一个“参考文献库”，它是一系列和你所制作游戏工程相关的游戏、书籍资料。 当你清晨三点突发灵感而图书馆却已关门的时侯，它将是非常有用的。 <BR><BR>6. 抽取些时间 <BR>一个游戏就像孩子，当它刚出生时，它的父母总认为它是完美的。从你的游戏中抽 出些时间去得到一些新的观点，避免都耗在上面。一遍遍的重复这一过程。 <BR><BR>7. 保留记录 <BR>确定你有一份以上的游戏拷贝。如果你是在电脑上输入的，就各保持一份硬盘和软 盘拷贝，另外再打印出一份清楚的最近版本(如每月打印一份，如果你干得快的话每 星期打印一份)。你不会觉得拷贝太多，因为你的好朋友们会来向你借或者想拥有拷 贝。而且这些拷贝能够减少你因为硬盘瘫痪或丢失笔记本等原因造成的丢失机会。 同样道理，保留旧版本的拷贝是有好处的。如果你在游戏测试时发现新的办法还不 如旧的好，而你却已将旧版本的扔掉了，这该怎么办？至少保留一份最后版本之前 的拷贝，同你当前版本的拷贝放在一起。 <BR><BR>8. 其它注意事项 <BR>优秀的规划和书写是好的，但精美的视觉化说明对你的销售大有益处。如果你要自 己动手，就学一些桌面出版，或找一些现成的插图(比如：剪辑艺术或政府出版物) 或找别人帮你画些插图。 找个从事印刷业的人，和他探讨一些尽可能廉价的方法。低价格可以有助于销售， 低成本则有利于你的收益。 <BR><BR>9. 记住这只是个游戏 <BR>不要因为制作游戏而忽略你的现实生活。如果有人不喜欢你的游戏，别介意。不用 担心别人窃取你的创意。记住第一条诫律，从你的所做中得到乐趣就行了。 <BR><BR>10.没有第十条了 :-) <BR><BR>另外，这里有一些来自汤姆(“棱镜游戏”的主持者)的额外忠告，感谢汤姆！： <BR>1.不断的创新是非常好的。如果你游戏中的所有东西都令人似曾相识，就好像是 偷来的。如果所有东西都与众不同又会让人感到陌生。常见题材单一独到的构思是 好的，但会使得你的游戏看来像个“变体”，而两个熟悉题材精明的创意则会使游 戏有新鲜感同时容易上手。因此不要试图彻底从新发明某样东西，而应把当前所拥 有的主意清晰化、简洁化的用于扩展关键观念的创新和趣味方面上。<BR>2. 修正和雕琢你的游戏创意。测试不仅仅为了清除游戏和规则介绍中的错误，而 且就像一个讨论会，对照他们已经取得的东西，游戏设计师能够发现什么是真正所 要表达的。如果你将测试留到最后，这一发现将对你没有什么好处。如果你进行早 期的测试和经常从眼前试着发现这一游戏真正要表达的，你就能常常很大的改进这 一游戏。 “ Alpha”测试就像在问：“是否真有这个游戏？”“我得到它了吗？”“ Beta ” 测试看来在问：“是否用了最好的方法达到这一效果？”，“这是游戏的精炼吗？ 或者它是否能被简化或删除？”“是否所有主要的游戏系统协同工作，给予了我所 期待的游戏体验？”“ Gamma ”测试又像在问“如何才能改善游戏的收支平衡 和介绍呢？”许多设计师停留在Alpha(生产一个吸引人但却是次品的游戏)之后或 者从Alpha直接到Gamma，跳过了Beta(生产一个好的但还不够完美的游戏)。 通常有必要靠你的亲密朋友/游戏小组及早的进行足够的批评性分析，帮助你发现如 何才能改进一个已经相当不错的游戏。 <BR><BR>我的一些其它建议： <BR><BR>在我制作游戏过程中，从没有清晰明显的测试“阶段”。我倾向于每个阶段都做一 点。我修改一些系统，抛弃或替换一部分，改善其它的收支平衡和介绍，差不多是 在同时做的。这些部分来自于我所从事的主要游戏类型的设计-宇宙类RPG，你必须 在一个时间内干一个部分的事情。 关键在于去寻求达到你最好的作品。用不同的方法尝试，直到找到适合你的方法， 然后用它钻研下去。<BR><BR><BR><BR>4.游戏的剧情 <BR>-------------------------------------------------------------------------------<BR><BR><BR>游戏剧情的重要是不言而喻的,特别是RPG游戏,相信广大玩家对"仙剑奇侠传" 熟得不能再熟了,这个游戏以剧情取胜(他的音乐也相当不错),各大媒体对他的 评价也都是以剧情为主,这个我就不多说了.<BR>我也曾看过许多文章提到剧情的重要,这些文章说的相当好,相当有价值,但基 本上讲述的是剧情的要点及注意事项.而我将从另一个方面去分析游戏的剧情.<BR>游戏的剧情是游戏的灵魂(当然除少数不需要剧情的游戏,如体育类,赛车等), 游戏通过各种各样的方法让玩家融入到设定的剧情上以打动玩家,但如果游戏 的剧情不吸引人,那么无论游戏的表现手法有多好也不能达到目的,但是怎样 的剧情才吸引人呢.<BR>事实上中国与外国玩家有着很大的文化差异,这一点可以从各地所出产的游戏 上看得出来,欧美的游戏大多重视人物与场景的直实性,看上去就像电影,而东 方的游戏普遍追求漫画式的效果.但这两种风格哪种适合我们呢?答案是两种 都适合.不要忘记我们的玩家基本上是青年一代,对新事物的接受是相当快的, 对欧美的游戏我们的玩家接受得很快,从这可以看出国外的游戏制作是相当出 色的,就拿我自己举个例子,前两天我得到一款"生化危机2"的游戏,游戏开始 的动画可以说是扣人心弦,并且很好的衬托出了主题.而第二种风格的代表作 品就是"仙剑"了.<BR>游戏所要表现的内容必须能够被玩家接受,而且还要有创新,这样的剧情才说 得过去.现在我们有一个很好的观察点,那就是电影,外国的制作精良的大片 挤进中国后给我们的冲击多么大,而中国传统题材的作品也给我们留下难忘 的印象.<BR>我们不得不承认,在技术上我们与国外的游戏制作公司相比还差了一截,这 使得许多很好的题材我们不敢用,因为以现有的技术还不能很好的将他表现 出来,如果勉强还可能会起反作用(这是有例子的).<BR>在这里我只是起一个开头的作用,什么样的剧情适合大家也不是一下能说清 楚,希望广大游戏爱好者能积极讨论这个问题,这也是我们中国游戏业现阶断 的一个重要的有待解决的问题. <BR><BR><BR><BR>5.角色扮演游戏的升级系统研究<BR>-------------------------------------------------------------------------------<BR><BR><BR><BR><BR>在一般的角色扮演游戏中，人物的成长是一件相当重要的事，无论是角色扮演游戏或是目前热门的策略型角色<BR>扮演游戏（简称RSLG），这些升级系统都是游戏的一个重要部份。不过在一般的角色扮演游戏中，人物的升级<BR>以及成长却有着很多种的处理方式。在本文中，笔者将为各位介绍各种角色扮演游戏中常用的升级方式，并且<BR>分析各种作法的优缺点。<BR><BR>在一般的角色扮演游戏中，最常用的升级方式就是乱数式的成长方式。在这种模式中，当一名角色获得升级的<BR>时候，程式会使用乱数来决定升级的各项指数，也就是说所有的升级数值都不是在控制中，而是依据一个乱数<BR>表来决定提升的数值。这种升级的方式是如何处理的呢？<BR><BR>当人物到达升级的标准时，就会进入处理升级的副程式中，在这个副程式中程式会依设计者所定出的一个乱数<BR>范围，来计算出这名角色所得到的升级指数，然後将这个数值加到需要增加的属性上。<BR><BR>在这种乱数决定升级的情况下，玩者所能够获得的升级数值，完全是由设计者订定的范围中求出，无论是升级<BR>的上限或是下限都是在这个范围内，绝对不会有意外的情况发生，就算是设计者如何提高上限与下限，都不会<BR>改变这些。这种作法虽然可以让设计者很轻松的订出升级的上下限，但是却不能控制升级时的不利因素，那就<BR>是乱数的成份实在是太高了。若是有一名角色因为运气不好一直只有获得下限的升级数值，那麽它可能会比一<BR>个一次就获得上限升级数值的角色要弱。举例来说，当这个乱数的范围是一到五的时候，若是角色甲和角色乙<BR>分别获得上限和下限的升级数值，那麽会发生以下的状况：<BR><BR>┏ ┳ ┳ ┓ <BR>角色甲 角色乙 <BR>┣ ╋ ╋ ┫ <BR>ＬＶ１ １０ １０ <BR>ＬＶ２ １５ １１ <BR>ＬＶ３ ２０ １２ <BR>ＬＶ４ ２５ １３ <BR>ＬＶ５ ３０ １４ <BR>ＬＶ６ ３５ １５ <BR>┗ ┻ ┻ ┛<BR><BR>各位看看上表，是不是可以看到角色甲在第二级时的数值就已经和角色乙第六级的数值是相同了。由於乱数式<BR>的升级方式会有这种不公平的情况发生，因此常会使得玩者的努力需要有一些运气的成份在里面；若是运气不<BR>好，可能原本的努力都无法发挥所要的功效。<BR><BR>由於乱数式的升级方式有这样的缺点，因此有两种不同的改进办法，首先就是百分比制的升级方式。在这一种<BR>办法里，角色在升级的时候还是使用乱数来进行，不过在每一个数字的出现比例上却做了一些调整。例如同样<BR>的升级的范围还是从一到五，但是每一个数字的出现比例调整如下：<BR><BR>┏ ┳ ┓ <BR>数值 出现比例 <BR>┣ ╋ ┫ <BR>１ １０％ <BR>２ ２０％ <BR>３ ４０％ <BR>４ ２０％ <BR>５ １０％ <BR>┗ ┻ ┛<BR><BR>各位从上表中可以看到，在这一种处理方式上，每一个数字出现的比例做了一些调整。原本的乱数式中，每一<BR>个数字的出现比例都是相同的，就以上面的例子来说，每个数字出现比例是百分之二时，因此上限和下限的数<BR>值比较容易出现，发生不幸的情况比较多；但是在这样子调整後，上限和下限的数值出现的机会就减低了不少<BR>，会发生不幸的情况就降低了。<BR><BR>虽然这样的作法可以降低不幸的发生机会，但是还是无法完全的克服所有的状况，因为还是有可能会发生相同<BR>的状况，使得玩者陷入属性不佳的情况中。因此另外一种改良的方式～修正值升级方式就这麽出现了。<BR><BR>其实修正值的升级方式和原本的乱数处理法在计算的时候是完全相同的，只不过是它在升级到一个程度的时候<BR>，会来做一次计算并且取出一个修正值，以免玩者因为运气不好无法达到升级的功效。<BR><BR>在这种作法上，上半部和乱数式的做法完全相同，唯一的不同是下半部的副程式。而这个副程式的作用就是在<BR>帮一些升级时运气比较不好的玩者取得一点修正值。<BR><BR>我们就以前面所说的升级的数值是从一到五来做个例子，让玩者每升五级时就可以取得一点修正值。因此若是<BR>一名角色在五次升级中都只有获得一点的升级值，那麽目前它的数值就是：<BR><BR>10 + 1 + 1 + 1 + 1 + 1 = 15<BR><BR>不过在我们的升级表内中等的数值是三，因此当角色升了五级之後，应该可以获得以下的数值：<BR><BR>10 + 3 + 3 + 3 + 3 + 3 = 25<BR><BR>这麽说来这名角色因为前五级的升级运气不好，因此少获得了十点的升级指数，所以我们就在这一次把这个缺<BR>少的数值以修正值的方式补足，从修正值的计算式中可以得出：<BR><BR>25 - 15 = 10<BR><BR>就将这个数值加到角色的属性中，让角色不会因为运气太差而有不利的情况。若是角色在升级中都获得比较高<BR>的数值，那麽修正值就是负的，也就表示不需要有修正值的存在了。<BR><BR>这种作法完全是为了不让玩者因为升级时运气不好使得属性太低，因此只能算是修正部份数值的作法，虽然不<BR>能完全解决乱数式的问题，但是可以将不利的因素降低，因此在某些游戏里的确有采用这样的作法。<BR><BR>除了乱数式的作法外，还有一种是表列式的升级方式。在这种升级方式中，每一名角色的升级数值都是设计者<BR>已经订好的，完全不会有任何的变动。它的好处是设计者可以完全掌控所有的升级状况，但是相对的这样子的<BR>表格需要占掉较多的程式空间。<BR><BR>举例来说，某个游戏若是采用这种升级方式，那麽在它的记忆体中就需要有这样子的升级表格。若是游戏中有<BR>七项属性会获得升级，等级共有一百级的变化，那麽基本上它就需要有七百个不同的数值表放在程式中。若是<BR>一个数值用了两个位元（BYTE），那麽就需要用到1K左右的记忆体。如果说游戏中有四名角色，它们升级情况<BR>又都是不同，那麽占掉的记忆体就将近有5K了。这麽算起来各位可能觉得不会很多，但是当这种资料越来越多<BR>的时候，记忆体的消耗也就越来越多，使得程式的空间也越来越小了。<BR><BR>由於表列式的作法会使得升级的情况比较单调，因此大多数的游戏并不愿意采用这种作法，再加上这一类的作<BR>法对於记忆体的占用空间也比较高，因此如果不是必要，大多数都不会用这种作法。<BR><BR>除了以上这些作法之外，还有一种就是指数型的升级方式。这种作法其实就是表列式的改良，因为它将升级的<BR>表格简化成一个叁数，在升级的时候就依这个叁数来计算能够获得的升级值。现在我就举一个例子来示范。目<BR>前有一名角色的属性以及升级指数如下：<BR><BR>o 生命：１０ 生命指数：１０<BR>o 法力：１０ 法力指数：１０<BR>o 力量： ３ 力量指数： ２<BR>o 智慧： ２ 智慧指数： ２<BR>o 反应： ２ 反应指数： ２<BR>o 体能： ４ 体能指数： ２<BR>o 运气： １ 运气指数： ３<BR><BR>那麽当他获得升级的时候，程式就会依这个升级指数来计算升到下一级时的各项属性值。因此在升了一级之後<BR>，各项属性的数值就是以下的数字：<BR><BR>o 生命：２０<BR>o 法力：２０<BR>o 力量： ５<BR>o 智慧： ４<BR>o 反应： ４<BR>o 体能： ６<BR>o 运气： ４<BR><BR>用这种作法，在程式内不需要复杂的升级属性表，只需要几个简单的叁数就可以，若是能将各项叁数之间的关<BR>系加以变化，并作一些运算，那麽可以使升级时的变化更多。举例来说生命的增加和体能有关，或是法力的增<BR>加和智慧有关，那麽在计算起来时会有比较多的变化，使得整个升级的表现不会太单纯。<BR><BR>以上这些作法大部份的变化程度都不会很多，没有办法表现出一个人的成长情况。就像我们有时候会形容一个<BR>人「大器晚成」或是说他「小时了了」这样子的情况都不能表现出来。因此後来又有一种成长曲线的升级方式<BR>。在这种升级方式中，我们首先要订出几种不同的升级情况。像是：<BR><BR>A. 平衡成长<BR>B. 大器晚成<BR>C. 小时了了<BR><BR>要达成这种效果，我们需要将升级的总等级数分成几个阶段。我们以一个可以升到一百级的游戏来说，将每十<BR>级分成一个区块，就可以订出这三种成长情况各要给它多少的数值。<BR><BR>其实这种曲线式的升级方式，在处理上和指数式的作法差不多，只不过指数式的作法一个人物每一种属性只会<BR>有一个数值，这个数值是不会改变的。但是在曲线式的作法中，会依不同阶段有不同的升级指数，才可以造出<BR>不同的成长情况。我们就以一名「大器晚成」的角色来说，这一类的角色在开始成长的比较慢，但是当人物成<BR>长到一个阶段後，成长的速度就会加快，因此我们可能在前两个阶段只给他们一点的升级指数，後面几个阶段 <BR>再给他们较高的升级指数，使这名角色会在游戏後期升得比较快。<BR><BR>反过来说，若是要设计一名「小时了了」的角色，那麽我们在初期可以给他较高的升级指数，但是到了後期就<BR>要给它较低的指数，如此一来就可以表现出这样的情况。<BR><BR>事实上，在游乐器中的「光明与黑暗续战篇」就曾经用过这一种作法，使得游戏中的每个角色都有各自不同的<BR>特色。特别是有些属於大器晚成的角色，曾经因为初期成长的速度太慢而被玩者抛弃，但是後来知道这名角色<BR>的特性之後，再回过头来训练的这种情况，正是这种曲线式升级的特色。这种作法使得角色除了单纯的数字属 <BR>性之外，还增加了一些隐藏的特性，会让游戏更有味道。<BR><BR>如果以笔者个人的喜好来说，我是比较欣赏曲线式的升级方式，因为这种方式比较可以隐藏角色的特色，也不<BR>会因为数字的变化太过单调而让玩者觉得过死板。比起乱数式的不定性和升级指数式的单纯来说，这一种作法<BR>可以说是兼具了两种的特色，同时还有全新的表现，是一种不错的升级方式。只惜目前国内的游戏很少使用这<BR>种作法，大多还是采用乱数式的作法，对於国内玩游戏的玩者来说，实在是有些可惜，因为大家没有办法体会<BR>到这种作法的优点。<BR><BR><BR><BR>6.游戏中的智能系统处理<BR>-------------------------------------------------------------------------------<BR><BR><BR><BR>游戏中的智能对手<BR>　AI在游戏中最普通的形式是创建计算机控制的对手。因为大多数游戏是单人游戏，所以要设计游戏者在游戏中必须战胜对手。为了达到这个目的，你可以使用某种类似A*搜索的简单AI算法，以帮助对手穿过迷宫向游戏者发起进行。你也可以使用简单的算法预测游戏者的反应。 <BR>　但是，记住没有必要创建世界上最强大的对手。你的对手只要能给游戏者提供足够的挑战性就可以了。还有，要注意游戏的内容。例如：一个战棋式RPG游戏中策略占的是主要地位；而在纯RPG中故事情节和角色开发就更重要一些。千万不要因为计算机对手太强大而让游戏者们陷入失败的泥沼。 <BR><BR>游戏中的非智能对手<BR>　通常，在游戏开发中AI技术是与计算机对手紧紧联系在一起的。这是因为早期的大部分类似角棋的游戏是一对一的。但是，任何好的探险游戏或RPG 游戏开发者都知道，AI同样可以用于非对手角色。例如：如果你正在建立一个RPG游戏并且你想让你的世界活起来，这就是说，让城市里的人以智能的方式活动，那么你可以使用某种算法确定在一天中的某个时候，角色应该在那里。你可以使用类似于AI算法如A*来辅助你将一个对象从一处移动到另一处并绕过障碍物。<BR><BR>游戏中的智能系统 <BR>游戏中的AI在本质上是最具有模仿性的，但它们基本上是依赖一些AI要素。 你可以将所有具有决策功能的对象在一个游戏中融合为一个整体。例如：在一个战争游戏中，你的各个部分可以依据各自所处的具体环境来作出各自的AI决策。<BR>　　使用这种方法，你得把精力集中于怎样在各个独立的决策个体之间建立联系，以及这些联系怎样才能使游戏成为融会贯通的整体。是用一个高级决策影 响其它决策，还是各个决策个体之间平等地互相影响呢？举个战争游戏来说， 你有十辆坦克，它们的思维模式基本相同。所以它们都决定去攻击敌人阵营中 HP值最低的一辆坦克。但是这时其中一辆坦克说：“这个敌人归我了！”那么 剩下的九辆坦克就应该依据这条信息各自调整下一步的攻击目标。当你建立智能个体时，要考虑在一个智能系统整体环境下，它应该如何行动。 <BR><BR><BR><BR><BR>7.电脑游戏中的人工智能制作<BR>-------------------------------------------------------------------------------<BR><BR><BR>　电脑游戏随着硬件执行效率与显示解析度等大幅提升，以往很多不可能或非常难以实现的电脑游戏如此都得以顺利完成。虽然电脑游戏的呈现是那么地多样化，然而却与我们今日所要探讨的主题，人工智能几乎都有着密不可分的关系。<BR>　在角色扮演游戏中，程序员与企划人员需要精确地在电脑上将一个个所谓的“怪物”在战门过程中栩栩如生地制作出来；所以半兽人受了重伤懂得逃跑，法师懂得施展攻性法术。<BR>　目前能让人立刻想到与人工智能有密切关系的游戏有两种：<BR>一是所谓的战棋／策略模拟游戏，二则是棋弈游戏。人工智能的比重与深浅度，在不同的游戏类型中各有不一。有的电脑游戏非标榜着高人工智能不可，不然没有人买；有的则是几乎渺茫到让玩家无法感觉有任何人工智能的存在。　　　　　　　　　　　　<BR><BR>　导向式思考<BR><BR>　AI最容易制作的的方式，同时也是早期游戏AI发展的主要方向就是规则导向或称之为假设导向。在一些比较简单的电脑游戏中，程序员可以好不困难地将游戏中的规则与设定转化成一条条的规则，然后将它们写成电脑程序。让我们以角色扮演游戏为例。决大多数的企画在设定所谓电脑怪物时，所设定的属性通常有以下几种：<BR><BR>　　生命值　攻击力　防御力　法力　 属性<BR><BR>　最后一个“属性”是我在设定时喜欢增加的项目之一。透过这项属性的设定，我可以把怪物设定成“贪生怕死的”，也可以把战士设定为“视死如归”。以目前我们所掌握的资料，在战门系统中的大纲如是诞生了：　　　　　　　　　　　　　　　　　　　　　　　　　　<BR><BR>规则一<BR><BR><FONT color=#0000ff>if (生命值&lt; 10) // 边临死亡了吗　<BR>{　 if (属性== 贪生怕死)　　　　　　　　　　　　　　　<BR>　　　结果 = 试图逃跑　　　　　　　　　　　　　　　<BR>　　if (有任何恢复生命值的物品或法术可用)　　　　　　 <BR>　　　结果 = 使用或施展相关物品或法术　　　　　　　 <BR>}</FONT>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR><BR>规则二<BR>　 <BR><FONT color=#0000ff>if (可施攻击性法术 &amp;&amp; 有足够法力) <BR>{　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　结果 = 施展攻攻击性法术　　　　　　　　　　　　　 <BR>}　　</FONT>　　　　　　　　　　　　　　　　　　　　　　 <BR><BR>　由以上一连串的“如果－－就－－”规则设定，建立了最基本的ＡＩ。说这样的制方式只能建立基本ＡＩ其实并不当然正确。只要建立足够及精确的规则，这样的方式仍然有一定水准的表现。<BR>　规则导向的最大优点就是易学易用。在没有深奥的理论概念的前提下，仍有广大的使用群。所以很多老道的玩家常常没两下就摸清楚敌人的攻击策略，移动方式等等。<BR><BR>　推论式思考<BR><BR>　相信曾经接触过电脑语言课程，或是自习过相关书籍的朋友们，都曾曾经听过一个著名的程序，那就是井字游戏。用井字游戏作为讨论AI的入门教材，我个人觉得是最适当的例子。或许有人还不知道井字游戏怎么玩。只要任何一方在三乘三的方格中先先成一线便胜利了。我们在前面谈过的规则导向，在这里也可以派得上用场。<BR><BR>　if任何一线已有我方两子&amp;&amp;另外一格仍空//我方即将成一线吗<BR>　　结果 = 该空格　　　　　　　　　　　　　　　　　　　　　 <BR>　if任何一线已有敌方两子&amp;&amp;另外一格仍空//防止敌方作成一线　<BR>　　结果 = 该空格 　　　　　　　　　　　　　　　　　　　　 <BR>　if任何一线已有我方一子&amp;&amp;另外两格仍空//作成两子　　　　<BR>　　结果 = 该空格 <BR><BR>　有一次我在某本电脑书上，同样地也看到某些以井字游戏为介绍的范例。不同的是，我几乎看不到任何规则导向的影子。但在仔细分析该程序码后，我得到了极大的启发，原来AI是可以不用这么多规则来制作的。它用的方法正是在电脑AI课程中重要的概念：极大极小法。我在这里只说明这法则的概念。继续以井字游戏为例，电脑先在某处下子，接着会以假设的方式，替对方下子，当然，必须假设对方下的是最佳位置，否则一切则毫无意义。在假设对方下子的过程中，自然又需要假设我方的下一步回应，如此一来一往，直到下完整局游戏为止。 底下是节录书中的程序片段：　　　　　　　　　　　　　　　　　　　　　　　 <BR>　 <BR><FONT color=#0000ff>bestMove(int p, int*v) <BR>{　 　int i;　 <BR>　　　int lastTie;　　　　　　　　　　　　　　　　　　 <BR>　　　int lastMove;　　　　　　　　　　　　　　　　　 <BR>　　　int subV;　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>/*First, check for a tie*/　　　　　　　　　　　　 <BR>　　　　if (isTie()) {　　　　　　　　　　　　　　 <BR>　　　　　*v=0;　　　　　　　　　　　　　　　 <BR>　　　　　return(0);　　　　　　　　　　　　　　 <BR>　　　}; <BR>/*If not a tie, try each potential move*/ <BR>　for (*v=-1, lastTie=lastMove=-1,i=0;i&lt;9;i++) <BR>　　{ <BR>　　　/*If this isn't a possible, skip it*/　　　　　　　　　　 <BR>　　　if (board[i]!=0) continue; <BR>　　　/* Make the move. */ <BR>　　　　lastMove=i;　 <BR>　　　　board[i]=p;　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　/* Did it win? */　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　if (hasWon(p)) *v=1;　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　else{　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　/*If not, find out how good the other side can do*/ <BR>　　　　　bestMove(-p,&amp;subV);　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　/* If they can only lose, this is still a win.*/ <BR>　　　　　　if (subV==-1) *v=1;　　　　　　　 <BR>　　　/* Or, if it's a tie, remember it. */　　　　　　　　　 <BR>　　　　　　　else if (subV==0){　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　*v=0;　　　　　　　 <BR>　　　　　　　　　　lastTie=i;　 <BR>　　　　　　　　　　};　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　};　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>/* Take back the move. */　　　　　　　　　　　 <BR>　　　　 　　　　　　board[i]=0;　　　　　　　　　　 <BR>/*If we found a win, return immediately <BR>　　　　　(can't do any better than that)*/　　　　　 <BR>　　if (*v==1) return(i);　　　　　　　　　　　　　　　　　　　　　 <BR>/*If we didn't find any wins, return a tie move.*/　　　　　　　　　 <BR>　　if (*v==0) return(lastTie);　　　　　　　　　　　　　　　　　　　　　　 <BR>/*If there weren't even any ties, return a loosing move.*/　　　　　 <BR>　　else return(lastMove);　 <BR>};　　　　 <BR></FONT><BR>　国外的一些论坛曾举行过256字节的游戏设计比赛。作品非常多，其中有一件作品正巧也是井字游戏。作者用区区两百多行就写了与上述程序演算方式完全相同的作品，可见功力确实了的。另外，我也很希望类似的活动能在国内推展起来。对了，在这样的比赛条件限制下，除了汇编语言外，几乎没有其它的选择了。　　　　 　 .386c　　　　　　　　　　　　　　　　　　　　　　　　<BR>　<FONT color=#0000ff> code　　　　　　segment byte public use16　　　　　　<BR>　　　　　　　　　 assume　cs:code, ds:code　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 org　　 100h　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　 tictac　　　　　proc　　far　　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 start:　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 push　　cs　　　　　　　　　　　　　 <BR>　　　　　　　　　 pop　　 ds　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 ax,0B800h　　　　　; 清除屏幕<BR>　　　　　　　　　 mov　　 es,ax　　　　　　　;　　　　 <BR>　　　　　　　　　 xor　　 di,di　　　　　　　;　　　　 <BR>　　　　　　　　　 mov　　 cx,7D0h　　　　　　;　　　　 <BR>　　　　　　　　　 mov　　 ax,0F20h　　　　　 ;　　　　 <BR>　　　　　　　　　 rep　　 stosw　　　　　　　;　　　　 <BR>　　　　　　　　　 xor　　 cx,cx　　　　　　　;　　　　 <BR>　　　　　　　　　 mov　　 dl,5　　　　　　　　　　　　 <BR>　 loc_1:　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 call　　printBoard　　　　　　　　　 <BR>　 loc_2:　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 ah,8　　　　　　　 ; 等待按键 <BR>　　　　　　　　　 int　　 21h　　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 movzx　 bx,al　　　　　　　　　　　　<BR><BR>　　　　　　　　　 sub　　 bl,31h　　　　　　 ; 如果不是1..9<BR>　　　　　　　　　 jc　　　loc_2　　　　　　　; 则重新输入　<BR>　　　　　　　　　 cmp　　 bl,8　　　　　　　　　　　　　　 <BR>　　　　　　　　　 ja　　　loc_2　　　　　　　　　　　　　　<BR>　　　　　　　　　 cmp　　 data_1[bx],al　　　　　　　　　　<BR>　　　　　　　　　 jne　　 loc_2　　　　　　　　　　　　　　<BR>　　　　　　　　　 mov　　 byte ptr data_1[bx],'x'　　　　　<BR>　　　　　　　　　 dec　　 dl　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 jz　　　short loc_3　　　　　　　　　　　<BR>　　　　　　　　　 mov　　 al,'o'　　　　　　　　　　　　　 <BR>　　　　　　　　　 call　　bestMove　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 [si],al　　　　　　　　　　　　　<BR>　　　　　　　　　 call　　isWin　　　; 判断是否已取得胜利　<BR>　　　　　　　　　 jnc　　 loc_1　　　　　　　　　　　　　　 <BR>　 loc_3:　　　　　　　　　　　　　　　　　　 　 　　　　　 <BR>　　　　　　　　　 call　　printBoard　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 ax,4C00h　　　　　　　　　　　　 <BR>　　　　　　　　　 int　　 21h　　　　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 data_1　　　　　db　　　'12'　　　　　　　　　　　　　　 <BR>　 data_2　　　　　db　　　'3456789'　　　　　　　　　　　　<BR>　 data_3　　　　　db　　　0　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 tictac　　　　　endp　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 printBoard　　　proc　　near　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 si,offset data_1　　　　　　　　 <BR>　　　　　　　　　 mov　　 di,548h　　　　　　　　　　　 　 <BR>　　　　　　　　　 mov　　 cl,3　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　 locloop_4:　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 movsb　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 add　　 di,5　　　　　　　　　　　　　　 <BR>　　　　　　　　　 movsb　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 add　　 di,5　　　　　　　　　　　　　　 <BR>　　　　　　　　　 movsb　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 add　　 di,133h　　　　　　　　　　　　　<BR>　　　　　　　　　 loop　　locloop_4　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 retn　　　　　　　　　　　　　　　　　　 <BR>　 printBoard　　　endp　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 isWin　　　　　 proc　　near　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 bx,1　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 bp,3　　　　　　　　　　　　　　 <BR>　　　　　　　　　 call　　sub_3　　　　; 检查横向是否完成　<BR>　　　　　　　　　 inc　　 bx　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 inc　　 bx　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 dec　　 bp　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 dec　　 bp　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 call　　sub_3　　　　; 检查纵向是否完成　 <BR>　　　　　　　　　 call　　sub_4　　　　; 检查斜向是否完成 <BR>　　　　　　　　　 clc <BR>　　　　　　　　　 retn　　　　　　　　　　　　　　　　　　 <BR>　 isWin　　　　　 endp　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 loc_5:　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 stc　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 retn　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 sub_3　　　　　 proc　　near　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 ah,3　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 si,offset data_1　　　　　　　　 <BR>　 loc_6:　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 di,si　　　　　　　　　　　　　　<BR>　　　　　　　　　 call　　sub_5　　　　　　　　　　　　　　<BR>　　　　　　　　　 add　　 si,bp　　　　　　　　　　　　　 <BR>　　　　　　　　　 dec　　 ah　　　　　　　　　　　　　　　<BR>　　　　　　　　　 jnz　　 loc_6　　　　　　　　　　　　　　<BR>　　　　　　　　　 retn　　　　　　　　　　　　　　　　　　 <BR>　 sub_3　　　　　 endp　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 sub_4　　　　　 proc　　near　　　　　　　　　　　　　　<BR>　　　　　　　　　 mov　　 di,offset data_1　　　　　　　 <BR>　　　　　　　　　 inc　　 bx　　　　　　　　　　　　　　 <BR>　　　　　　　　　 call　　sub_5　　　　　　　　　　　　　<BR>　　　　　　　　　 mov　　 di,offset data_2　　　　　　　　<BR>　　　　　　　　　 dec　　 bx　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 dec　　 bx　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 call　　sub_5　　　　　　　　　　　　　　<BR>　　　　　　　　　 retn　　　　　　　　　　　　　　　　　　 <BR>　 sub_4　　　　　 endp　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 sub_5　　　　　 proc　　near　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 cl,3　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 locloop_7:　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 cmp　　 [di],al　　　　　　　　　　　　　<BR>　　　　　　　　　 jne　　 short loc_ret_8　　　　　　　　　<BR>　　　　　　　　　 add　　 di,bx　　　　　　　　　　　　　　<BR>　　　　　　　　　 loop　　locloop_7　　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 add　　 sp,4　　　　　　　　　　　　　　 <BR>　　　　　　　　　 jmp　　 short loc_5　　　　　　　　　　　<BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 loc_ret_8:　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 retn　　　　　　　　　　　　　　　　　　　　　　 <BR>　 sub_5　　　　　 endp　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 bestMove　　　　proc　　near　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 bx,31FEh　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 cl,9　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 mov　　 di,offset data_1　　　　　　　　　　　　 <BR>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<BR>　 locloop_9:　　　　　　　　　　　　　　　　　　　　　　　　　　　 <BR>　　　　　　　　　 cmp　　 [di],bh　　　　 ; #empty?　　　　　　　　<BR>　　　　　　　　　 jne　　 short loc_12　　; #no, skip　　　　　　　<BR>　　　　　　　　　 mov　　 [di],al　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 pusha　　　　　　　　　　　　　　　　　　　　　　<BR>　　　　　　　　　 call　　isWin　　　　　 ; #CY: Win　　　　　　　 <BR>　　　　　　　　　 popa　　　　　　　　　　;　　　　　　　　　　　　<BR>　　　　　　　　　 jnc　　 short loc_10　　;　　　　　　　　　　　　<BR>　　　　　　　　　 mov　　 bl,1　</FONT></FONT></P><img src ="http://www.blogjava.net/yangsail/aggbug/1222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangsail/" target="_blank">蓝色雪焰</a> 2005-02-15 14:14 <a href="http://www.blogjava.net/yangsail/archive/2005/02/15/1222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>