﻿<?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/371.html</link><description>做一个游戏并不难，难的是做一个好游戏；完美在于积累！
</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:15:56 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:15:56 GMT</pubDate><ttl>60</ttl><item><title>策划入门（九）测试方案的产生</title><link>http://www.blogjava.net/yangsail/archive/2005/08/31/11677.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Wed, 31 Aug 2005 13:46:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/31/11677.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/11677.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/31/11677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/11677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/11677.html</trackback:ping><description><![CDATA[测试方案属于软件工程的范畴，对于策划人员来讲是测试游戏的主力军。好象没听说过哪个策划将测试过程描绘的很愉快，因为测试本身是一个非常枯燥和痛苦的事情。一套合理的测试方案可以尽可能减少测试人员的工作量，也能够让测试出的问题能够尽快解决，这就需要测试方案的制订人员对游戏开发有全面的了解，并能够掌握好测试的进度，其中的难度可想而知了。 
<P></P>
<P>　　测试是游戏开发一个极为重要的组成部分，其所需要的时间一般要占去整个开发周期的1/3左右。测试贯穿于整个开发进程，小规模的模块测试是由程序人员自行完成的，对策划来讲，如何完成最终的产品测试才是真正需要关心的。按照软件工程的理论，测试方法主要有两种：黑盒测试与白盒测试。所谓黑盒测试就是把要测试的对象当作一个黑盒子，不需要知道里面是怎么处理的，只要对输入和输出数据进行测试就可以了；而白盒测试正好相反，测试者必须对测试对象的内部处理过程非常了解，对里面所有的分支和循环进行实验从而达到测试的目的。黑盒测试与白盒测试都是最基本的测试方法，属于低层的测试理论，实际的测试方案都是在这两种测试方法基础上产生出来的。</P>
<P>　　对于游戏的测试，也不外乎这两种测试方法。基于黑盒测试所产生的测试方案属于高端测试，主要是在操作层面上对游戏进行测试；基于白盒测试所产生的测试方案属于低端测试，是对各种设计细节方面的测试。黑盒测试中不需要知道里面是如何运行的，也不用知道内部算法如何设计，只要看游戏中战斗或者情节发展是否是按照要求来进行的就可以了。这种测试可以找一些对游戏不是很了解的玩家来进行，只要写清楚要干什么，最后达到什么样的效果，并记录下游戏过程中所出现的问题。而白盒测试就需要知道内部的运算方法，比如A打B一下，按照A和B现在的状态应该掉多少血之类都应当属于这种测试。白盒测试需要策划人员自己来完成，因为内部的算法只有开发人员自己才清楚，而且发现问题策划是最容易知道如何解决该问题的人。由于测试的工作量巨大，合理安排好测试和修正BUG的时间比例非常关键，否则很容易出现发现了问题却没有时间改正或者问题堆在一起无法解决的矛盾。测试设计应当在开发的设计阶段就要完成，如果开发初期没有给安排出合理的时间，那么最后的结果肯定是不停的跳票！</P>
<P>　　在测试方案中，设计人员要根据需要把黑盒测试、白盒测试有效的结合在一起，并且按照步骤划分好测试的时间段。根据游戏开发过程，测试大致可以分成单元测试、模块测试、总体测试和产品测试几个部分。单元测试一般集中在细节部分，主要是在游戏引擎开发阶段对引擎的构造能力和完善性进行检测。该部分的工作要求细致严禁，因为任何一点小的纰漏都可能导致后期大量的BUG产生。这时要求程序开发人员与策划达到无隔阂的交流，策划人员要清楚该引擎任何一个功能单元的使用方法和效果，这样才能够保证测试中能即使发现问题并指出问题的所在。模块测试是在游戏开发进程中按照阶段进行的，每当一个模型产生后就需要对该部分进行一次集中测试，从而保证系统的坚固和完善。模块之间的接口测试也属于该部分的工作，就是说各个游戏模块之间如何实现过度，数据如何进行交换都要进行严格的测试。往往在模块内部测试时一切正常，把模块拼装在一起后反而问题百出，这就需要在阶段性模块测试中及时解决！总体测试属于比较高层的测试，在游戏的DEMO基本完成后，要从宏观上把整个游戏合成在一起，这时就要求有全面控制进度的能力。最终的产品测试是游戏质量保证的最后一道关卡，要求大量的非开发人员介入进行地毯式轰炸！产品测试往往也会伴随一些市场活动，这就不是我们现在要讨论的范畴了。</P>
<P>　　我们已经知道了测试过程分成几个阶段，下面就一起来看看具体要包括那些内容：</P>
<P>1、&nbsp;测试的时间分配：测试时间如何分配会直接影响到开发的进度，它包含测试时间、测试结果汇总时间以及修改错误的时间等几个部分。一般来说，开发人员只认为测试时间才是需要分配的，其实合理的安排测试总结和修改BUG等工作占用的时间才是更多的！如果不进行测试情况汇总，项目管理者就无法弄清到底是哪些部分出了问题；不马上对发现的问题进行修改就会导致更多的问题发生。所以定期测试、发现问题、解决问题才是最合理的，把整个开发周期划分为几个阶段定期测试是对产品质量的根本保证！科学安排测试的时间能够用最少的代价解决最多的问题，否则把测试都堆积在最后结果只会是一团糟！</P>
<P>2、&nbsp;测试人员的安排：测试人员的选择和调配对游戏质量来讲是非常关键的。测试人员尽量不要选择游戏的开发人员，只有对游戏没有任何了解的人才能真正的发现程序或设计中的问题，虽然他可能对程序和游戏设计一点都不懂。如果能有一支专门的测试队伍当然是最好的，在经费和人员实在紧张的情况下把其他非开发部门的人借调一下不失为一个好办法。</P>
<P>3、&nbsp;测试内容清单：这部分要求测试方案设计人员精心的考虑计算，尽量把测试内容精确到操作级。意思就是说最好细化到某测试人员点击鼠标几百次这种程度，因为测试人员是对你的游戏内容一点都不了解的，只有你把任务全都明确后才可以收到预期的效果。只规定某人去玩这个游戏然后给予反馈是不负责任的做法，这种测试方案只能当作垃圾给丢到废纸桶里面去！要对每个测试人员的工作明确下去，用测试表格的形式进行填写测试报告并签字写清楚测试时间，才算是合格的测试方案。</P>
<P>4、&nbsp;测试结果汇报：最终测试报告汇总上来，策划人员要对全部方案进行评估并进行分类，把测试中发现的问题确定解决优先级然后反馈给相关部门。问题特别严重的要敢于要求返工，任何一点小问题也不能放过，严格的测试才能带来高质量的游戏产品，这个法则适用于任何产业，游戏也不例外！</P>
<P>5、&nbsp;调整开发进度：由于测试发现的问题所带来的进度影响要及时反馈给上级领导，然后马上更新项目进度表，并注明更改原因。因为开发进度的调整关系到很多部门的工作，所以最好在早期设计进度时就把测试时间预算进去，但实际上大多数情况下开发进度的变化是非常频繁的。如何休整进度还不影响到游戏完成的最终时间，对于任何项目管理人员来说都是一个挑战！</P>
<P>　　测试方案一旦确立，剩下的就是烦琐和枯燥的机械工作了。测试是最痛苦的，但没有测试游戏是不可能成为产品，这也是国内大多数赶工期的游戏BUG百出的问题所在。科学的制订测试方案并协调好各部门之间的进度，对任何一个项目来说都是至关重要的事情，对于刚入门的策划来讲，学会写测试方案是必修的课程之一。</P>
<P>　　测试工作的全面完工，标志着项目开发的结束。但对于策划来说，你的工作还没有完，接下来你就要开始教给玩家如何玩这个游戏，让我们来看看如何完成游戏手册吧！<BR></P><img src ="http://www.blogjava.net/yangsail/aggbug/11677.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-08-31 21:46 <a href="http://www.blogjava.net/yangsail/archive/2005/08/31/11677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（八）开发中的沟通与协调</title><link>http://www.blogjava.net/yangsail/archive/2005/08/30/11539.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Tue, 30 Aug 2005 04:18:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/30/11539.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/11539.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/30/11539.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/11539.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/11539.html</trackback:ping><description><![CDATA[对于游戏的熟悉程度，估计没有哪个开发人员会比游戏策划更清楚了。大到游戏框架，小到界面热键，一点一滴都需要策划人员进行详细的描述和设计，也只有策划才能对游戏的实现情况进行全面的把握。所以一旦策划和其他开发人员发生沟通上的障碍，整个项目的进展就会受到极大的影响；如果策划能够协调好各部分的工作，那么项目进展就只需要看个人能力了。而在现实开发中，策划人员由于自身的个性或者其他条件所限，往往在沟通这个环节上出现一些致命问题导致进度的延误。如何把握好自己的情绪，从大局观出发是成为一个成熟策划人员的关键所在。 
<P></P>
<P>　　文档不管写的多详细，对其他人来讲仍然会存在理解上的错误或漏洞。策划经常把注意力都放在了如何把游戏设计的更完善上，而忽视了别人的理解能力和感受。因为对任何一件作品来讲，每个人的看法都是不同的，策划应该知道如何去听别人的意见并吸收到自己的设计中来。这并不是说坚持自己的立场是错误的，而是在大多数情况下策划本身容易把自己的设计当作一个孤立的个体，对其他外来的思想用全部抛弃的态度来对待，这是极其危险的。就算是别人的意见是多么的滑稽可笑，你也应该认真的听完并加以分析，任何渠道的意见对你的设计来说都是有益的。</P>
<P>　　在前面讲过如何书写流程图和安排工作进度，在这些设计过程中和其他部门的沟通都是非常重要的。我不提倡大规模的定期会议，因为这样会影响其他人员的开发进度，而且会导致很多问题的扩大化。公众场合下不适宜对个人问题进行讨论，大量的沟通和谈话应该以私人或者小型会议的形式来进行。大部分开发人员不喜欢开会，尤其是这种针对性不是很强的例行会议。所以如果确定要召开会议，那么就一定要先确定这个会议要解决哪些问题，需要哪些人来参加，最后要达到什么样的效果。纯粹为了开会而开会，尤其是一些例行会议是没有必要的，这样只会增加别人对你的厌恶情绪，导致关系间的不协调。如何尽可能减少大规模会议，通过单独会谈来解决问题是沟通的一个有效手段。</P>
<P>　　如果你想知道其他人员对你的策划方案是否有意见，单纯的把文档发送给程序或美术不是一个好办法。无论你的文档多详细，别人都很难完整的理解你的意思，利用好黑板和纸笔通过讲课的方式进行沟通，可以一次性让大量的相关人员了解你的设计。在讲解完毕后让大家以发表见解的方式来发现并解决问题才是有效的解决手段，你所要做的只是把你的想法表述给大家，而不是争吵。在你的讲解过程中要以听为主，对于一些核心内容进行强调，认真做好笔记，在会议后对别人的意见进行总结，让别人知道他的看法你是很重视的。只有对别人尊重别人才会尊重你，想处理好与他人的关系首先就是让别人感觉到你对他的意见是重视的。</P>
<P>　　在完成了第一次讲解后，就不要再召集这种大规模的会议了。剩下的工作你就应当找对应的工作人员进行单独会面，只和他谈有关他这个方面的设计问题。对程序就是描述游戏流程以及一些需要确认的技术实现问题，而和美术则应该谈界面实现以及整体效果等问题。</P>
<P>　　给程序员交流要求你能跟的上他的逻辑思路，就是说你要对计算机的编程有个大概的了解。起码你应该知道程序流程是通过条件分支、循环以及函数等组成的，而且要对面向对象的C&nbsp;语言有一些了解，否则他会认为你的思路太混乱而产生很多理解上的概念混淆。最好你是拿着一个游戏设计流程图来和他交流，这张图应该类似于程序设计的流程图，由几种基本的图形和线条来实现。这样一边描述你的思路一边给他指出需要完成的模块，发现问题进行记录并修正你的文档就能够让双方都保持清醒的头脑，而不是产生做出来产品后和你所想象的完全是两个东西。这时经验就会起到非常关键的作用，如果策划本身就是程序员或者做过程序员就完全不用考虑这个问题了，可如果你对程序一窍不通或者根本就不知道那些东西是怎么实现的，那你最好去找本介绍编程基础的书看一下。多和主程交流应该是最省事的办法，只要交代给他哪些工作需要在多长时间完成就可以了，但很多情况下是主程和策划一样固执，这时他会不经过考虑就告诉你很多想法都是不能实现的。你要拿出详细的解决方案才可以说服他，或者让他提出一种合适的解决方案。总之，用程序的思路来和程序员进行交流是最好的解决办法，给程序员一份详细的流程图要比给他一份几百几千页的文字说明要管用！</P>
<P>　　给美术人员交流更困难。因为每个人的美术风格都不相同，要求几十个美术人员画同样一副图你所获得的结果肯定千奇百怪！通过主美进行协调是一个好办法，这样可以减少你很多口舌的。在你写策划方案时，不要对美术做太多的要求，而应该先和主美术确定好游戏的整体美术风格。美术方面具体的人员安排和工作量限定等事情都交给主美术或者美术总监去处理，除非说你对美术非常精通能够把握住整体风格，否则你的工作只是描述你需要什么样的东西就可以了。当美术完成样品后，一起和主美术进行审查，风格一旦确定就不要再修改了，否则这对美术人员来说完全是种摧残！美术人员工作量往往是最大的，美术风格的改变可能会造成大部分工作的重做，从而严重影响工程进度。把交流的事情交给美术方面的负责人，这是最好的同美术人员的交流方法。</P>
<P>　　保持好自己的心态，用积极的态度来解决问题，不要抱怨多听别人的想法是一个策划人员需要掌握的基本方法。只有沟通顺畅才能够让项目按计划进行，扩大自己的知识面，多和主程与主美交流，少开大规模会议，用私人交谈的方式来解决问题。把握好上述几点，项目的完成就只是时间上的问题了。<BR></P><img src ="http://www.blogjava.net/yangsail/aggbug/11539.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-08-30 12:18 <a href="http://www.blogjava.net/yangsail/archive/2005/08/30/11539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（七）如何分配工作任务</title><link>http://www.blogjava.net/yangsail/archive/2005/08/29/11454.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Mon, 29 Aug 2005 07:54:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/29/11454.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/11454.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/29/11454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/11454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/11454.html</trackback:ping><description><![CDATA[文档设计完成后，就应该针对划分好的模块来分配工作任务。该部分工作应当是项目经理来制订的，但由于大部分的项目是由主策划来进行协调，而且只有策划对各方面工作如何进行连接是最清楚的。这里不对具体的项目展开讨论，只描述一下如何设计工作进度表。 
<P></P>
<P>　　作为项目管理的重要组成部分，工作进度表的设计是一种必要的项目监控手段。科学系统的进度安排可以达到提高开发积极性，监督工程按时完成的作用。但由于管理上的种种问题，项目负责人根本就没有经过周密的思考和规划就开始制订工作进度，甚至很多东西都是拍脑门就定了的。这样的任务进度设计是不负责任的，其结果只有不断的延期，相互推卸责任导致游戏跳票。那么如何能够保持一种良好的工作进度，并不断给予开发人员信心呢？</P>
<P>　　我对微软的里程碑式进度非常赞同，虽然我们还没有实力完全按照这种模式来进行项目开发。里程碑式的项目规划有以下几个好处：</P>
<P>1、&nbsp;按照阶段对项目进度划分，可以清楚的看到游戏的真实进展情况。在进行阶段划分时，一定要能够让开发人员能够获得成就感。这是什么意思呢？就是说在设计初期，不能把项目阶段规划的太长，也不能让开发人员感到很轻易就完成了。这就需要项目管理人员对开发者的能力有清楚的把握，合理的对工作时间进行预测来达到阶段性成果。</P>
<P>2、&nbsp;阶段划分要能够有可以演示的东西。对上层管理人员来讲，你给他说你做了多少文档，程序写了多少代码，美术画了多少图是没有用处的。必须用可以进行集中演示的样品拿出来，领导才会感兴趣。所以在写项目进度时，要有目的的定期拿出DEMO或者阶段性成果，能够把工作中的一些精华部分展示给大家看。不仅仅是领导需要成果的鼓励，这些DEMO对开发人员自身来讲也是一针有效的兴奋剂。</P>
<P>3、&nbsp;将进度按照人和时间进行统筹。因为一个人在一定时间段内是无法做很多件事情的，把人的任务进行合理规划，在同一时间段内不要做超过2件的事情才可以保证项目的顺利进展。人的精力是有限的，再加班加点也是有个承受能力的极限的。合理的保证开发者能够把精力集中在一件事情上是最有效的开发手段。</P>
<P>4、&nbsp;根据事件的前提和结果进行任务分配。一个任务要确定完成了才可以进入下一阶段，不能因为工期紧张而把必要的前提给丢掉。很多项目在没有完成前期准备的情况下就开始下一阶段工作，从而造成后期管理上的混乱，使得项目无法控制。一定要在必要条件完成后再开始后续工作，这一点一定要在项目进度规划上进行明确，即某项工作的开始时间一定要在前提工作完成后才可以进行。</P>
<P>5、&nbsp;工作的延迟问题。再完善的工作进度表也会被一些意外情况所打断，比如生病和其他客观因素。这种情况下要对工作进度表进行修正，一般处理是将后续工作顺延，或者把休息时间计算进来当作加班。对于国内把加班当白饭的游戏公司来说，加班更是不需要给理由的最佳选择。其实良好的工作进度是会留出一些时间避免意外的发生，而且这些时间分散在各个阶段当中。不加班的项目才是最理想的开发！</P>
<P>　　那么，用什么工具来绘制进度表呢？</P>
<P>　　推荐使用微软的PROJECT2000，这是一套专门用来绘制进度表的工具软件。我们不用全面掌握该工具的使用，只要会一些最基本的功能就可以了。使用该工具，可以自动生成各种进度图表，并可以随时调整任务分配情况，非常方便直观。不是我帮微软吹牛，利用他的系列工具真的能够快速应用到工作中去，而且还很容易上手，PROJECT和VISIO就是两个非常典型的例子。</P>
<P>　　工作进度表在设计完成后也是需要多方一同讨论确定的。进度表可以由策划或项目经理来定月进度，直接确定程序方面和美术方面的工作任务。然后具体到任务模块内部则由主程和主美来具体设计，最后确定到周进度。每个参与开发人员都应当有一份自己的任务进度列表，如果没有问题就签字实施。在开发过程中，每达到开发阶段的终点就应该开一个演示会议，让领导和全部开发人员一起来看一下这段时间的开发成果。这就是所谓的里程碑式开发模式。每个开发人员都可以切实感受到自己艰苦工作所得到的成果，这样才可以保证他们一直感受到一种积极的工作态度，漫长的开发工作对每个人的意志所带来的折磨是很可怕的！对于一个刚开始学习做策划的人来讲，很难想象连续几个月集中开发所带来的压力。当你真正进入到开发中时，就知道建立起一个良好的进度计划是多么的重要了！</P>
<P>　　按照上述几个原则规划好你的开发进度，接下来应该做的就是正式的开发了！<BR></P><img src ="http://www.blogjava.net/yangsail/aggbug/11454.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-08-29 15:54 <a href="http://www.blogjava.net/yangsail/archive/2005/08/29/11454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（六）游戏策划结构体系</title><link>http://www.blogjava.net/yangsail/archive/2005/08/27/11318.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sat, 27 Aug 2005 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/27/11318.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/11318.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/27/11318.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/11318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/11318.html</trackback:ping><description><![CDATA[该部分是最让人头疼的，因为游戏种类太多了，想完整系统的对整个实现过程进行描述单凭几千字是绝对不可能的。对一个游戏主策划来讲，框架建立后工作才只完成了很少的一部分。万里长征才只开了一个头，剩下的工作还是艰苦和漫长的。我们还是按照前面讲过的结构体系来简单分析一下大致过程。 
<P></P>
<P>　　游戏策划文档基本上由下面几个部分组成：游戏界面设计书、游戏任务详细设计、游戏AI算法设计、战斗系统设计书、游戏脚本设计书、游戏地图一览表以及游戏操作手册。这些文档相互渗透成为一个整体，根据游戏的不同有所变化。在第四部分中，我们已经介绍了如何建立起游戏的框架，现在就要根据游戏流程来进一步的细化。</P>
<P>1、&nbsp;游戏界面设计书：游戏对于玩家来说，第一印象就是界面所给予的。界面设计包括的范围很广，片头片尾以及过场动画也可以算界面设计的一部分。这里要对游戏的安装、注册、进入游戏等主界面进行详细的规划，另外游戏中所有可能出现的场景以及操作界面都要考虑到。界面设计和操作体系设计是一体的，在界面设计中要对全部的鼠标、键盘等输入设备的操作进行详细的功能描述，最后用表格或者其他方式表述出来。一般的界面设计是按照层次来划分的，比如主界面、一级界面、二级界面等，这样设计比较系统，也容易让使用者快速掌握。每个下级界面都要有返回菜单或按钮，主界面要有退出和帮助菜单或按钮。这都是一些基本要求，具体情况视游戏类型而定。RPG类游戏界面比较固定，现有的几种常见界面就囊括了大部分RPG游戏的情况。一些主流游戏设计也都是参照现有的游戏界面设计来做，除非自己想弄一些新颖的界面来吸引玩家，但也要考虑到新界面的风险。毕竟现有的成熟界面已经有了大量的用户群，也不存在太多的操作上的缺陷，在现有界面体系上进行改良是一种比较稳妥的界面设计办法。</P>
<P>2、&nbsp;游戏任务详细设计书和脚本设计：这两部分是一个整体，但往往由不同的人员来负责。任务设计是由主策划来完成，游戏脚本是由专门的脚本策划或执行策划来处理，最后由主策划来统一整合。任务设计可以用流程图的方法来设计，先划分好阶段和模块，先构成整体任务框架然后再进入到任务里面来具体设计，这些设计工作大部分是由执行策划来完成的。任务设计牵扯的方面很多，如何让各个分支既独立又相互联系，既有趣味又让用户能够接受，算法设计是否平衡，升级体系是否完善等许多问题都要考虑到。无论是PRG游戏、AVG游戏还是SLG，都需要有完整的任务体系作为支撑，根据游戏背景故事设计出符合游戏规则的各种任务是对策划个人创造力和想象力的考验。游戏的脚本是对任务的具体描述，什么人物做什么事情说什么话就是对脚本的一个概要描述。冗长的烦琐台词是谁都不愿意见到的，但是紧张的设计周期让脚本策划着实没有办法。多分支和多线索的流程，决定了任务体系和脚本设计的工作量成倍增长，调整好作息时间与工作状态是激发灵感的好办法，一味的加班是很难有好的创意的。</P>
<P>3、&nbsp;游戏AI及算法设计：每个任务如何执行，怎样让玩家根据你的设计思路来完成任务，并感觉到趣味是整个游戏设计的关键。这就要求策划人员对人工智能和游戏的玩法进行深入的研究和演算。很多高效的AI系统并不是很复杂，一些简单的分支与循环就可以完成很多智能化的处理。但玩家的要求是极高的，在设计之初就要对一些可能发生的非程序BUG进行预防，比如寻路算法中的死角以及NPC的运动轨迹等。升级算法和各个属性的关联是要反复演算的，专门设计一些小的平台来演算数值的相互关系是最方便有效的方法之一，利用程序自动进行数值测试能够快速检验出算法上的漏洞。任务中NPC的属性设置是否合理也属于游戏AI的范畴，这也需要反复的调试和演算才能够最终确定。</P>
<P>4、&nbsp;战斗系统设计：把这部分单拉出来的目的就是要强调战斗系统设计的重要性。对于大部分游戏来说，战斗是消耗时间的有力武器，如果没有一套完善的战斗体系玩家是没有精力耗在里面慢慢升级的。让玩家能够感受到升级后战斗力的增强，以及获得新装备后添加的新能力是对玩家最好的奖励！另外，战斗过程中的一些具体算法也要极为重视，一些很小的漏洞就有可能成为游戏致命的BUG。攻击和防御的计算，绝招的使用次数以及装备物品栏的容量都是需要认真考虑的细节问题。幸好现有的游戏已经提供了很多的现成例子，研究一下暗黑、星际和仙剑就基本上知道如何设计你的游戏算法了。</P>
<P>5、&nbsp;地图一览表：游戏地图可以按照总地图和任务地图来划分。由于游戏类型不同，游戏地图的设计区别也很大，但无论是2D还是3D，是俯视还是斜视，地图都要按照透视比例来进行设计，并确定好坐标。全部的地图都应该是一致的，就是说同一个地点，在两副不同的地图系统中其相对坐标都应该一样。地图编辑器在这里会起到重要的作用，作为游戏引擎的一个重要组成部分，地图编辑器可以大大加快游戏的开发速度。对于地图编辑器的制作与使用这里不做介绍，你可以研究一下星际争霸和魔法门之英雄无敌的地图编辑器，会给你很多启发的。</P>
<P>　　上面几个大部分只是一个大纲，而具体的工作还要根据实际情况进行协调安排。对于策划来说，完成这些文档的设计工作至少需要1、2个月的时间。当你看到自己长达几百页的策划文档时，千万不要激动，因为还有更艰巨的任务等着你要完成呢！<BR></P><img src ="http://www.blogjava.net/yangsail/aggbug/11318.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-08-27 15:35 <a href="http://www.blogjava.net/yangsail/archive/2005/08/27/11318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（五）：开始绘制系统的结构流程</title><link>http://www.blogjava.net/yangsail/archive/2005/08/26/11216.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Fri, 26 Aug 2005 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/26/11216.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/11216.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/26/11216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/11216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/11216.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD><!--插入广告JS代码--></TD></TR></TBODY></TABLE>在完成了游戏的主框架后，你自己脑子里面应该非常清楚你的游戏是什么样子了。那么，怎么保证别人能够知道你的想法呢？详细的说明文档是一种办法，可是大量的文字信息只会让程序人员不断的打瞌睡，而且理解起来也存在着困难。所以流程图是一种很好的交流手段，而且在绘制流程图对策划本身也是一个进一步清晰思路的过程。<BR>流程图的绘制可以根据个人工作习惯来定采用什么工具、如何来绘制流程图。采用一些大众化的流程图绘制工具如VISIO就更具有通用性，只需要按照规定的符号进行连接就可以了；如果自己制订一套流程图规则的话，那就必须给出全部的标志定义以及说明，否则给别人一个什么注释都没有的图还不如给他一个10万字的文档更容易理解。用WORD自身带的绘图功能太有限，VISIO作为一种比较专业的流程图绘制插件对策划来说可以作为首选。<BR>流程图的目的是让别人看起来更清晰更容易，如果你的图连你自己都看不懂，那么就返工吧！别人是不会看你这种繁杂的符号堆砌物的。现在的问题就是，怎么让你的流程图既能表达你的思想又简洁明快，关键就是把握住以下几点：<BR>1、&nbsp;首先要安排好你的图纸空间：图要画多大，分几个大模块，哪部分的注释比多都会影响到最后图的质量。预留好图纸空间会直接影响到流程图的美观，大量线段集中的地方以及多分支部分一定要预留较大的空间，否则画到最后再改动就会造成连锁反应，那时就可能影响到整体效果了。<BR>2、&nbsp;只用几种简单的标志来表达你的思路。流程图可以使用的标志有很多，但是最常用的标志只有几个：开始、分支、循环、结束是最基本的处理过程，再加上一些简单的模块表示就能够完成绝大多数的设计。一些复杂的处理，就按照子模块来表示，在另外的子模块流程图中单独描述。模块之间利用箭头进行联系，并在箭头上表明处理方法或传输什么数据。然后每一个流程图都要有图解以及说明，这样才可以用最少的符号表达最多的含义。<BR>3、&nbsp;能不用循环尽量不增加循环标志。因为循环的增多容易引起大量的箭头产生，从而造成混乱甚至没有空间给箭头加注释。另外，循环部分不容易被理解，一定要标注清楚循环的处理条件以及传输的数据，可以用虚线和实线两种箭头进行分别标志。<BR>4、&nbsp;不要让线交叉。线段的交叉是很痛苦的，减少交叉除了在连结处加接点标志外，合理的分配好空间也是很重要的。在VISIO中，所有的交叉线都经过了处理，但尽可能减少线段的交叉才是最根本的解决办法。<BR>5、&nbsp;箭头尽量是单向的。双向的箭头除非在不得已的情况下才使用，因为这样很难区分数据的传输方向。宁可使用两个单向箭头也不要使用双向箭头，这样才能够减少误解的产生。<BR>6、&nbsp;多用子模块和表格来设计流程图。一个庞大的流程图绝对没有几个简单的图更容易让人理解，所以尽可能让整个体系更加明了，把模块划分的更加清晰能够让别人看你的文档更容易。 
<P></P>
<P>上面几项原则是我在绘制流程图的过程中总结出来的，并不是说一定要遵守这些规则，只是如果这样做了会让你的图更清晰明了。但也有很多特殊情况是要灵活掌握的，比如一些特殊含义的线段以及特殊的处理框都是经常会遇到的。值得一提的是，由于这个流程图并不是最终的程序流程图，并不需要非常详细。这里也不给出具体流程图的例子，对这方面有兴趣的朋友可以学习一下VISIO的使用，对你的策划过程会大有帮助的！<BR>如果细心一点，你就会发现上面的流程图和程序设计非常相象：模块化的分类，分支和循环以及各种过程应用。因为在这个阶段，主策划的主要工作就是如何把自己的思路告诉给主程序，让主程来分析哪些东西是可以实现的，并如何实现。程序员的思维模式和策划的思维模式是不同的，他所面对的是需要严谨的逻辑结构体系，很多细节问题在这时都要开始实施了。好的创意必须要用计算机可以表现的形式由程序和美术来实现，否则一切设想都是空谈。流程图尽可能按照程序的结构来设计，就可以最大程度的减少程序员的理解困难，并快速把你的想法落实。<BR>为什么要按照模块来划分流程图呢？因为整个游戏的策划工作不是一个人就可以完成的，无论设计还是编程都需要很多人进行协同配合。在早期设计阶段就把整个项目进行合理的分工，并按照逻辑顺序进行流程划分能够在实施阶段快速安排工作，制订起来项目进度表也有据可查。<BR>这个流程图并不是说策划写完了就没有事情了，其合理性和正确性还需要进一步的验证。草图完成后，方案提交给项目组，由开发小组集中讨论，主程确定程序实现难度及准确性，美术预估工作量。策划最后根据该流程图完成设计文档，再次开会讨论，定稿后负责人签字归档，确定版本为流程图1.0。以后每次修改都要小组会议决定，更新文档版本，这样才可以保证文档的准确和版本的一致。<BR>另外，要有专人进行文档保管和整理。利用一些文档管理工具比如LOTUS&nbsp;NOTES等软件可以更加系统化的对文档进行整理，根据需要自己设计一套数据库系统也是可行的。否则在项目完成后根本就没有任何积累对任何项目来说都是非常可怕的，在中国这种现象十分普遍，为了赶工期而不重视文档整理的项目比比皆是。要杜绝这种现象也只有从管理的根源入手，从开发之初就进行严格的规范，并派专人管理落实才可以保证项目和文档的同步。<BR>在流程图最后定稿后，整个游戏的体系就算完成了。下面就要一点一点来把所有的模块都实现，让我们头脑中的游戏变成现实吧！<BR></P><img src ="http://www.blogjava.net/yangsail/aggbug/11216.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-08-26 16:14 <a href="http://www.blogjava.net/yangsail/archive/2005/08/26/11216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（四）如何建立起你的游戏框架</title><link>http://www.blogjava.net/yangsail/archive/2005/08/25/11005.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Thu, 25 Aug 2005 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/25/11005.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/11005.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/25/11005.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/11005.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/11005.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD><!--插入广告JS代码--></TD></TR></TBODY></TABLE>在第二部分如何写一个项目建议书中，我们提到了游戏主框架由哪些部分构成。作为一个游戏的设计者，你必须要时刻保持清醒的头脑，知道游戏到底应该是什么样子的。如果连设计人员都搞不清游戏的模样，那其他的程序、美术就更没办法开发了。为了保持清晰的思路，就要先给自己搭一个框架，让自己在大量繁杂的工作中不至于迷失了方向。那么从什么角度入手来建立这个框架呢？<BR>对于刚入门的策划来讲，通过任务体系下手是最直接的也是最有效的。任何游戏尤其是RPG类游戏都有一个故事背景和主要线索，通过这些东西就可以很巧妙的设计出游戏的主要流程。首先要把主任务也就是主线索明确，这一点非常重要。很多游戏就是因为任务太散，进而冲淡了主题。整个游戏的跌宕起伏和曲折离奇都是通过剧情来推动的，如果在一开始不能把任务明确出来，在加入了分支剧情后各种因素集中在一起思路很容易就乱了。所以在设计的开头就把整个任务的框架搭建起来对思路的整理很有好处。<BR>任务体系和故事是紧密结合在一起的。如何把故事改编成符合游戏设计思路的脚本是游戏剧本编写人员的工作。总体的任务框架是RPG类游戏的核心，其他的体系都可以依附在任务框架上。任务就好象写记叙文，不外乎人物、地点、事件等等诸要素组成。而人物就涉及到生命、体力、魔法、攻击力等属性，各种类型游戏根据不同需要而设计；地点就是地图体系，整个游戏的大地图系统和进入到某个城镇的场景设计都可以归入这个部分；事件分为很多类，包括对话、战斗、特殊事件发生、物品交换等。在这些诸多因素都已经在你的脑海中成型后，你大体上就把握住了游戏轮廓，一些相关的体系就随之建立起来了。<BR>前面所提到过很多系统，从任务系统入手只是一个方面。由于游戏类型的众多，也很难统计出一种能够适用于全部类型的设计模式。对于即时战略类和策略类的游戏，更注重于游戏方法本身，那么这时的切入点就偏重于玩法设计。战斗系统和升级体系的建立就成为游戏主框架的核心，这时的任务就好象成了一个附属品，但并不是说任务就不重要了，巧妙的数值变化是需要一个个的精心设计的任务来体现出来的。但是总体的游戏规则设计是这些类型游戏的核心，如果一开始没有经过反复的演算把各种游戏数据变化进行平衡，最终的产品肯定是不堪一击的。<BR>一些其他类型的游戏，比如格斗类、养成类、运动类等因为创意的玩点不同，所以设计的切入点也各不相同。在这里就不一一描述，本人也能力有限，有哪位高手对这些类型的游戏有研究的不妨一起探讨。<BR>在选择好了切入点，接下来就是在核心设计的基础上逐渐展开完善，并最终形成游戏的骨干。其实游戏设计的每个模块都是相互渗透的，并没有绝对的主次之分，上面所说的其实只是寻找一个切入点以便能够快速找到感觉并深入进去。各个模块之间的关系大致如下： 
<P></P>
<P>上面的一个图是描述各个模块之间的关系图。生存体系和地图系统是整个游戏的基础：生存体系中包括所有可能出现的角色属性，可能会在设计过程中不断添加新属性。地图系统是游戏中涉及到的全部位置和地点，是设计中最为头痛的一个部分。这两个系统构成了游戏的基础，几乎所有的游戏都有这两个模块。<BR>升级系统的所有数据都要来源于生存体系中的人物属性，如何设计升级算法让游戏更好玩，更耐玩是升级系统设计的关键。掌握好整个体系的平衡性，尤其在多人游戏时更为重要。升级体系的重要性也体现在游戏时间的控制上，既要让玩家感受到升级后的变化，又要合理控制升级的速度，难度是相当大的。大量的时间被用在反复的演算上，这时先用程序设计个小模型是个比较好的办法。<BR>NPC设计和AI设计是一个整体，在这里把两者分开来是有目的的。NPC的作用有很多，有时是放道具的箱子，有时是完成任务的触发器，有时是你的敌人，有时是你的朋友。NPC设计和地图位置也有关系，每个NPC都有一定的活动范围，应根据剧情需要指定活动地点。AI是指游戏中的人工智能设计，和NPC的设计结合很紧密。由于该系统往往由程序和策划协调着设计，所以把这个部分单拉出来形成一个单独模块。一般的AI设计包括寻路算法、战斗方式选择以及对话应答等，由于该部分极为复杂这里就不再详细描述。<BR>战斗系统是一个笼统的概念，一些竞技比赛也可以归入到战斗系统中。战斗系统需要前面介绍的5大模块的支持，具体的实现就是战斗模式设计和战斗效果设计。有的游戏没有战斗，就可以跳过这个部分，但纵观现有的知名大作，哪个不是依靠独特的战斗系统来吸引玩家的呢？<BR>进入到任务系统的设计部分，游戏框架就基本上已经快完工了。如何利用已经完成的其他模块来推动剧情的发展，巧妙的设计一些任务引导玩家进入到游戏的世界中来就要看设计人员自己的功底如何了。<BR>上述几个部分之外，就是更为高层的界面设计和操作设计。这两个部分直接关系到用户对该游戏的接受程度，良好的界面和快速的上手操作所带来的第一感觉甚至可以决定着玩家会不会继续把这个游戏玩下去，其重要性可见一斑！<BR>这些模块一起构成了游戏的主框架，从什么方面切入，如何由下到上或由上到下的逐渐完善，直到最终游戏成型并设计完界面与操作体系。对于一个要参加比赛的入门策划而言把握好这些零部件就可以控制好自己的思路，不至于在搭建骨架的时候自己就陷入到了无限的混乱中去。游戏的框架是为了让你自己整理思路，但你的策划案是要给别人看的，怎么让其他人迅速理解你的想法呢？让我们来看看系统流程图的绘制过程吧！</P><img src ="http://www.blogjava.net/yangsail/aggbug/11005.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-08-25 12:12 <a href="http://www.blogjava.net/yangsail/archive/2005/08/25/11005.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（三）创意的价值和如何写故事</title><link>http://www.blogjava.net/yangsail/archive/2005/08/24/10898.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Wed, 24 Aug 2005 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/24/10898.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/10898.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/24/10898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/10898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/10898.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD><!--插入广告JS代码--></TD></TR></TBODY></TABLE>很多人瞧不起二次创意，因为策划就应该拿全新的东西出来才可以吸引眼球。其实他们在下这个结论的时候就已经触犯了项目开发的基本准则，就是少花时间多办事。尽可能减少开发周期就能够减少开发费用，并减少开发的风险。很多项目都无疾而终，并不是说他的创意不好，而是这个创意太难以完善了。那么，什么是二次创意呢？<BR>对于二次创意我有着自己的看法，一般来说，凡是有目的的参照或吸取别人作品的部分或全部作为自己创意的基础，并开发出类型相近产品的创意都属于二次创意的范畴。二次创意不同于抄袭，因为抄袭是侵犯版权的违法行为，而二次创意多属于鉴戒或对某些未申请专利的创意部分进行参考而获得的。在游戏产业中，很多的游戏创意都算作二次创意。这个概念是广义的，即所有以其他作品为蓝本所生发、改良的创意都是二次创意，二次创意也可以说是游戏设计的一个重要手段。<BR>一般来说，我们倾向于利用现有的一个故事进行改编，这就是为什么你们所见到的大部分国产RPG游戏都是武侠类的，因为有很多现成的小说放在那里。再来看看大量的三国、西游记、封神演义等名著所改编的游戏是到处可见，好象除了《红楼梦》之外，所有能够下手的经典之作都被做到了游戏里头（红楼梦的那个H-GAME我们不把它算在内）。这些都是二次创意所造成的结果。<BR>为什么游戏策划人员那么中意于利用现有的作品进行二次创意呢？因为一个游戏的产生，需要一个庞大的世界体系进行支撑才可以拥有丰富的内涵，让玩家能够一直有新的东西玩下去，还要保证所有的事件都是在这个世界体系中是符合逻辑的。利用现有的小说或者故事，能够最大程度上减少创意的风险。世界体系一定要建立起一整套的概念并在此基础上逐渐形成自己的规则，这种规则设计所要花费的精力是巨大的，远远不如直接拿别人的东西来用划算。而且这些名著都已经具备了一定的用户群，让别人能够迅速接受这些规则比较容易。如果是自己来设计这些规则而没有任何依据的话，别人接受起来会非常困难，而且出现逻辑错误的可能性也非常大。这就是为什么进行二次创意比直接构建一个新的体系要容易的原因。<BR>好了，你现在可以决定是利用现有的故事进行改编还是自己另外写一个新的，而我倾向于前者。一般刚入门的策划总是喜欢自己弄个很感人的故事就开始骗人眼泪，其实这种故事是经不起推敲的，而且作为一个游戏来讲，这种故事太单薄，很难对玩家造成很深的印象。只有那些拥有了大量读者或用户群的作品能够直接提供很多现成的资源，在这些作品基础上进行二次创意就比较容易成功。哪怕只拿这些故事的一点点出来进行包装，其效果和内涵就会给你的故事添色不少。<BR>举个简单的例子。大家对周星驰的《西游记之仙履奇缘》和《月光宝盒》肯定非常熟悉了吧！这里采用《西游记》的原版角色，但是内容却离题千里，可效果却出人意料的精彩，这就是一个最典型的二次创意的例子！大名鼎鼎的《北京浮生记》也是结合了大航海时代的精髓以及一个经典英国地铁倒卖游戏改编而成的，利用方言的形式重新表现出来，就形成了一个崭新的大众游戏。这种例子比比皆是，光荣的《三国志》、《太阁立志传》系列，3DO的《魔法门》系列，甚至《星际争霸》这种很虚幻的经典游戏都是二次创意的典型代表。如何把大家烂熟的故事情节拿出来重新整理，变成一种新的类型让人们喜欢才是对一个策划水平的真正考验！<BR>对于参赛的各位选手来说，你可以利用现有的各种资源进行二次创意，也可以自己充分发挥想象力弄一个全新的世界出来。但整个故事的设计中有几点是一定要注意的：<BR>首先，你的故事要有个好开头。可是万事开头难，找到一个一下子把玩家心思抓住的开头的确很不容易。而且你必须通过游戏的思路来考虑，单纯的把想法写在纸上是没有用的，你必须要想好实现的方式。大部分游戏的开头是通过片头动画来实现的，如何利用好各种特效把你的故事烘托的象个烤红薯，让人闻起来就想尝，这就达到目的了。<BR>然后，设计好你的故事高潮。无论是RPG还是其他类型的游戏，总有一个主线在游戏中贯穿着，波荡起伏的故事总要靠高潮来达到预期的效果。结局往往是高潮的顶点，传统的RPG不是主角的死就是大魔头被杀，想一个别致的结局会让你的故事比别人高出一点点的。<BR>接下来就是选择好你的几个转折点。要让故事中充满了乐趣，把玩家的心弦一会提高，一会落下，这样才能够保持游戏一直有一股吸引力。如何创造一个又一个的悬念才是策划的关键，让你的故事真正有趣，充满活力。<BR>上面三点，组合起来好象在写一篇作文。没错，游戏的策划就是在写作，在游戏这个强大的平台上把你自己的思量淋漓尽致的发挥出来，让你艺术细胞飞翔在玩家的脑海之中！<BR>有了一个能够吸引人的故事，你的游戏就有了一个魂！下面就是给他一副骨架，如何建立起游戏的主框架呢？<BR><img src ="http://www.blogjava.net/yangsail/aggbug/10898.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-08-24 12:01 <a href="http://www.blogjava.net/yangsail/archive/2005/08/24/10898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（二）如何写一个项目建议书</title><link>http://www.blogjava.net/yangsail/archive/2005/08/23/10784.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Tue, 23 Aug 2005 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/23/10784.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/10784.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/23/10784.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/10784.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/10784.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD><!--插入广告JS代码--></TD></TR></TBODY></TABLE>项目建议书一般是由主策划或者项目经理负责编写的。进行可行性分析是一个自我否定的过程，而写项目建议书是一个向别人阐述自己观点的过程。而且项目建议书一般情况下是要去说服你的上司来做这个项目，所以一定要非常完善，把所有可能的利弊都分析到。也可能你对这部分不感兴趣，也可能这辈子你也不会被要求去写一份项目建议书，但是如果了解了一个项目是如何才能达到立项标准，会加深你对策划的进一步认识，避免把精力投入到不能成为项目的狂想中去。对这个比赛而言，一份合理的项目建议书会让评委更清楚你的设计思想是否完善。把评委当作你的上司或者投资人，努力说明这个游戏的卖点和创新的地方来打动他们。这也是你自己整理思路并说服自己继续做下去的一个书面文件，它会贯穿整个开发过程成为一个纲领性文件，是整个游戏开发的大方向。在项目建议书被批准后，游戏也就正式立项了。<BR>项目建议书一般包括如下几个部分：<BR>1、&nbsp;当前市场情况分析：这个部分是给老板或者投资人看的。游戏必须适应市场需要，闭门造车的策划都不可行。必要情况下要先对市场进行调查和分析，利用第一手信息对玩家意见进行捕捉，把这些信息合理的加入到建议书中才可以增强说服力。对于参加比赛的选手来讲，暂时不需要对这部分有过多的了解，但要对游戏的发展方向有个大体的认识，尤其是你所设计的这个游戏。<BR>2、&nbsp;游戏的大体介绍：这是一个向上级描述游戏内容的最好方法。平时的报告太长太麻烦，谁都不会有兴趣认真看下去的。而项目建议书决定着这个项目是否进行下去，所以这是一个让老板了解你的想法最好的机会。这里的介绍不能太长，要把你所有的精华部分都罗列在上面，吸引住了老板，立项就确定了一半。对游戏策划来讲，这也是显露自己才华最好的机会，如何用最简洁的语言把整个游戏的精华表述出来就要看你的文学功底了。游戏的主体就是在这时确定的，一旦该项目被批准，那么以后的游戏设计都要围绕着它来开展。所以这时游戏中的卖点和主要特征都要认真的进行讨论分析，利用好手中的信息展开讨论，并结合其他游戏的优缺点分析自己设计中要突出的地方才可能抓住投资人的心。牢记一点：“只有能够带来最大化利润的游戏创意才能吸引住投资者的心！”<BR>3、&nbsp;游戏的赢利模式：这部分要对整个开发的成本以及回报进行估算。要分析需要多少人工，设备费用，以及管理费用等等。然后就要估算按照什么样的定价卖多少套游戏可以回收成本，是否有其他的赢利模式等。参赛选手只要了解一下有个认识就可以了，不需要真正完成这个部分。<BR>4、&nbsp;游戏的整体框架：这个部分对游戏来说是至关重要的。游戏要如何划分模块，用什么方式开发，以及模块之间的关系都要确定下来。对于一个大型的游戏项目，如果不进行模块划分和良好的整体设计，在实际的开发过程中会陷入无限的混乱中，人员也会很难控制。按照体系进行划分是一个比较有效的划分方法，任何游戏都是可以根据自身要求进行模块划分，下面给出一个大体的划分模式，后面会有详细的介绍：<BR>生存体系：是游戏世界的基础，只要是游戏需要建立一个世界，那么生存体系是最基础的。生存体系也由很多要素组成，表现在玩家面前就是各种属性，视游戏类型而定。包括HP，MP，金钱等基本属性，复杂点的游戏还要设计饮食、体力、精神等其他属性，看具体的游戏设计了。<BR>升级体系：升级体系是另外一种常见的消耗用户时间并增强耐玩度的主要方法，大部分的RPG游戏和即时战略游戏都有升级体系的介入。设计升级体系主要是设计升级的算法以及相关属性的平衡发展，后面会进行详细介绍。<BR>地图系统：游戏中的地图设计，根据游戏类型而定。不外乎大地图的设计和场景设计，在项目建议书中只是把大体的框架建立起来就可以了。<BR>战斗系统：大多数游戏都要有战斗，这和游戏的升级体系是密切关联的。战斗系统是非常复杂的，包括各种法术、武功、招式等设计，还有攻击力、防御力等数值的比较转换等。<BR>任务系统：任务是游戏前进的线索，有了一个完整的任务系统，设计者的思路就不会发生太大偏差。项目建议书中只要对游戏中要涉及的主要任务进行简要描述就可以了。<BR>操作体系：游戏如何操作，以及主要界面安排等都要做简要描述。这里还要提到游戏的一些配置情况，是否支持操纵杆和其他外设也要在这个部分来描述。游戏过程是使用键盘还是鼠标就要在这个阶段确定，帮助系统的设计也可以归入这部分，也可以另外拿出来另外做一个模块。<BR>界面系统：该系统和操作体系有很大的关联。游戏中的很多操作是由界面所决定的，一个良好的游戏界面能够帮助玩家快速上手。界面包括游戏主界面、二级界面、弹出界面等很多种类，在建议书中也应该把整个界面系统的框架规划出来，还有整个界面的风格等问题也要确定。<BR>NPC设计：游戏中总要有NPC的，这和大的游戏背景有关。什么样的角色如何安置，并给予他什么样的功能都是属于NPC设计的。大多数的NPC功能都很简单，无非是提供一些信息或者完成一件道具的功能。但是你也可以把NPC设计的很强大，这就要给他们加入人工智能的设定了。<BR>AI设计：这是一个很大的范畴，是一个需要很多有针对性的研究才可以有发言权的领域。不同的游戏AI设定也不同，但这是必不可少的一个部分。没有AI，游戏就没有任何灵性可言。（但感觉现在的游戏有灵性的也不多）该部分过于专业，在这里不做讨论。 
<P></P>
<P><BR>在完成了上述几个模块的划分之后，你的整体思路已经建立起来了。在进行模块设计的同时，你的游戏世界就逐渐呈现在你脑海之中。这些内容很混乱，因为各个部分都是相通的，而且关联很紧密。如何理清思路保持清醒的头脑才是最终成功的关键，这一点对于策划来说尤其重要。设计人员在早期脑子就是一团糨糊，那进入了开发阶段肯定是一团糟！上面描述的都是一个大体的模块划分，具体的游戏框架搭建还是远远不够的。在第四部分中会针对这些模块进行详细的讲解，以一个网络游戏为例简要的描述一下作为策划要如何完成一个庞大的世界体系。</P>
<P>5、&nbsp;游戏开发进度：开发进度是要求产品经理或项目经理根据现有的条件来确定的。对你的上司来说，他最看重的也是这个部分。因为开发周期的长短会直接影响到游戏制作的成本，而且何时能够完工也决定着上市能否赶上最好的档期（比如暑假档），所以开发进度很多时候能够直接决定着这个游戏是否会被老板枪毙。<BR>游戏的开发进度一直是困饶着国内开发团队的大问题，国外也一样。由于开发人员的熟练程度不同，预留时间很难确定。对于参加比赛的各位同志来说，只要大致计算一下需要多少人/月就可以了。<BR>6、&nbsp;开发人员列表及职责：最后一项，就是对人员进行分工。已经到位了的，直接进行工作安排；还没有到位或者需要招聘的，向人事部门发送申请。报告中要对人力情况进行估算，以及各项费用的评估。对比赛而言这部分就可以省了，费用的评估是需要有丰富经验的市场和管理人员才可以计算的。</P>
<P>好了，在完成了上述各项工作的汇报之后，如果你的预算和公司的计划相符，那么恭喜你，你可以开始下一步的安排了。否则，就只有等机会或者重写你的报告，但这种情况往往是没有结果的。项目建议书并没有一个固定的格式，你的目的就是通过它来说服你的老板（在这里就是说服评委对你策划的支持）。但是这又是不可或缺的一个必要条件，项目建议书分析的越透彻，这个项目可能获得的支持也就越多，最终成功的机会也就越大。<BR>我们假设你已经通过了老板的测试，就让我们再回到你的故事中去，来看看如何让你的故事更容易被人接受，如何把它变得更丰满，更有趣吧！</P><img src ="http://www.blogjava.net/yangsail/aggbug/10784.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-08-23 12:07 <a href="http://www.blogjava.net/yangsail/archive/2005/08/23/10784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策划入门（一）什么样的创意是可行的</title><link>http://www.blogjava.net/yangsail/archive/2005/08/20/10594.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sat, 20 Aug 2005 11:39:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/20/10594.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/10594.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/20/10594.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/10594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/10594.html</trackback:ping><description><![CDATA[作为一个游戏策划，尤其是一个初学者，脑子里肯定装满了各种各样奇异的想法。但是当你把这些想法告诉给程序或者部门主管时，得到的答案常常只有一句话：“这个东西根本就实现不了！”这瓢冷水可谓是浇的通通透透，让你火热的心迅速冷却了下来。几乎每个策划都有过这种类似的遭遇，我也不例外。一个游戏从一个想法到成为产品需要经历太多的磨难，合格的策划应该在一开始就知道这个想法能否行的通，在经过了严格的论证并初步产生了产品的轮廓后，才能把自己的想法提出来。这也是一个游戏能否可行的一个自我论证过程，包括以下几个部分：<BR>1、&nbsp;技术可行性分析：从技术上来考虑，你的想法是否能够实现呢？一个想法产生后，你就要知道你要把它做成什么样的游戏，大概需要哪些技术支持。这一般都会受项目组或者游戏开发公司自身的技术实力的影响，因为一个新的创意往往会牵扯到大量的技术性创新，如果你的想法按照现有的技术能力根本就无法达到或者会超出项目预算，那肯定会被枪毙的。只有那些在现有技术基础上进行升级和发展，或者在现有条件下能够进行技术突破而达到要求的创意才是符合要求的。比如，做一个网络游戏，你要让200个人能够在一个屏幕内同时对砍，就算是程序上能够实现，现有的网络条件也不支持，所以这种想法就属于技术上不可行的。<BR>因为策划受到技术本身的影响，所以要求游戏策划对游戏中可能使用到的技术有个大致的了解。策划必须及时和主程序沟通，并多接触一些前沿的技术，这样才可以跟上时代的潮流，并不断提出符合技术要求的创意来！对这次游戏比赛而言，就要求策划本身对技术要有一定的了解，否则出现一些超低级错误就要让人笑话了。<BR>2、&nbsp;经济可行性分析：一个游戏的实现，如果不考虑到要花多少费用，多少时间和多少人，不计算能够回收多少资金就不是一个好的项目负责人。一个新想法如果不经过项目负责人的决策是不可能立项的。所以，在进行游戏设计的过程中，一定要把项目的规模和市场效果考虑进去，否则也是会很容易被枪毙的。游戏再好，不适合市场的需要也是白搭，而且公司也有自己的市场战略，所以大多数的策划被枪毙都是这些原因所造成的。<BR>什么样的游戏可以引起玩家的兴趣，哪些游戏可以挣到钱，这是所有的游戏制作者都在努力寻找的。也只有市场才可以决定那些游戏是成功的，对于策划人员来讲，经常注意游戏市场的动向和海内外游戏的发展趋势才是正确的道路。如何选择一个适合潮流的游戏点来展开想象是获得一个有价值创意的关键！<BR>3、&nbsp;人力状况分析：在进行了技术和经济上的考虑后，还要看你自己周围的人力情况是否允许你这样设计。因为资源并不是你想获得就可以得到的，而资源中最重要的就是人。有经验的开发者本身就是一笔巨大的财富，如果你有一些很棒的同志一起来做开发，那么你的设计就可以很快被别人所接受，他们也可以给你很多建议来完善你的想法。甚至于你在产生了这个想法之后，马上就要考虑谁可以完成这个工作，你有多少人可以完成这个工作。如果只有几个刚毕业的有志青年，希望你开始不要去设计那些过于复杂的东西，就算你设计的再完善，最后因为人的原因而做不出来也是不管用的。 
<P></P>
<P>上面的三种情况是最容易被忽视的因素，还不是要考虑的全部。其实一个有经验的策划在刚开始有想法的时候就应该把大部分可能发生的问题都预测到，这样才可以保证这个项目有存在下去的必要和价值。而一个刚入门或者准备入门的新手，也最容易忽略上面三个因素。可能由于自身条件的限制，你对技术并不是很熟悉甚至是门外汉，那么你就一定要找一个做程序或者有经验的策划询问一下你的想法是否可行。如果有了一个念头就一头扎进去，最后的结果很可能是浪费了精力和时间，却一无所获。<BR>你可以把自己的可行性分析过程记录并整理出来，这就是你的可行性设计文档，也是整个策划中一个很重要步骤。有了这份文档，程序就知道这个东西要实现什么，自己要做什么样的技术准备；部门负责人就可以估算大概需要多少费用来开发，开发周期大概有多长；人事部门就知道还要招聘什么样的人才能满足项目的需要。如果这些文档根本经不起推敲或者你自己都认为不可行，那就最好换个想法或者继续修改。越早发现问题就能够避免更大的损失，想成为一个策划就要从全局的角度来看问题。如果只是想做一个执行策划或者脚本设计就可以忽略这部分，因为你要干的事情就只是听从主策划的任务分配并按时完成工作就可以了。而你想成为一名合格的主策划或者项目管理者，那么可行性分析就是你要掌握的第一个重要步骤。<BR>对于参加这次比赛的业余人士，你可以先不用考虑经济和人力等方面的问题，只要从技术和开发周期两个角度来考虑你的设计就足够了。首先，你要明确你的玩家用户群是哪些，也就是说你的游戏是为哪些人而设计的。然后你要大致明确你设计的游戏是哪个类型或者倾向于什么类型，这样才可以保证自己的思路不至于太混乱。最后就是要确定你的游戏要利用哪些技术，可能要分成几个阶段来完成。在完成了上面三个过程的思考后，你就知道你的这个游戏是否能够拿出来参加比赛了！只有你的可行性分析能够考虑到市场和人力方面等因素，这个想法才有可能成为一个商品化的游戏，否则它只能是一个参加比赛的作品而已。<BR>整理完你的设计思路并整理出一份合格的可行性报告，这就为你的全部策划开了一个好头。下面就是写一个完整的项目建议书，这是拿来给你的部门负责人看的。还是那句话，如果你只想做一个执行策划，这个部分可以跳过；但想成为一个合格的主策划，就让我们来看看项目建议书该怎样写吧！</P><img src ="http://www.blogjava.net/yangsail/aggbug/10594.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-08-20 19:39 <a href="http://www.blogjava.net/yangsail/archive/2005/08/20/10594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>游戏开发 基础知识</title><link>http://www.blogjava.net/yangsail/archive/2005/08/17/10322.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Wed, 17 Aug 2005 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/17/10322.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/10322.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/17/10322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/10322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/10322.html</trackback:ping><description><![CDATA[<SPAN id=TopicDetail_DataList1__ctl0_lblPostBody>工欲善其事，必先利其器。作为游戏从业人员，使用合适的工具是完成合适的工作的前提。这个帖子将提供相关的工具资源、学习地点的链接。跟贴时请注明工具种类。 <BR>项目管理工具： <BR>EXEL：普通地球人用的管理软件。&nbsp; <BR>ALIENBRAIN：比较专业的游戏ASSET管理软件。www.alienbrain.com.&nbsp; <BR>MS&nbsp;Project:&nbsp;项目管理软件，用于项目规划，定时，工作分配等。 <BR>另外，StarTeam是一个网络协作用软件，一般网络协作开发会用到。参见http://www.borland.com/starteam/index.html <BR>企划工具： <BR>www.excelhome.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;学习excel的好地方，版主有问必答，回帖很快，水平很高。也可以顺便学学word以及其它office工具 <BR>关卡设计方面，《关卡设计——创世流程》详细描述了2D关卡的基本术语及天晴数码的关卡创建过程，是入门的好教材，原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=64&amp;page=1；《关卡设计入门》则是经验比较多的设计师的总结性文章，比较偏重理论和感觉，但不无裨益，原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=60&amp;page=1；《关卡设计心得》则试图对关卡设计进行理论性的总结，原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=76&amp;page=1 <BR><BR><BR><BR>武侠已经成为中国的传统，但这个传统还没有长成就已经开始没落。伊肯的这篇文章总结了一些武侠游戏设计中面临的问题，并提出了一些切实的解决方案，值得一看。原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=85&amp;page=1 <BR><BR><BR><BR>中国游戏的历史并不长（或者用华文游戏这个概念？），但了解一下对于做策划还是比较有帮助。原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=101&amp;page=1，另附网络游戏研发的里程碑：http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=209&amp;page=2 <BR><BR><BR><BR>经济学现在似乎成为网络游戏的热点问题，但在很大程度上是个伪问题，因为提出讨论的人和参与讨论的人都不太了解经济学。这里是某人学习经济学时的一些笔记，虽然简单，但至少可以说明经济问题的复杂性。http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=99&amp;page=1 <BR><BR><BR><BR>日本是游戏大国，吸取他们的先进理念和开发经验有助于我们成长http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=161&amp;page=1 <BR><BR><BR><BR>这里是RPG制作的入门教材，可以帮助初学者了解游戏制作的基本内容http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=165&amp;page=1 <BR><BR><BR><BR>程序工具： <BR><BR><BR><BR>http://www.ati.com/developer/rendermonkey/index.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由ATI开发的一个可编程着色器开发包中的一个集成开发环境。可以方便的加载资源来编写，包括定点着色器和象素着色器，并且可以方便地看到代码效果。可在低端机器上运行，即使显卡不支持硬件处理（原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=63&amp;page=1） <BR><BR><BR><BR>在游戏程序应该做些什么方面，这篇帖子进行了总括的说明。尽管并不具体，但有助于读者形成一个大致的观念，初步了解到问题的复杂程度。原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=90&amp;page=1 <BR><BR><BR><BR>对于游戏而言，AI是很重要的部分，换而言之，也就是人工智能。这篇帖子对人工智能进行了一些想象，但并非完全不切实际。原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=107&amp;page=1 <BR><BR><BR><BR>游戏引擎是游戏结构中最基本的部分。这篇帖子记载了游戏引擎的演化史。http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=106&amp;page=1 <BR><BR><BR><BR>开发文档一直是一个大问题，不光程序，策划也很头疼。这里是软件工程中的标准化文档，尽管不一定适用于游戏开发，但应有借鉴意义。原贴参见http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=116&amp;page=1 <BR><BR><BR><BR>图像编程是游戏引擎的核心内容之一。这里是显卡术语的列表：http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=176&amp;page=1 <BR><BR><BR><BR>http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=177&amp;page=1 <BR><BR><BR><BR>http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=178&amp;page=1 <BR><BR><BR><BR>http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=179&amp;page=1 <BR><BR><BR><BR>虽然看不太懂，但至少是一篇技术文章……还请大大多多指教http://www.chinagcn.net/bbs/dispbbs.asp?boardID=3&amp;ID=211&amp;page=2 <BR><BR><BR><BR>美术工具： <BR><BR><BR><BR>长角牛先生总结了美术常见的工具：） <BR><BR><BR><BR>3D建模首推MAYA和MAX。从简单功能上说两者不分胜负，只是个人/公司习惯而已(我以前呆的城市几十家游戏公司100%用MAX。现在住的游戏重镇，大家几乎都用MAYA。)但从高级功能/工具(PLUGIN)开发来看，MAYA更好，更灵活(归功于它的系统结构)。不过，美工一般能写点MEL&nbsp;SCRIPT就不错了，PLUGIN用到MAYA&nbsp;API，是TOOL&nbsp;ENGINEER的活。再说一般情况下美工工具用MEL做起来远比API简单。我曾经用MEL和MAYA&nbsp;API写过同样一个动画工具，MEL只需100行简单E文胡话就行，而MAYA&nbsp;API则洋洋几百行C++。有的功能MEL能一句话写，用C++时却没有相应的API，得自己码！ <BR><BR><BR><BR>LIGHTWAVE据自己称是影视界最常用的3D软件，但游戏界我从来没听说哪家用它。说起LIGHTWAVE就伤心，k年前曾经去LIGHTWAVE应徵，面试我的VP答应送/寄我一套LIGHTWAVE，可一直没兑现。：(（Lightwave网址为www.newtek.com） <BR><BR><BR><BR>2D美术工具最常见的是PHOTOSHOP。如果不是照片处理，而是完全手画，那么PAINTER似乎更合美工胃口，至少我个人感觉如此，虽然我不是professional美工。 <BR><BR><BR><BR>MoCap不能算美工工具，因为它的用户不是美工，而是一帮技术员。平时MoCap用的演员除了极个别是请来的专家(如体育明星，特警队员，或者李连杰等)，其他跑龙套的都是MoCap组自己演的(不需要表演技巧，谁都可以去过把瘾)。MoCap的软件处理工具是MOTIONBUILDER，里面没有一点儿美术含量，非常无聊。Mocap设备制作公司名单参看http://www.siggraph.org/cgi-bin/cgi/idCatResults.html&amp;CategoryID=69<BR></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/10322.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-08-17 12:12 <a href="http://www.blogjava.net/yangsail/archive/2005/08/17/10322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>魔兽任务分类及游戏任务系统设计启示[转载]</title><link>http://www.blogjava.net/yangsail/archive/2005/08/16/10216.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Tue, 16 Aug 2005 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/08/16/10216.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/10216.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/08/16/10216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/10216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/10216.html</trackback:ping><description><![CDATA[<SPAN id=TopicDetail_DataList1__ctl0_lblPostBody>魔兽的任务号称有1500多个，这么多任务，难免有些水分在里面，不过把这些浩瀚如星海的任务分类一下，倒也可以借鉴不少。（由于我练的是部落，所以选部落方向的比较经典的任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;有人说，魔兽的任务很多，但基本上还是那些杀怪拿东西的任务占大部分，没什么意思。我要说的是，当你真正用心体会魔兽世界的任务，咀嚼每一个任务情节，感受每一个任务细节，你会发现，它比你想象的有趣的多。 <BR>一、 消灭（或击败）怪物。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;程序实现难度最低，只要验证所杀的怪物（数量）即可。应该说，这种任务在WOW里所占比例最大，在其他网游的任务系统中也最常见。因为这种任务系统的实现没有很大难度，程序只要安排任务指定NPC、任务对话及任务完成检测，而且也是最容易安排剧情的任务类型。 <BR>&nbsp;&nbsp;&nbsp;所需消灭的怪物分为两类，一是普通的怪物，一是BOSS类怪物。普通的怪物就不必多说了，BOSS类怪物有些还需要触发条件，例如十字路口的狂热的维罗格任务，消灭半人马一定数量后才会出现，还有十字路口的艾其亚基任务，要在它的巢穴附近吹响号角来召唤它。 <BR><BR>二、 收集物品。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;收集的物品分4类: <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、指定怪物必然掉落物品（如十字路口的偷钱的迅猛龙任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、指定怪物随机掉落物品（如十字路口的斑马的威胁任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、从地图上可见并可采集之物品&nbsp;（如十字路口的菌类孢子任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷、可以由玩家制作出来的物品&nbsp;（如灰谷的战歌氏族补给品任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;同样也是一般网游中最常见的任务类型。除了固定要安排的任务指定NPC和任务对话，程序只要安排物品获得途径（增加怪物掉落物品项或地图物品）和任务完成检测即可。 <BR><BR>三、 对话任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;主要的任务类型，经常与其他类型任务结合运用。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、与某人直接对话。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、将指定物品给予某人并对话。与收集物品任务不同的是，该任务物品由任务起始NPC直接给予。（如贫瘠之地的战歌的报告任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;在游戏中的作用主要有以下几个方面： <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、推动剧情发展。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵&nbsp;、引导玩家进入下一张地图。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶&nbsp;、引导至后续任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷&nbsp;、让玩家了解游戏的背景故事。 <BR><BR>四、 护送任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;保护目标NPC到达目的地，路上一定地点会刷新怪物，这时候要注意不能让目标NPC死亡，否则任务失败。最典型的是哀嚎洞穴的护送牛头德鲁伊任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;程序实现：固定地点刷新怪物，判断目标NPC是否死亡，死亡则转入任务失败，任务结尾若NPC仍存活，任务完成。 <BR><BR><BR>五、 探索任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;一般的要求是到达探索地点的规定区域内即可完成，供玩家熟悉地图用。有些任务还要求发现某特征事物，例如十字路口的遗忘之池任务，在池水中观察到有冒泡的地方，需足够接近方可完成。 <BR><BR>任务说明： <BR>向图加·符文图腾报告你的发现。&nbsp; <BR>探索遗忘之池&nbsp;&nbsp; <BR><BR>很久以前，贫瘠之地曾是个郁郁葱葱、生机盎然的地方。但是战争与灾难接二连三地降临在这片土地上，最后就剩下了这一片干燥荒芜的不毛之地。事实就是这样，真让我伤心。不过，在过去的几年里，贫瘠之地出现了新的绿洲，生机又在这片土地上重现。我们德鲁伊感觉到了在很深的地下有一股试图冲出地面的力量。我们必须找到这股力量的源泉，请到十字路口西北边的遗忘之池去一趟，在那里的湖水中搜寻力量的源泉，然后回到这里来。&nbsp; <BR><BR>六、 职业任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;之所以把这个任务分类出来是因为它的特殊性。在职业任务中，玩家将会熟悉自身职业的属性、特长、技能，锻炼必须的操作技巧。这些任务在魔兽中就做的很好。例如法师的职业任务有锻炼对霜之新星的控制能力和锻炼杀怪续航能力，盗贼的职业任务有训练涂毒和开锁能力的。 <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从魔兽任务系统所得的游戏任务系统设计启示： <BR>一、 任务的故事性。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;魔兽里的任务，哪怕是一个最不起眼的小任务，也会有几段故事说明和指示。任务说明会给玩家一种代入感，让玩家成为这个任务故事的一分子，从而带动玩家进入任务，创造游戏总体氛围。小任务如此，大的任务，特别是和游戏背景紧密相关的任务，更是要刻意渲染出足够的气氛，让玩家感觉，游戏的历史也可以由自己左右，当任务完成后，便会产生很大的满足感。一个个任务的故事组合起来，就如同凤凰的羽翼逐渐丰满起来，把游戏的故事情节都展现给玩家。这也成为游戏的内涵所在。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;任务的说明很很体现的暴雪的恶搞风格，而且九城的汉化有些地方也相当经典。仅举几例，可窥一斑： <BR>&nbsp;&nbsp;&nbsp;&nbsp;1、奥达曼的能源，法师职业任务。 <BR>找到一个黑曜石能量源，将其交给尘泥沼泽的塔贝萨。&nbsp; <BR>黑曜石能量源&nbsp;&nbsp;0/1&nbsp; <BR><BR>既然恶魔已经被消灭了，接下来我们就得去找一个能量源。不幸的是，最合适的能量源往往非常古老而且极难获得。有的时候，命运就喜欢这样捉弄你，难道不是吗？所以，为了得到能量源，你必须到奥达曼去打败那里的黑曜石守卫。他体型巨大而且很难对付，但是你可以从他身上得到我们所需要的能量源！<FONT color=#dc143c>祝你好运，利娜。如果你运气不好的话，那么……很高兴认识你。&nbsp;</FONT> <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;看见最后一句话没有？呵呵。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;2、能量仪祭，法师的职业任务。 <BR>将《能量仪祭》交给尘泥沼泽的塔贝萨。&nbsp; <BR>能量仪祭&nbsp;&nbsp;0/1&nbsp; <BR><BR><FONT color=#dc143c>嗯……我想起来了，我的书已经没有了！你要知道，我欠了一屁股的债，不得不把最后一册《能量仪祭》卖掉来还债，我把它卖给了一个牧师……</FONT>他是血色十字军的成员。他一定把那本书带到了他们的根据地——提瑞斯法林地里的血色修道院图书馆去了！如果你想要那本书的话，就得去一趟修道院。很抱歉给你带来这么多麻烦，这些天我已经有些头昏脑涨了……&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;原来这个隐居在尘泥沼泽的家伙是为了逃债，连书都卖掉还债了，哈。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;3、荆棘谷的讨债行动。 <BR>给藏宝海湾的“海狼”马克基雷带回玛雷的畸形足、乔乔的金色望远镜和苏克的巨型戒指。&nbsp; <BR>玛雷的畸形足&nbsp;&nbsp;0/1&nbsp; <BR>乔乔的金色望远镜&nbsp;&nbsp;0/1&nbsp; <BR>苏克的巨型戒指&nbsp;&nbsp;0/1&nbsp; <BR><BR>我这儿的白条已经少了许多啦，但还是有许多没信誉的家伙欠着我的钱。接下来，我们得对付“畸形足”玛雷·维尔金斯、火柴棍乔乔，还有拇指苏克。<FONT color=#dc143c>这帮家伙的债欠了好久，我看他们是不想还了！后来，我听说他们被什么人给骗到丛林里去了。我当然不关心他们到底会怎么样——我要的是我的钱！</FONT>他们应该就在东北方的阿博拉兹废墟和朱布瓦尔废墟里。找到他们，把我的钱拿回来。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;很明显这家伙在魔兽里专放高利贷，完成了这个，后面还有一系列的讨债行动。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;4、辛特兰的Z校对2任务。 <BR>在荒芜之地收集20张枯木头皮，与尼姆布亚的长矛一起放置在枯木村庄，然后回到荆棘谷尼姆布亚那里。&nbsp; <BR>传达可怕的信息。&nbsp;&nbsp; <BR><BR>枯木巨魔原来是部落的盟友，但他们现在背叛了萨尔……他们要为此受到惩罚！来，拿起我的长矛去北边的荒芜之地。追捕那里的枯木，收集他们的头皮，在他们的一个村庄的土地上插上我的长矛。<FONT color=#dc143c>让他们知道，背叛部落，迟早要还的！</FONT>&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;传说中的魔兽版无间道？ <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;所以，任务的说明要幽默自然，该严肃的任务也要有严肃的口吻，而且还要符合任务NPC的性格，甚至可以考虑运用当前流行的语言。在完成任务的同时，玩家也会一步步了解该任务NPC的故事、个性，不自觉地融入其中。 <BR><BR>二、 任务的触发方式。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;在魔兽世界中有以下几种 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、任务NPC。任务NPC是一般游戏中通常的触发任务方式，不必赘述。（当然，NPC还分为傻乎乎蹲在一个地方的和四处乱逛的。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、怪物掉落物品。可分为随机掉落和固定掉落。菲拉斯、加基森、辛特兰等地怪物随机掉落的OOX机器人任务蛮是有趣。固定掉落任务如杀一些特殊的怪（典型的如陶拉祖营地上面的雷霆蜥蜴、雷鸟，灰谷的三大兽）会掉任务物品，点击触发任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、可在地图上点击的物品。一般比较隐蔽。魔兽村子里的通缉令算是比较容易发现的这类任务。其他还有酒桶、箱子、祭坛之类的，鼠标移动到上面会有齿轮状提示出现。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;一般的网游中第一类的较多，建议多加入二类和三类触发方式，保持玩家接受任务的未知感和新鲜感。 <BR><BR>三、 任务的提示。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;在魔兽世界里，任务的提示是做的相当好的。NPC头上黄色的叹号代表有任务可以接，白色的叹号代表有任务但你尚未到达该任务等级，黄色的问号代表你在该NPC处任务已完成，白色的问号代表你在该NPC处接了任务但未完成。我认为，在一般的网游中，对任务的提示普遍不够，有时候玩家甚至不记得在哪个NPC处接了什么任务，造成任务进行的混乱。而魔兽中普通难度的任务都会在说明中指出目的地大致方位，完成任务之后，只要在任务NPC附近一定范围，该NPC就会在小地图上以黄色点标示出来，给予玩家足够的提示。这种方式对于任务的进行和体验提供了帮助，可以在网游中普遍采用。 <BR><BR>四、 任务的难度控制。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;先说单个任务的难度控制。在普通的链状结构任务中，难度都是循序渐进的。例如荆棘谷的摩克萨尔丁的魔法，任务的起始是从杀深喉猎豹（37---38级）开始的，第二步要获得的物品是从丛林捕猎者（39—41级）那里得到的，第三步成年大猩猩的肌腱所需杀的怪等级38---41，最后一步要从纳加的圣泉中取到圣泉之水（纳加等级43—44）。注意到这些任务能够单独完成所需等级是一步步慢慢增加的。所以链状任务设计的时候，切忌任务之间跨越等级太大，或者任务越后面难度越低。等级跨度太大，给玩家无所适从的感觉，再加上当前能力无法完成任务，造成放弃任务的几率大大增加；任务难度安排颠倒，越到后面越没挑战性，结果给玩家的成就感也就降低了。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;再说整个游戏的难度控制。仍以魔兽为例（副本也算做任务的一部分）。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;1-5级时，玩家在新手村活动，这时候的任务一般以杀怪、收集物品和探索为主，设计时就要注意把相关的任务难度调低，让新手在任务中快速熟悉游戏的玩法。例如杀怪任务可以减少完成任务所需怪物数量和削弱初级怪能力，收集物品任务所需物品必须大而显眼，探索任务目的地离新手村要近。而且关键是都要有详细的说明，指明任务所在地是必须的，让玩家在完成任务时不至于没有任何头绪。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;6-12级时，玩家一般会离开新手村到达第一个城镇，除了前面所述几种任务之外，还要适当加上消灭普通BOSS的任务，这种任务高级点的玩家可以单独挑战，低级点的玩家必须组队才能战胜。在一定程度上促进了玩家交流和组队，增加了游戏交互性。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;13-20级，这时候玩家已经对游戏玩法有足够的了解，所需的就是大量的任务来提高玩家的技巧（包括个人能力和团队配合能力），第一个需要配合的副本任务在这样的前提下诞生了（如奥格瑞玛的怒焰峡谷），在副本里强调团队的配合，一个人的失误都有可能带来团队的毁灭。不过做为第一个副本，难度一定要控制好，地图不能太复杂，怪物密度不能太高，BOSS能力不能太强。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;21-30级，基本同上，不过此时的任务考虑加入一些技巧或噱头，添加大量的隐藏要素，使不同的玩家在完成不同的任务时有不同的体验。这个时期的副本可以适当加大难度。（十字路口的哀嚎洞穴副本是这个时期必进的一个副本，在细节方面和难度方面都处理的很不错，不过唯一不足的是地图实在太复杂，去过两三次的人也未必会熟悉，至于我，在走了八遍以后才勉强记住。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;31-40级，这个阶段玩家一般会在中立地区活动，与敌对阵营的摩擦也日益增加，组队完成任务的玩家会占很大一部分。所以可以增大团队才能完成的任务比例，还有一些需要良好操作控制的任务。副本中怪物的密度可以增大，考验团队处理突变状况的能力（如剃刀高地的2精英3普通怪和巡逻怪组合），BOSS的技能和AI增强，让玩家自行摸索战胜BOSS的技巧。（如诺莫瑞根的最终BOSS，打他的时候旁边的炸弹发射器会不停放出炸弹来攻击玩家，需要一个人去关炸弹开关。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;41-50级，到这个级别的玩家一般都已经具有良好的操作和对自身职业足够的了解，单独完成任务的欲望强烈，可以考虑降低团队任务比例。副本难度大幅度增加，一些区域需要特定职业的技能才比较容易通过（如奥达曼的矮人群，范围魔法可以发挥的淋漓尽致），一些区域需要玩家消耗大量的药品（如马拉顿的毒水BOSS，滋补药剂和治疗药剂的应用），打BOSS需要技巧和运气（马拉顿的公主，战士积累足够仇恨，盗贼和法师、猎人主输出伤害，牧师照顾战士的同时又要注意不被公主盯上。对付公主的大范围毒气，近战的要轮流上阵。对付公主的打飞能力，战士要靠墙站。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;51-60级，这个时候出现了全新的任务类型，大型团队任务（RAID队伍），需要5个以上、40个以下的玩家协同完成。这些任务也是对玩家的极大挑战，不仅普通小队无法完成，即使是RAID队也要良好的配合和正确的战略指导才有可能战胜。在丰厚的奖励和诱人的物品掉落面前，会有玩家不停的组织人手来击杀BOSS，如尘泥沼泽的黑龙公主、艾萨拉的蓝龙、熔火之心的火焰领主等。这个时期的副本，几乎每一波敌人都是一个挑战，一旦处理不慎，团队覆灭是很正常的，技巧+战略+运气，一个都不能少，才能完成高难度的副本任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;因此要随着游戏的进程的编排任务的方方面面，合理地估计玩家该阶段的能力，做出最佳的任务安排。 <BR><BR>五、 任务的节奏控制。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;这个在副本任务中要注意到，因为一个副本任务通常需要比较长的时间，如何在这么一段时间内把握玩家的情绪起伏，合理地安排各种不同的挑战来提起玩家的兴趣。一般副本会分为若干个区域，每个区域都有一个小BOSS，最后还要有个终极BOSS。玩家在消灭了一定的怪物之后，情绪会逐渐低落，在情绪失落到最低点前，小BOSS出现了，一方面给玩家带来足够的挑战，带动任务进行的气氛，另一方面提供诱人的物品掉落，给玩家继续探索下去的动力。一段段小高潮过去后，在终极BOSS出现前，玩家由于疲劳等原因情绪到达最低点，最终BOSS的出现就给这段旅行划上了完美的句号。随着战胜了最终BOSS，玩家就如同经历了一场自己主演的电影，兴奋到达最高点。 <BR><BR>六、 任务的隐藏要素。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;隐藏要素有多方面的意义，如下示。通常这类任务比较容易引起玩家的兴趣，因为会觉得其他玩家不一定会发现，若是自己第一个揭示这个任务，就会产生莫大的成就感。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、完成任务可以有多种方法，有的方法比较隐蔽。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、接到任务的因素是隐藏的。如尘泥沼泽的黑色盾牌任务和可疑的蹄印任务就是在路口一个已经被摧毁的旅馆中发现的，把鼠标指到上面才会出现提示，所以是隐藏要素。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、任务中隐藏的事实真相。奥格瑞玛的尼尔鲁火刃就是正宗的魔兽版无间道，在任务的进行中，会发现他是隐藏在奥格瑞玛的叛徒。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷、任务中的任务。奥达曼解决最终BOSS后，在后面的房间里会发现一个白金圆盘（其实是古代光碟），把它放到旁边的一个石像里会出现一段虚拟影象，并且有详细的说明，最后可以接到把光盘送回雷霆崖的隐藏任务。 <BR><BR><BR>七、 任务的可选择性。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;也就是常说的分支任务。不过这样的任务在魔兽中不是很多，最为典型的应该是部落凄凉之地的半人马任务，有两个半人马部落，你可以选择屠杀一方来提升另一方的友好度，友好度到达一定程度后便可接受更高的任务。专业技能的选择也算是分支任务，例如铁匠的武器专精和盔甲专精，制皮的元素方向、部落方向和龙鳞方向，工程学的侏儒工程学和地精工程学。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;但可选择的任务越多，就表示程序和策划要进行更多的工作，所以在网络游戏里，除非必要，一般不可能出现太多的分支任务。 <BR><BR>八、 任务的奖励。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;在魔兽里，除了固定的经验奖励外，任务奖励一般只有两种，金钱或者物品。金钱倒也罢了，不过物品奖励的设置我认为有些问题，因为有些任务的奖励对于玩家来说基本上毫无用处（例如只能穿布衣的职业奖励皮甲，只需要智力的职业奖励敏捷物品），这就导致了玩家对任务的挑剔，有适合自己奖励的就做，没有的话一律略过。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;因此我觉得可以在目前的任务系统上，加上任务点这样一种属性，完成所有任务都会有数量不一的任务点可以获得。至于任务点的作用，我设想了以下几点： <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、改变任务奖励物品的某些属性。例如法师，任务奖励了一件20敏捷10耐力的衣服，提供一定的任务点可以把敏捷转换成法师需要的智力。不过要注意的是，这种改变仅限于任务奖励物品，若是对于所有物品都如此的话，游戏平衡性将受到很大冲击。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、用任务点换取特定称号。不同称号有不同的特点，如“奥格瑞玛的勇士”，力量+10，敏捷+5，耐力+5，在奥格瑞玛城享受8折优惠。当然，这样的称号需要大量的任务点才可能获得。若是要换取新的称号时，原有称号转换成1/2任务点退回到总任务点数中。也可以设置一些需要特定称号才能够接受的任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、需要一定的任务点才能够进行某个任务。这样的任务必须是重要任务，和游戏的主线剧情有很大关系。这样玩家为了完成主线任务，也要通过完成大量的分支任务积攒任务点。 <BR><BR><BR><BR><BR>魔兽里我印象比较深刻的有意思的任务： <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、部落贫瘠之地的加恩的报复最后一步，要你去炸掉巴尔莫丹的飞行器，所用的炸药就是前面任务中收集的木浆、硝酸钠等等做出来的，这就是任务连续性的很好的体现。 <BR>任务说明： <BR>摧毁巴尔莫丹的飞行器，然后向加恩·石塔回复。&nbsp; <BR>贝尔莫丹飞行器已经被摧毁&nbsp;&nbsp; <BR><BR>按照卡兹戈姆的日记上所述的方法制造出来的炸药应该不会有问题。那么，我们开始吧。首先我有一项特殊的任务要交给你完成。拿上这只爆破筒，去炸掉巴尔莫丹的飞行器。这个飞行器不仅是巴尔莫丹军事设施的关键部分，也是一架可怕的杀戮机器。更重要的是，它是权力的象征，而它对我们的部族来说则代表着一段耻辱的回忆。我会为你的成功感到自豪，你也将得到丰厚的奖励。 <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、石爪山的烈日石居的塔姆拉会叫你把之前搜集到的盖亚的种子种到焦炭谷的土堆里，魔兽种树也疯狂，因为焦炭谷的土堆有限，所以经常就是见到一个土堆，好几个人飞奔过去，先种下的人得意狂笑，没种到的嚎啕大哭，哈哈，很有趣。 <BR>任务说明： <BR>将10枚盖亚之种种植在盖亚土堆中，然后与烈日石居的塔姆拉谈一谈。&nbsp; <BR>种植盖亚之种&nbsp;&nbsp; <BR><BR>如你所见，盗贼，我纯净的心灵可以为这片不毛之地带来新的生机。你必须将这些种子种植在破坏之源中，在西边的焦炭谷里就是破坏大自然的源泉——这片被污染的土地上到处都是鹰身人和凶恶的火元素。邪恶狂风，拿着这些附有魔法的盖亚之种，把它们种植在盖亚土堆里。&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、希尔斯布莱德丘陵的赫尔库拉的复仇任务，部落的做这个任务有点难度，因为目的地是联盟的城镇，很容易被卫兵和联盟的玩家追杀。经历N次复活的艰辛之后，努力终于有了回报，复活后的赫尔库拉召唤出一群骷髅兵攻击南海，虽然。。。最终还是难免被南海的卫兵围殴至死，不过咱心里还是爽了一把。以前的版本还有BUG，他会不断召唤出来骷髅兵，直到把南海淹没。。可惜我在那个版本没玩到这个任务。 <BR>任务说明： <BR>将埃希尔之焰、沃拉兹之焰和尤基尔之焰的力量注入赫尔库拉的魔棒。把经过仪式洗礼之后的魔棒带到南海镇的赫尔库拉墓地。&nbsp; <BR><BR>拿着赫尔库拉的魔棒，你会用得着它的。赫尔库拉用3个火葬柴堆来构筑他最强大的法术：埃希尔之焰和沃拉兹之焰在丘陵地带的洞穴里，尤基尔之焰在丘陵洞穴上面的另一个洞穴，在山的更北边。赫尔库拉的魔棒必须经过这三堆火焰的洗礼才能发挥作用。在仪式完成之后，把魔棒带到赫尔库拉的墓地去，那座墓地就在由人类重兵把守的南海镇。让赫尔库拉的复仇降临在愚蠢的人类头上吧！ <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷、希尔斯布莱德丘陵的受难药剂任务，变态的药剂师要你把这个乱七八糟的药剂给农场里的一只小狗吃，结果吃完，小狗变大狗。。。而且还是乱咬人的那种，没办法，只好顺手料理了它。 <BR>任务说明： <BR>把受难药剂交给乌比。&nbsp; <BR><BR>我得花一会儿时间把这些成分混合在一起，做成受难药剂。成功了！啊，还有什么能比给这个世界带来点灾难更让人愉快的呢？让我们看看这种药剂能不能达到预期的效果。让我的助手乌比瞧瞧黑暗女王为人类和天灾军团准备了什么样的礼物。&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;⑸、凄凉之地的诱捕科多兽任务。很另类的任务，对年老或濒死的科多兽使用诱引器，然后它就会变成驯服的科多兽跟着你走，这时候最惬意的事就是开加速技能，看着一只庞大的科多在自己身后狂奔，感觉特爽。 <BR>任务说明： <BR>带5头驯服的科多兽和科多兽诱引器给瑟卡布斯库营地的斯米德·瑟卡布斯库。&nbsp; <BR>驯服的科多兽&nbsp;&nbsp;0/5&nbsp; <BR><BR>比布莱认为他是凄凉之地唯一一个懂得赚钱的地精。好吧，想要让旅团闯过这块地方就要靠我了。因为我懂得利用我的科多兽诱引器控制年老的和濒死的科多兽，所以我和旅行队的主人科克，瑞格进行了合作。把科多兽诱引器拿去使用在任何年老的或者濒死的科多兽身上。然后那个野兽就会变成驯服的科多兽然后会跟着你。一旦你驯服了一头科多，那就把它带来给我吧。&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;还有很多值得分享的任务，留待各位自己慢慢体验。 <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;玩魔兽，你可以不做任务，但是不做任务的你，将永远无法体会到任务的乐趣。魔兽的任务系统，巧妙的将单机游戏的精髓融入了网络游戏之中，你选择不同的职业、不同的阵营进行游戏就会有不同的体验，无时不刻地提醒你是这个世界的一分子，这才是真正的Role&nbsp;Play。同时，它又很好地把握了游戏的节奏，让你在任务中不断成长，在任务中提高等级，在任务中获得装备物品，在任务中成为真正的老鸟。所以今后的网络游戏的任务系统，可以参考借鉴一下魔兽，在网络游戏已经公式化、枯燥化的趋势下，设计出不同的适合自身游戏的任务，走出自己的风格。 <BR>&nbsp;&nbsp;&nbsp;由于这篇文章纯属本人的个人观点，难免有些错误和不足，所以请各位多多指正，让我在批评和建议中成长。^_^ <BR><BR>---------------------------分割线mm--------------------------------- <BR><BR><BR>斑竹帖子title: <BR>【原创帖】可以发布自己的关于技术/非技术的原创内容帖子 <BR>【口水帖】一般吵架的，讨论感情的,骂人的，或者要发布自己伟大梦想的 <BR>【讨论帖】讨论一些自己拿捏不准，想发起大家集体讨论的有技术含量的，非技术内容的 <BR>【YY帖】yy帖子，适合策划.比如一起yy&nbsp;xbox360&nbsp;之后又是啥机器,psp&nbsp;diy&nbsp;yy帖 <BR>【转帖】如果是转帖别人文章，请标记该名称,否则容易引起阅读混乱<BR></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/10216.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-08-16 12:28 <a href="http://www.blogjava.net/yangsail/archive/2005/08/16/10216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络游戏开发之策划入门课</title><link>http://www.blogjava.net/yangsail/archive/2005/07/31/8848.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 31 Jul 2005 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/07/31/8848.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/8848.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/07/31/8848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/8848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/8848.html</trackback:ping><description><![CDATA[<SPAN class=unnamed3>针对目前国内大部分策划在设计游戏时的“经验主义”作风，希望本文能够让大家 <BR>对如何正确看待游戏设计中出现的各种问题有比较科学一些的了解。 <BR><BR>首先，我们把网络游戏定义为一个网络虚拟的世界（Net-VEs），那么我们来设计这 <BR>样一个世界需要注意些什么呢？因当让玩家沉浸在这样一个世界里面，积极的响应 <BR>来自这个世界的各种信息，也就是常说的那种身临其境的感觉。 <BR><BR>接下来先来看看网络虚拟世界所应该具备的五种要素： <BR>1，空间感（大家在同一个虚拟的空间内进行交互） <BR>2，存在感（大家都感觉到自己处在这样的一个虚拟空间内，而不是观察者） <BR>3，时间感（相互之间的交互是即时的） <BR>4，交流沟通的渠道（比如说，聊天，自己的各种行为别人也能看到，等等） <BR>5，共享的渠道（相互之间能共享虚拟世界里面所存在的东西，物品交易之类的） <BR><BR>再来看看交互的定义： <BR>简单点说，是把用户的输入，包括鼠标，键盘，语音和虚拟世界中用户所操控的人 <BR>物的行为之间的一种对应。这和现实社会中对交互的定义有些区别，现实社会中认 <BR>为除了下意识之外的所有的行为，都属于交互行为。比如说揉眼睛，伸懒腰之类的， <BR>不管别人如何反应，你做出了动作，就表示你在交互了。 <BR><BR>这里就涉及到另外一个概念，交互等级。所谓交互等级，就是根据从虚拟世界中接 <BR>收到信息到做出反应的时间的长短来定义的一个等级，这个等级越高，表示玩家越 <BR>沉浸在这样一个虚拟世界中。举个例子，对于FPS类游戏来说，玩家普遍的交互等级 <BR>是相当高的，这也是为什么CS在被作为虚拟世界的例子进行研究的时候被认为是近 <BR>乎完美的一个虚拟世界。当然，这里说的完美是指针对CS本身的定位来讲的。在战 <BR>场上，本身的相互之间的交流就相当简单，因为双手要持武器，不可能有手势，而 <BR>且带着很厚的面具，不存在眼神之间的交流，而且大部分注意力都集中在对周围环 <BR>境的观察中，在这种情况下，语音就成了相互之间交流的最佳手段，而且实现设置 <BR>好的一些语音命令也大大增强了队伍之间的交互性。这种最佳状况的交流随着队伍 <BR>人数的增长而递减，而在5vs5队型的战斗中，CS的交互性发挥到及至。 <BR><BR>那么为什么随着队伍人数的增长，这种类型的交互性会递减呢，因为CS队伍的设计 <BR>是一个环行的，没有强行的指定一个中心节点。在人数比较少的情况下，会比较容 <BR>易的大家自动的推举出一个队长来，而在人数比较多的情况下，就会因为没有队长 <BR>而使整个队伍变得松散。而且很多地图根本就没考虑很多人同时进行游戏的情况， <BR>因而会在一些比较窄的过道或者入口处发生比较严重的堵塞情况。 <BR><BR>同样的道理应用在大型网络RPG中也是成立的，网络RPG的目的性不如CS类游戏那么 <BR>明确，也可以说是目的多样性，和现实生活更接近，也是非常难以模拟的。类似眼 <BR>神，手势，或者说眨眼等一些小动作就非常难以实现了，这些受到图形引擎等一些 <BR>方面的限制。如此导致的结果，就是用户往往很难找到适合的方法来进行交流沟通， <BR>现实中如果有人干巴巴的走到你的面前说“你好”，估计你也不会理他/她。 <BR><BR>而这点在以前的文字MUD中则体现得非常好，因为在没有图形的前提下，用户对文字 <BR>的注意力会大大的加强，那么这个时候任何来自文字的信息，都比较容易提高用户 <BR>对其的注意力，换句话说，就是互动等级比较高。而对于目前的半图形半文字的网 <BR>络游戏来说（这里指的文字信息是指一部分游戏信息和聊天信息混杂在一起）玩家 <BR>的互动等级相对来讲就会低很多。比较有效的建议就是将游戏信息和聊天信息彻底 <BR>的分开，游戏信息用游戏中UI的各种形式，而聊天信息则是在固定的某块文字区域。 <BR><BR>最后来看看互动的垂直分层，首先最底下叫原始层，主要是指用户的输入（键盘， <BR>鼠标），再上一层是表现层，比如说表现出人物的奔跑或者跳跃之类的动作，再上 <BR>一层是含义层，不同的动作在不同的虚拟世界或者说同一虚拟世界的不同状态下， <BR>表示出不同的意义。很明显，这是一个倒金字塔型的结构，也就是说，原始层所能 <BR>操控的东西很少，然后同样的操控设备可以产生多一些不同的动作，比如同样是从 <BR>键盘输入，输入A和B就会产生两种不同的动作，然后在含义层又能表示更多的意义。 <BR><BR>那么在设计的时候经常产生的中间层肥大，而两端瘦小，输入层没有扩展，同样在 <BR>含义层也没有扩展，只是在表现层多了很多东西。这样做只是资源的浪费，起不到 <BR>任何的作用，只有在尽可能的情况下对输入层进行扩展，然后保证含义层和表现层 <BR>的大小维持一定的比例，才算是对互动的多样性进行了扩充。当然，如果能在互动 <BR>的层次上有一些垂直的扩展，当然就更好不过了。</SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/8848.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-31 14:10 <a href="http://www.blogjava.net/yangsail/archive/2005/07/31/8848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>公平交易系统</title><link>http://www.blogjava.net/yangsail/archive/2005/07/28/8644.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Thu, 28 Jul 2005 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/07/28/8644.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/8644.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/07/28/8644.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/8644.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/8644.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana>§1.1 公平交易系统基本分析</FONT></P>
<P><FONT face=Verdana>(1) 设计公平交易系统的目的</FONT></P>
<P><FONT face=Verdana>最基本的目的： <BR>促进游戏中玩家的交易 <BR>在日常交易中，正常（公平状态下）的交易量要远远大于非正常的交易量（玩家出于骗人的目的和乐趣而进行的交易）。</FONT></P>
<P><FONT face=Verdana>当交易处于公平状态下时，玩家交易的愿望不会由于系统的原因的失败，此时交易量才会在最大范围。如果交易处于不公平的状态，确实可以增加交易的乐趣，或者可以作为一个玩点，但是却会遏制正常交易的进行。所以我们要使用公平交易系统。</FONT></P>
<P><FONT face=Verdana>(2) 交易方式</FONT></P>
<P><FONT face=Verdana>·物、物之间的交换；</FONT></P>
<P><FONT face=Verdana>·钱、钱之间的交换；咋听起来比较奇怪，但是在使命中不同的种族拥有不同的货币。</FONT></P>
<P><FONT face=Verdana>·钱、物之间的交换；</FONT></P>
<P><FONT face=Verdana>只要没有违背双方意愿的交易系统我们都可以称之为公平交易系统，单方面给予物品也是一样。</FONT></P>
<P><FONT face=Verdana>(3) 影响公平交易的因素</FONT></P>
<P><FONT face=Verdana>·由于系统的操作方法不了解而自己导致的不公平交易；</FONT></P>
<P><FONT face=Verdana>解决方法：简化交易之间的操作，并且尽量做到在公司所有的游戏中交易方式是一样的。</FONT></P>
<P><FONT face=Verdana>·由于交易过程中对方突然更换物品而自己没有及时中断交易产生的；</FONT></P>
<P><FONT face=Verdana>解决方法：对方如果更换物品即系统自动中断交易。</FONT></P>
<P><FONT face=Verdana>·由于对物品价值不了解而产生的；</FONT></P>
<P><FONT face=Verdana>解决方法：全屏交易频道的存在，使得其他玩家在平时即可接触到一些物品的价格。</FONT></P>
<P><FONT face=Verdana>·由于多次重复的失败的交易行为导致急躁而交易产生的；</FONT></P>
<P><FONT face=Verdana>解决方法：系统自动给予提示，如果同两个人之间交易连续中断3次，系统即提示玩家注意对方所摆放的物品的真伪。</FONT></P>
<P><FONT face=Verdana>·由于一些高价值物品无法一次完成交易的；</FONT></P>
<P><FONT face=Verdana>解决方法：如果确实有这样的物品存在，比如点卡这些，可以通过系统公正的方法来解决。</FONT></P>
<P><FONT face=Verdana>·违反玩家意愿的交易确定行为，一般为外挂造成。</FONT></P>
<P><FONT face=Verdana>解决方法：这个只能在构造系统中尽量减少不安全的因素，并对外挂进行有效监督。</FONT></P>
<P><FONT face=Verdana>总之，在公平交易的同时系统应该注意系统提示的制作，并且要注意提示的醒目而且又不能破坏游戏的整体感觉。但是需要注意的是：在游戏中正常交易行为的发生要远远大于异常交易的产生，包括玩家之间的骚扰，所以不能够为了尽力做到公平而失去了交易的连续性和易用性，这就失去了交易系统的基本目的。</FONT></P>
<P><FONT face=Verdana>(4) 公平交易的漏洞</FONT></P>
<P><FONT face=Verdana>公平交易系统最大的漏洞就是：几乎在所有的游戏中，复制物品的BUG决大部分是通过公平交易系统进行，预防的方法有：</FONT></P>
<P><FONT face=Verdana>双方交易的时候服务器要进行即时存盘。</FONT></P>
<P><FONT face=Verdana>(5) 公平交易的证据</FONT></P>
<P><FONT face=Verdana>另外为了GM工作的方便，在公平交易的时候需要在客户端生成LOG，当然通过LOG还可以分析玩家的消费倾向等，当然用log分析是麻烦了一点，也可以直接dump相应的数据。</FONT></P>
<P><FONT face=Verdana>§1.2 界面设计</FONT></P>
<P><FONT face=Verdana>界面设计中的注意点：</FONT></P>
<P><FONT face=Verdana>·交易界面的位置不能与物品界面有冲突；</FONT></P>
<P><FONT face=Verdana>原因：金钱的查看，以及玩家与自己现有的一些物品做比较。</FONT></P>
<P><FONT face=Verdana>·交易界面最好不要与人物属性界面有冲突；</FONT></P>
<P><FONT face=Verdana>原因：玩家在一些交易当中需要参照自己的属性。</FONT></P>
<P><FONT face=Verdana>·聊天消息框：</FONT></P>
<P><FONT face=Verdana>原因：玩家在交易的时候需要彼此的交流。</FONT></P>
<P><FONT face=Verdana>·系统消息提示框</FONT></P>
<P><FONT face=Verdana>原因：玩家在交易中的时候用于一些系统消息提示。</FONT></P>
<P><FONT face=Verdana>·交易界面与物品界面之间的相互位置关系需要满足多数玩家（右手习惯玩家）的操作习惯。</FONT></P>
<P><FONT face=Verdana>·交易界面应该将双方的物品位置用明显的分界线分开。</FONT></P>
<P><FONT face=Verdana>原因：防止玩家混淆双方的物品或者金钱。</FONT></P>
<P><FONT face=Verdana>·交易中的确定等按钮要与界面本身底色有明显区分，每个按钮的两态要有明显区分。</FONT></P>
<P><FONT face=Verdana>·并且需要考虑游戏中最高价值物品与一般等价物间的换算关系，并且基于此换算交易界面需要有足够空间。</FONT></P>
<P><FONT face=Verdana>·交易界面的所有空间要在一页内显示，即交易界面中尽量不使用物品栏翻页功能。</FONT></P>
<P><FONT face=Verdana>以上不是固定的设计，设计者可以根据不同游戏的要求来要求。</FONT></P>
<P><FONT face=Verdana>§1.3 界面因素</FONT></P>
<P><FONT face=Verdana>(1) 一般需要</FONT></P>
<P><FONT face=Verdana>·对方名称：用于显示对方的名称，并起到避免发生交易对象错误的问题。</FONT></P>
<P><FONT face=Verdana>设计要点：这个和其他地方不同，如果玩家当中名字有空格或者其他空字符时，系统应该自动加上一些醒目的特殊字符，有需要时还可以做出醒目的系统提示。</FONT></P>
<P><FONT face=Verdana>·金额栏：用于显示双方交易的金额。</FONT></P>
<P><FONT face=Verdana>设计要点：显示金额的时候应该加上千分位的显示，如果有需要在金额后面显示此金额的单位。</FONT></P>
<P><FONT face=Verdana>·双方的物品栏：用于显示双方交易的物品。</FONT></P>
<P><FONT face=Verdana>设计要点：物品栏的数量要能够符合大部分或全部交易行为的最小需要量，即贵重物品与一般等价物之间的交易，尽量不使用翻页功能。但是如果物品栏实在不止一页，提示玩家翻页的效果要做的非常明显，并且也需要提示玩家目前所翻到的页数。</FONT></P>
<P><FONT face=Verdana>·金钱确认按钮：用于确认金额。</FONT></P>
<P><FONT face=Verdana>设计要点：一定要做的特别醒目，以方便玩家确认自己的金额。</FONT></P>
<P><FONT face=Verdana>·交易确认按钮：在交易双方确认交易物品和金钱后，点击按钮即可完成交易。</FONT></P>
<P><FONT face=Verdana>设计要点：注意点击按钮的时候不同的提示。一般有：</FONT></P>
<P><FONT face=Verdana>1、&nbsp; 对方还没有完成确认自己的物品。</FONT></P>
<P><FONT face=Verdana>2、&nbsp; 自己没有确认好金钱的数量。</FONT></P>
<P><FONT face=Verdana>·申请交易按钮：用于向对方申请交易，或同意申请，以及打开交易界面。</FONT></P>
<P><FONT face=Verdana>设计要点：注意申请交易之后的鼠标指针的变形，还有如何申请交易的系统提示。</FONT></P>
<P><FONT face=Verdana>·其他交易项目：如果是养宠游戏，那么交易界面中还应该专门添加用于交易宠物的栏目。</FONT></P>
<P><FONT face=Verdana>设计要点：如果是可以改名字的宠物一定要显示其原来的名字，并且可以查看宠物的属性。</FONT></P>
<P><FONT face=Verdana>·关闭按钮：用于关闭交易界面，即取消交易。</FONT></P>
<P><FONT face=Verdana>设计要点：最好不要设计在容易点击的位置，否则玩家会误操作关闭界面</FONT></P>
<P><FONT face=Verdana>·物品悬停信息。给出物品的详细信息。</FONT></P>
<P><FONT face=Verdana>设计要点：也可以使用其他方式给出，但要与整体游戏做到统一。</FONT></P>
<P><FONT face=Verdana>(2) 其他需要</FONT></P>
<P><FONT face=Verdana>·玩家的等级：提醒玩家交易时注意是否使用的是小号；</FONT></P>
<P><FONT face=Verdana>· 玩家的负重：玩家在交易时受到限制的因素之一；</FONT></P>
<P><FONT face=Verdana>·玩家的头像：需要突出社区时，也在一定程度上避免了玩家交易对象错误；</FONT></P>
<P><FONT face=Verdana>·玩家的其他属性：对方的性别、职业、种族等等，能够使玩家更好更快的确认对方是不是自己要交易的对象</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana>§1.4 交易操作</FONT></P>
<P><FONT face=Verdana>·最好不要使用拖动交易物品进入交易框的方式，防止丢到地上，如果实在需要采用也没有关系，只要加上贵重物品提示功能即可解决。</FONT></P>
<P><FONT face=Verdana>·操作设计要求：玩家在游戏过程中能够非常快捷的与他人实现交易或者提出交易请求，对方能够得到请求明显准确交易消息。</FONT></P>
<P><FONT face=Verdana>·如果两个界面的位置较远则需要考虑物品在两个界面中的移动需要省时省力，而且这个操作要考虑不与游戏本身和物品界面本身的操作相冲突。</FONT></P>
<P><FONT face=Verdana>·玩家确定交易物品以后，无法再更换物品。</FONT></P>
<P><FONT face=Verdana>·玩家在交易进行阶段对其他请求一概拒收，以免破坏交易的连续性。交易的弹出消息也需要考虑到对玩家游戏连续性的破坏。即要考虑到玩家恶意骚扰的交易请求，这在即时类游戏中的影响尤其大。</FONT></P>
<P><FONT face=Verdana>解决方法：以往弹出提示框的方法采用显示提示消息的方法来提醒玩家去点击提示框，而不是直接弹出界面需要玩家进行确认。</FONT></P>
<P><FONT face=Verdana>§1.5 一般交易流程</FONT></P>
<P><FONT face=Verdana>1.玩家点击交易请求按钮，鼠标指针变形，系统提示：点击对方进行交易。</FONT></P>
<P><FONT face=Verdana>2.玩家点击对方，发出交易申请，系统提示：交易申请已发出。</FONT></P>
<P><FONT face=Verdana>3.对方接受到交易请求，点击提示消息后，弹出提示框提示：XXX请求与你交易。点击提示框确定，同意请求，双方进入交易界面。点击提示框取消，拒绝请求。发出请求方得到系统提示：对方拒绝交易。</FONT></P>
<P><FONT face=Verdana>4.进入交易界面，同时物品界面打开。上方或屏幕非正中心一方为对方，下方或屏幕中心一方为自己，单击物品或拖动物品至交易栏。在金钱输入栏输入金钱点击金钱确定按钮。最后点击加以确定按钮。等待对方。</FONT></P>
<P><FONT face=Verdana>5.如果输入金钱后没有点击金钱确定而点击交易去确定，则系统提示或弹出提示框提示：请点击金钱确定按钮</FONT></P>
<P><FONT face=Verdana>6.如果输入的金钱大于身上现有的金钱时，系统提示或弹出提示框提示：身上的金钱不足</FONT></P>
<P><FONT face=Verdana>7.对方进行第四步正确操作，点击确定按钮，交易成功</FONT></P>
<P><FONT face=Verdana>8.交易过程中任何一方点击取消按钮，交易失败</FONT></P>
<P><FONT face=Verdana>9.交易成功或失败均关闭交易界面。</FONT></P>
<P><FONT face=Verdana>10.交易过程中物品栏与交易栏的拖动为单方面，即只能从物品栏将物品移至交易栏</FONT></P>
<P><FONT face=Verdana>11.交易过程中金钱只能输入一次。</FONT></P>
<P><FONT face=Verdana>12.每放入一个物品，交易界面刷新一次，交易的一方每放置一样物品，在对方的交易界面上也会显示此物品对应的图像。</FONT></P>
<P><FONT face=Verdana>13.金钱确定后交易界面刷新一次</FONT></P>
<P><FONT face=Verdana>14.交易过程中，一方有位置移动或移动一定范围外后，交易失败</FONT></P>
<P><FONT face=Verdana>15.一方打开与交易界面相冲突的界面时，交易失败</FONT></P>
<P><FONT face=Verdana>以上是一般游戏的公平交易设定流程，如有特定需要，可以在此基础上做一定改动。</FONT></P>
<P><FONT face=Verdana>§1.6 一般按钮功能</FONT></P>
<P><FONT face=Verdana>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 确定金额按钮：（但是最好考虑使用鼠标点击输入框即会自动弹出输入框，要求玩家自动输入金钱的数目并点击确定，这样就可以取消确定金额按钮的设定）</FONT></P>
<P><FONT face=Verdana>玩家输入金钱之后即可点击金钱确定按钮，这样输入的金额将会显示在对方的界面上，而且输入完金额后将不能对输入的金额再做改动。如果一方没有确定金额或者没有输入任何金额，那么在对方的界面上“对方金额”将会显示为0。</FONT></P>
<P><FONT face=Verdana>确定按钮一共有三个状态：</FONT></P>
<P><FONT face=Verdana>·没有输入金额时，按钮是不可以操作的。</FONT></P>
<P><FONT face=Verdana>·输入金额后，按钮自动变成可以操作，使用醒目的颜色来做这个按钮，以便提示玩家。</FONT></P>
<P><FONT face=Verdana>·点击按钮后，被点击的效果。</FONT></P>
<P><FONT face=Verdana>·确定交易按钮：</FONT></P>
<P><FONT face=Verdana>点击此按钮之后即可向对方提请交易，对方也按下确定按钮后，系统提示交易成功。当一方按下确定按钮之后，那么另外一方将会收到系统消息：对方同意交易，请确定。</FONT></P>
<P><FONT face=Verdana>·帮助按钮：</FONT></P>
<P><FONT face=Verdana>点击此按钮将会弹出和交易相关的帮助主题。</FONT></P>
<P><FONT face=Verdana>·取消按钮：</FONT></P>
<P><FONT face=Verdana>点击此按钮之后此次交易将会被取消，</FONT></P>
<P><FONT face=Verdana>·取消方收到的系统提示为：您取消了交易。</FONT></P>
<P><FONT face=Verdana>·对方收到的系统提示为：对方取消了交易。</FONT></P>
<P><FONT face=Verdana>§1.7 其他设定</FONT></P>
<P><FONT face=Verdana>·物品交易即时物品是摆在交易界面上，实际上此时物品还是保留在玩家自己的身上。</FONT></P>
<P><FONT face=Verdana>·双方的交易界面超过一定的距离即会自动取消。</FONT></P>
<P><FONT face=Verdana>·如果对方放置不下物品，则交易自动取消并作出提示。</FONT></P>
<P><FONT face=Verdana>·玩家死亡的时候系统会作出判断，如果交易没有成功，那么交易将会先被取消，然后交易的东西也算身上的物品。</FONT></P>
<P><FONT face=Verdana>·如果玩家正在拖物品的时候交易界面关闭。那么物品将会自动回到物品栏中。</FONT></P>
<P><FONT face=Verdana>·如果道具或者宠物可以更改名称，那么在交易的时候要以醒目的颜色标明此物品原有的名称。</FONT></P>
<P><FONT face=Verdana>·另外系统选项当中玩家可以完全禁止另外一方交易的申请。</FONT></P>
<P><FONT face=Verdana>§1.8 公平交易系统的细节表现</FONT></P>
<P><FONT face=Verdana>以下由设计人员自由取舍：但是在设计的时候有重要的一点，那就是公平交易在游戏中属于经常性行为，因此在普遍层次上的不要做的太繁琐，当然一些额度最大的交易可以做的好一点。比如系统频道的公告（当然没有必要公告出双方的名字）</FONT></P>
<P><FONT face=Verdana>·在公平交易系统可以加入音效的表现。</FONT></P>
<P><FONT face=Verdana>即游戏在公平交易进行的时候伴随着音效。</FONT></P>
<P><FONT face=Verdana>·在公平交易系统可以加入光效的表现。</FONT></P>
<P><FONT face=Verdana>比如超过多少金额的交易完成将会有礼花出现。</FONT></P>
<P><FONT face=Verdana>·可以在系统中发布公告。</FONT></P>
<P><FONT face=Verdana>一些特殊物品交易成功可以在系统中发布公告，比如点卡交易等。</FONT></P>
<P><FONT face=Verdana>·加入双方表情动作</FONT></P>
<P><FONT face=Verdana>交易进行或者交易完毕后双方通过动作进行致意。</FONT></P><img src ="http://www.blogjava.net/yangsail/aggbug/8644.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-28 16:15 <a href="http://www.blogjava.net/yangsail/archive/2005/07/28/8644.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>梦幻国度到底多少分?----梦幻国度深入分析序篇</title><link>http://www.blogjava.net/yangsail/archive/2005/07/27/8577.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Wed, 27 Jul 2005 13:37:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/07/27/8577.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/8577.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/07/27/8577.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/8577.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/8577.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana>序：以下内容仅代表个人观点，观点来源于对这款游戏3个月的亲身经历以及参阅大量官方新闻、玩家观点、甚至是有关联的动漫作品后综合得出。</FONT></P>
<P><FONT face=Verdana>1.数字化评分<BR>1.1 评分说明：<BR>1.1.1 评分标准：<BR>&nbsp;a.最低得分-10分,最高得分为+10分。导致玩家离开给予负分，能吸引玩家继续游戏给予正分。<BR>&nbsp;b.能直接决定玩家去留，给予8~10分<BR>&nbsp;c.对玩家的去留产生催化作用，给予5~7分<BR>&nbsp;d.对玩家参与游戏积极性产生影响，给予2~4分<BR>&nbsp;e.对玩家影响比较小的调整，给予0~1分<BR>1.1.2 更新分类：为了便于分析，本人将收集到的官方公开信息分为4类：重大更新、游戏调整、游戏介绍、其它公告。<BR>&nbsp;a.重大更新：添加新内容，增加新元素。<BR>&nbsp;b.游戏调整：对游戏进行调整。<BR>&nbsp;c.游戏介绍：针对游戏玩点与功能介绍。<BR>&nbsp;d.其它公告：其它对游戏有影响的公告。<BR>1.1.3 其它说明：所有评分的内容来源于官方公开信息，评论部分则是100%游戏内的真实体验。(每天平均在线12小时以上，连续近3个月）虽不敢妄言所述是梦幻国度的绝对真相，但却是本人3个月来的亲身感受。为了防止因个体差异而可能导致的误差，本人耗费巨大精力，接触上千名梦幻国度玩家，并在游戏内或游戏外了解他们对此游戏的感受，并在3个月内与上百名梦幻国度玩家保持比较密切的联系，经常交换对于游戏的看法，以上就是本文的前期准备。<BR>1.1.4 基础分值：梦幻国度可以说是2004年度玩家最期待的国产网游之一，在盛大处心积虑的宣传和诱惑下，在广大梦幻玩家心里，它的初始分值应该在90分以上。为了便于计算，暂定90分。</FONT></P>
<P><FONT face=Verdana>1.2 评分清单<BR><STRONG>2005-1-19&nbsp;&nbsp;&nbsp; 《梦幻国度》敢说才是新派宠物！</STRONG> <BR>类型：游戏介绍&nbsp;&nbsp; 评分：+2&nbsp; 总分：92<BR>评论：当初的敢说，官方可是宣传了近半年，但是呢？直到今天我们也没看到当初宣传的“敢说”。期望与现实之间的冲突，结论就是梦想的破灭。（关于当初宣传的“敢说”，有心人请自行前往官方网站查阅相关资料，这里不转贴占用篇幅了，下同）<BR>&nbsp;&nbsp;&nbsp; 其实，梦幻国度的敢说跟RO里的宠物、怪物说话没有太大的差别，甚至还不如RO里的宠物与怪物说话。RO的宠物与怪物说话仅仅用2个xml文件就实现了比较完善的“敢说”内容（比梦幻国度现在的“敢说”内容丰富很多，而且触发条件也丰富一些），而且自由度方面也比梦幻国度的好（玩家可以自由DIY，可以说RO的宠物说话才是真正实现了我的游戏我做主），最主要的是这个功能是在2003年初就有了。梦幻国度把RO 2年前的东西现在拿出来炒冷饭，还说什么新派宠物...我对盛大除了佩服也真的是无语了。终于明白牛为什么会飞了...同时请大家跟我BS新干线，把RO这样的好游戏运营得如此平庸，简直是暴殓天物！！！（新干线老是把问题推给外挂，坦白说外挂的影响比较小，关键还是新干线高层对游戏缺乏必要的爱心。即便过了2年多了，RO比现在国内Q版网游也一点儿不逊色，甚至在很多方面都比后出的游戏还完善。中国的所谓自主研发大大们抄完了传奇，估计下一个目标就是研究怎么抄RO，现在盛大和QQ都对RO下手了，而新干线手里捧着聚宝盆却还在发呆...跑题了，话题打住！）</FONT></P>
<P><FONT face=Verdana>【废话】宠物/怪物说话毕竟是梦幻的一个特色，虽然是RO N年前玩剩的，更让人失望的是，梦幻的宠物说话不仅没能达到RO的宠物说话程度，而且还大大的退步了。抄都抄不好，不知道该怎么说好。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-1-22&nbsp;&nbsp; 警告：不要在宝宝心烦的时候招惹它</STRONG><BR>类型：游戏介绍&nbsp;&nbsp; 评分：-5&nbsp; 总分：87<BR>评论：从图片我们可以看出2点：a.游戏研发之初玩家是可以同时带2只宝宝出现的；b.人物可以与宠物进行简单的人机对话。但现实呢？我想不用再说什么了，这点期望也不知道何年何月能实现了。就目前来看，根据官方公布的下半年研发计划，今年内是没有希望了...<BR>【废话】纯粹的虚假宣传，严重误导玩家。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-1-24&nbsp; 《梦幻国度》1月25日火爆内测 五大旅团出炉</STRONG>&nbsp; <BR>类型：其它公告&nbsp;&nbsp; 评分：+4&nbsp; 总分：91<BR>评论：第1次封闭内测据说很抢手，毕竟是期待了整整1年，而且是盛大世纪录3部曲的最后1章，相信任何玩家都无限期待。从参加过1测的多名玩家那里我了解了大概:严格的说，1测也就是游戏功能性测试，大家所熟知的α测试阶段。游戏中怪物直接爆药、爆装备、金钱、卷叶，6月底，当我再次跟1测玩家聊天的时候了解到新的变化。在他们眼里，梦幻国度最美好的时期正是这个1测阶段，后面是越改越乱，越改越差。<BR>【废话】曾经的梦幻国度虽已远去，但体验过的玩家永远不会忘记那一个月的美好时光。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-2-25&nbsp;&nbsp; 公告：封闭内测玩家可直接登陆1.2版测试服务器</STRONG><BR>类型：其它公告&nbsp;&nbsp; 评分：-5&nbsp; 总分：86<BR>评论：在这个公告中我们可以看出几点：<BR>&nbsp;&nbsp;&nbsp; a.1测的测试工作基本上告一段落了，时间持续了仅仅1个月; <BR>&nbsp;&nbsp;&nbsp; b.预告了2测试开放时间为3月16日; <BR>&nbsp;&nbsp;&nbsp; c.扩大测试人员数量；测试人员除1测人员之外，按男女1:3的比例重新招募新的测试人员；<BR>&nbsp;&nbsp;&nbsp; d.除了以上说明外，1测与2测并没有明确的测试目标说明，一切都以“版本优化及配平调整”模糊带过。<BR>&nbsp;&nbsp;&nbsp; 就功能性测试范围的BUG而言，现在公测阶段依然存在的包括：幻灵师的卡技能、猎奇士的卡招式、装备变面粉或资源、掉线部分回档、修理装备不能等等问题。而一大堆问题经过了1测，走完了2测，伴随着公测一起出现在万千玩家面前，原因何在？两个字：时间。回顾1测、2测，让我感触最深的就是梦幻国度项目组一起在与某个时间赛跑。无论出现任何问题，无论问题有多严重，一律都被放下了，因为时间紧迫。而存在的问题，我作为1名2测玩家，从GM05第一次上线收集问题开始，每次都不厌其烦的重复跟他说过无数次一些常见问题，但每次的结果都是遥无音讯。问题依然，BUG依旧，一切都没有改变。请允许我再废话几句：梦幻国度的研发时间据说有3年之久，既然3年都等过去了，为什么还要急这一时三刻？这里请让我再举一个例子。暴雪的游戏之道：无论自己失言多少次，无论让痴心的玩家失望多少回，只要游戏还存在问题，就决不上市，也正因为暴雪的这份坚持，十年来它赢了玩家的一致拥戴：暴雪出品，必属精品。相信这话，任何一个真正的玩家都不会陌生。<BR>【废话】1测留到现在的众多历史遗留BUG相信任何一个梦幻国度的玩家都会觉得是不可思议，毕竟从1测开始就有无数玩家反映过的问题，到了现在收费运营了依然存在，加上层出不穷的新问题，-7分不过分，但考虑到梦幻项目组对于部分问题的解决速度还算快，应该加+2分，（比如合成数量出错等问题很快就解决了）综合得分：-5分）<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>2005-3-14 头饰显示系统加入 1.2版测试延期至3月25日</STRONG> <BR>类型：游戏介绍&nbsp;&nbsp; 评分：+2&nbsp; 总分：88<BR>评论：原定3月16日开始的2测，由于加入头饰显示系统而推迟到3月25日。在公告中我们还可以知道2测与1测的细微差别：a.增加了送信任务与采集任务;b.游戏内物品掉落做重大调整:不直接爆物品，仅仅是爆资源与消耗品（如香草面包粉）。另外，在关于延期的原因中，官方使用了“即使全日无休的连续工作，实际工作量也超过了预期”，这里让我感受到的依然是那两个字：时间。正如上面所分析的：梦幻项目组一直在与某个时间赛跑，全组上下长期处于满负荷紧张工作状态，我们先不谈人的体力与精力是否能支撑这样的消耗战，我只想问问这样的疲劳战下工作效率将任何保障呢？联想到一系列因为更新而出现的新问题，这难道还不能发人深省吗？<BR>【废话】增加了梦幻国度的一个玩点：收集漂亮的头饰，虽然截止7月初累计出现的外观头饰还不到20款，但好歹添加了这个功能。真是不容易！<BR><BR></P>
<P><FONT face=Verdana><STRONG>2005-3-18 内测满意度上升至86％ 公测日期预计4月中下旬</STRONG>&nbsp; <BR>类型：其它公告&nbsp;&nbsp; 评分：-5&nbsp; 总分：83<BR>评论：前面我们分析出梦幻国度项目组一直在与某个时间赛跑，这个时间就是公测时间，虽然文中说得比较婉转：4月中下旬，但请大家注意一下这个公告的发布时间：3月18日。而2测的开始时间是3月25日。看出问题了吗？在游戏的内测都还没有完结之前就已经确定了公测日期，那么这个所谓的2测也就成了名副其实的走形式。而之前一直困扰我的问题也引刃而解了:很多问题梦幻项目组是知道的，但时间有限，人手有限，所以即便知道也回天乏术。我想这就是为什么很多内测已经反映过多次的问题依然留到了公测的真正原因吧。坦白说，作为玩家，我敬佩梦幻国度所有研发人员，一边要顶着玩家的漫骂，一边还要听从高层的胡乱指挥；一边看着从玩家那里收集到的无数BUG清单，一边看着高层发下来的时间表，其内心的矛盾与压力，相信不是普通人能承受的，更何况梦幻国度是他们3年的心血。<BR>【废话】这个内测满意度86%应该是1测的投票结果吧，而且根据在下从多位1测老玩家的反馈来看，这个投票的真实性也比较高。的确，1测是梦幻国度的黄金年代，2测次之，公测则每况愈下...而仅仅通过1测的玩家投票，在2测（游戏的数值平衡没进行测试前）之前就已经确定了公测时间，我想这个2测也只能算走形式吧，作用大家也都看到了，2测从开始3000多人在线，到目前不到100人在线，差距何其大啊。而盛大的这个谎言也在不经意间自相矛盾了。曾经说内测玩家满意度90%才公测，可第2内都还没开始就已经把公测时间确定了，这个，也太假了吧。对于这样欺骗玩家的行为，相信是所有真正热爱游戏的玩家所痛恨的。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-3-25 公告：《梦幻国度》1.2版测试正式开始！</STRONG><BR>类型：重大更新&nbsp;&nbsp; 评分：-5&nbsp; 总分：78<BR>评论：2测终于开始了，根据事后从1测玩家那里了解到的关于2测与1测的差别，我这里说明一下：<BR>a.增加了枫叶岛地图。<BR>b.增加了送信任务、挖宝任务。<BR>c.装备属性、怪物爆率、职业技能学习限制与1测差别很大，几乎是全盘推倒重来。<BR>d.取消了东芝麻的BOSS：言灵巨石。这个取消的言灵巨石哪里去了呢？它就是后来公测阶段搞活动用的炎魔危机的主角。根据1测玩家的消息：东芝麻的言灵巨石在1测时曾经很有意思。打死一次后会变成2只一样的但小一点的BOSS，并且会逃走，然后需要再打死，然后会变成4只更小的，同样会边逃走边攻击玩家，只有把那4只都杀了BOSS才会爆东西。据说爆的东西非常多，杀这个BOSS的时候需要很多玩家配合在可能杀掉，根本不是1、2个玩家就可以应付的。而看看现在呢？即便是官方一再否定被玩家屠杀的终极BOSS，其参与杀BOSS的人也就2、3个人而已，相比而言，这个言灵巨石当初的设定不可谓不妙，可惜已经被改没了，哎~~~<BR>&nbsp;&nbsp;&nbsp; 从1测玩家那里我还了解到一条重要的消息：1测与2测的怪物爆率、装备属性、职业技能学习限制差别很大。也就是说1测是纯粹的功能性测试，即α版本测试。而2测的重点将是数值平衡与稳定性测试，即β版测试。2测的时间同样只有1个月，1个月做功能性测试我相信时间可能足够，但是1个月要做好各项数值平衡，这根本就是不可能完成的任务。也就是说公测开始之前，悲剧就早已注定。更何况在实际操作中，短短的1个月，官方把大部分精力都放在了10级以下新手的游戏辅助完善上，根本就没有多余的精力来进行数值平衡的调整。（我之所以在离开梦幻国度的时候执意要完成游戏内难度最大的任务，就是希望用事实证明自己的分析与推理。）<BR>【废话】还有什么好说？梦幻国度的更新总是去其精华，留其糟粕。想想英雄年代的陨落，我也没什么好惊讶的，早习惯了。对于胡乱修改游戏的做法，作为一名热爱游戏的玩家，对于官方一再丢西瓜拣芝麻的做法是看着心寒，想着心烦。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-3-27&nbsp; 公告：内测首次“停机集中调整”</STRONG> <BR>类型：游戏调整&nbsp;&nbsp; 评分：+3&nbsp; 总分：81<BR>评论：本次停机的主要原因是调整1－15级新手阶段的配平问题，但事实却不仅仅如此。记忆中好象除了增加了新手获取薄荷水的任务外，还调整了装备的属性。记忆最深的是之前需要10来下才能杀死的钉耙猪，更新后只要3、4下就搞定了。为什么呢？打个比喻吧：停机前18级的宝石属性是7-8，集中停机后就成了18-22，两个宝石，总属性差了22-28，对于一个20级不到的新手来说，突然增加了这么多属性，自然练起来轻松很多，可惜好景不长，这样的幸福时光持续了1周左右，然后恶梦第1次降临。<BR>【废话】开始重视新手的生存状况，对于新手来说这次的调整效果比较明显，考虑到其后的新手辅助系统的建立，可以说这算是梦幻国度的一个亮点，+7分,但考虑到其间装备频繁的巨幅数值调整，-4分，综合得分：+3分）</FONT></P>
<P><FONT face=Verdana><STRONG>2005-4-4&nbsp;&nbsp; 公告：第二次“停机集中调整”</STRONG> <BR>类型：游戏调整&nbsp;&nbsp; 评分：-6&nbsp; 总分：75<BR>评论：这次更新导致了大量玩家离开游戏，是2测第1次出现大量玩家集体抗议，抗议无效后被迫放弃游戏的更新。停机重点调整内容为“宠物合成系统”和新手配平问题。通过第1次和第2次集中停机来看，梦幻项目组对新手阶段，特别是1-9级是特别看重的。而且的确修改得比较到位，但除此之外，问题就比较棘手了。首先是大幅度调整了装备属性，其次是对两个职业都进行了比较大的调整：猎奇士之前的刀刀抓狂改成了超低几率出现，但实际测试中攻击100下都无法使出1下，几乎是废了这个技能。且增加了攻击中出现MISS，而且出现几率相当高。不仅普通物理攻击出现MISS,连魔法攻击也出现MISS，而且这个问题一直到7月份收费为止都没能很好的解决好。同时幻灵师的技能攻击也出现了MISS，大概十下有2~3下MISS。（幻灵师的技能MISS在很短的时间内就取消了，但同样是魔法攻击属性的战士技能MISS却保持到了7月）之前练级的感觉怎一个爽字了得，而现在一方面大幅度降低的装备属性，另一方面又出现了MISS，在巨大的反差下，很多玩家首先想到的是抗议，有不少玩家把长乐城下方的两个城门堵住了以此抗议，（为了避免玩家堵门，官方很快在更新中增加了穿人的功能）在抗议无效后，不少玩家默默离开了游戏。坦白说，如此大幅度的调整游戏属性我也是第一次遇到，况且当时官方已经明确说明了4月29日公测，可到了4月7日还这样一会儿装备的属性是18-22，过了2天就变成了7-8，玩家的心理落差有多大？我想那么多人离开应该能说明什么吧。这已经超出了部分玩家的心理承受范围。那段时间我也郁闷了几天，好友之间不再练级了，大家一起聊天，回忆之前快乐的一周。游戏内弥漫着伤感与无奈，大量玩家与好友在聊天，很少有人还在冲级。之前热闹的梦幻国度开始急速降温...<BR>【废话】数值平衡需要严谨的通过大量实验与长期的观察分析得出结论，除此之外更重要的是要有一颗爱心。对游戏的热爱，对玩家的热爱。如此天上地下的胡乱修改，一方面忽略了玩家的感受，另一方面也暴露了梦幻国度项目组的不成熟与不理智。新手配平的确是新玩家带来了便利，+4分，但一系列改动给-10分一点不冤枉，综合得分：-6分</FONT></P>
<P><FONT face=Verdana><STRONG>2005-4-12 迎公测加大测试力度 2000个内测账号增量发放</STRONG><BR>类型：其它公告&nbsp;&nbsp; 评分：+3&nbsp; 总分：78<BR>评论：为什么发这2000号我想所有人都知道，那就因为4月7日的更新导致了大量玩家离开游戏，为了补充2测的在线人数才出现了增量发放帐号的公告。我想说的是早知今天，何必当初呢？<BR>【废话】这次的人员补充总的来说还是在一定程度上增加了人气，虽然很有限。网游毕竟还是需要人多才有意义，这次的亡羊补牢策略比较及时，值得肯定。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-4-13 公告：4月14日上午9点开始实行5倍经验</STRONG><BR>类型：游戏调整&nbsp;&nbsp; 评分：+4&nbsp; 总分：82<BR>评论：受4.7更新影响，游戏内玩家情绪一直很低落，大部分人都没有练级，而公测时间早以确定，该怎么办呢？方法就是从新唤起玩家练级的成就感。于是乎5倍经验开始了。在活动开始后，玩家也陆续从低落中走了出来，大家又开始冲级了，在冲级的同时渐渐忘记了不愉快的事。也就是在那段时间我的幻灵师等级从16级一跃到了34级，猎奇士从0级到了25级。<BR>【废话】从结果来看，这个活动是成功的，一方面缩短了数值平衡测试的反馈周期，另一方面也消除了游戏内的阴霾，是个一举两得的好策略。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-4-24&nbsp; 封闭测试区恢复正常经验值<BR></STRONG>类型：游戏调整&nbsp;&nbsp; 评分：-8&nbsp; 总分：74<BR>评论：4月23日官方进行了一次更新，这次更新同样导致了大量玩家离开游戏（主要是幻灵师职业的玩家）。本次更新调整了MP的消耗计算：由之前固定MP消耗改变为动态消耗计算。举例：4级冰晶之前是8点MP固定消耗，调整为1倍消耗，即：1%MP消耗，以34级幻灵师MP2106为例，改版前可以放264次冰晶，改版后只能放100次冰晶。改版前满MP176次电光火石，改版后只能放53次。改版前后法师练级效率相差3倍左右。而且随着等级的提高，这个改动的弊端会越发明显。由于内测的钱很难赚，玩家几乎都靠搭帐篷来练级，所以如此改动让幻灵师无所适从。同时增强了怪物的AI，之前幻灵师引怪、卡怪，烧怪的方法失效了，练级的效率低了很多。再有就是同一坐标点只能允许有一个玩家，之前组队的玩家都可以叠在一起，现在也不行了。当然了，后面两点更新是完全正确的，但关于幻灵师的MP消耗就让很多幻灵师玩家无法接受，在大家都在期盼官方改回去的时候，另一个坏消息悄然来到。官方说幻灵师的电光火石有BUG，导致中间和周围都是100%伤害，现在修正了这个BUG，也正是这一系列的调整，加上当时有传言2测结束后官方会删号，大量玩家开始离开2测，剩下的不到十分之一。<BR>&nbsp;&nbsp;&nbsp; 内测关闭之前的一次更新明明修正了电光火石的BUG，但公测的时候却没有采用修正后的最新版本，为什么呢？难道仅仅是为了触成梦幻国度5.5事件做前期铺垫？<BR>【废话】想来感慨颇多，2测很多好的更新没有保留，而不好的地方却留到了公测，曾经内测区就已经更新为不能刷信了，但公测开始后变成可以刷；曾经内测结束前就已经修改了所谓的电光火石BUG，但公测又变回来了并且制造了5.5事件导致第1批玩家大规模离开；曾经内测时战士打怪不存在发呆的问题，到了公测变成打怪钱会先傻看怪物几秒，然后再动手...如此这般的改版太多了，考虑到也有部分适当的调整，综合得分：-8分）</FONT></P>
<P><FONT face=Verdana><STRONG>2005-4-29 下午2点公开测试 内测二区暂时关闭<BR></STRONG>类型：游戏调整&nbsp;&nbsp; 评分：+4&nbsp; 总分：78<BR>评论：在公测前夕关闭内测区让内测玩家能投入到公测中去发挥余热，坦白说，效果很明显，大量这2天到公测体验的内测玩家都在功成名就后留在了公测区。<BR>【废话】正确的策略，我也是这个策略的牺牲者，哈哈~~~不过实事求是的说这个策略相当成功，不少内测玩家因此留在了公测区。<BR><BR></P>
<P><FONT face=Verdana><STRONG>2005-5-3 梦幻精灵发梦幻精灵帽</STRONG> <BR>类型：其它公告&nbsp;&nbsp; 评分：+0&nbsp; 总分：78<BR>评论：记得官方曾经说过：梦幻精灵就是游戏内的代言人，她们的义务就是尽可能的帮助其它玩家解决问题。我所在四川1区2服的梦幻精灵有两人，而其中一人我曾经与他组过队：爱情密码。坦白说印象不是很深刻，4月30日到5月3日经常能碰到他，但在领取梦幻精灵帽之后就消失了，最近几天我又碰到他了，他依然是5月3日的等级，还是20级左右，简单的聊了2句：发现他的确很久没玩了。<BR>&nbsp;&nbsp;&nbsp; 作为官方在游戏内的代言人，在领奖后就从游戏内长时间消失，这样的代言又有何意义呢？在这1个月中，大量玩家经常会M我问一些关于游戏的问题。（谁叫我名字就叫内测玩家呢？更重要的是我是那个服第1个成立旅团的团长）刚开始我还试探性问他们：你们找梦幻精灵啊，他们是专门帮玩家解决问题的。而答案几乎都是一片茫然，然后还问我什么是梦幻精灵，怎么找他们。我看话题不对，干脆不说了，直接把他的问题解决了事。游戏内的代言人应该是能经常在线的，善于帮玩家解决问题的，应该是该服的玩家拥戴的，其知名度应该让大部分玩家所知晓的，而官方评选的梦想精灵，在游戏内又有何人气可言呢？这样的梦幻精灵，其意义又在哪里呢？<BR>【废话】想法是好的，但操作过程中走样了，效果大打折扣。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-5-5 热心玩家支持 幻灵师“电光火石”问题已修正</STRONG><BR>类型：游戏调整&nbsp;&nbsp; 评分：-10&nbsp; 总分：68<BR>评论：内测电光火石就修改过一次，当时玩家走了80%以上，才过了几天居然又走回头路，该怎么说好呢？也许真的是“长期的全天无休连续工作”惹的祸。在出现这个事件后，我已经是团长了，当时人心惶惶，虽然我一个劲的向团里的幻灵师保证：一定会改回来的，大家相信我吧，我研究盛大1年多了，我了解他们。然后很多人问我：什么时候改回来。我只能跟他们说：等到大量玩家开始离开的时候就会改回来了。（同样的话在内测时认识的朋友东月所在的QQ群里我也说过。）<BR>&nbsp;&nbsp;&nbsp; 虽然一切都跟我预想的一样按部就班的发生着，但离开的朋友再也没有回来...即便后来我一个劲跟他们说法师如何厉害，练级比战士快多了，雪牙威力提升了，火的威力也改回来了，但依然没有半点效果，当时我所在的旅团，有3位元老因此离开，而且再也没回来，只能在QQ群跟他们聊天，而无法在游戏内再见到他们。为什么呢？我追问了3位离开的朋友：a的理由是工作忙，没空玩。b的理由是他现在玩劲乐团，不想回来了。 c的理由是要陪老婆玩QQ幻想，暂时没空。以上三个答案说明什么呢？现在玩家所面对的诱惑很大，一旦离开了这个游戏，就可能被其它游戏所吸引，当他们喜欢上其它游戏的时候，即便官方修正了之前的失误，但造成的损失还是无法弥补的。<BR>【废话】同一个问题可以在短期内犯两次相同的错，不知道是不是盛大首创。</FONT></P>
<P><FONT face=Verdana><STRONG>05-5-8&nbsp; 响应玩家建议 新手技能效果将做普遍提升</STRONG><BR>类型：游戏调整&nbsp;&nbsp; 评分：+5&nbsp; 总分：73<BR>评论：公测才1周就出现大量玩家离开，这样的事无意给火热的公测泼了一瓢凉水，为了安抚留下来的玩家，官方最大限度的做出了让步：提高了两个职业的群攻技能伤害。当然了，受益最大的还是幻灵师。<BR>&nbsp;&nbsp;&nbsp; 虽然最终回到了正道，但经过这一折腾，梦幻国度的人气减弱了不少。如果当初知道能预知结果，又何必作出如此轻率之举？还是还句话，缺乏对游戏的爱，缺乏成熟与理智。要知道官方的任何举动都是万众瞩目的，官方的任何失误必然伴随着大量玩家的流失，而通常离开的玩家很少有再回来的。所以请谨慎再谨慎的做出每一次更新决定。在更新之前，请先事先设想一下可能出现的种种状况与应对方法。而不是头痛医头，脚痛医脚的被动应对。<BR>【废话】当大量玩家开始离开时，官方猛然醒悟，修改了游戏中不合理的设定，虽然5月5日到5月7日官方还出了一个公告解释修改电光火石的N种必然性，说得大义凛然，义正严词，可仅仅过了几小时，他们就自失其言。可见官方的公告与说明也非常儿戏，哈哈~~~,这次更新本来应该+6分，但考虑到之前让人恶心的公告，-1分，综合评分：+5分）</FONT></P>
<P><FONT face=Verdana><STRONG>2005-5-15 关于炎魔任务向玩家的道歉说明</STRONG><BR>类型：游戏调整&nbsp;&nbsp; 评分：-7&nbsp; 总分：66<BR>评论：同样是因为考虑不周出现的重大失误，但这次显然反应过度了。又是道歉，又是补偿，离开的玩家已经看不到了，不过留下来的玩家对这次补偿还是比较肯定的。在炎魔任务的修正方案中，官方口口声声说是收集了大量玩家意见，可修改后的炎魔任务同样是漏洞百出，让所有人寒心的失败之作。<BR>&nbsp;&nbsp;&nbsp; 猎奇士方面分两个阶段：44以下与44以上，44以下的看着44以上的打炎魔满腹怨言，因为44以上的猎奇士用背刺技能可以不掉一点血就把炎魔杀了，非常轻松，而低级猎奇士要顶着炎魔的强大攻击艰难参与，而且打到一半就得飞走，由此导致的后果就是低级猎奇士要么不分昼夜的努力冲级，要么放弃游戏，彻底走人;<BR>&nbsp;&nbsp;&nbsp; 而幻灵师则比较统一，利用自动锁定与无限攻击距离相结合而站在炎魔攻击不到的地方无忧的虐待炎魔，所需要的就是找一个朋友在炎魔那里等着拣东西就足够了。<BR>&nbsp;&nbsp;&nbsp; 无论是44以上的猎奇士，还是幻灵师，炎魔任务对于他们来说根本就是无聊的东西，一点挑战性都没有，这个情况存在了超过3周，在论坛我也见过无数玩家反映过此问题，但3周来官方依然没有任何动静，仿佛默许一切。而且因为这个任务而离开游戏的玩家也是不计其数，（因为通过这个任务让很多中低级玩家体验到了巨大的挫败感）也许梦幻国度项目组没有意识到吧，一个小小的任务调整，可以引起如此大的蝴蝶效应，为什么呢？宠物系统缺乏新鲜感，练级缺乏动力、活动任务缺乏挑战性，游戏资料安全性没有保障（三天两头的随机回档且无任何补偿），问题很多很多，这些玩家都能适应。但是对于热门的炎魔任务中体现出来的歧视精神却是大部分玩家无法容忍的。（所谓歧视精神指等级歧视与职业歧视，详细内容见上文）每当28~43级的猎奇士看着44以上的猎奇士杀炎魔，我想都会气得吐血的，如果你不知道我在说什么，可以问问经历过这一切的其它梦幻玩家。（28级以下的猎奇士一般不会去挑战炎魔，所以对此影响的可能性比较小）<BR>&nbsp;&nbsp;&nbsp; 28~43的猎奇士看着操作好的同级或低级幻灵师杀炎魔我想也会气得吐血，记得18日当我兴致勃勃的参加改版后的炎魔任务时，在东芝麻看着2个幻灵师利用超屏攻击炎魔，而炎魔无动于衷的时候，气得当时就关了游戏，（要知道我当时35级，杀炎魔可是要吃很多HP药的，而且过程非常紧张,稍不留神就会免费回城，而这两个幻灵师悠闲的杀没有反抗的炎魔，我想任何一个人都会愤怒）之后1天没上游戏。直到团里的朋友在QQ群上找我...<BR>&nbsp;&nbsp;&nbsp; 记得炎魔任务刚推出的时候，问题主要是对于新手的生存威胁以及炎魔与守洞NPC之间的冲突。其实，只要修改一下炎魔的属性，让炎魔不被守洞NPC攻击就完了，根本就没有后来的事情，而作为活动怪，炎魔本就该是主动攻击属性，(没见过哪个游戏的活动怪是被人攻击后既不反击也无任何举动的木头）如此才有挑战性可言。修改不往好处改，反倒是老问题解决了1个，新问题出现3个，如此举一反三还真是让人不知道说什么好。<BR>【废话】能及时对出现的问题做出反应，发出公告，这个是值得肯定的，+3分。但对出现的问题过度的反应既没能挽回离开的玩家，也给留下来的玩家造成一个错觉：那就是盛大睡醒了，突然心血来潮，+1分。更重要的是这次修改后的炎魔任务更糟糕，并在一段比较长的时间内导致了大量玩家离开游戏，可以说是一次非常失败的更新，-10。综合得分：-7分）</FONT></P><FONT face=Verdana>
<P><BR><STRONG>2005-5-21 《梦幻国度》你做主 官方论坛开辟用户意见专栏</STRONG><BR>类型：其它公告&nbsp;&nbsp; 评分：+2&nbsp; 总分：68<BR>评论：重视玩家意见，吸纳玩家建议，这本是好的，但有一个原则，就是建议与游戏的未来不发生任何冲突。但一味的迁就玩家，顺从玩家意见，则是错误的，长此以往，游戏将走向绝路。毕竟玩家的意见是无责任，片面的，有很强的局限性，普通玩家并不关心游戏的未来会怎么样，所想的只是如何在当下玩得尽兴，而官方如果缺乏游戏的理念与相应的判断力，那么后果将不堪设想。相关讨论请见本人去年年末写的《运营真的这么困难吗？》相关章节。<BR>【废话】截止6月底本人离开，梦幻国度的用户意见专栏中出现的多是无足轻重的意见，而玩家奔走急呼的意见则一条也没看到。为什么呢？这个所谓的用户意见专栏到底是怎么样的专栏呢。为了保证观点的广泛I代表性，针对这个问题，本人询问了超过100位游戏内的老玩家。（接触梦幻国度大于1个月的玩家）根据大部分玩家的观点与本人长达1个月的观察：这个所谓的用户意见专栏仅仅是盛大宣传的另一种方式，所涉及的问题都是无足轻重或与官方的开发计划吻合的内容，而并不是代表用户真实声音的意见专栏。表面看是尊重玩家，实则又玩了一把文字游戏，欺骗玩家，长期依靠这样自以为是的小聪明能把游戏做好了才真的奇怪。考虑到该栏目的确也解决了一些问题，所以还是+2分吧。其实没这个栏目，这些问题一样会解决，只是一个文字游戏而已。</P>
<P><STRONG>2005-5-22&nbsp; 你提我改 五大焦点问题调查现已隆重推出<BR></STRONG>类型：游戏介绍&nbsp;&nbsp; 评分：+7&nbsp; 总分：75<BR>评论：即便是游戏本身质量不高，运营中重大失误也层出不穷，但在盛大超密集的推广资金投入下，新玩家始终比较多，从5月初到7月份初，可以不夸张的说新玩家是源源不断，且新玩家的增加率大于老玩家的流失率，所以游戏内依然呈现着欣欣向荣的景象。所谓“龙隐长乐仙霞庄，曲风依旧心已伤；东西芝麻晶贝场，昔日英雄今何藏？”<BR>&nbsp;&nbsp;&nbsp; 面对老玩家持续的大量流失，新玩家也逐渐受其影响开始恐慌起来，正是在此千钧一发之计，官方果断的推出了五大焦点问题调查讨论活动。可以说时机掌握得恰倒好处，虽然讨论的内容短期内不一定能实现，但却可以给准备离去的玩家一个留下来的理由，而且这个活动的推出也的确起到了一定的效果，根据我在游戏内接近1周的调查:原本决定离开的23位玩家中，有5位表示暂时不想练级了，但会留下来看看再做决定，有3位表示对官方重新恢复了信心，决定留下来继续玩，有7位表示暂时不玩了，但对游戏保持关注，如果以后改好了再回来，剩下的8位与1周前的想法一样:最近或最迟收费前离开。从我的小调查中可以看出，这个“五大焦点问题调查讨论”的确收到了比较好的效果。<BR>【废话】游戏是平庸的、问题是很多的，但每到危急时刻官方总是会灵光一闪，避重就轻的化解危机的...就如同一只漏水的木桶，官方不准备先把木桶的洞补好后装水，而是选择先装水，然后看什么地方漏得多，再临时性的用胶布贴一下，然后继续往桶里注水...扯远了，不过这个活动推出即时，效果显著。</P>
<P><STRONG>2005-5-25 藏宝图大盘点 全新“挖宝总动员”猛烈来袭<BR></STRONG>类型：游戏介绍&nbsp;&nbsp; 评分：+4&nbsp; 总分：79<BR>评论：如果要问我梦幻国度有什么游戏特色的话，我想这个挖宝总动员可以算其中一项。（巨奖诱惑，谁与争锋）通过实物奖品的诱惑来吸引玩家继续游戏，而且这个挖宝总动员也算是风风火火，不仅让参与活动的玩家情绪很高涨，且玩家人数也非常多，毕竟是RMB诱惑嘛，有钱真好啊！我看盛大不如在今后的活动中，直接挖宝送现金好了，这样方便，像现在这样送公仔，送了1个月，玩家都收不到，反而会影响活动的效果。其实我也是众多中奖者之一，当然暂时归于受骗者好了（因为1个多月了都没收到公仔）。当然现在离开游戏了，也不奢望了...<BR>【废话】不知道从什么时候开始博彩开始入侵网游，从注册送现金、到游戏内的抽奖送虚拟装备或极品，且逐渐的成了一种风气在网游行业内弥漫。而发展到今天，盛大已经开始在游戏内尝试利用金钱诱惑长期吸引玩家，可是....盛大可以不定期搞挖宝送巨奖，那腾讯也可以在QQ幻想中搞类似的活动嘛；你盛大能送泡泡堂公仔，难道人家腾讯没有QQ公仔吗？你盛大能送ipodmini，难道别人腾讯没ipodmini,看着盛大和腾讯搞这样的小动作，难道九城能无动于衷...我看如此下去，中国的网游也该到头了...研发部门也别再研究什么游戏性了，什么新玩法了，看看怎么节约什么弄，只要包装精美些，酒瓶用旧的，里面装水就可以了，反正有巨奖促销，有巨额的推广费用，上市前到上级主管部门那里争取几块奖牌，对媒体来说有着绝对的吸引力。而玩家选择游戏也方便多了，看哪个运营商给的奖品价值高，就玩哪个游戏，等活动结束了换个游戏继续等机会...也许是我太杞人忧天、疯言疯语了吧，但让我如何也想不通的是此时此刻万能的网游主管部门的大大们飘哪里去了呢？...对于盛大如此公然破坏网游行业的公平竞争竟然无动于衷，不仅如此，还颁发优秀民族网游的奖项，难道是鼓励网游行业的恶性竞争？发泄归发泄，不过这个活动的确能聚集人气，而且立杆见影。<BR><BR></P>
<P><FONT face=Verdana><STRONG>2005-5-27 “赚钱我有道”有奖征帖活动获奖名单揭晓</STRONG><BR>类型：游戏介绍&nbsp;&nbsp; 评分：+1&nbsp; 总分：80<BR>评论：当初搞这个活动的初衷，应该是加强玩家间的交流，而事实上也的确起到了这样的作用，但是呢？计划没有变化快，当初很多可行的办法，仅仅过了半个月或1个月，就完全不适用了。梦幻国度可以说是1天1小变，3天1大变，何况是半个月甚至1个月呢？毕竟现在时代不同了，游戏天天都在变，玩家该如何适应呢？<BR>【废话】记得传奇时代，很多经验几个月甚至几年都适用，但梦幻国度不同，即便是昨天的经验，今天可能就行不通了，这就是梦幻国度的另一个特色：千变万化。让玩家无所适从，喜欢梦幻的话就需要不断的适应不断的变化。活动的初衷+5分，但由于变化太快，经验帖实用性不高，目前关于赚钱的经验帖，实际适用率小于5%。大部分当初非常优秀的帖子，到了7月份，新玩家看了一点儿用都没有。（写这个帖子的时候，本人故地重游去官网看了一下我获奖的帖子，发现即便到了7月份，经验也同样适用，有兴趣的朋友可以去梦幻国度官方论坛注册，然后点击参赛帖：署名:废话，发帖时间5月5日。欢迎大家把所有5月份的赚钱参赛帖都看一遍，经过了2个月的历练，到现在经验还适用的好象只有本人的那张帖子，不知道这算不算在炫耀，hoho~~~)</FONT></P>
<P><FONT face=Verdana><STRONG>2005-5-28 六月大型活动“海贼王的野心”专题推出</STRONG>&nbsp; <BR>类型：重大更新&nbsp;&nbsp; 评分：-11&nbsp; 总分：69<BR>评论：官方第2次大型改版，同样也是公测后第2次玩家大规模换血。当这次大型活动结束时，游戏内同样完成了第2轮玩家换血。公测开始接触梦幻国度的老玩家中，在5.5事件和5.15事件的刺激下完成了第1轮大换血。这次换血导致公测前1周进入游戏的玩家80%离开了游戏，而游戏内的主力玩家也转变为5月中旬接触梦幻国度的第2批玩家。在海贼王的野心开始后，第2批玩家也陆续被迫离开游戏，在海贼王的野心大型活动刚刚进入第2章的时候，第2批玩家也差不多尽数离去。截止6月20日左右，游戏内的主力玩家已经转变为6月份才接触梦幻国度的第3批玩家。<BR>【废话】根据我对所在服（四川1区2服）长期的观察分析：在海贼王第一章的活动中，因为官方玩弄文字游戏的手段太低劣，变成了彻头彻尾的欺骗，导致大部分级高钱多的老玩家在一夜之间变成了穷光蛋，而新手们则获得了一份意外的惊喜。当然了，后果就是老玩家陆续离开游戏（其实，我也是受害者之一，当时只是希望能在离开前在做点儿什么，所以拖了1个月才完全退出游戏）。海贼王第2章没犯什么大错误，但是也没什么大作为，无法激发玩家参与活动的积极性，通过第2章的活动也看出官方策划人员对游戏是如何的陌生，有这样的策划人员，梦幻的未来能好才奇怪。第3章活动是整个“海贼王的野心”活动中唯一让玩家稍微满意的，但是呢？这个活动同样反映出官方的活动策划人员对游戏是多么的陌生。一个宣称考验旅团实力的怪，却往往在1分钟左右就被杀了，为什么会这样呢？因为官方策划人员对于游戏内玩家的平均等级以及攻击力缺乏足够的数值了解，如果说组团杀了还算有团队合作的成分在其中，基本还算达到活动目的的话，那很多高级战士或法师，一个人就把海贼王杀了，则是对整个活动的讽刺。说到这里，允许我把话题展开些：梦幻国度中的终极BOSS：千宝珍和波谱冰王。引用官方的相关说明：“未到70级、没有组队且装备不够精良的玩家切勿尝试去挑战它！”但事实呢？所谓的终极BOSS，一次又一次被等级只有40~50，且装备不齐的玩家杀掉，然后官方一次又一次的把BOSS改强，一方面大幅度提高BOSS属性，一方面增加BOSS的安全性（比如大量超强攻击的小怪护卫）可以一样被聪明的玩家一次又一次的给灭了，而作为官方代言人的官方论坛版主（盛大官方论坛的工作人员对于游戏的了解是多么的幼稚，大家一起来欣赏吧）却一次次否定事实:一开始说玩家看错了，接着说什么玩家利用BUG杀的不算，后来的回答幼稚到无法形容：“那可是80级的怪，需要70级以上才能打的，你们只有40多级怎么可能杀得死？所以说不可能的。我们的工作人员测试过了，杀不掉的。当更多的玩家把杀掉终极BOSS的抓图帖到官方论坛时，官方的托词变成了等级相差15级以上，即便杀了也没有经验，当然也不会爆东西，所以还是请大家到了65级以上再去挑战...<BR>&nbsp;&nbsp;&nbsp; 如果要说玩家40多级杀掉80级的怪，可以肯定是利用了游戏中不合理的设定，但这个不合理的设定非常容易发现，稍微分析一下就能明白的事，盛大花费了3个月都没有搞清楚问题的真正原因，还胡乱修改一番贻笑大方，我真的无语了，对于盛大的研发与游戏评测人员的专业性我从来没怀疑过，可以肯定他们任何人都比我的能力强100倍以上，但对他们的敬业精神，表示出极大的怀疑，甚至怀疑梦幻国度项目组究竟有没有专职的游戏性评测人员。<BR>&nbsp;&nbsp;&nbsp; 海贼王第1章：收集垃圾资源，由于官方事先声明活动第1名有300W奖金，所以当时游戏内有钱的都竞相收购指定资源，由于资源出产有限，导致价格疯涨：平时卖5块钱都没人要的垃圾资源，当天炒到了300块以上。基本上海贼王第1章活动中，前十名都是花费了几十到几百万不等，可结果呢？第1名没有300W的奖励，而前十名获得的奖励非常小，连收购资源成本的20分之一都不到。这次活动被玩家们称为官方在游戏内的劫富济贫。结果那几天20级以下的新玩家几乎每人获得了10万以上的意外收获，而相应的，高级玩家则大规模离开游戏。-10分<BR>&nbsp;&nbsp;&nbsp; 海贼王第2章：本来以为官方会通过这1章来补偿玩家，没想到这1章同样让人失望。所谓的大量金钱奖励还不够玩家参加活动所付出的药钱和修理装备的费用，这样的奖励不知道有多少玩家愿意参与。而梦幻百宝箱的游戏规则也相当奇怪，无论有没有参与打活动怪，居然都一视同仁可以攻击活动宝箱，这让很多参加打活动怪的玩家也相当气愤，打活动怪付出了比大的代价，而收获时却要与大量无关人士同享成果，绝对的平均主义造成的就是玩家对于活动的敷衍。打怪的时候不去，打宝箱的时候就相当活跃。而这个打宝箱的活动同样导致了很多玩家的不满，因为这个宝箱被任何等级的玩家攻击一下，宝物就归那位玩家，而游戏内的法师职业有远程攻击，理所当然的没收了99%的宝箱礼物。而即便是玩了2个月的高级战士玩家，对于宝箱除了气愤就是叹息，练了2个月，还不如一个新来的小法师。可以说这个活动也造成了大量高级战士离开游戏。-8分<BR>&nbsp;&nbsp;&nbsp; 海贼王第3章：打1个怪，1分钟便可拥有200W，这就是海贼王第3章的活动。不过呢，在获得打怪资格的时候，却出现了一个小BUG，当玩家上缴任务道具的数量相同的时候，居然是后交的人获得打怪权，这让很多玩家恼火。这个问题出现了1周以上都没有修正。不过总的来说，这个活动是海贼王的野心中唯一让玩家满意的。虽然这个活动既没有难度，也没什么趣味性，不过冲着那200W，很多玩家还是乐此不疲。 +7分</FONT></P>
<P><FONT face=Verdana><STRONG>2005-5-31 不明海鲜登陆 各位居民注意安全！</STRONG><BR>类型：游戏调整&nbsp;&nbsp; 评分：-3 总分：66<BR>评论：这次更新主要就是海贼王第1章之前的一个小活动，不过这次小活动好象负面影响大于正面的好评。毕竟让40~50级的怪跑到20级以下的新手地图去，只能用屠杀来形容了。不过传闻这次活动是针对脱机外挂。毕竟这个时候大名鼎鼎的梦幻脱机外挂：梦幻宝贝已经开始公开测试了。（这个外挂类似神迹新天游，可以说是一款比较有潜力的外挂，其1键刷钱功能，更是广受玩家好评，玩家只要输入用户名和密码，以及识别码，不用做任何设置，点一下刷钱，就可以自动在线跑信刷钱。根据本人的亲身测试:38级的玩家，利用这个脱机外挂，20个小时可以刷100W梦幻币左右，以及20张各种卷叶，总计刷钱在150W左右，而40级的玩家，20个小时刷钱获得的收益接近200W（包括出售卷叶的收益），这仅仅是一个号一天的收益，但这个外挂可以让一台普通的电脑同时挂上百个号，消耗资源非常低，根据测试，外挂跑钱时，平均一个号只占用3M左右的内存。对于拥有256M内存的我来说，挂了4个号，还挂3个QQ，然后看电影，一点都不卡。）<BR>【废话】防范外挂挂机是应该大力支持的，但不能因为防范外挂而让普通玩家的正常游戏受影响则是重大失策了。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-6-1 欢庆六一　梦幻寻宝特别活动送你大公仔</STRONG> <BR>类型：其它公告&nbsp;&nbsp; 评分：+2 总分：68<BR>评论：这次挖宝活动借鉴了1测的相关活动，而且也体现出了挖宝的乐趣，通过挖宝让玩家也对游戏本身有了很多的了解和关注，是一个不错的活动。<BR>【废话】如果说趣味性的话，这次挖宝活动体现出了应有的趣味性，通过一张游戏内的抓图类提示玩家挖宝的地点，而且随着活动时间的临近而公布更多细节提示，总体安排是不错的，但还有略有不足。那就是对于积极参与活动的聪明玩家缺乏必要而公正的奖励，也是采用平均主义一刀切，下午2点找到挖宝地点和晚上7点找到挖宝地点，居然结果是一样的，也正是因为这点小小的不足，让不少聪明而熟悉游戏的老玩家寒了心。不过这次活动相对来说也是不错的。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-6-3 声明：捍卫游戏生命 严厉打击挂机外挂！</STRONG><BR>类型：其它公告&nbsp;&nbsp; 评分：+8 总分：76<BR>评论：在6月份的时候，梦幻国度已没有什么能挽留玩家的，这个时候，官方对于外挂的打击成了部分玩家留下来的理由。毕竟是盛大第1次如此认真的对待外挂问题，很多玩家抱着这个想法留了下来。而官方高姿态打击外挂也一时传为美谈，让不少准备离开的玩家重新有了留下来的理由。<BR>【废话】坦白说我在技术方面可以说是白痴一个，但通过大量的浏览外挂论坛与梦幻国度有关的技术讨论帖子，我发现了有用的信息。a.梦幻国度依然是采用了传奇的引擎架构的，且很多方面都与传奇无二；b.梦幻国度的图象资源可以使用传奇世界的图象资源提取器进行查看；c.盛大在梦幻国度研发之初就考虑到了通过技术手段来对抗外挂，所以梦幻国度在反挂方面拥有很多优势。d.盛大首次高姿态与外挂进行冲突。（其实在英雄年代的时候，盛大也曾经打击过外挂，并且让第1代英雄年代外挂绝种了，但面对第2代外挂，考虑到经济利益，盛大最终还是放弃了对抗。目前英雄年代的外挂在收费后基本上没有受到大的影响。）归类一下：1.梦幻国度就是Q版的传奇。2.梦幻国度在反挂方面拥有其它游戏不具备的优势。3.盛大首次高姿态向外挂宣战。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-6-3 6月4日版本更新焦点问题解答</STRONG> <BR>类型：重大更新&nbsp;&nbsp; 评分：-20 总分：56<BR>评论：这次改版调整了多项游戏设定，同时也增加了部分新的元素。海贼王的野心上面已经论述过了，这里略过。<BR>&nbsp;&nbsp;&nbsp; a.圣火令任务优化<BR>&nbsp;&nbsp;&nbsp; 这次优化实际上增加了任务的难度，大幅度降低了任务的奖励。（本来是稀有物品，在此次改版后变成了彻头彻尾的垃圾奖品。）不仅如此，还修改了战士的诱惑技能。使得战士无法诱惑非主动攻击的怪。 -5分<BR>&nbsp;&nbsp;&nbsp; b.修正了送信中不合理的设定<BR>&nbsp;&nbsp;&nbsp; 方法比较粗暴，没有考虑过玩家的感受，虽然对游戏长期发展有好处，但短期的负面影响相当大。（其实这个问题2测就解决了，不知道为什么公测的时候没有采用解决后的方案，难道说同一个问题短期内犯2次错误是盛大的传统，哎~~~这个也太BT了，电光火石弄一下流失了一批玩家，现在送信又来一下，又走了不少玩家，不知道盛大还有什么BT的传统，寒一下） -5分<BR>&nbsp;&nbsp;&nbsp; c.炎魔危机改版<BR>&nbsp;&nbsp;&nbsp; 活动名字变成了拉尔斯公爵来了。内容也有比较大改动。之前是炎魔本身强大，战胜炎魔靠的是实力与药品的数量。可能是盛大觉得这个任务没得让玩家付出什么代价，所以改版后的拉尔斯公爵来了增加了任务对于金钱的消耗。而且这个金钱消耗是非常巨大的。做一个横向比较吧。这个任务的目的就是收集制作装饰品外套的材料，在改版前要获得同样的材料，需要付出1组HP600的红药，折合当时的市价在5W左右，而如果在改版后要获得同样的材料，则需要消耗24W以上的金钱。而且前面是折合市价5W，而实际上可以说是0成本，毕竟红药可以在平时练级的时候积累。而后者消耗24W的金钱却是必须花钱才能拥有的，在练级中无法获得，所以说这次改版几乎是废了这个活动。而且还让玩家产生了厌恶情绪，是一次比较失败的改版。&nbsp; -7分<BR>&nbsp;&nbsp;&nbsp; d.火焰公房改版<BR>&nbsp;&nbsp;&nbsp; 个人觉得这次改版的难易度控制非常好，可惜的是，这个任务不应该是以这样方式面对玩家。毕竟这个任务考验的是团队合作，而陌生的玩家之间哪来的默契合作呢？再有，这个任务的奖励相对游戏难度来说也是明显不合理的，问题很多，可盛大没有正视过这个问题，而且采用比较容易的办法，回避问题，通过简单的把难度降低来迎合玩家当下的需要，敷衍之色显露无疑。-7分<BR>&nbsp;&nbsp;&nbsp; e.增加高级资源出售的NPC<BR>&nbsp;&nbsp;&nbsp; 这个NPC推出之前就备受争议：一方面推出这个NPC影响了游戏内的平衡，直接导致圣火令任务的最终奖励变成垃圾。另一方面，如果不推出这个NPC，又无法解决高级玩家的装备玩家。毕竟这些高级资源当时游戏内没有怪物爆出，也无法合成，只能通过挖宝，靠极少的几率拥有，所以，这个问题惹得大量高级玩家怨声载道。对于这个问题，盛大同样采取了最简单的办法，回避问题的根本原因，而是直接以NPC的方式出售这些稀有资源。不过短期内对游戏还是有积极的作用。+4<BR>【废话】6.4改版给我最深的印象就是官方对于游戏的敷衍，对出现的问题不是深入分析导致问题的本源，而是选择如何简单的对付，这让很多玩家对游戏彻底失望了。游戏的问题可以很多，但官方的态度却不能如此，我想很多玩家都是这样想的。官方敷衍玩家，换来的只能是玩家的唾弃。即便你花费太多的推广费用，也不过是昙花一现。<BR><BR></P>
<P><FONT face=Verdana><STRONG>2005-6-7 《梦幻国度》宠物二转形象由你来决定</STRONG><BR>类型：游戏介绍&nbsp;&nbsp; 评分：-3 总分：53<BR>评论：梦幻国度的特色之一按理说应该就是宠物，而作为游戏核心的宠物系统又是如何的呢？把以前固定NPC的功能，变成了跟随玩家的移动NPC，把一个NPC变成千万个NPC，这就是梦幻宠物系统的技能部分。虽然每个玩家的宠物有个体差别（比如名字），但做出来的东西却是一模一样的，不知道这和一个NPC做出来有什么差别，而且还极大的浪费资源。而游戏内真正的极品装备，根据本人多方考证，是从地里挖出来的，而不是宠物制作的，而那些真正的极品，一个服务器只有1件，属性也超级BT，比如+175%敏捷的37级手套、加0-238魔防的1级初心者帽子，0-255攻击的14级衣服...拥有这样的装备，才能体验到什么叫真正的无敌，就以我所在的区为例。拥有0-238魔防的1级初心者帽子的人，名叫赋天，根据我和他的聊天了解到，这个帽子是另外一个人挖出来的，而他花费了400W梦幻币购买的，根据当时的市价折算RMB，大概是200元。而拥有这个帽子后，即便是游戏内最恐怖的高级练级点，1点的新人也能毫发无伤，当然了，他用这个帽子参加火焰工房活动是从来没失败过，毕竟即便游戏内的高级法师，全身的装备加起来也不到150的魔防，而1级的帽子却有238的魔防，这样不平衡的游戏也就梦幻国度中才能出现吧，这个现象存在了40天以上。在我离开梦幻的时候，据说这个帽子才被盛大没收，那已经是6月27日了...梦幻国度的宠物缺乏实用性与个性化，导致玩家也逐渐从宠物的内涵研究转变为宠物的外观欣赏了（想当初内测和公测刚开始时，多少人研究宠物的属性点啊，现在呢？早就绝迹了，因为玩家已经知道了，这个游戏中宠物系统中包含的属性点没有任何研究的意义）。而冲1测开始就开放了6种宠物，到了2测试只剩下了5种宠物，很多玩家还在想怎么大家非常喜欢的狸猫没有了呢？一直到了7月初，听QQ群里一个朋友说，盛大已经出公告了，狸猫宠物800元RMB一只，要的必须出钱。看到这个消息我一点儿不吃惊，当初1测的时候玩家最喜欢的就是那只宠物，而到了2测这只宠物就没了，公测也没开放，那么剩下的肯定就是增值服务了，不过个人还是没想到价格会那么高，居然要800元RMB一只，这个宠物也就是一个外观好看，又没什么实际用途。另外，我一直觉得盛大会高价卖极品宠，比如1级属性总值在20以上的宠物或30以上的超级宠，或50以上的传说宠，或80以上的神宠，估计等到那天的到来时，价格也是几百几千一只吧，呵呵~~~盛大的本色就是赚钱嘛，也无可厚非了...但是呢？你赚钱归赚钱，只要应该多拿出一点儿诚意吧。看看盛大的宠物2转形象吧，100%抄袭口袋妖怪/宠物小精灵，有的是直接临摹（就是照着原画一模一样的弄出来），有的时合成（把多种口袋妖怪的特色弄到一起）。盛大公布的10种2转宠物形象，竟然没有一款是原创，这不能不让我震惊。（我也是听其它玩家提到盛大的2转宠物是抄袭了宠物小精灵后，下载了超过400级宠物小精灵，从头开始看，从纯白镇看到宝石大陆，然后又是各个OVA短片，对于27岁的人来说，看这个动画是很痛苦的，毕竟有代价啊...555）而且，在看片中间，还发现原来梦幻国度整个游戏都是抄袭的口袋妖怪的创意。（从背景设定到怪物设定，都抄袭了口袋妖怪）不知道盛大跟小日本购买过版权没有。因为公布的2转宠物形象，不少看过口袋妖怪的玩家都离开了游戏，当然了，那些不知道口袋妖怪的玩家，绝对2转形象还是不错的。<BR>【废话】按理说如果盛大和口袋妖怪的版权所有者有协议的话，应该会见到相关的新闻吧。毕竟口袋妖怪在14岁以下的玩家中还是比较有影响力的。但我仔细的搜索了一下，的确没有发现相关的新闻。还说是国产原创网游，到底什么地方是原创的呢？玩了3个月，我的确没有感受到原创的味道。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-6-9 10分钟封闭外挂！《梦幻国度》打击外挂不手软<BR></STRONG>类型：其它公告&nbsp; 评分：+7 总分：60<BR>评论：这则公告的确对游戏内的玩家鼓舞很大，很多不使用外挂的玩家对盛大屏蔽外挂的效率和能力都大加赞赏。而这个被屏蔽的倒霉外挂，也就是短命的梦幻无限，作者也在这个公告2周内宣传放弃开发了。<BR>【废话】到了6月份，能让玩家安心留下来玩梦幻国度最重要的原因，应该就是盛大的反挂效率了。的确是非常优秀，甚至比英雄年代前期对抗外挂时效率还高，真正做到了发现一个屏蔽一个。但在盛大高姿态强势应对外挂时，梦幻国度的外挂是不是就真的消失了呢？经过本人多方打探（特别感谢几位给我提供外挂线报的朋友），梦幻国度的外挂其实一直都存在，分为两类：BT外挂与非BT外挂。非BT外挂的功能也就是挂机练级、跑信赚钱、宠物摆摊几项主要的功能。代表外挂为：梦幻宝贝。BT外挂目前还不知道名字，但本人有幸在游戏内见过，并且把相关经历告之了盛大的朋友，结果不知道他们查出来没有。根据本人的目击：BT外挂拥有移动加速、攻击加速（1秒攻击3下左右）、刀刀抓狂（战士技能）、稳如泰山（被怪攻击无停顿）、超屏攻击（法师技能）几项，其它功能不项，但最近出现的梦幻小蜜，本人特地试用了一下，比较好用，跟传奇的冰橙子差不多，功能比较完善，但并不BT，属于非BT游戏辅助内挂。这个外挂极大的简化了游戏的操作，相对而言，这个内挂在一定程序上加强了战士的练级效率，推荐游戏内战士玩家试用。这个外挂好象是7月份新出的，到目前为止，还没听说盛大有针对他的举措，不知道是不是收费临近，盛大反挂策略软化了呢？另外，收费后的梦幻宝贝脱机版据传个人版价格高达300RMB，网吧版1000RMB，估计能用的人应该不多吧。也许正是考虑了以上因素，对梦幻宝贝的打击最近好象也有放缓的迹象。<BR>&nbsp;&nbsp;&nbsp; 总之，梦幻国度的外挂官方还是控制得比较好，而且从多次与外挂的较量中玩家也看到了官方的能力，所以厌恶外挂的玩家在梦幻国度中应该能获得暂时的宁静吧。但收费以后呢？暂时还不知道，希望盛大能坚持下去吧。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-6-10 文化部重拳出击！“简单游”外挂3天覆灭<BR></STRONG>类型：其它公告&nbsp;&nbsp; 评分：+0 总分：60<BR>评论：刚开始看到这则公告的时候，无论是使用外挂的玩家还是外挂的制作者都受到了一定程度的震慑，但是...仅仅过了3天，盛大的谎言就破灭了。（详情见2005年6月13日 《天下创世郑重声明：简单游的道义》一文）<BR>&nbsp;&nbsp;&nbsp; 当盛大在梦幻国度官方网站发布“简单游”外挂3天覆灭的消息之后3天，简单游竟然又复活了。而且通过简单游官方的说明，简单游之所以暂停了几天仅仅是补办《网络文化经营许可证》，哈哈如此一来，盛大所谓的文化部重拳出击，简单游3天覆灭的谎言也就不攻自破了，知道这个消息后我迅速留意了梦幻著名外挂：梦幻宝贝制作者的动向：在盛大发布这则公告的时候，梦幻宝贝也开始回避了，可见这则公告的震慑力是相当大的，但当大家都知道原来是盛大的一个谎言后，仅仅过了2天，6月15日，梦幻宝贝再度重拳出击！恢复挂信跑钱功能，一时梦幻国度外挂玩家奔走相告。（需要说明的是梦幻宝贝作者经常说跑信刷钱影响游戏平衡，所以屏蔽了外挂的跑信刷钱功能。）<BR>【废话】宣传固然重要，但后果最好也能提前预知，盛大的谎言欺骗了外挂制作者一时，但当对方醒悟的时候，报复起来可是不留半点情面的。而对于广大普通玩家呢？也许大家对盛大的谎言已经习以为常了，我当时针对这个问题随机询问了多位梦幻国度的玩家，几乎意见都是一样的：早知道了，盛大除了骗人干不出什么好事。</FONT></P>
<P><FONT face=Verdana><STRONG>2005-6-13 为100分努力！“为梦幻国度加分”行动 <BR></STRONG>类型：其它公告&nbsp;&nbsp; 评分：+0 总分：60<BR>评论：不知道盛大的这个加分的根据是什么呢？其实本文的初衷也是因这个公告而起，所以花费了数日来完成本文。盛大的官方加分行动，与我的玩家评分行动，到底谁才是游戏的真相呢？我想时间会证明一切的。正如2004年5月我撰文分析神迹、2004年8月评论英雄年代一样，时间会证明一切，无须争论什么。</FONT></P>
<P><FONT face=Verdana>1.3 小结<BR>1.3.1 分类分析：<BR>1.3.1.a 重大更新：<BR>&nbsp;&nbsp;&nbsp; 仔细分析一下：从内测到公测，我们接触这款游戏的时间已经半年了，但重大更新只有2次。即3月25日开始的2测与6月4日开始的海贼王的野心。也就是说平均2个月进行一次重大更新。而这两次到底增加了什么内容呢？<BR>&nbsp;&nbsp;&nbsp; 第1次重大更新增加了枫叶岛地图（包括爱物堆）。更新了任务系统，添加了1~14级剧情任务、挖宝任务、送信任务、猎奇任务、赏金任务。<BR>&nbsp;&nbsp;&nbsp; 第2次重大更新增加了海底地图（包括水晶宫）。更新了任务系统，添加了15~25级剧情任务、拉尔斯公爵任务、火焰工房任务。<BR>&nbsp;&nbsp;&nbsp; 如果说第1次重大更新除了增加了新地图，还对游戏内进行了翻天覆地的改动：如增加新手辅助系统、职业技能学习顺序以及等级限制，更变了游戏内的其它设置：比如掉落资源，合成物品。金钱获取主要通过送信，而装备获取主要通过挖宝。<BR>&nbsp;&nbsp;&nbsp; 相比而言，第2次重大更新仅仅增加了海底水晶宫，对游戏的调整相对很小。<BR>&nbsp;&nbsp;&nbsp; 如果我们能理性的深入分析一下：1月底到3月底，2个月，主要增加的是枫叶岛地图以及爱物堆怪物。而从3月底到6月份，3个月之间，游戏内只增加了海底地图与部分海底怪物。也就是说，游戏更新的图象资源在减少。我们是不是可以通过现状进行一下推理呢？为什么3月份就出现的图象资源紧缺而不得不大量重复使用相同的图象资源，而到了6月底问题依旧，难道盛大真的是没有美工了吗？<BR>&nbsp;&nbsp;&nbsp; 不，美工的确有，他们已经在这3个月中紧张的参与了海底地图及怪物的创作，而无暇顾及之前遗留的大量工作，所以，一个问题出现了3个月依然如故。不是不能改，也不是不愿改，是因为精力有限、人手不足所致。为什么会出现人手不足呢？有3个原因：1.高层无知妄为，事先把开发计划排得太满；2.策划人员一意孤行，缺乏团队合作精神。3.项目组的美工人员出现了大量的长期缺席现象。（是生病还是离职就无从知晓了）<BR>1.3.1.b 游戏调整:<BR>&nbsp;&nbsp;&nbsp; 游戏内出现的重大BUG修正与游戏调整在9次以上。如果我们仔细研究一下出现的各类失误。可以发现一个规律：那就是所有问题其实本质上都犯了同一个错。那就是对游戏不了解，闭门造车，想当然的修改游戏。这样的例子太多了，我就不列举了。这3个来月的体验中我深深的感受到一点：对于游戏的重大修改，官方的决定好象碰运气一样，如同儿戏。所以改一次错一次。（盛大也真够背的，呵呵）为什么没有经过实践论证的问题就可以轻易的决定修改呢？有3个可能性。1.高层负责人对游戏不关心，只负责签字或全权委托下属。2.游戏策划的心思不在游戏中，而不知飘哪里去了。3.项目组的决策人对游戏不仅缺乏了解，且听不进任何建议。（至于具体的原因，我也不无从知晓。）<BR>1.3.1.c 游戏介绍&amp;其它公告<BR>&nbsp;&nbsp;&nbsp; 关于游戏的介绍，从2004年我玩神迹的时候就开始有所耳闻了，当然，集中获得相关信息还是在2004年年底的时候，而决定全身心投入梦幻国度的研究则是在3月份了。对于游戏的介绍，我分析相关人员应该是中文系毕业或对现代汉语比较有研究的，且有丰富的传统广告经验，与敏捷的思维。所以在各类游戏介绍公告中尽可能的运用模糊、夸张、联想等传统修辞手法，加入当今流行的BT精神，配上让玩家YY的词句...只要自己的胃受得了，多恶心的公告都写得出来，也不管是不是事实，与事实相差又有多少。反正老子几千年前就说过：智慧出，有大伪。玩家产生了歧义，解释一下、澄清一下就敷衍过去了，然后猫一边偷笑。但事实上，这位高人的如意算盘屡遭意外，很多时候，官方自以为圆满的解释或公告，其实不过是愚人自愚而已。其中最明显的莫过于电光火石的BUG修正公告，呵呵~~~</FONT></P>
<P><FONT face=Verdana>1.3.2 综述<BR>&nbsp;&nbsp;&nbsp; 对于付出3个月时间体验的梦幻国度，截止2004年6月份底，我个人的评分为60分。坦白说，有点出乎我的意料。直觉告诉我梦幻国度真的很糟糕，但到底有多糟糕呢？我其实也不知道，经过这几天的回忆与分析，发现梦幻国度其实并不是一无是处的。至少梦幻国度的配色比较鲜艳、明快，让玩家一进入游戏就能拥有好心情。而新手帮助系统经过内测1个月的努力也相当的完善了，玩家从进入游戏到游戏内各项功能的使用都有很好的辅助说明，这点还是值得肯定的。在新手阶段，为了激发玩家的兴趣，官方采用了非常规做法，也就是让玩家在1~9级经历一个由易到难的游戏体验过程，这个尝试还是非常不错的，也很成功。在游戏的战斗方面，无论是移动、还是战斗都比较爽快，没有丝毫多余的累赘动作，相比而言比国内某些九流游戏的确是强很多了..<BR>&nbsp;&nbsp;&nbsp; 可能是因为当初期望太高的缘故吧，所以一开始很多人（包括我）就把梦幻国度定位于WOW的对手。而事实上梦幻国度远远达不到那个要求，目前它仅仅是一款生命周期2个月的休闲网游。一个玩家从接触梦幻国度到完全离开，2个月足够了，如果继续呆下去，剩下的只能是遗憾多过快乐。（当然了，这句话仅在2005年6月27日前有效，以后怎么样，不知道...）</FONT></P>
<P><FONT face=Verdana>PS:以上分析纯粹以玩家视角对根据官方运营的现状给出的评分以及简单分析，不代表对游戏本身的分析。针对游戏的全面分析帖将在最近公布。</FONT></P></FONT></FONT></FONT></FONT><img src ="http://www.blogjava.net/yangsail/aggbug/8577.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-27 21:37 <a href="http://www.blogjava.net/yangsail/archive/2005/07/27/8577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我眼中的任务系统</title><link>http://www.blogjava.net/yangsail/archive/2005/07/26/8506.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Tue, 26 Jul 2005 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/07/26/8506.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/8506.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/07/26/8506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/8506.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/8506.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana>本文所有看法成立的前提：游戏不只是消耗时间的工具！ <BR>曾经看过一位好友玩梦幻西游，不断的重复从一个地方跑到另一个地方，就能够获得系统给予的金钱和经验的奖励。我问他：“这很有意思吗？只是在重复的跑动而已，我不知道这算什么游戏！”答：“虽然老是跑来跑去好无聊，但是总比重复打怪轻松的多！我跑的效率很高，一般人跑两个小时赚的钱和经验没有我一个小时赚的多！”我又说：“这能改变它无聊的本质吗？”答：“现在的游戏不都是耗时间吗？反正这个我不花钱，用跑来的钱换点卡就行了。玩呗！” <BR>我只能选择沉默，因为他说的全是事实。但那不是游戏，只是消耗青春的工具。我既不愿意继续做消耗青春的主体，也不愿事实继续伪装成真理。于是有了“目标策划”的念头。 </FONT></P>
<P><FONT face=Verdana>一、在任务中成长！ </FONT></P>
<P><FONT face=Verdana>1、任务的相对难度和玩家当前的状态应该是密切相关的！ <BR>伴随着玩家在游戏中的进度，玩家应该始终面临和自己身份角色相当的游戏任务。比如：初期只是做一些新手任务、到中后期就可以做一些和职业情节相关的任务。 </FONT></P>
<P><FONT face=Verdana>2、在任务中成长VS为成长而任务 <BR>以上只是“在任务中成长！”的第一层含义；深一点来看，相对与“为成长而任务”。玩家为提升自己的等级，在游戏的过程中持续做一些给予经验的任务；这是一种从怪物身上剥离出经验和金钱，变成一种给予对等奖励的任务；表面上是玩点的丰富化，实际上成为本来就枯燥无味练级的沉重负担。 <BR>失败的典型：A3 <BR>以A3的任务系统首当其冲，是功利性极强的任务系统；任务N多，但是流程很简单。找NPC接任务——→杀任务指定的怪物——→回去交付任务——→获得奖励（金钱、经验） <BR>A3的任务系统是完全依附在玩家练级的过程中的，可以看作是成长的一种手段。看下表的对比： <BR>&nbsp; <BR>1 2 3 4&nbsp;&nbsp;&nbsp;&nbsp; <BR>找NPC接任务 杀任务指定怪 回去交付任务 获得奖励&nbsp;&nbsp;&nbsp;&nbsp; <BR>找NPC买补品 杀当前级别怪 杀怪掉落物品 再次购买补给&nbsp;&nbsp; <BR>可以看出，做任务和打怪练级的流程是结合在一起的；玩家在NPC处购买任务和补给品，再去杀当前级别最合算的怪物（一定有对应的任务怪），杀了足够数量的怪物时玩家的补给品也消耗的差不多了，再次回到村庄补给和接任务。 <BR>如此循环，做任务也变成了升级的一部分。听高级别的A3玩家说过，所有做任务的钱和打怪掉的钱刚好能购买当前级别所需要的装备。似乎就是把练级所能获得的经验和钱拆分成两部分，一部分变成了传说中的任务！ <BR>高丽人拿着手中的栗子，说：“嘿！猴子们！朝三暮四好吗？” <BR>可惜中国人早就知道这个道理，所以A3一副半死不死的样。 <BR>赚足钱的角：梦幻西游 <BR>为成长而任务是一种很枯燥的任务系统，但是依然会制造出游戏业的成功者。最有代表性的就是梦幻西游了，其师门任务已经完全脱离打怪，变成一种只需要跑动就能够获得经验和钱的任务，从根本上替代了网络游戏的练级，这改不掉它枯燥的本质。但是它是成功的，因为他赚够了钱。 <BR>但是真正让他赚够了钱的不是师门任务，而是将三类不同玩家完美的整合在一起了！游牧民、贵族、新手。 <BR>游牧民：游牧民的特点是虽然有不少的时间，但是金钱上拮据，他们不愿意也不可能在一款游戏上投入大量的金钱，加上 <BR>贵族：贵族们有足够的人民币，他们也许在时间上并不富裕；但是他们也想在虚幻的世界有自己的一席之地，去满足他们那自我满足的虚荣心。 <BR>新手：没有玩过任何的网络游戏，他们需要一个比较繁荣的游戏，最好还有一些朋友；这样他们就可以很容易的进入这款游戏。 <BR>结合！：游牧民在游戏中通过跑商等任务赚钱获得经验和钱，提升自己级别的同时，用获得虚拟货币，在系统中购买贵族寄售的点卡。（游牧民解决了人民币不够的问题）贵族用人民币购买游牧民的游戏币，用钱堆积起一个个人民币战士；由于有足够多的游牧民维持系统的繁荣，贵族们的强大变的有炫耀之地，他们于是愿意丢钱进去！“这个游戏很多人玩的！”一句话，吸引了无数不知游戏为何物的新手；他们自觉也不自觉的将自己划入不同的游戏阶级中，于是梦幻西游成功了，在萧条的网络游戏背景下。 <BR>在任务中成长——我的定义 <BR>任务应该是伴随玩家成长，了解游戏世界的手段；当玩家完成旧的任务时，等级能力各方面应该获得提高，而同时也会面临新的任务。任务应该是构架与世界背景之下的，玩家通过做任务去了解自己所在的游戏世界的文化，就好比小说中的故事情节。 </FONT></P>
<P><FONT face=Verdana>二、任务的新鲜感觉 </FONT></P>
<P><FONT face=Verdana>关键字：新鲜感 <BR>人之所以有玩游戏的需求，有一点可以十分肯定；那就是现实生活往往是有规律的，每天都在重复中度过。这产生一种很强的疲劳感和无聊感，于是有人开始玩游戏，他们在游戏中能看到许多现实生活中看不到的东西，这让他们觉得很好奇！可是一旦这些东西也被他们所熟悉时，没有其他东西可以吸引他们的情况下（比如：人于人的竞技性），游戏就变的不是那样有意思了！ <BR>所以，个人认为，游戏一定要给人新鲜的感觉！ </FONT></P>
<P><FONT face=Verdana>1、接任务的新鲜感觉 <BR>&nbsp;&nbsp;&nbsp; 接任务的新鲜感觉，就好比现实生活中一些随机和偶然的事件；比如走在路上突然有人搭讪的感觉，再比如在教室里上自习突然发现脚下有十块钱！ <BR>现在网络游戏的任务一般固定在NPC的身上，玩家需要找到正确的NPC激活对应的任务；然后完成任务再找NPC寻求奖励！ <BR>以下是我现在所想到的增加接任务的新鲜感的方式： <BR>从怪物身上掉落任务卷轴！ <BR>按规律在游戏中移动的NPC，遇上游戏玩家时会给予任务！ <BR>当玩家达到某些条件时，会收到NPC写给玩家的信，可以在NPC处激发隐藏任务！ <BR>玩家每天可以在NPC处接一随机任务，任务的奖励也可以是在几种物品之中随机选择的！ <BR>游戏世界定期发生，所有玩家的行为决定任务的结果！ </FONT></P>
<P><FONT face=Verdana>2、任务奖品的新鲜感 <BR>玩家在任务中获得的奖品应该是具有一定的特殊性！如果任务中获得的奖品可以轻易的被其他的方式所替代，那玩家往往会选择更加简洁和方便的方式来替代任务。再者，如果游戏任务给予的奖励不能够给予玩家足够的兴奋感，玩家也很难提起对游戏任务的兴趣。 <BR>正面的典型：魔力宝贝 <BR>魔力宝贝的任务奖品系统是最丰富多猜的，有别与一般网络游戏只给一些经验、金钱或物品（可替代品）；魔力宝贝往往奖励一些称号、首饰（无法通过其他手段获得的属性）。 <BR>现在还记得当初玩魔力，做“传说中的勇者”任务，看到别人有这个称号，不顾一切也要做完任务获得称号，有了称号以后又在服务器里整天整天的溜达，生怕别人不知道。 </FONT></P>
<P><FONT face=Verdana>3、任务的故事情节 <BR>任务应该建立在曲折的故事情节之上，最少应该建立在曲折的迷宫之上！如果任务只有时间、地点、人物、事情，那将是毫无吸引力的！拖个反面例子出来先：（来自A3） <BR>初次出发 <BR>这是第一个任务! <BR>在艾高尼打猎最软弱的怪物巨枭10只后 <BR>找到1个巨枭的耳朵去送给艾密叶吧。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; 再来看看暴雪在魔兽世界一个叫完美烈酒的任务吧，为了让玩家融入任务的背景之中。做了一段算是挺长的背景描述，这很容易吸引玩家进入游戏设计者预想的状况之中！ <BR>完美的烈酒 <BR>任务目的: 　帮Brewnal村庄的瑞旧德找到6个微光草。 <BR>任务说明：　我正在寻找制作完美烈酒的方法，我肯定能找到它的。我有酿造的天分。只要让我找到合适的处方就能做到了，霜鬃巨魔有一种植物-微光草，他们在东北方向的洞穴里。他们拿它当成一个奇草用在部落的典礼上，我们矮人到没有发现它有什么大用处。不过他尝起来相当奇特。我想也许能够拿来酿酒。 <BR>　从霜鬃巨魔那里帮我找到一些微光草。你只要从巨魔的篮子直接拿就行了。 </FONT></P>
<P><FONT face=Verdana>三、链状的任务 </FONT></P>
<P><FONT face=Verdana>关键字：链状任务 应用范围 <BR>链状任务是在任务链之中，前一个任务是后一个任务的前提条件；必须从完成第一个任务切入任务链之中，才能继续完成下面的任务。链状的任务适合描述故事的发展，适合伴随玩家的成长，也适合做一个欲望的诱饵。 </FONT></P>
<P><FONT face=Verdana>1、故事情节的发展 <BR>&nbsp;&nbsp;&nbsp; 例子：魔力宝贝 <BR>不好意思，又是魔力宝贝。魔力宝贝的主线任务并不刻意强调其链状特性；但是当玩家在一个环境下成长的羽翼丰满，会自然而然需要完成新的任务，进入下面的游戏环节。采用链状的方式，能够最好的诠释故事的发展。 </FONT></P>
<P><FONT face=Verdana>2、伴随玩家的成长 <BR>新手入门任务基本上在每款网络游戏都会出现，是伴随玩家成长的典范。一款网络游戏如果不是操作极其简单，那就需要一个好的新手入门系统；如果一款游戏上手十分困难，难到有点象在学一门新的语言或手艺，那么玩家在被游戏的乐趣所吸引之前就有可能放弃。 </FONT></P>
<P><FONT face=Verdana>3、永远抓不到的香蕉 <BR>&nbsp;&nbsp;&nbsp; 永远抓不到的香蕉！如果一定要将链状任务和玩家比做什么的话；我喜欢把玩家比做猴子，把链状任务比做香蕉。怎么样能够让玩家变的更加积极？更加充满兴趣？简单的来说就是香蕉永远在前方，但是你却永远差那么一点点抓到的过程！ <BR>自己想了个简单的例子来说明怎么样用香蕉吸引猴子。 <BR>链状任务的前后两个分别是：“蜘蛛线”“白狐皮”。玩家在完成“蜘蛛线”的任务时，NPC给予新的任务“白狐皮”。任务描述：真的很感谢你帮我收集蜘蛛线，用这东西缝制的衣服再结实不过了；用来缝制一般的材料真是浪费，如果能够得到充满灵力的白狐皮，我一定能够制作出“白狐皮衣”。即使是普通人穿上它也能拥有无穷的力量！年轻人，再帮我收集一些白狐皮吧。如果数量够多的话，作为报答，我将为你免费制作一件“白狐皮衣”。 <BR>&nbsp;&nbsp;&nbsp; 玩家在这种情况下，很自然的就会继续下去；因为“白狐皮衣”的诱惑。（注：如果白狐皮衣丢的一地都是，随便打个怪就掉，或者在商店里就能买到。那么这个任务将彻底变的无趣！因为遍地都是香蕉，你手上拿的那一根对猴子已经没有任何吸引力啦！） </FONT></P>
<P><FONT face=Verdana>四、非线性的任务 </FONT></P>
<P><FONT face=Verdana>关键字：非线性任务 封闭式 开放式 <BR>&nbsp;&nbsp;&nbsp; 游戏绝对是不同与小说的艺术形式，游戏往往能带给玩家更强烈的参与感；因为玩家在面临问题的时候能够做出自己的选择，小说不可以。 <BR>每个人的思维方式、人生观、价值观是不一样的，于是在相同的情况下，不同的人会做出不同的选择；而这些不同的选择所带来的结果是不一样的，这种对外部事物的改变能力能够给予玩家最强烈的自身价值认同。 </FONT></P>
<P><FONT face=Verdana>1、封闭式非线性任务 <BR>在任务之中多添加一些选择，在不同的选择之下，最终可能都能够完成任务；但是完成任务的路径不同，最后获得的奖励也不同。 <BR>拿“完美的烈酒”制造一个非线形的任务吧。玩家来到霜鬃巨魔所居住的洞穴前，发现门口有两个巨魔守卫。这时候弹出任务提示：杀掉门口的守卫有可能会惊醒洞内的霜鬃巨魔，看看周围有没有什么秘密入口能够进入洞穴之中吧。 <BR>这时候，玩家面临选择，是杀掉巨魔守卫直接冲进去还是找秘密路口；杀掉巨魔守卫会引来巨魔酋长与玩家作战，如果玩家能力足够强的话能够与之对抗，否则有可能无法完成任务。 <BR>玩家在附近转了转，发现有一个小洞能够爬进洞穴之中；于是玩家选择爬入洞穴之中。在洞穴之中转了会，终于发现了微光草。当玩家将微光草放在手心时，发现这种东西拥有神奇的力量，能够减缓体力的消耗。 <BR>这个时候，玩家自然而然就面临选择了。是将微光草交出来？还是自己留着。 </FONT></P>
<P><FONT face=Verdana>2、开放式非线性任务 <BR>开放式非线形任务，是在游戏世界某些条件达到以后；系统自动激活，所有玩家将共同面临出现的状况，玩家可以感觉的到因为自己的选择，游戏世界发生的变化。 <BR>例子：玩家大量的猎杀怪物，怪物们对玩家的仇恨达到一定程度。激发任务“怪物的复仇”，系统公告：“东南方有大批怪物正在集结，他们的目标是攻陷我们的城堡！去给予他们痛击吧！让他们滚会自己肮脏贫瘠的世界去吧！” <BR>玩家在这种情况下，将面临选择是否要去打击怪物呢？假设大部分的玩家选择不去杀怪物的话，就有可能出现怪物大量集结攻入城堡，难以抵挡的状况。 <BR>在网络游戏里还从来没见过这种任务形式，不过这有可能成为未来网络游戏最震撼人心的任务系统。 </FONT></P>
<P><FONT face=Verdana>五、任务中的怪物 <BR>怪物是任务系统十分重要的一个环节，强大的而智慧的怪物会让人激动兴奋！而愚蠢弱小的怪物会让人觉得索然无味。这和人生很象，当你击败了自己一直很想打败的人，你会变的异常兴奋和激动不已。 </FONT></P>
<P><FONT face=Verdana>1、时间的把握 <BR>当玩家已经将某个BOSS锁定为自己想要战胜的目标，那么在时间上，他将面临两个时间段。前一段，征途开始到到达BOSS所在的目的地。后一段，与BOSS作战。 <BR>在这两个时间段上，玩家在前一段时间将处于焦虑和好奇的状态。随着时间的推移焦虑和好奇的感觉将逐渐增加，最终到达一个顶点；然后开始下降，取而代之的是一种害怕失落抱怨的感觉，这种感觉也会越来越强。从前一段进入后一段的时间应该是玩家到达顶点之后的一点点时间，就是开始有些士气低落的时候。 <BR>与BOSS作战也一样，时间的把握应该是适中的。如果BOSS太弱小，游戏索然无味；反之BOSS太强大，玩家将彻底失去信心。 <BR>这种时间的把握并没有什么固定的公式可以追寻，只能是一种大概的感觉。 </FONT></P>
<P><FONT face=Verdana>2、怪物的强大程度 <BR>怪物的强大程度应该是适中的，不断的让玩家有心惊肉跳的感觉，但是也不断的让玩家感觉到希望就在前方，只要再坚持一下就能打败他！如果怪物太过弱小，几下就轻易的被解决掉，那很无趣；如果怪物太强大，给人的感觉象是不可战胜，那玩家也会失去战胜怪物的勇气。 <BR>鄙视一下：鄙视有些游戏，法师用魔法远程打击怪物，怪物一直跟着跑就是打不到法师，一直到被打死。尤其是一些BOSS级别的怪物也这样！这很无聊，玩家很快就会从为自己的小聪明洋洋得意而转变为提不起精神来。 </FONT></P>
<P><FONT face=Verdana>记：以上是个人对游戏任务系统的看法了，只是一家之言，离专业差很远，表达能力也不太好；只是根据自己对游戏的思考和对游戏策划一职的向往，写下来的东西。希望自己能够找到游戏策划的工作。人应该为理想活着吧。</FONT></P><img src ="http://www.blogjava.net/yangsail/aggbug/8506.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-26 21:07 <a href="http://www.blogjava.net/yangsail/archive/2005/07/26/8506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网游服务器技术动态</title><link>http://www.blogjava.net/yangsail/archive/2005/07/24/8319.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sat, 23 Jul 2005 16:20:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/07/24/8319.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/8319.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/07/24/8319.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/8319.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/8319.html</trackback:ping><description><![CDATA[<H3 style="CURSOR: hand" onclick=switchDisplay(393)>网游服务器技术动态</H3>
<DIV id=excerpt_393></DIV>
<DIV id=content_393 style="DISPLAY: block">
<P><FONT class=NewsContent2>　 　与硝烟弥漫的网络游戏一样，在其幕后的网络游戏服务器市场同样也是战火纷飞，服务器作为网络游戏的“引擎”，承担着认证、存储、运行网络游戏软件的关键 任务。因此，网络游戏行业也成为了服务器厂商必争之地，浪潮、联想、DELL、IBM、HP、宝德、网新易得等厂商在此市场中混战撕杀。</FONT></P>
<P><FONT class=NewsContent2>　 　从去年开始，网络游戏业就开始进入一个高速发展期，不断有新公司进入，粗略估算，专门从事网络游戏运营的公司不下150家，网易、新浪、搜狐三大门户网 站更是先后跻身于网络游戏产业，并努力使之成为新的利润增长点。据计世资讯发布的网络游戏市场最新研究报告显示，截止到2003年年底，国内网络游戏用户 已经达到1900万人，而在2004年，网络游戏用户将达3200万，增长率高达72%。</FONT></P>
<P><FONT class=NewsContent2>　 　网络游戏给国产服务器厂商带来的是一个巨大的商业机会，而国产服务器的强势已经显现出来。浪潮、联想携国产服务器企业攻城拔寨，夺得超过65%的市场占 有率，前五大市场领先的服务器厂商中，只有一家国外品牌DELL。国产服务器厂商策略灵活、贴近用户、了解市场、产品研发针对性强，因此在网络游戏市场具 有得天独厚的竞争优势。虽然HP、IBM等传统强势厂商实力强大，但在竞争中并不占优，浪潮、DELL、联想、宝德、网新易得分别以26.5%、 23.7%、10.1%、9.2%、7%排得前五，如此格局在近期不会有大的变化。</FONT></P>
<P><FONT class=NewsContent2>　 　国产服务器的冒尖一方面是因为厂商对网络游戏市场进行了详细的需求分析，在2003年中多家服务器厂商针对网络游戏市场做了大量的市场工作，浪潮推出针 对中国网络游戏市场的“A”计划，很快该计划就得到了市场的回应，中国最大的网络游戏运营商上海盛大向浪潮购买了可满足8000万网络游戏玩家需求的近 3000千台浪潮服务器，此后，浪潮又成功地拿下了上海热线近千台服务器的订单。2003年浪潮服务器销售幅增达80%，在包括网络游戏的电信增值业务市 场业绩增长近两倍。而联想为销售服务器更直接介入网络游戏市场的开拓，2003年联想与中国联通、第九城市签署了共同建设和开拓网络游戏《奇迹》的市场合 作协议。根据协议，中国联通将投入自身的网络及服务器硬件设备、带宽；第九城市投入《奇迹》的内容资源和服务，为联通用户提供在线游戏；联想作为《奇迹》 指定设备提供商，将提供高性价比的服务器及其他硬件产品及与产品相关的各种售后服务。此外，联想发布了国内首款运用仿真技术制造的机架式服务器。</FONT></P>
<P><FONT class=NewsContent2>　 　另一方面也是很重要的一方面，是国产服务器在技术方面不断革新，以联想、曙光、浪潮为代表的厂商陆续推出了64位4路乃至8路高性能服务器，其技术已接 近或达到国际领先水平，在并行计算、容错处理、负载均衡、稳定性方面不亚于DELL、IBM、HP等国际品牌商的相关服务器产品。</FONT></P>
<P><FONT class=NewsContent2><BR><B>一、十大国产网络游戏服务器</B></FONT></P>
<P><FONT class=NewsContent2>　　<B>1.浪潮英信游侠服务器</B><BR>　　为网络游戏运营设计的第一款专业服务器，它突破传统观念，采用独有的大散热系统，特别适合网络游戏大规模部署应用。<BR>关键点：<BR>　　1U超高密度机架式设计，适合大规模部署<BR>　　基于多路Intel&nbsp;Xeon处理器，采用533MHz系统总线，全面提升系统性能<BR>　　集成Ultra320&nbsp;SCSI&nbsp;RAID技术，最大化系统运行时间<BR>　　集成2个千兆网卡，支持负载均衡和冗余技术，全面提升网络传输效率和安全性<BR>　　专业的无线缆连接技术和专业的散热风道设计，确保系统散热<BR>　　浪潮英信猎鹰服务器管理软件和蓝海豚智能安装导航软件，帮您提高系统管理效率</FONT></P>
<P><FONT class=NewsContent2>　 　浪潮英信NF180服务器在1U空间里全面应用业界新技术，以其高性能和高可靠性设计是大规模部署的密集计算应用、集群应用及主机托管完全信赖的平台， 是电信运营和服务商、石油、游戏网站的必然之选，NF180优秀的可伸缩性完全适合科学计算、Web、邮件、防火墙、FTP、VOD等应用。</FONT></P>
<P><FONT class=NewsContent2><I>最小的空间里提供最大的系统性能</I><BR>　 　浪潮英信NF180采用1U高密度设计，支持多路Intel&nbsp;Xeon处理器，主频可高达3.0GHz，采用533MHz系统总线，系统带宽可高达 4.3GB/s，全面提升系统的计算处理能力；NF180最大可扩展4GB&nbsp;DDR266内存，满足您的应用扩展需求；集成2个千兆网卡，支持负载均衡和 冗余技术，使网络传输效率和安全性都有更大的提升。&nbsp;</FONT></P>
<P><FONT class=NewsContent2><I>可靠性和可管理性设计，最大化系统运行时间</I><BR>　 　浪潮英信NF180采用具有先进纠错技术的ECC&nbsp;DDR内存，避免因内存错误而导致的系统不稳定；集成Ultra320&nbsp;SCSI&nbsp;RAID技术，实 现RAID1+hot&nbsp;Spare在提升磁盘读写速率的同时，确保您关键数据的安全；双网卡冗余大大提升网络的可用性；系统集成BMC高级管理卡，使您能 够通过Web进行远程开、关机等管理；浪潮英信猎鹰服务器管理软件和浪潮英信蓝海豚智能安装导航软件，有效帮您提高系统管理效率。</FONT></P>
<P><FONT class=NewsContent2><I>专业化散热设计，确保大规模部署</I><BR>　　浪潮英信NF180采用专业的风道设计并引入了领先的无线缆设计技术，确保系统散热效果，完全适合您进行大规模部署应用。</FONT></P>
<P><FONT class=NewsContent2><I>集成SCSI控制器</I><BR>　 　NF180集成单通道Ultra320&nbsp;SCSI控制器，磁盘传输速率可以达到320MB/s，突破磁盘I/O性能瓶颈，使对磁盘频繁读写的应用如数据 库、VOD、Web等性能有明显提升。NF180还集成了Ultra320&nbsp;SCSI&nbsp;RAID，无须添加的组件实现RAID1＋Hot&nbsp;Spare能够 确保用户的数据安全。RAID1＋Hot&nbsp;spare的工作原理是，两块硬盘作RAID1镜像，第三块硬盘作为热备份，作镜像的其中一个硬盘故障后，热备 份硬盘会自动替换，使数据的安全性更高。</FONT></P>
<P><FONT class=NewsContent2>　　<B>2.曙光天阔S240XP</B><BR>　　是一款定位在对计算能力、存储能力、管理性和稳定性要求都很高的应用行业的企业级产品。</FONT></P>
<P><FONT class=NewsContent2><I>可扩展性</I><BR>　　支持四路Intel&nbsp;XeonTM&nbsp;MP处理器，主频达1.6GHz，集成512K高速L3&nbsp;CACHE，最大可达1M，系统总线频率为400MHz；<BR>　　最大内存32GB&nbsp;DDR&nbsp;ECC&nbsp;Registered&nbsp;SDRAM，采用4栈交叉存取方式，大大扩充了内存总线带宽，提高了内存性能；<BR>　　内置超大容量硬盘阵列，可达1314G（18*73G）；<BR>　　集成双通道Ultra&nbsp;160（Ultra&nbsp;320&nbsp;）&nbsp;SCSI控制器，数据传输速率最高达160MB/s（320MB/s可选）,可连接所有类型的SCSI设备；<BR>　　具有三个3.5"和四个5.25"的存储舱位，可同时安装光驱、软驱、磁带机和非热插拔硬盘等I/O设备；<BR>　　提供六个64bit&nbsp;100MHz&nbsp;PCI-X插槽,&nbsp;大大提升了系统的I/O性能；<BR>　　支持Windows&nbsp;NT、Windows&nbsp;2000、SCO&nbsp;UnixWare7.1.1、Novell&nbsp;Netware4.11/5.0和Red&nbsp;hat7.3等网络操作系统</FONT></P>
<P><FONT class=NewsContent2><I>易用性</I><BR>　　大深度19英寸机箱设计，12U高度，配有保护门、机箱锁、键盘锁，可选配滚轮、底座或专用导轨及箱耳配合机架式安装；<BR>　　用户导航系统简洁、方便，信息集成度高，可轻松安装、配置；&nbsp;<BR>　　风扇采用自休眠、智能化控制，减少系统噪音，实现更高的安全级别；<BR>　　采用灵活有效的故障报告方式，在事故发生前解决系统隐患；</FONT></P>
<P><FONT class=NewsContent2><I>可管理性</I><BR>　　主板集成硬件监控芯片，监测主板、CPU、内存、电源、风扇、网卡等各种部件的运行状态；<BR>　　具备网络流量监测、事件日志及报警状态记录功能；<BR>　　支持网络唤醒（WOL－Wake&nbsp;On&nbsp;Lan）、MODEM唤醒（WOM-Wake&nbsp;On&nbsp;Modem）和远程关机、重启功能。</FONT></P>
<P><FONT class=NewsContent2>　　<B>3.联想万全R510服务器</B><BR>　　处理器为Intel0.13微米工艺制造，533MHz系统前端总线的Xeon处理器，支持超线程技术。</FONT></P>
<P><FONT class=NewsContent2>　 　联想万全R510是一台支持双路新Xeon的1U服务器，而且它还是一台最多支持4块3.5英寸硬盘的产品，在散热上遇到的挑战非比寻常，研发代号“火 山”。1U机箱可做得文章本来就不多，在安装了两个火热的新Xeon后，如何解决散热问题就成为头等大事。万全R510另辟蹊径，将进风口设计在机箱侧 面，由两个30瓦的涡轮风扇直接对处理器散热片进行强制风冷，保证了服务器工作时的稳定性。它板载了LSI&nbsp;C1030&nbsp;SCSI&nbsp;320控制器，支持 RAID&nbsp;0/1，也支持用户扩展PCI-X接口的RAID卡来获得更好的性能。联想给该服务器特别设计了3.5英寸标准尺寸的监控——慧眼，占用了最左 侧磁盘仓，剩下的3个仓位被3块36GB的15K硬盘占据，标配电源500W，足够全配置时的电力消耗。</FONT></P>
<P><FONT class=NewsContent2><I>可靠稳定更加专业</I><BR>　　整个产品按照市场定位完全自主设计和开发，可以做到按需定制；<BR>　　通过仿真设计，有效降低了噪音及散热问题；<BR>　　良好的EMI特性，通过了国家CLASS&nbsp;B级标准（此标准只针对消费类产品）；<BR>　　通过了权威的抗震测试，提升易损部件（硬盘）的可靠性。</FONT></P>
<P><FONT class=NewsContent2><I>易于管理</I><BR>　　远程监控功能可以使用户在远离机房噪声的环境中及时了解和监控服务器的健康状态；<BR>　　主板上的DEBUG灯显示POST的每一个步骤，明确指示系统出故障的阶段，方便客户及维护人员排错；<BR>　　可选的慧眼及LCD套件，采用嵌入管理处理器，使得服务器管理任务与正常业务处理互不影响。</FONT></P>
<P><FONT class=NewsContent2><I>出色的扩展能力</I><BR>　　支持高达4块热插拔硬盘、2块非热插拔IDE硬盘或2块SATA硬盘；<BR>　　内存最大可扩展到8G；<BR>　　在1U空间提供2个PCI扩展支持。</FONT></P>
<P><FONT class=NewsContent2><I>人性化设计，带给您舒适体验</I><BR>　　万全R510出色的品质感体现在从客户使用角度考虑，使服务器变得更加人性化、简单易用：如方便耐用的硬盘把手、ID指示灯、前面板布局采用黄金分割点等。</FONT></P>
<P><FONT class=NewsContent2>　　<B>4.清华同方超强TR100&nbsp;2380服务器</B><BR>　　可以支持两个0.13微米制程的IntelXeon处理器，主频范围1.8到3.06GHz。</FONT></P>
<P><FONT class=NewsContent2>　 　超强&nbsp;TR100&nbsp;2380&nbsp;服务器采用标准的&nbsp;1U&nbsp;机架式服务器机箱，其高贵的品质和细腻的做工无不展示了超强&nbsp;TR100&nbsp;2380&nbsp;服务器的高 档品质。在大型的网络游戏中，游戏服务器（也称&nbsp;GS&nbsp;服务器）数量占主体部分，所有的游戏软件都安装在这些三五成组的服务器上，动辄上百台的游戏服务器 数量，如果用&nbsp;2U&nbsp;的服务器，对于寸土寸金的电信托管机房，承租费用不是一个小的数字。</FONT></P>
<P><FONT class=NewsContent2>　　超强&nbsp;TR100&nbsp;2380&nbsp;服务器可支持双颗含超线 程技术的&nbsp;XEON&nbsp;处理器，支持&nbsp;FSB&nbsp;533MHz&nbsp;。超线程技术使双处理器的处理性能大幅提 升，通过配置一组服务器，其处理能力可以支持到成千上万的在线用户。</FONT></P>
<P><FONT class=NewsContent2>　　超强&nbsp;TR100&nbsp;2380&nbsp;服务器的内存使用 &nbsp;1U&nbsp;机箱专用的&nbsp;ECC&nbsp;REGISTERED&nbsp;DDR266&nbsp;内存，最多可以支持到 &nbsp;4G&nbsp;的内存寻址空间。网络游戏的每个页面都需要占用大量的内存空间，使用较大的内存可以加快对页面的处理速度。</FONT></P>
<P><FONT class=NewsContent2>　 　为了确保网络的畅通与可靠，&nbsp;超强&nbsp;TR100&nbsp;2380&nbsp;服务器的网卡采用冗余设计，主板集成了双&nbsp;INTEL&nbsp;千兆网卡。由于&nbsp;1U&nbsp;服务器对空间 的限制，网卡一般采用主板集成，采用双网卡冗余的配置大大提高了网络的可靠性。采用双网卡的优点是即使一个网络接口出现问题，也不至于出现更换主板的大动 作，会给维修带来很大的方便。</FONT></P>
<P><FONT class=NewsContent2>　　超强&nbsp;TR100&nbsp;2380&nbsp;服务器主板集成了 &nbsp;ULTRA320&nbsp;SCSI&nbsp;RAID1&nbsp;的功能并采用&nbsp;10000&nbsp;转&nbsp; SCSI&nbsp;硬盘，确保服务器&nbsp;7&nbsp;×&nbsp;24&nbsp;运行情况下硬件的可靠性。</FONT></P>
<P><FONT class=NewsContent2>　　散热系统性能尤为出色，&nbsp;CPU&nbsp;和主机箱均用每分钟万转以上、风力强劲散热风扇，整个散热系统风扇转速根据温度自动调节，并提供系统监测功能。</FONT></P>
<P><FONT class=NewsContent2>　　在设计上，超强&nbsp;TR100&nbsp;2380&nbsp;服务器拥有多项系统管理功能，并针对游戏软件提供很好的兼容性。</FONT></P>
<P><FONT class=NewsContent2>　　<B>5.宝德PT1350R服务器</B><BR>　　是一款基于Intel架构的服务器产品，融合了多项先进技术，具有良好的处理能力，能够满足网络游戏对服务器的要求。</FONT></P>
<P><FONT class=NewsContent2><I>强大的处理能力</I><BR>　 　Powtel&nbsp;1350R&nbsp;支持基于Intel&amp;reg;NetBurst&amp;#8482;微体系结构的XEON&amp;#8482; 处理器，512K高速二级缓存。提供高达533MHz的前端系统总线，数据带宽比上一代IA架构服务器提高3倍。配合E7501芯片组，内存系统支持双路 交叉访问，数据带宽高达4.3GB/s。</FONT></P>
<P><FONT class=NewsContent2><I>高性价比的解决方案</I><BR>　 　Powtel&nbsp;1350R采用基于E7501芯片组的服务器主板，支持双路的XEON&amp;#8482;处理器，支持多线程和多任务的超线程技术， 4个DIMM内存插槽最大可支持8&nbsp;GB的Registered&nbsp;ECC&nbsp;DDR&nbsp;266&nbsp;SDRAM，配合内存的双向交叉存取系统，紧密的机箱设计提供 1个64bit/100MHz&nbsp;PCI－X的扩展插槽，为中小型企业提供所需的内存容量和I/O带宽，集成1块Intel&amp;reg; &nbsp;PRO/100+和1块Intel&amp;reg;&nbsp;PRO/1000+服务器网卡，保证高速数据传输网络畅通无阻。</FONT></P>
<P><FONT class=NewsContent2><I>方便灵活的定制解决方案</I><BR>　 　Powtel&nbsp;1350R集成Ultra&nbsp;320&nbsp;SCSI控制器，最多可支持3块传输率为320MB/s的SCSI热插拔硬盘。集成 HostRAID*　新技术，支持SCSI&nbsp;RAID&nbsp;0，1。Intel&nbsp;SRCZCR&nbsp;RAID卡可选，支持SCSI&nbsp;RAID&nbsp;0，1，01，5。 支持Intel&nbsp;PRO/1000&nbsp;XT，Intel&nbsp;PRO/100等多种服务器网卡。通过这些方便灵活的定制方案，满足不同客户的需求！</FONT></P>
<P><FONT class=NewsContent2><I>适用多种的应用环境</I><BR>　 　Powtel&nbsp;1350R　精密的、独特的1U机架式设计，符合各类网络、信息运营商的要求，可以完全胜任WEB、Email、FTP、File、高速 缓存、消息、多媒体、代理主机、搜索引擎、安全性、虚拟私人网路（VPN）、IP语音（VOIP）、网络托管等，同时也可以胜任多数据存储、数据库应用、 高性能计算、计算机集群等领域，是数据中心建设、电子政务、企业信息化建设、游戏网站、宽带网络建设、校园主干网建设等方面应用的最佳选择。</FONT></P>
<P><FONT class=NewsContent2><I>领先的服务器管理&nbsp;</I><BR>　 　采用业界领先的IPMI&nbsp;1.5管理控制标准，配合使用宝德服务器管理系统PSM，可监控系统关键参数：系统电压、温度、风扇转速等。PSM包括远程管 理和诊断的工具，即使是在服务器死机或操作系统已经崩溃的情况下，也可迅速的解决问题。更有紧急事件处理接口（EMP），使管理人员从远程通过电话线及 Modem便可监控服务器的工作情况，或通过EMP口发警告，降低系统维护成本。通过局域网串行管理功能，客户可以将远程管理串行通信量和控制台文字（包 括BIOS&nbsp;POST代码）重新引导到局域网，这项创新功能特别适用于机架环境，省去了管理串行电缆和购买昂贵串行集中器的烦恼。通过远程访问系统状态、 记录、配置数据及实用程序，无需配置远程管理卡。通过主动性局域网及移动设备进行事件过滤与警报，支持E-mail报警功能。</FONT></P>
<P><FONT class=NewsContent2>　　<B>6.联志超跃4400R</B><BR>　　超跃4400R服务器是一款可作为互连网的基础设施和数据中心的核心运算平台的四路服务器，支持超线程技术。</FONT></P>
<P><FONT class=NewsContent2>　 　超跃4400R服务器是一款可作为互连网的基础设施和数据中心的核心运算平台的四路服务器，支持多达4个INTEL&nbsp;MP&nbsp;XEON&nbsp;1.5GHz以上 处理器，三级缓存高达512k/1MB/2M，支持超线程技术。内存采用ECC&nbsp;RG&nbsp;DDR&nbsp;SDROM,支持交叉存取，共12个DIMM插槽，可扩展 至24GB。五端式PCI总线，可提供3GB/SEC的I/O带宽。而戴尔PowerEdge&nbsp;6600采用最多四颗最新的具备&nbsp;Hyper- Threading&nbsp;功能的2.0GHz、2.5GHz&nbsp;或&nbsp;2.8GHz至强MP处理器、热插拔&nbsp;PCI-X&nbsp;插槽、DDR&nbsp;内存以及被称作“备件库” &nbsp;和&nbsp;“内存镜像”的全新内存保护架构。芯片组采用四路交叉存取技术以及七层&nbsp;PCI&nbsp;总线架构，提供不打折扣的&nbsp;I/O&nbsp;吞吐能力，共有16&nbsp;个 &nbsp;DIMM&nbsp;插座，能支持512MB&nbsp;-&nbsp;32GB&nbsp;PC200&nbsp;DDR&nbsp;SDRAM&nbsp;内存。</FONT></P>
<P><FONT class=NewsContent2>　　<B>7.方正圆明MR100A服务器</B><BR>　　面向于企业互联网和内部业务系统应用的部门级服务器，最大支持两个处理器，并支持超线程处理技术。</FONT></P>
<P><FONT class=NewsContent2>　　圆明MR100采用1U机架式的设计。紧凑的1U机箱设计适用于需要高度部署服务器的场合，提供高性能的同时，具备良好的扩展性。在服务器前面板上，有网卡灯、风扇自动报警灯、前面板控制和指示灯等指示报警<BR>灯，方便了用户的管理。</FONT></P>
<P><FONT class=NewsContent2>　 　圆明MR100服务器支持基于Intel&nbsp;NetBurst微体系结构的XEON处理器，最大支持两个处理器，并支持超线程处理技术。它配有512K高 速二级缓存，并提供高达533MHz的前端系统总线。超线程技术可通过更高效地利用处理器资源而支持多线程代码和多任务操作，实现多线程和多任务同时运 行，增加事务处理执行的数量。圆明MR100最大支持8GB内存，提供3个热插拔硬盘架位。圆明MR100主板集成了单通道Ultra320&nbsp;SCSI控 制器，两个10/100/1000M自适应网卡及两个64位66/100MHz的PCI-X扩展插槽，这些保证了服务器的I/O性能。</FONT></P>
<P><FONT class=NewsContent2>　 　圆明MR100适用于Web服务器、文件服务器等前端接入层服务器、网络负载平衡服务器以及安全服务器、代理/缓存服务器、VOD、多媒体服务器等应 用。它是大规模部署的并行密集计算应用、集群应用及主机托管完全信赖的平台，完全能够满足电信运营和服务商、石油、游戏网站等用户的需求。</FONT></P>
<P><FONT class=NewsContent2>　　<B>8.华硕AP1600R服务器</B><BR>　　支持双路至强处理器，处理器主频可达到3.06GHz。采用外置光驱和软驱，节省空间。</FONT></P>
<P><FONT class=NewsContent2>　 　华硕AP1600R-E2是继AP1720R-E2后的又一款Nocona服务器产品。它有着在1U服务器中不多见的扩展性能。它拥有2个32位，2个 64位，1个PCI-E的扩展插槽，都是配备了2个千兆网卡，其中一个为PCI-E的接口界面，这种类型的网卡接口较之传统的PCI界面性能至少可以提供 50%。它拥有2颗硬盘插槽，可以内置或者热插拔各种类型硬盘，包括IDE,SATA,SCSI等常见类型。其中SATA机型，AP1600R-E2内建 了SATA&nbsp;RAID的控制器，可以实现RAID0，1，0＋1等功能，在保证了客户的数据安全，免于重要资料丢失的同时，最大程度上节约了中小企业的采 购成本。</FONT></P>
<P><FONT class=NewsContent2>　　华硕服务器独有的散热技术，可以保证该服务器 800MHz&nbsp;FSB、最高可以3.6GHz＋的CPU能够在1U的狭小空间内，正常持续地运转，，是一款性价比比较高的1U机架式服务器。在保证了高性 能的同时，也兼顾了系统的稳定性和管理的简洁方便性。这也是华硕的优势所在。</FONT></P>
<P><FONT class=NewsContent2>　　<B>9.八亿时空CS6012P服务器</B><BR>　　是八亿时空推出的一款性价比良好的超薄型、高集成度的商用级机架式服务器。1U的机架式设计，节省空间。</FONT></P>
<P><FONT class=NewsContent2>　 　CS6012P是八亿时空推出的一款性价比良好的超薄型、高集成度的商用级机架式服务器。1U的机架式设计，节省空间。同时免工具拆卸方便对服务器的维 护和管理。超薄型设计有效节约空间,支持基于Intel&nbsp;NetBurst微体系结构的XEON处理器，处理器内置512K高速二级缓存，支持超线程处理 技术。</FONT></P>
<P><FONT class=NewsContent2>　　CS6012P服务器支持基于Intel&nbsp;NetBurst微体系结构的XEON处理器，处理器内置512K高速二级缓存，支持超线程处理技术。</FONT></P>
<P><FONT class=NewsContent2>　 　S6012P采用基于Intel&nbsp;E7500芯片组的服务器主板，支持双路XEON处理器，支持400MHz外部总线频率，提高了数据吞吐量。 S6012P服务器主板上配备4个DIMM内存插槽，支持高达8GB内存容量，同时它支持双通道的ECM&nbsp;DDR内存，使服务器具备优良的数据吞吐能力， 增强了系统的可靠性。CS6012P主板上集成Ultra&nbsp;320&nbsp;SCSI控制器，保证服务器有高速的数据通道。CS6012P最多可支持3块热插拔硬 盘，再加上RAID卡，能够有效地保证服务器的数据安全。CS6012P主板上集成了1块百兆网卡和1块千兆网卡，使服务器具备了高速畅通的数据传输网 络。</FONT></P>
<P><FONT class=NewsContent2>　　CS6012P服务器占用空间少，可靠性及可扩展性能良好，能够满足网络游戏行业用户对服务器的需求。CS6012P服务器成本较低，而且不损失性能，对于网络游戏行业是一个很好的选择。&nbsp;</FONT></P>
<P><FONT class=NewsContent2>　　<B>10.网新易得ISP1320R</B><BR>　　是网新易得推出的一款适用面很广的工作组级和部门级的主流服务器，能满足广泛的电子商务要求。</FONT></P>
<P><FONT class=NewsContent2>　　网新易得服务器具有较为出色的性能和良好的图形处理能力。支持AGP&nbsp;8X，主板集成具有8M视频内存ATI&nbsp;Rage&nbsp;XL&nbsp;SVGA&nbsp;PCI视频控制器。</FONT></P>
<P><FONT class=NewsContent2>　 　支持双路Intel至强处理器。该款服务器支持最大为8GB的ECC&nbsp;DDR266的内存，为用户预留了充足的扩展空间。CPU与北桥之间的带宽和内存 数据带宽均达到3.2GB/s，不会造成整体效能的瓶颈。服务器集成了Silicon&nbsp;Image&nbsp;Si3112A控制器，提供两条串行ATA通道和内置 RAID功能，为用户节约了成本，并能在一定程度上提供冗余来保障数据的安全。网新易得BSP&nbsp;533R服务器提供了2根 64bit/100MHz&nbsp;PCI-X，1根64bit/66MHz&nbsp;PCI插槽和2根32bit/33MHz&nbsp;PCI插槽，在保障带宽的基础上又满足了 对服务器的扩展需求。在网络接口方面，集成一个Intel&nbsp;PRO/100和一个Intel&nbsp;PRO/1000网卡。</FONT></P>
<P><FONT class=NewsContent2>　　集众多实用功能于一身，扩展能力较为强大。在测试中我们仅使用标准配置系统，获得的吞吐量和响应时间均较为出色，如果在增强整体配置后，性能还有一定的提升空间。充分体现了其较为强大的扩展能力，保障了用户在数据处理量增多后对整体系统的升级空间。</FONT></P>
<P><FONT class=NewsContent2><BR><B>二、服务器操作系统、数据库</B></FONT></P>
<P><FONT class=NewsContent2>　 　绝大多数PC网游服务器（包括国外）基于的操作系统是WINDOWS，具体有WINDOWS&nbsp;SERVER&nbsp;2000, &nbsp;WINDOWS&nbsp;ADVANCE&nbsp;SERVER&nbsp;2000,&nbsp;WINDOWS&nbsp;SERVER&nbsp;2003，约占95％以上，其他如LINUX,&nbsp;UNIX 应用相对很少。这主要由于两方面的原因，一是游戏行业程序员对WINDOWS懂得多，对LINUX、UNIX懂得少；二是大多数成熟的游戏引擎是基于 WINDOWS平台开发的。但就笔者多年的经验来讲，WINDOWS平台稳定性和安全性方面均大不如LINUX,UNIX平台，建议国产游戏和游戏引擎应 该多考虑向LINUX和UNIX等相关平台移植，金山公司的《剑侠情缘ONLINE》是一个很好的值得借鉴的例子。</FONT></P><FONT class=NewsContent2>　 　选用WINDOWS平台的网游其数据库一般是SQL&nbsp;SERVER2000，少数用MYSQL；选用LINUX/UNIX平台的数据库一般是 ORACLE9I,&nbsp;ORALCE&nbsp;10G。用SQL&nbsp;SERVER2000&nbsp;一定要打上补丁，再做安全策略，封掉1643和1644端口，否则一旦感染 针对SQL&nbsp;SERVER的病毒，会通过这两个端口狂向网关发包，并交叉感染其他服务器，最终很可能导致服务器机房全体宕机。MYSQL是一个免费的产 品，稳定性不是很好，而且定期需要修正维护，最好不要用于大型网络游戏，但绝对可以用于私服。笔者用过ORACLE&nbsp;FOR&nbsp;LINUX/UNIX的产 品，稳定性很好，维护也比较方便，只是入门台阶较高。ORACLE&nbsp;FOR&nbsp;WINDOWS的稳定性和性能如何尚需探讨。 </FONT></DIV><img src ="http://www.blogjava.net/yangsail/aggbug/8319.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-24 00:20 <a href="http://www.blogjava.net/yangsail/archive/2005/07/24/8319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>魔兽任务分类及游戏任务系统设计启示</title><link>http://www.blogjava.net/yangsail/archive/2005/07/23/8254.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sat, 23 Jul 2005 13:53:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/07/23/8254.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/8254.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/07/23/8254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/8254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/8254.html</trackback:ping><description><![CDATA[<SPAN id=TopicDetail_DataList1__ctl0_lblPostBody>魔兽的任务号称有1500多个，这么多任务，难免有些水分在里面，不过把这些浩瀚如星海的任务分类一下，倒也可以借鉴不少。（由于我练的是部落，所以选部落方向的比较经典的任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;有人说，魔兽的任务很多，但基本上还是那些杀怪拿东西的任务占大部分，没什么意思。我要说的是，当你真正用心体会魔兽世界的任务，咀嚼每一个任务情节，感受每一个任务细节，你会发现，它比你想象的有趣的多。 <BR>一、 消灭（或击败）怪物。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;程序实现难度最低，只要验证所杀的怪物（数量）即可。应该说，这种任务在WOW里所占比例最大，在其他网游的任务系统中也最常见。因为这种任务系统的实现没有很大难度，程序只要安排任务指定NPC、任务对话及任务完成检测，而且也是最容易安排剧情的任务类型。 <BR>&nbsp;&nbsp;&nbsp;所需消灭的怪物分为两类，一是普通的怪物，一是BOSS类怪物。普通的怪物就不必多说了，BOSS类怪物有些还需要触发条件，例如十字路口的狂热的维罗格任务，消灭半人马一定数量后才会出现，还有十字路口的艾其亚基任务，要在它的巢穴附近吹响号角来召唤它。 <BR><BR>二、 收集物品。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;收集的物品分4类: <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、指定怪物必然掉落物品（如十字路口的偷钱的迅猛龙任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、指定怪物随机掉落物品（如十字路口的斑马的威胁任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、从地图上可见并可采集之物品&nbsp;（如十字路口的菌类孢子任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷、可以由玩家制作出来的物品&nbsp;（如灰谷的战歌氏族补给品任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;同样也是一般网游中最常见的任务类型。除了固定要安排的任务指定NPC和任务对话，程序只要安排物品获得途径（增加怪物掉落物品项或地图物品）和任务完成检测即可。 <BR><BR>三、 对话任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;主要的任务类型，经常与其他类型任务结合运用。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、与某人直接对话。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、将指定物品给予某人并对话。与收集物品任务不同的是，该任务物品由任务起始NPC直接给予。（如贫瘠之地的战歌的报告任务） <BR>&nbsp;&nbsp;&nbsp;&nbsp;在游戏中的作用主要有以下几个方面： <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、推动剧情发展。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵&nbsp;、引导玩家进入下一张地图。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶&nbsp;、引导至后续任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷&nbsp;、让玩家了解游戏的背景故事。 <BR><BR>四、 护送任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;保护目标NPC到达目的地，路上一定地点会刷新怪物，这时候要注意不能让目标NPC死亡，否则任务失败。最典型的是哀嚎洞穴的护送牛头德鲁伊任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;程序实现：固定地点刷新怪物，判断目标NPC是否死亡，死亡则转入任务失败，任务结尾若NPC仍存活，任务完成。 <BR><BR><BR>五、 探索任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;一般的要求是到达探索地点的规定区域内即可完成，供玩家熟悉地图用。有些任务还要求发现某特征事物，例如十字路口的遗忘之池任务，在池水中观察到有冒泡的地方，需足够接近方可完成。 <BR><BR>任务说明： <BR>向图加·符文图腾报告你的发现。&nbsp; <BR>探索遗忘之池&nbsp;&nbsp; <BR><BR>很久以前，贫瘠之地曾是个郁郁葱葱、生机盎然的地方。但是战争与灾难接二连三地降临在这片土地上，最后就剩下了这一片干燥荒芜的不毛之地。事实就是这样，真让我伤心。不过，在过去的几年里，贫瘠之地出现了新的绿洲，生机又在这片土地上重现。我们德鲁伊感觉到了在很深的地下有一股试图冲出地面的力量。我们必须找到这股力量的源泉，请到十字路口西北边的遗忘之池去一趟，在那里的湖水中搜寻力量的源泉，然后回到这里来。&nbsp; <BR><BR>六、 职业任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;之所以把这个任务分类出来是因为它的特殊性。在职业任务中，玩家将会熟悉自身职业的属性、特长、技能，锻炼必须的操作技巧。这些任务在魔兽中就做的很好。例如法师的职业任务有锻炼对霜之新星的控制能力和锻炼杀怪续航能力，盗贼的职业任务有训练涂毒和开锁能力的。 <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从魔兽任务系统所得的游戏任务系统设计启示： <BR>一、 任务的故事性。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;魔兽里的任务，哪怕是一个最不起眼的小任务，也会有几段故事说明和指示。任务说明会给玩家一种代入感，让玩家成为这个任务故事的一分子，从而带动玩家进入任务，创造游戏总体氛围。小任务如此，大的任务，特别是和游戏背景紧密相关的任务，更是要刻意渲染出足够的气氛，让玩家感觉，游戏的历史也可以由自己左右，当任务完成后，便会产生很大的满足感。一个个任务的故事组合起来，就如同凤凰的羽翼逐渐丰满起来，把游戏的故事情节都展现给玩家。这也成为游戏的内涵所在。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;任务的说明很很体现的暴雪的恶搞风格，而且九城的汉化有些地方也相当经典。仅举几例，可窥一斑： <BR>&nbsp;&nbsp;&nbsp;&nbsp;1、奥达曼的能源，法师职业任务。 <BR>找到一个黑曜石能量源，将其交给尘泥沼泽的塔贝萨。&nbsp; <BR>黑曜石能量源&nbsp;&nbsp;0/1&nbsp; <BR><BR>既然恶魔已经被消灭了，接下来我们就得去找一个能量源。不幸的是，最合适的能量源往往非常古老而且极难获得。有的时候，命运就喜欢这样捉弄你，难道不是吗？所以，为了得到能量源，你必须到奥达曼去打败那里的黑曜石守卫。他体型巨大而且很难对付，但是你可以从他身上得到我们所需要的能量源！<FONT color=#dc143c>祝你好运，利娜。如果你运气不好的话，那么……很高兴认识你。&nbsp;</FONT> <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;看见最后一句话没有？呵呵。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;2、能量仪祭，法师的职业任务。 <BR>将《能量仪祭》交给尘泥沼泽的塔贝萨。&nbsp; <BR>能量仪祭&nbsp;&nbsp;0/1&nbsp; <BR><BR><FONT color=#dc143c>嗯……我想起来了，我的书已经没有了！你要知道，我欠了一屁股的债，不得不把最后一册《能量仪祭》卖掉来还债，我把它卖给了一个牧师……</FONT>他是血色十字军的成员。他一定把那本书带到了他们的根据地——提瑞斯法林地里的血色修道院图书馆去了！如果你想要那本书的话，就得去一趟修道院。很抱歉给你带来这么多麻烦，这些天我已经有些头昏脑涨了……&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;原来这个隐居在尘泥沼泽的家伙是为了逃债，连书都卖掉还债了，哈。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;3、荆棘谷的讨债行动。 <BR>给藏宝海湾的“海狼”马克基雷带回玛雷的畸形足、乔乔的金色望远镜和苏克的巨型戒指。&nbsp; <BR>玛雷的畸形足&nbsp;&nbsp;0/1&nbsp; <BR>乔乔的金色望远镜&nbsp;&nbsp;0/1&nbsp; <BR>苏克的巨型戒指&nbsp;&nbsp;0/1&nbsp; <BR><BR>我这儿的白条已经少了许多啦，但还是有许多没信誉的家伙欠着我的钱。接下来，我们得对付“畸形足”玛雷·维尔金斯、火柴棍乔乔，还有拇指苏克。<FONT color=#dc143c>这帮家伙的债欠了好久，我看他们是不想还了！后来，我听说他们被什么人给骗到丛林里去了。我当然不关心他们到底会怎么样——我要的是我的钱！</FONT>他们应该就在东北方的阿博拉兹废墟和朱布瓦尔废墟里。找到他们，把我的钱拿回来。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;很明显这家伙在魔兽里专放高利贷，完成了这个，后面还有一系列的讨债行动。 <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;4、辛特兰的Z校对2任务。 <BR>在荒芜之地收集20张枯木头皮，与尼姆布亚的长矛一起放置在枯木村庄，然后回到荆棘谷尼姆布亚那里。&nbsp; <BR>传达可怕的信息。&nbsp;&nbsp; <BR><BR>枯木巨魔原来是部落的盟友，但他们现在背叛了萨尔……他们要为此受到惩罚！来，拿起我的长矛去北边的荒芜之地。追捕那里的枯木，收集他们的头皮，在他们的一个村庄的土地上插上我的长矛。<FONT color=#dc143c>让他们知道，背叛部落，迟早要还的！</FONT>&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;传说中的魔兽版无间道？ <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;所以，任务的说明要幽默自然，该严肃的任务也要有严肃的口吻，而且还要符合任务NPC的性格，甚至可以考虑运用当前流行的语言。在完成任务的同时，玩家也会一步步了解该任务NPC的故事、个性，不自觉地融入其中。 <BR><BR>二、 任务的触发方式。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;在魔兽世界中有以下几种 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、任务NPC。任务NPC是一般游戏中通常的触发任务方式，不必赘述。（当然，NPC还分为傻乎乎蹲在一个地方的和四处乱逛的。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、怪物掉落物品。可分为随机掉落和固定掉落。菲拉斯、加基森、辛特兰等地怪物随机掉落的OOX机器人任务蛮是有趣。固定掉落任务如杀一些特殊的怪（典型的如陶拉祖营地上面的雷霆蜥蜴、雷鸟，灰谷的三大兽）会掉任务物品，点击触发任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、可在地图上点击的物品。一般比较隐蔽。魔兽村子里的通缉令算是比较容易发现的这类任务。其他还有酒桶、箱子、祭坛之类的，鼠标移动到上面会有齿轮状提示出现。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;一般的网游中第一类的较多，建议多加入二类和三类触发方式，保持玩家接受任务的未知感和新鲜感。 <BR><BR>三、 任务的提示。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;在魔兽世界里，任务的提示是做的相当好的。NPC头上黄色的叹号代表有任务可以接，白色的叹号代表有任务但你尚未到达该任务等级，黄色的问号代表你在该NPC处任务已完成，白色的问号代表你在该NPC处接了任务但未完成。我认为，在一般的网游中，对任务的提示普遍不够，有时候玩家甚至不记得在哪个NPC处接了什么任务，造成任务进行的混乱。而魔兽中普通难度的任务都会在说明中指出目的地大致方位，完成任务之后，只要在任务NPC附近一定范围，该NPC就会在小地图上以黄色点标示出来，给予玩家足够的提示。这种方式对于任务的进行和体验提供了帮助，可以在网游中普遍采用。 <BR><BR>四、 任务的难度控制。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;先说单个任务的难度控制。在普通的链状结构任务中，难度都是循序渐进的。例如荆棘谷的摩克萨尔丁的魔法，任务的起始是从杀深喉猎豹（37---38级）开始的，第二步要获得的物品是从丛林捕猎者（39—41级）那里得到的，第三步成年大猩猩的肌腱所需杀的怪等级38---41，最后一步要从纳加的圣泉中取到圣泉之水（纳加等级43—44）。注意到这些任务能够单独完成所需等级是一步步慢慢增加的。所以链状任务设计的时候，切忌任务之间跨越等级太大，或者任务越后面难度越低。等级跨度太大，给玩家无所适从的感觉，再加上当前能力无法完成任务，造成放弃任务的几率大大增加；任务难度安排颠倒，越到后面越没挑战性，结果给玩家的成就感也就降低了。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;再说整个游戏的难度控制。仍以魔兽为例（副本也算做任务的一部分）。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;1-5级时，玩家在新手村活动，这时候的任务一般以杀怪、收集物品和探索为主，设计时就要注意把相关的任务难度调低，让新手在任务中快速熟悉游戏的玩法。例如杀怪任务可以减少完成任务所需怪物数量和削弱初级怪能力，收集物品任务所需物品必须大而显眼，探索任务目的地离新手村要近。而且关键是都要有详细的说明，指明任务所在地是必须的，让玩家在完成任务时不至于没有任何头绪。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;6-12级时，玩家一般会离开新手村到达第一个城镇，除了前面所述几种任务之外，还要适当加上消灭普通BOSS的任务，这种任务高级点的玩家可以单独挑战，低级点的玩家必须组队才能战胜。在一定程度上促进了玩家交流和组队，增加了游戏交互性。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;13-20级，这时候玩家已经对游戏玩法有足够的了解，所需的就是大量的任务来提高玩家的技巧（包括个人能力和团队配合能力），第一个需要配合的副本任务在这样的前提下诞生了（如奥格瑞玛的怒焰峡谷），在副本里强调团队的配合，一个人的失误都有可能带来团队的毁灭。不过做为第一个副本，难度一定要控制好，地图不能太复杂，怪物密度不能太高，BOSS能力不能太强。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;21-30级，基本同上，不过此时的任务考虑加入一些技巧或噱头，添加大量的隐藏要素，使不同的玩家在完成不同的任务时有不同的体验。这个时期的副本可以适当加大难度。（十字路口的哀嚎洞穴副本是这个时期必进的一个副本，在细节方面和难度方面都处理的很不错，不过唯一不足的是地图实在太复杂，去过两三次的人也未必会熟悉，至于我，在走了八遍以后才勉强记住。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;31-40级，这个阶段玩家一般会在中立地区活动，与敌对阵营的摩擦也日益增加，组队完成任务的玩家会占很大一部分。所以可以增大团队才能完成的任务比例，还有一些需要良好操作控制的任务。副本中怪物的密度可以增大，考验团队处理突变状况的能力（如剃刀高地的2精英3普通怪和巡逻怪组合），BOSS的技能和AI增强，让玩家自行摸索战胜BOSS的技巧。（如诺莫瑞根的最终BOSS，打他的时候旁边的炸弹发射器会不停放出炸弹来攻击玩家，需要一个人去关炸弹开关。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;41-50级，到这个级别的玩家一般都已经具有良好的操作和对自身职业足够的了解，单独完成任务的欲望强烈，可以考虑降低团队任务比例。副本难度大幅度增加，一些区域需要特定职业的技能才比较容易通过（如奥达曼的矮人群，范围魔法可以发挥的淋漓尽致），一些区域需要玩家消耗大量的药品（如马拉顿的毒水BOSS，滋补药剂和治疗药剂的应用），打BOSS需要技巧和运气（马拉顿的公主，战士积累足够仇恨，盗贼和法师、猎人主输出伤害，牧师照顾战士的同时又要注意不被公主盯上。对付公主的大范围毒气，近战的要轮流上阵。对付公主的打飞能力，战士要靠墙站。） <BR>&nbsp;&nbsp;&nbsp;&nbsp;51-60级，这个时候出现了全新的任务类型，大型团队任务（RAID队伍），需要5个以上、40个以下的玩家协同完成。这些任务也是对玩家的极大挑战，不仅普通小队无法完成，即使是RAID队也要良好的配合和正确的战略指导才有可能战胜。在丰厚的奖励和诱人的物品掉落面前，会有玩家不停的组织人手来击杀BOSS，如尘泥沼泽的黑龙公主、艾萨拉的蓝龙、熔火之心的火焰领主等。这个时期的副本，几乎每一波敌人都是一个挑战，一旦处理不慎，团队覆灭是很正常的，技巧+战略+运气，一个都不能少，才能完成高难度的副本任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;因此要随着游戏的进程的编排任务的方方面面，合理地估计玩家该阶段的能力，做出最佳的任务安排。 <BR><BR>五、 任务的节奏控制。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;这个在副本任务中要注意到，因为一个副本任务通常需要比较长的时间，如何在这么一段时间内把握玩家的情绪起伏，合理地安排各种不同的挑战来提起玩家的兴趣。一般副本会分为若干个区域，每个区域都有一个小BOSS，最后还要有个终极BOSS。玩家在消灭了一定的怪物之后，情绪会逐渐低落，在情绪失落到最低点前，小BOSS出现了，一方面给玩家带来足够的挑战，带动任务进行的气氛，另一方面提供诱人的物品掉落，给玩家继续探索下去的动力。一段段小高潮过去后，在终极BOSS出现前，玩家由于疲劳等原因情绪到达最低点，最终BOSS的出现就给这段旅行划上了完美的句号。随着战胜了最终BOSS，玩家就如同经历了一场自己主演的电影，兴奋到达最高点。 <BR><BR>六、 任务的隐藏要素。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;隐藏要素有多方面的意义，如下示。通常这类任务比较容易引起玩家的兴趣，因为会觉得其他玩家不一定会发现，若是自己第一个揭示这个任务，就会产生莫大的成就感。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、完成任务可以有多种方法，有的方法比较隐蔽。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、接到任务的因素是隐藏的。如尘泥沼泽的黑色盾牌任务和可疑的蹄印任务就是在路口一个已经被摧毁的旅馆中发现的，把鼠标指到上面才会出现提示，所以是隐藏要素。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、任务中隐藏的事实真相。奥格瑞玛的尼尔鲁火刃就是正宗的魔兽版无间道，在任务的进行中，会发现他是隐藏在奥格瑞玛的叛徒。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷、任务中的任务。奥达曼解决最终BOSS后，在后面的房间里会发现一个白金圆盘（其实是古代光碟），把它放到旁边的一个石像里会出现一段虚拟影象，并且有详细的说明，最后可以接到把光盘送回雷霆崖的隐藏任务。 <BR><BR><BR>七、 任务的可选择性。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;也就是常说的分支任务。不过这样的任务在魔兽中不是很多，最为典型的应该是部落凄凉之地的半人马任务，有两个半人马部落，你可以选择屠杀一方来提升另一方的友好度，友好度到达一定程度后便可接受更高的任务。专业技能的选择也算是分支任务，例如铁匠的武器专精和盔甲专精，制皮的元素方向、部落方向和龙鳞方向，工程学的侏儒工程学和地精工程学。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;但可选择的任务越多，就表示程序和策划要进行更多的工作，所以在网络游戏里，除非必要，一般不可能出现太多的分支任务。 <BR><BR>八、 任务的奖励。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;在魔兽里，除了固定的经验奖励外，任务奖励一般只有两种，金钱或者物品。金钱倒也罢了，不过物品奖励的设置我认为有些问题，因为有些任务的奖励对于玩家来说基本上毫无用处（例如只能穿布衣的职业奖励皮甲，只需要智力的职业奖励敏捷物品），这就导致了玩家对任务的挑剔，有适合自己奖励的就做，没有的话一律略过。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;因此我觉得可以在目前的任务系统上，加上任务点这样一种属性，完成所有任务都会有数量不一的任务点可以获得。至于任务点的作用，我设想了以下几点： <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、改变任务奖励物品的某些属性。例如法师，任务奖励了一件20敏捷10耐力的衣服，提供一定的任务点可以把敏捷转换成法师需要的智力。不过要注意的是，这种改变仅限于任务奖励物品，若是对于所有物品都如此的话，游戏平衡性将受到很大冲击。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、用任务点换取特定称号。不同称号有不同的特点，如“奥格瑞玛的勇士”，力量+10，敏捷+5，耐力+5，在奥格瑞玛城享受8折优惠。当然，这样的称号需要大量的任务点才可能获得。若是要换取新的称号时，原有称号转换成1/2任务点退回到总任务点数中。也可以设置一些需要特定称号才能够接受的任务。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、需要一定的任务点才能够进行某个任务。这样的任务必须是重要任务，和游戏的主线剧情有很大关系。这样玩家为了完成主线任务，也要通过完成大量的分支任务积攒任务点。 <BR><BR><BR><BR><BR>魔兽里我印象比较深刻的有意思的任务： <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑴、部落贫瘠之地的加恩的报复最后一步，要你去炸掉巴尔莫丹的飞行器，所用的炸药就是前面任务中收集的木浆、硝酸钠等等做出来的，这就是任务连续性的很好的体现。 <BR>任务说明： <BR>摧毁巴尔莫丹的飞行器，然后向加恩·石塔回复。&nbsp; <BR>贝尔莫丹飞行器已经被摧毁&nbsp;&nbsp; <BR><BR>按照卡兹戈姆的日记上所述的方法制造出来的炸药应该不会有问题。那么，我们开始吧。首先我有一项特殊的任务要交给你完成。拿上这只爆破筒，去炸掉巴尔莫丹的飞行器。这个飞行器不仅是巴尔莫丹军事设施的关键部分，也是一架可怕的杀戮机器。更重要的是，它是权力的象征，而它对我们的部族来说则代表着一段耻辱的回忆。我会为你的成功感到自豪，你也将得到丰厚的奖励。 <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑵、石爪山的烈日石居的塔姆拉会叫你把之前搜集到的盖亚的种子种到焦炭谷的土堆里，魔兽种树也疯狂，因为焦炭谷的土堆有限，所以经常就是见到一个土堆，好几个人飞奔过去，先种下的人得意狂笑，没种到的嚎啕大哭，哈哈，很有趣。 <BR>任务说明： <BR>将10枚盖亚之种种植在盖亚土堆中，然后与烈日石居的塔姆拉谈一谈。&nbsp; <BR>种植盖亚之种&nbsp;&nbsp; <BR><BR>如你所见，盗贼，我纯净的心灵可以为这片不毛之地带来新的生机。你必须将这些种子种植在破坏之源中，在西边的焦炭谷里就是破坏大自然的源泉——这片被污染的土地上到处都是鹰身人和凶恶的火元素。邪恶狂风，拿着这些附有魔法的盖亚之种，把它们种植在盖亚土堆里。&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;⑶、希尔斯布莱德丘陵的赫尔库拉的复仇任务，部落的做这个任务有点难度，因为目的地是联盟的城镇，很容易被卫兵和联盟的玩家追杀。经历N次复活的艰辛之后，努力终于有了回报，复活后的赫尔库拉召唤出一群骷髅兵攻击南海，虽然。。。最终还是难免被南海的卫兵围殴至死，不过咱心里还是爽了一把。以前的版本还有BUG，他会不断召唤出来骷髅兵，直到把南海淹没。。可惜我在那个版本没玩到这个任务。 <BR>任务说明： <BR>将埃希尔之焰、沃拉兹之焰和尤基尔之焰的力量注入赫尔库拉的魔棒。把经过仪式洗礼之后的魔棒带到南海镇的赫尔库拉墓地。&nbsp; <BR><BR>拿着赫尔库拉的魔棒，你会用得着它的。赫尔库拉用3个火葬柴堆来构筑他最强大的法术：埃希尔之焰和沃拉兹之焰在丘陵地带的洞穴里，尤基尔之焰在丘陵洞穴上面的另一个洞穴，在山的更北边。赫尔库拉的魔棒必须经过这三堆火焰的洗礼才能发挥作用。在仪式完成之后，把魔棒带到赫尔库拉的墓地去，那座墓地就在由人类重兵把守的南海镇。让赫尔库拉的复仇降临在愚蠢的人类头上吧！ <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;⑷、希尔斯布莱德丘陵的受难药剂任务，变态的药剂师要你把这个乱七八糟的药剂给农场里的一只小狗吃，结果吃完，小狗变大狗。。。而且还是乱咬人的那种，没办法，只好顺手料理了它。 <BR>任务说明： <BR>把受难药剂交给乌比。&nbsp; <BR><BR>我得花一会儿时间把这些成分混合在一起，做成受难药剂。成功了！啊，还有什么能比给这个世界带来点灾难更让人愉快的呢？让我们看看这种药剂能不能达到预期的效果。让我的助手乌比瞧瞧黑暗女王为人类和天灾军团准备了什么样的礼物。&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;⑸、凄凉之地的诱捕科多兽任务。很另类的任务，对年老或濒死的科多兽使用诱引器，然后它就会变成驯服的科多兽跟着你走，这时候最惬意的事就是开加速技能，看着一只庞大的科多在自己身后狂奔，感觉特爽。 <BR>任务说明： <BR>带5头驯服的科多兽和科多兽诱引器给瑟卡布斯库营地的斯米德·瑟卡布斯库。&nbsp; <BR>驯服的科多兽&nbsp;&nbsp;0/5&nbsp; <BR><BR>比布莱认为他是凄凉之地唯一一个懂得赚钱的地精。好吧，想要让旅团闯过这块地方就要靠我了。因为我懂得利用我的科多兽诱引器控制年老的和濒死的科多兽，所以我和旅行队的主人科克，瑞格进行了合作。把科多兽诱引器拿去使用在任何年老的或者濒死的科多兽身上。然后那个野兽就会变成驯服的科多兽然后会跟着你。一旦你驯服了一头科多，那就把它带来给我吧。&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;还有很多值得分享的任务，留待各位自己慢慢体验。 <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;玩魔兽，你可以不做任务，但是不做任务的你，将永远无法体会到任务的乐趣。魔兽的任务系统，巧妙的将单机游戏的精髓融入了网络游戏之中，你选择不同的职业、不同的阵营进行游戏就会有不同的体验，无时不刻地提醒你是这个世界的一分子，这才是真正的Role&nbsp;Play。同时，它又很好地把握了游戏的节奏，让你在任务中不断成长，在任务中提高等级，在任务中获得装备物品，在任务中成为真正的老鸟。所以今后的网络游戏的任务系统，可以参考借鉴一下魔兽，在网络游戏已经公式化、枯燥化的趋势下，设计出不同的适合自身游戏的任务，走出自己的风格。 <BR>&nbsp;&nbsp;&nbsp;由于这篇文章纯属本人的个人观点，难免有些错误和不足，所以请各位多多指正，让我在批评和建议中成长。^_^</SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/8254.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:53 <a href="http://www.blogjava.net/yangsail/archive/2005/07/23/8254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> WOW的一些数据计算公式  </title><link>http://www.blogjava.net/yangsail/archive/2005/04/19/3489.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Tue, 19 Apr 2005 12:38:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/04/19/3489.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/3489.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/04/19/3489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/3489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/3489.html</trackback:ping><description><![CDATA[　　一、攻击力(Attack&nbsp;Power，简称AP)的计算公式：&nbsp;<BR><BR>　　Warrior/Paladin：AP=角色等级*3+力量*2-20&nbsp;<BR><BR>　　Hunter/Rogue：AP=角色等级*2+力量+敏捷-20&nbsp;<BR><BR>　　Shaman：AP=角色等级*2+力量*2-20&nbsp;<BR><BR>　　Druid：AP=力量*2-20&nbsp;<BR><BR>　　Mage/Priest/Warlock：AP=力量-10&nbsp;<BR><BR>　　角色DPS=AP/14+武器DPS&nbsp;<BR><BR>　　单次攻击伤害(最小/最大)＝攻击速度*AP/14+武器伤害(最小/最大)+技能附加伤害&nbsp;<BR><BR>　　二、防御力(Armor)的计算公式：&nbsp;<BR><BR>　　1敏捷(Agilty)＝2Armor&nbsp;<BR><BR>　　Armor减少伤害%＝0.75%*防御力/(攻击方等级+9)&nbsp;<BR><BR>　　例：防御力5000的角色，&nbsp;被61级敌人攻击时，可以减少伤害0.75%*5000/(61+9)＝53.6%&nbsp;<BR><BR>　　被51级敌人攻击时，可以减少伤害0.75%*5000/(51+9)＝62.5%&nbsp;<BR><BR>　　伤害减小值的封顶值是75%，这时角色的防御力为100*(敌人等级+9)，也就是说杀62级敌人时防御要在7100以上才能达到封顶效果。我不知道现在最高防御能达到多少，但在绝大多数情况下，杀同等级敌人是不可能达到封顶值的。&nbsp;<BR><BR>　　三、敏捷对物理攻击重击(crit)、闪避(Dodge)几率影响的计算公式：&nbsp;<BR><BR>　　在不计装备和天赋影响的情况下，重击和闪避几率受以下因素影响：&nbsp;<BR><BR>　　1.重击/闪避的基础值和变化值&nbsp;<BR><BR>　　角色的重击/闪避几率中，有一部分是不受敏捷影响的(这里称为基础值)，另外一部分受敏捷影响(这里称为变化值)。&nbsp;<BR><BR>　　角色重击/闪避的计算公式为：基础值+变化值*角色的敏捷/敏捷标准值。&nbsp;<BR><BR>　　对一般的职业来说，当角色敏捷等于标准值的时候，重击/闪避几率为5%。也就是说基础值+变化值＝5%。变化值越高表示敏捷对这个职业的影响越大。&nbsp;<BR><BR>　　敏捷标准值是与等级和职业相关的一个参数。1级时一般职业的标准值为20，盗贼和猎人为23。60级的时候战士敏捷标准值100，即敏捷100时重击/闪避几率为5%。&nbsp;<BR><BR>　　敏捷标准值似乎没有计算公式，是通过查表获得的，也可以自己推算，我在后面会附上算法，大家有兴趣可以自己计算。&nbsp;<BR><BR>　　各个职业的重击/闪避基础值和变化值：&nbsp;<BR><BR>　　Rogue：重击基础值0%，变化值10%；闪避基础值0%，变化值20%&nbsp;<BR><BR>　　Hunter：重击基础值0%，变化值5%；闪避基础值0%，变化值10%&nbsp;<BR><BR>　　Warrior：基础值0%，变化值5%&nbsp;<BR><BR>　　Paladin：基础值0.7%，变化值4.3%&nbsp;<BR><BR>　　Druid：基础值0.9%，变化值4.1%&nbsp;<BR><BR>　　Shaman：基础值1.7%，变化值3.3%&nbsp;<BR><BR>　　Warlock：基础值2%，变化值3%&nbsp;<BR><BR>　　Priest：基础值3%，变化值2%&nbsp;<BR><BR>　　Mage：基础值3.2%，变化值1.8%&nbsp;<BR><BR>　　2.角色的武器技能等级(熟练度)和防御技能等级&nbsp;<BR><BR>　　即属性栏里显示的attack和defense。其中attack影响角色重击几率，defense影响角色闪避几率。具体来说就是重击/闪避受一个(attack(或defense)*0.04-等级/5)%的修正。&nbsp;<BR><BR>　　大家知道角色每升一级attack/defense上限会增加5级，正好和等级/5抵消，也就是说如果把attack/defense修满，重击/闪避几率就不受任何惩罚，如果没有修满，则每差一个等级减少0.04%的重击/闪避几率.。反之如果通过装备把attack/defense加的超过上限就会有额外奖励。&nbsp;<BR><BR>　　例：一个60级战士，敏捷90，defense330级，那么他的闪避为0+5%*90/100+(330*0.04-60/5)%＝5.7%&nbsp;<BR><BR>　　四、格挡几率(Block)和招架几率(Parry)&nbsp;<BR><BR>　　基本几率5%，受防御技能(defense)的影响，每级防御技能增加0.04%格挡/招架几率。或者说同闪避一样受(defense*0.04-等级/5)%的修正&nbsp;<BR><BR>　　附：角色敏捷标准值的算法&nbsp;<BR><BR>　　首先注意把与重击/闪避或者防御技能相关的装备都拿掉，最好不要加任何天赋，战士不能出于，以免引起混乱。&nbsp;<BR><BR>　　记录敏捷值A和闪避/重击几率D。将attack/defense对D值的修正还原，如你的角色武器技能差N级达到上限，就在D上加N*0.04%。&nbsp;<BR><BR>　　敏捷标准值＝敏捷A/(1+(闪避或重击几率D值-5%)/闪避或重击变化值)&nbsp;<BR><BR>　　最后，可以更换一下敏捷装备，使敏捷发生变化，再根据上面给的公式检验一下计算结果是否正确。&nbsp;<BR><BR>　　重击几率可以在角色的基本技能“Attack”上查看，闪避几率可以在角色的基本技能“Dodge”上查看&nbsp;<img src ="http://www.blogjava.net/yangsail/aggbug/3489.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-04-19 20:38 <a href="http://www.blogjava.net/yangsail/archive/2005/04/19/3489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>国内手机无线游戏市场前景分析</title><link>http://www.blogjava.net/yangsail/archive/2005/03/26/2474.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sat, 26 Mar 2005 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/03/26/2474.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/2474.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/03/26/2474.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/2474.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/2474.html</trackback:ping><description><![CDATA[<STRONG>国内手机无线游戏市场前景分析(1)<BR><BR></STRONG><A href="http://www.51let.net/Article_Show.asp?ArticleID=511"><STRONG>http://www.51let.net/Article_Show.asp?ArticleID=511</STRONG></A><BR><BR><STRONG>国内手机无线游戏市场前景分析(2)<BR><BR></STRONG><A href="http://www.51let.net/Article_Show.asp?ArticleID=513"><STRONG>http://www.51let.net/Article_Show.asp?ArticleID=513</STRONG></A><BR><BR><STRONG>=======================================<BR>国内一些优秀的手机软件公司&nbsp;<BR></STRONG><BR>清华深讯（<A href="http://www.tssx.com.cn/" target=_blank><FONT color=#5b9a05>http://www.tssx.com.cn</FONT></A>）&nbsp;<BR>空中信使（<A href="http://www.kongzhong.com/" target=_blank><FONT color=#5b9a05>http://www.kongzhong.com</FONT></A>）&nbsp;<BR>新热力科技（<A href="http://www.yunfei.com/" target=_blank><FONT color=#5b9a05>http://www.yunfei.com/</FONT></A>）&nbsp;<BR>掌星科技（<A href="http://www.joymobile.com/" target=_blank><FONT color=#5b9a05>http://www.joymobile.com</FONT></A>）&nbsp;<BR>数位红软件应用（<A href="http://www.worldup.com/" target=_blank><FONT color=#5b9a05>http://www.worldup.com</FONT></A>）&nbsp;<BR>九天互动数据（<A href="http://www.bjsky9.com/" target=_blank><FONT color=#5b9a05>http://www.bjsky9.com/</FONT></A>）&nbsp;<BR>至通信息（<A href="http://www.gm365.com/" target=_blank><FONT color=#5b9a05>http://www.gm365.com</FONT></A>）&nbsp;<BR>阳光加信（<A href="http://www.ray5198.com/" target=_blank><FONT color=#5b9a05>http://www.ray5198.com/</FONT></A>）&nbsp;<BR>联梦娱乐（<A href="http://www.oofcybw.zj001.net/" target=_blank><FONT color=#5b9a05>http://www.oofcybw.zj001.net/</FONT></A>）&nbsp;<BR>优一百（<A href="http://www.u100.cn/" target=_blank><FONT color=#5b9a05>http://www.u100.cn</FONT></A>）&nbsp;<BR>Magus&nbsp;soft（<A href="http://www.magus-soft.com/" target=_blank><FONT color=#5b9a05>http://www.magus-soft.com/</FONT></A>）&nbsp;<BR>逆火多媒体工作室（<A href="http://www.nmprod.com/" target=_blank><FONT color=#5b9a05>http://www.nmprod.com/</FONT></A>）&nbsp;<BR>掌坤科技（<A href="http://www.msoft.com.cn/mobile_game.htm" target=_blank><FONT color=#5b9a05>http://www.msoft.com.cn/mobile_game.htm</FONT></A>）&nbsp;<BR>掌中仙境（<A href="http://www.palmsp.com/" target=_blank><FONT color=#5b9a05>http://www.palmsp.com/</FONT></A>）&nbsp;<BR>中国java网（<A href="http://www.cnjm.net/" target=_blank><FONT color=#5b9a05>http://www.cnjm.net/</FONT></A>）&nbsp;<BR>downloadgame（<A href="http://www.downgame.com/" target=_blank><FONT color=#5b9a05>http://www.downgame.com/</FONT></A>）<img src ="http://www.blogjava.net/yangsail/aggbug/2474.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-03-26 14:37 <a href="http://www.blogjava.net/yangsail/archive/2005/03/26/2474.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>道缘儒仙改编成游戏的可行性分析[转载]</title><link>http://www.blogjava.net/yangsail/archive/2005/03/23/2390.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Wed, 23 Mar 2005 12:29:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/03/23/2390.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/2390.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/03/23/2390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/2390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/2390.html</trackback:ping><description><![CDATA[<P style="FONT-SIZE: 18pt; COLOR: #990000; FONT-FAMILY: 楷体_GB2312" align=center><B>外篇&nbsp;&nbsp;道缘儒仙改编成游戏的可行性分析</B></P>
<DIV style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 10.5pt; COLOR: black; LINE-HEIGHT: 180%" align=left>
<SCRIPT src="http://author.cmfu.com/book3/7098/399374.txt"></SCRIPT>
　　 
<P>　　本书名为《道缘儒仙》，或者叫《儒仙缘》，最后可以缩写为《仙缘》，既综合了古代各家的神仙学说，又有很多独创之处，能够开发成适合中国人玩的游戏。 
<P>　　要想成为一个优秀的中国文化游戏，值得关注的不仅仅是游戏本身的互动性和娱乐性，更重要的是游戏的文化内涵，特别是能否将中国优秀的传统文化包融其中。《道缘》在文化内涵上比较丰富，游戏的角色和修行方式既有现实性，又有幻想性，是可以改编为网络游戏的很好的素材。 
<P>　　请看书中创造性的神仙体系和修行方式： 
<P>　　1．首次提出将佛心和儒功进行量化的概念，而且神丹、佛心和儒功三者可以相互转化。 
<P>　　佛心：戒定慧三层的修为程度。可以定义为从别人那里受到的内心感激数（主要是佛家劝人向善、消除心魔等行为方式给别人带来好处，然后赢得别人的香火和感激）。一人感谢一次=1个佛心数。 
<P>　　儒功：一个人完成的功业量（指的是对社会做出的具体的贡献）。衡量的标准是受惠人的多少。一人受惠一次=1个儒功数 
<P>　　神丹：神丹是髓海中经过修练后的结丹量（修炼的结果）。初级修真人一天的修练=1个神丹数。 仙品越高修丹越快。比如真人修一天增加10个神丹数，仙人增加一百个神丹数…… 
<P>　　转化公式：1个神丹数=1个佛心数=1个儒功数 
<P>　　仙品=神丹数+佛心数+儒功数。 
<P>　　每个人都可以同时修炼佛心、儒功和神丹，并非只有佛家才能修佛心，也不是只有儒家才能修儒功，更不是只有道家才能修神丹。 
<P>　　比如儒家的修行同时包括内圣和外王。外王便是儒功，内圣分为心圣和身圣，心圣便是佛心，身圣指的是对身体本身的修炼，等同于神丹。 
<P>　　2．神仙等级的划分 
<P>　　36重，大罗天---------就是一气化三清的一气。这个人是盘古大帝，跟原始天尊、太上老君、灵宝天尊是一个人，只是个虚的人物，早就在10万年前退出江湖了。 除此之外没有人能达到这一层，若有也就是玉帝、佛祖稍微占点儿边。___________________________________ 
<P>　　33-35重属于三清境，统称天界 
<P>　　其中，35重---------------玉清圣境， 神仙榜1000名之内 
<P>　　34重---------------上清真境，神仙榜一万名之内 
<P>　　33重---------------太清仙境，神仙榜五万名之内。 
<P>　　三天尊在数十万年前专门聘请玉帝、佛祖作经理、代言人管理整个世界。所以下面有些人不服，不服就会有斗争，有斗争就有了这个故事。天界的大神共有6万多个，被称为三清天神。 
<P>　　神仙的斗争很激烈，每2000年就有一次惊心动魄的斗争，几乎要死掉所有神仙的20%。 
<P>　　___________________________________________________________ 
<P>　　29-32重----------统称神界，为四梵天依次为： 
<P>　　无上常融天、玉隆腾胜天、龙变梵度天、平育贾奕天； 
<P>　　神界共有250万人 
<P>　　________________________________________________________ 
<P>　　25-28重统称仙界，主要在十州三岛。 
<P>　　修行境界依次为：皓庭霄度天、渊通元洞天、翰宠妙成天、秀乐禁上天 
<P>　　仙界有3000万人 
<P>　　_______________________________________________________ 
<P>　　7-24重通称为真人界，修行于名山大川 
<P>　　有十八重天，依次是虚无越衡天、太极蒙翳天、赤明和阳天、玄明恭华天、耀明宗飘天、竺落皇笳天、虚明堂曜天、观明端靖天、玄明恭庆天、太焕极瑶天、元载孔升天、太安皇崖天、显定极风天、始黄孝芒天、太黄翁重天、无思江由天、上揲阮乐天、无极昙誓天 
<P>　　真人界有2亿人口 
<P>　　____________________________________ 
<P>　　1-6重为修仙基础阶段，哪里修都成 
<P>　　六重天，太皇黄曾天、太明玉完天、清明何童天、玄胎平育天、元明文举天、七曜摩夷天 
<P>　　人数：多如牛毛 
<P>　　____________________________________ 
<P>　　下面是武术师 
<P>　　人数是宇宙总人口的十分之一。 
<P>　　再下面还有凡人10万亿。以下有修罗界、牲畜界、恶鬼界、地狱界，单是地狱界就有18重。 
<P>　　____________________________________ 
<P>　　3．神仙的活动范围 
<P>　　整个世界漫无边际，盘古开天辟地开出的空间基本上是一个球体，直径大约是一亿光年，这就是天庭目前所管理的疆域，也就是我们经常所说的宇宙。宇宙中大大小小的星球不下几十亿颗，按照方位统一划分为东、南、西、北、中五大区域，分别由五老君掌管。东方区域包括角、亢、氐、房、心、尾、箕七大星系，呈青龙之形；北方区域包括斗、牛、女、虛、危、室、壁七大星系，作玄武之势；西方区域包括奎、娄、胃、昴、毕、觜、参七大星系，踞白虎之威；南方区域包括井、鬼、柳、星、张、翼、轸七大星系，成朱雀之状。中央区域又分为紫微、太微、天市三个小区，称为三垣，各辖无数星球。” 
<P>　　______________________________ 
<P>　　4．玉帝、佛祖的办公地点 
<P>　　盘古开天开出的是一个球形的空间。在这个球形空间的中心有一个很大的星球，被称为昊天玄穹星，那里遍布绿水，只有两座又高又大的神山从海中拔地而起直入云端，一座是玄都玉京七宝山，另一座是须弥神山。玉帝的灵霄宝殿就在玄都玉京七宝山的山巅，佛祖的极乐世界则在须弥神山之上。 
<P>　　5．神仙的法力 
<P>　　公式：神仙能力=仙品+法器。 
<P>　　所以光有仙品是不行的，还要有法器，没有法器就等于赤手空拳，作起事来事倍功半。为了找到合适的法器或者炼制的材料，就需要进行物质交换，也就有了买卖。 
<P>　　6．神仙的修炼方式 
<P>　　（1）、修道，道家的方式修行，积累神丹 
<P>　　（2）、修佛，佛家的修行，主要积累佛心 
<P>　　（3）、修儒，儒家的修行，主要积累儒功 
<P>　　（4）、修魔，除了神丹数以外，儒功数和佛心数都是负值 
<P>　　（5）、商人．神丹和佛心都允许买卖，但税特别重，为30%。为了方便买卖，还有专门的神丹币和佛心币。神丹币有灵霄殿监制，佛心币由佛祖监制。 神仙可以通过出卖自己修炼的神丹换取神丹币，神丹币多了也可以通过灌顶师换回神丹。 
<P>　　这样就出现了不修炼而专门作买卖的修仙家族。 
<P>　　儒功不能买卖，必须自己积累。 
<P>　　7．仙劫的设定 
<P>　　公式：仙劫的多少=神丹数/佛心数然后乘以一个系数。 
<P>　　每经过一次仙劫，神仙的功力就会下降1/3，弄不好就死翘翘了。 
<P>　　仙劫的存在限制了神仙数目的无限制增长，同时保证神仙的精神文明不被忽略。要达到物质文明和精神文明双丰收。 
<P>　　8．魔劫的设定 
<P>　　神仙修持的过程中不定期地会碰到魔头，然后功力大损，称为魔劫。定期的魔劫可以由游戏程序设定。不定期的魔劫由游戏玩家自己充任。 
<P>　　9．法器的设定： 
<P>　　（1）法器分为神器、仙器、灵器、宝器 
<P>　　神器----主要是三清天神才能制造使用的。可以设定为有100种。小说中是1千种。 
<P>　　仙器----仙人才能制造使用的。 
<P>　　灵器----真人界使用的。 
<P>　　宝器-----初级修真人和世俗界用的。 
<P>　　_______________________________ 
<P>　　（2）、排在最高层的九大神器(开天九宝) 
<P>　　一曰开天神斧，利器，打遍天下无敌手 
<P>　　二曰监天御印，玉皇大帝主管 
<P>　　三曰九品莲台，佛祖主管 
<P>　　四曰镇妖宝塔，管理妖怪恶人 
<P>　　五曰瀚海神舟，就是我国新发射的神舟了。跑得快，哪里都能眨眼就到。 
<P>　　六曰乾坤锦囊，装东西用的，什么都能装，装多少跟功力有关系。另外，它还可以收取人家的法器。 
<P>　　七曰通灵宝玉，找宝贝用的。 
<P>　　八曰阴阳法轮，炼魂，驱魂，将魂魄炼成神丸，服了可以增长功力。 
<P>　　九曰观天宝镜，想知道什么就知道什么。比六神通还厉害。 
<P>　　每种神器都有仿制品，功效类似，比原件功能差很多。 
<P>　　几乎没有人能够拥有九大神器，但可以拥有仿制品。仿制品也有高低之分。 
<P>　　_________________________________ 
<P>　　（3）、法器的来源 
<P>　　可以去买，也可以自己炼制。 
<P>　　A：买法器 
<P>　　宇宙中有专门炼制法器然后出售的组织和家族。要买法器必须拿自己修练的神丹和佛心去交换。 
<P>　　B：自己炼制 
<P>　　要炼神器必须有四种神材：“地苏木、海金沙、寒水石、乌铊金” ，另外还可能用到别的材料。 
<P>　　还要掌握四种对应的的基本炼器手法，分别是‘折梅手，红酥手，开碑手，金刚手’ 。 
<P>　　_____________________ 
<P>　　（4）、法器的修练 
<P>　　法器有法器排行榜。 
<P>　　想要在排行榜上上升必须经过修练。所有的修练都包括物质和精神两部分，物质就是指能量和运用能量的能力，精神就是作好事或者坏事所得到的佛心。 
<P>　　______________________ 
<P>　　（5）、神仙跟法器的关系 
<P>　　法器能够提升神仙的能力；神仙也要修练并爱护法器。 
<P>　　神仙修练法器就跟养宠物一样，不能光让干活，不给饭吃。那样法器的能力逐渐下降，最后就没效果了。 
<P>　　10．六道轮回的设定 
<P>　　一旦死了可以进入地狱，然后从地狱从新修炼，历经地狱界、恶鬼界、牲畜界、修罗界可以重新爬回人界，然后接着修仙。 
<P>　　11．游戏的角色 
<P>　　（1）道士 
<P>　　（2）和尚 
<P>　　（3）儒生 
<P>　　（4）魔鬼 
<P>　　（5）商人 
<P>　　(6)发明家以及制造师，设计制造神器 
<P>　　每种都有无数等级，大部分等级名称本书可以找到。没有也可以很容易加上。</P></DIV><img src ="http://www.blogjava.net/yangsail/aggbug/2390.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-03-23 20:29 <a href="http://www.blogjava.net/yangsail/archive/2005/03/23/2390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈网络游戏中的互动</title><link>http://www.blogjava.net/yangsail/archive/2005/02/21/1381.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 20 Feb 2005 16:46:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/21/1381.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1381.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/21/1381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1381.html</trackback:ping><description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent><FONT size=2>组队系统需要什么？帮会系统又需要什么？ <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>1，集体交流的时间是一个方面，也就是上头讲到的时间不统一的问题。 <BR>2，领导人的问题会很大程度上影响整个帮会的效率。 <BR>3，队员水平的参差不齐，会在某种程度上影响其他队员的发挥。 <BR>4，不同的意见会导致矛盾的产生。 <BR>5，帮会如果粘合得太紧，会导致一种排外情绪。 <BR><BR>那么再来看看如何设计能最大程度的弥补以上所描叙的关于帮会的风险问题。 <BR>这里要提出一个最关键的概念，就是一个帮会的Interchangeability（自我调节 <BR>能力）那么我们如何来从设计上提供这样一种这样的能力呢？最简单的方法是提 <BR>供一套vote/elect机制，也就是说投票和选举的机制，可以给帮会内部提供一些 <BR>自我调节的能力。至于投票的内容，可以包括选举领导人，或者踢除/添加新的会 <BR>员。 <BR><BR>上面的解决方案在解决某些问题的瓶颈的同时也扩大了时间不统一的问题。比如 <BR>说某位帮会会员长时间不上线，导致投票的决策下不来，如何解决？这实际上就 <BR>牵扯到一些设计细节了，比如说可以设置一个due的时间之类的来解决。 <BR><BR>另外一点很重要的因素，就是要正确的看待帮内的矛盾。所谓正确看待，就是要 <BR>鼓励玩家将矛盾显性化，而不是隐藏在私底下，而很多时候，很多矛盾是否公开 <BR>或者保密也就仅仅只是一念之差的问题。而很多时候的矛盾是由游戏内部资源分 <BR>配不均匀造成的，矛盾的产生直接受到社会舆论的影响，如果能在游戏中宣扬一 <BR>种关于矛盾公开的舆论，可以一定程度上减少这种现象带来的影响。 <BR><BR>既然谈到这种做法，就不得不谈谈关于玩家在帮会里面的行为取向，这里有四点 <BR>定理： <BR>1，帮会成员总是会比较热心的参加帮内的活动 <BR>2，帮会成员总是会比较努力的致力于帮会的发展 <BR>3，帮会成员总是很自豪把自己和帮会联系到一起 <BR>4，帮会成员总是喜欢把帮会的目标作为自己的目标 <BR><BR>当有帮会成员的行为取向偏离了以上四点的时候，我们成他为边缘人物。最容易 <BR>产生矛盾的地方就往往是边缘和帮会热心派成员之间的矛盾。明白了这一点之后， <BR>其实用帮会权限系统也可以比较好的控制矛盾的产生。比如分为，帮主，副帮主， <BR>资深帮众，普通帮众之类的，不同的级别对帮会的资源有不同程度的访问权限。 <BR><BR>最后一点就是关于帮会缺陷中的第5点，排外因素。其实对于这一点，目前的各个 <BR>游戏都已经做得比较完善了，就是加强帮会间的互动，比如说帮会战就是一种很 <BR>好的互动，同时也可以增加经济上或者人员上的互动就更好了。 <BR></FONT></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/1381.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-21 00:46 <a href="http://www.blogjava.net/yangsail/archive/2005/02/21/1381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络游戏制作技术（六）</title><link>http://www.blogjava.net/yangsail/archive/2005/02/13/1121.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 13 Feb 2005 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/13/1121.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1121.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/13/1121.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1121.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1121.html</trackback:ping><description><![CDATA[<SPAN id=lblContent><FONT size=2>&nbsp;</FONT>
<P align=center><STRONG><FONT size=2>场景管理之消息发送</FONT></STRONG></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 好久没有写东西出来和大家共同揣摩，真是对不住大家了。现在终于腾了一些时间来继续和大家研究网络游戏制作技术，在这一节中，我就要向大家介绍网络游戏服务器中World场景划分和场景中消息分发问题。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 在前面我基本向大家讲述的都是一些基本的技术问题，从某种意义上讲。属于纯技术范畴的东西，但现在要向大家讲的，应该是属于服务器功能设计范畴的。在这里，我未必讲的很好，有遗漏之处就请大家谅解和指正。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 对于有一定游戏服务器开发基础的朋友而言，应该都明白一个网络游戏服务器和客户端之间的一个基本关系：&nbsp;玩家客户端是游戏服务器一个局部COPY表现。这个说法听起来可能有一些绕口，简单的解释下也就是说：客户端所具备的区域信息也就是游戏服务器相同区域数据的一份COPY，而表现的意思，也就是说，CLIENT端将这样的数据信息图形化，并且通过屏幕来进行显示，从而来呈现出一个多姿多彩的游戏世界。这样说大家应该能够听懂了吧？再不懂的话，就自己琢磨了。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 说了上面那么多，大家一定要问“SERVER和CLIENT这种关系和我们的消息发送又有什么关系呢？”。其实，我们要讨论的问题点也就在这里。但现在我还不说场景消息到底该如何进行分发。我们还是再来研究一个问题：什么能够使我们的游戏世界变的内容丰富？<BR>大家先不要看我所说的，先自己想想。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 大家应该都思考过了，我就来说一下我的个人想法和理解，可能和大家不一样（我想到的你没有想到的你补上，反之，我补上）。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 在我们的MMOPRG游戏世界中，造成游戏世界变的丰富多彩一般无外乎两个大方面：NPC动作、玩家动作。呵呵，看起来就只有简单的两个方面，但具体分析这些动作起来，可就会让各位包括我都会头大的。先我们来说NPC动作吧，NPC动作通过AI逻辑进行控制，一般情况可以分为一下几个动作：待机、移动、物理攻击、技能攻击、魔法攻击、死亡等，而游戏中玩家动作的产生是由现实中玩家进行操控的，动作类型基本上也不外乎以上几种。既然在服务器游戏世界中存在这样的一些动作，那是如何进行获取的呢？其实就只有两个字：消息（Message）。而消息的产生方又分为两种：Client消息，Server消息。既然有消息产生，我们就将涉及到另外一个问题：如何将产生的消息分发出去呢？</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 下面通过我自己的实现经验来简单介绍场景消息的分发原理（详细介绍写的太多，有点懒！！），应该不是最佳的，我只是提一个开头，更好的处理实现方式还是需要大家来共同研究。有好的想法也希望告诉我下，我也从中学习些新的东西。</FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 先看场景示范图（我画的，比较土，只是表明一个意思。呵呵）</FONT></P>
<P><BR><FONT size=2>&nbsp;<BR>&nbsp;&nbsp;&nbsp; 通过上面设计示范图，我来具体介绍：关于场景消息分发，我的设计和分析过程：<BR>&nbsp;&nbsp;&nbsp; 第一步：将场景网络化，也就是说将我们的游戏服务器大场景进行逻辑上的区域划分，每个单独区域所占的面积可以考虑比屏幕区域稍微大点。同时为每一个单独的区域创建Player标志信息（SOCKET或者其他）列表。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第二步：将单独区域四分化，也就是说对于每一个小区域，再次划分为四个更加小的区域，同时为每一个小的区域建立一个包含三个对象的整数数组。数组的作用是为了保存此小区域的亲缘区域。例如：&nbsp;小区域1的亲缘区域就是：&nbsp;A、B、H，小区域2的亲缘区域就是：B、C、D等。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第三步：在上面两步基础上，就是实际处理消息分发了。如果Player/NPC在区域中进行消息动作，我们通过Player/NPC的当前位置就可以首先确定Player/NPC所在大地图中的具体区域。在我们确定好了具体的区域后，我们要继续确定在那个具体的小区域。在这些小区域都确定后，我们就可以将我们的动作消息发送到亲缘区域中的Player(玩家)。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 第四步：对于第三步的改变优化，用CPU处理量来换取消息数量，具体做法也就是，在亲缘区域中继续区域化。也就是说消息不是发送到亲缘区域中的所有Player(玩家)，而是有选择的发送到自身一定区域的玩家。这种优化改革从某种意义上讲，可以减少服务器总消息数量，但增大CPU处理量，而对于具体实现，就需要大家去权衡了。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; 以上也就是这个分析和处理过程了。同时关于这个场景处理的.h文件，我也就简单的写下，大家参考了。</FONT></P>
<P><BR><FONT size=2>Class&nbsp;&nbsp;&nbsp;&nbsp;GmapRegion<BR>{<BR>&nbsp;&nbsp;&nbsp;public:<BR>GmapRegion();<BR>~&nbsp;GmapRegion();<BR>void&nbsp;&nbsp;&nbsp;GetBoardCastMsgList(POINT&nbsp;current_pos,LIST&nbsp;*);&nbsp;&nbsp;//获取当前位置广播消息的Player列表。<BR>……..<BR>&nbsp;&nbsp;&nbsp;private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Init();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;voud&nbsp;&nbsp;&nbsp;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;InitMapRegion(int&nbsp;&nbsp;map_wis,int&nbsp;map_hei);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//地图区域化<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;protected:<BR>}</FONT></P>
<P><FONT size=2><BR></FONT></P></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/1121.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-13 11:56 <a href="http://www.blogjava.net/yangsail/archive/2005/02/13/1121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络游戏制作技术（五）</title><link>http://www.blogjava.net/yangsail/archive/2005/02/13/1120.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 13 Feb 2005 03:54:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/13/1120.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1120.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/13/1120.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1120.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1120.html</trackback:ping><description><![CDATA[<SPAN id=lblContent><FONT size=2>&nbsp;</FONT>
<P><STRONG><FONT size=2>线程同步和服务器数据保护</FONT></STRONG></P>
<P><FONT size=2>最近因为自己主持的项目出现些问题，太忙了，所以好久都没有继续写东西和大家进行探讨制作开发部分了。在这一节中就要向大家介绍另外一个重要的部分，并且也是最头疼的部分：线程同步和数据保护。</FONT></P>
<P><FONT size=2>关于线程的概念我在前面的章节中已经介绍过了，也就在这里不累赘—“重复再重复”了。有一定线程基础的人都知道，线程只要创建后就如同脱缰的野马，对于这样的一匹野马我们怎么来进行控制和处理呢？简单的说，我们没有办法进行控制。因为我们更本就没有办法知道CPU什么时候来执行他们，执行他们的次序又是什么？</FONT></P>
<P><FONT size=2>有人要问没有办法控制那我们如何是好呢？这个问题也正是我这里要向大家进行解释和说明的，虽然我们不能够控制他们的运行，但我们可以做一些手脚来达到我们自己的意志。</FONT></P>
<P><FONT size=2>这里我们的做手脚也就是对线程进行同步，关于同步的概念大家在《操作系统》中应该都看过吧！不了解的话，我简单说说：读和写的关系（我读书的时候，请你不要在书上乱写，否则我就没有办法继续阅读了。）</FONT></P>
<P><FONT size=2>处理有两种：用户方式和内核方式。<BR>用户方式的线程同步由于有好几种：原子访问，关键代码段等。</FONT></P>
<P><FONT size=2>在这里主要向大家介绍关键代码段的处理（我个人用的比较多，简单实用）。先介绍一下它的一些函数，随后提供关键代码段的处理类供大家参考（比较小，我就直接贴上来了）</FONT></P>
<P><FONT size=2>VOID&nbsp;InitializeCriticalSection(&nbsp;&nbsp;&nbsp;&nbsp;//初始化互斥体<BR>&nbsp;&nbsp;LPCRITICAL_SECTION&nbsp;lpCriticalSection&nbsp;&nbsp;//&nbsp;critical&nbsp;section<BR>);</FONT></P>
<P><FONT size=2>VOID&nbsp;DeleteCriticalSection(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清除互斥体<BR>&nbsp;&nbsp;LPCRITICAL_SECTION&nbsp;lpCriticalSection&nbsp;&nbsp;&nbsp;//&nbsp;critical&nbsp;section<BR>);</FONT></P>
<P><FONT size=2>VOID&nbsp;EnterCriticalSection(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//进入等待<BR>&nbsp;&nbsp;LPCRITICAL_SECTION&nbsp;lpCriticalSection&nbsp;&nbsp;//&nbsp;critical&nbsp;section<BR>);</FONT></P>
<P><FONT size=2>VOID&nbsp;LeaveCriticalSection(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//释放离开<BR>&nbsp;&nbsp;LPCRITICAL_SECTION&nbsp;lpCriticalSection&nbsp;&nbsp;&nbsp;//&nbsp;critical&nbsp;section<BR>);</FONT></P>
<P><FONT size=2>以上就是关于关键代码段的基本API了。介绍就不必了（MSDN）。而我的处理类只是将这几个函数进行了组织，也就是让大家能够更加理解关键代码端<BR>.h<BR>class&nbsp;&nbsp;&nbsp;CCriticalSection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//共享变量区类<BR>{<BR>public:<BR>CCriticalSection();<BR>virtual&nbsp;~CCriticalSection();<BR>void&nbsp;&nbsp;&nbsp;Enter();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//进入互斥体<BR>void&nbsp;&nbsp;&nbsp;Leave();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//离开互斥体释放资源<BR>private:<BR>&nbsp;&nbsp;&nbsp;CRITICAL_SECTION&nbsp;&nbsp;g_CritSect;<BR>};<BR>.cpp<BR>CCriticalSection::CCriticalSection()<BR>{<BR>InitializeCriticalSection(&amp;g_CritSect);<BR>}</FONT></P>
<P><FONT size=2>CCriticalSection::~CCriticalSection()<BR>{<BR>DeleteCriticalSection(&amp;g_CritSect);<BR>}</FONT></P>
<P><FONT size=2>void&nbsp;&nbsp;CCriticalSection::Enter()<BR>{<BR>EnterCriticalSection(&amp;g_CritSect);<BR>}</FONT></P>
<P><FONT size=2>void&nbsp;&nbsp;CCriticalSection::Leave()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;LeaveCriticalSection(&amp;g_CritSect);<BR>}<BR>由于篇幅有限关键代码段就说到这里，接下来向大家简单介绍一下内核方式下的同步处理。<BR>哎呀！这下可就惨了，这可是要说好多的哦！书上的罗罗嗦嗦我就不说了，我就说一些我平时的运用吧。首先内核对象和一般的我们使用的对象是不一样的，这样的一些对象我们可以简单理解为特殊对象。而我们内核方式的同步就是利用这样的一些特殊对象进行处理我们的同步，其中包括：事件对象，互斥对象，信号量等。对于这些内核对象我只向大家说明两点：<BR>1．内核对象的创建和销毁<BR>2．内核对象的等待处理和等待副作用</FONT></P>
<P><FONT size=2>第一：内核对象的创建方式基本上而言都没有什么太大的差别，例如：创建事件就用HANDLE&nbsp;CreateEvent(…..),创建互斥对象&nbsp;HANDLE&nbsp;CreateMutex(…….)。而大家注意的也是这三个内核对象在创建的过程中是有一定的差异的。对于事件对象我们必须明确指明对象是人工对象还是自动对象，而这种对象的等待处理方式是完全不同的。什么不同下面说（呵呵）。互斥对象比较简单没什么说的，信号量我们创建必须注意我们要定义的最大使用数量和初始化量。最大数量&gt;初始化量。再有如果我们为我们的内核对象起名字，我们就可以在整个进程中共用，也可以被其他进程使用，只需要OPEN就可以了。也就不多说了。</FONT></P>
<P><FONT size=2>第二：内核对象的等待一般情况下我们使用两个API：<BR>DWORD&nbsp;WaitForSingleObject(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//单个内核对象的等待<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;hHandle,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;handle&nbsp;to&nbsp;object<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwMilliseconds&nbsp;&nbsp;&nbsp;//&nbsp;time-out&nbsp;interval<BR>);</FONT></P>
<P><FONT size=2>DWORD&nbsp;WaitForMultipleObjects(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//多个内核对象的等待<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;nCount,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;number&nbsp;of&nbsp;handles&nbsp;in&nbsp;array<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONST&nbsp;HANDLE&nbsp;*lpHandles,&nbsp;&nbsp;//&nbsp;object-handle&nbsp;array<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;fWaitAll,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;wait&nbsp;option<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwMilliseconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;time-out&nbsp;interval<BR>);<BR>具体怎么用查MSDN了。<BR>具体我们来说等待副作用，主要说事件对象。首先事件对象是分两种的：人工的，自动的。人工的等待是没有什么副作用的（也就是说等待成功后，要和其他的对象一样要进行手动释放）。而自动的就不一样，但激发事件后，返回后自动设置为未激发状态。这样造成的等待结果也不一样，如果有多个线程在进行等待事件的话，如果是人工事件，被激活后所有等待线程成执行状态，而自动事件只能有其中一个线程可以返回继续执行。所以说在使用这些内核对象的时候，要充分分析我们的使用目的，再来设定我们创建时候的初始化。简单的同步我就说到这里了。下面我就将将我们一般情况下处理游戏服务器处理过程中的数据保护问题分析：</FONT></P>
<P><FONT size=2>首先向大家说说服务器方面的数据保护的重要性，图例如下：</FONT></P>
<P><FONT size=2>用户列表</FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户删除</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户数据修改<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用数据</FONT></P>
<P><BR><FONT size=2>加入队列<BR><BR>对于上面的图例大家应该也能够看出在我们的游戏服务器之中，我们要对于我们用户的操作是多么的频繁。如此频繁的操作我们如果不进行处理的话，后果将是悲惨和可怕的，举例：如果我们在一个线程删除用户的一瞬间，有线程在使用，那么我们的错误将是不可难以预料的。我们将用到了错误的数据，可能会导致服务器崩溃。再者我们多个线程在修改用户数据我们用户数据将是没有办法保持正确性的。等等情况都可能发生。怎么样杜绝这样的一些情况的发生呢？我们就必须要进行服务器数据的保护。而我们如何正确的保护好数据，才能够保持服务器的稳定运行呢？下面说一下一些实际处理中的一些经验之谈。</FONT></P>
<P><FONT size=2>1．我们必须充分的判断和估计我们服务器中有那些数据要进行数据保护，这些就需要设计者和规划者要根据自己的经验进行合理的分析。例如：在线用户信息列表，在线用户数据信息，消息列表等。。。。。</FONT></P>
<P><FONT size=2>2．正确和十分小心的保护数据和正确的分析要保护的数据。大家知道我们要在很多地方实现我们的保护措施，也就是说我们必须非常小心谨慎的来书写我们的保护，不正确的保护会造成系统死锁，服务器将无法进行下去（我在处理的过程中就曾经遇到过，头都大了）。正确的分析要保护的数据，也就是说，我们必须要估计到我们要保护的部分的处理能够比较快的结束。否则我们必须要想办法解决这个问题：例如：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA_STRUCT&nbsp;&nbsp;g_data;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CRITICAL_SECTION&nbsp;&nbsp;g_cs;</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnterCriticalSection(&amp;g_cs);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendMessage(hWnd,WM_ONEMSG,&amp;g_data,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeaveCriticalSection(&amp;g_cs);<BR>以上处理就有问题了，因为我们不知道SendMessage（）什么时候完成，可能是1/1000豪秒，也可能是1000年，那我们其他的线程也就不用活了。所以我们必须改正这种情况。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA_STRUCT&nbsp;&nbsp;g_data;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CRITICAL_SECTION&nbsp;&nbsp;g_cs;</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnterCriticalSection(&amp;g_cs);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostMessage(hWnd,WM_ONEMSG,&amp;g_data,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;LeaveCriticalSection(&amp;g_cs);</FONT></P>
<P><FONT size=2>或者&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA_STRUCT&nbsp;&nbsp;temp_data;</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnterCriticalSection(&amp;g_cs);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_data&nbsp;=&nbsp;g_cs;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeaveCriticalSection(&amp;g_cs);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendMessage(hWnd,WM_ONEMSG,&amp;&nbsp;temp_data,0);</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;3．最好不要复合保护用户数据，这样可能会出现一些潜在的死锁。</FONT></P>
<P><BR><FONT size=2>简而言之，服务器的用户数据是一定需要进行保护，但我们在保护的过程中就一定需要万分的小心和谨慎。这篇我就说到这里了，具体的还是需要从实践中来进行学习，下节想和大家讲讲服务器的场景处理部分。先做事去了。呵呵！！有好的想法和建议的和我交流探讨，先谢谢了。</FONT></P></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/1120.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-13 11:54 <a href="http://www.blogjava.net/yangsail/archive/2005/02/13/1120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络游戏制作技术（三）</title><link>http://www.blogjava.net/yangsail/archive/2005/02/13/1118.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 13 Feb 2005 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/13/1118.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1118.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/13/1118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1118.html</trackback:ping><description><![CDATA[<SPAN id=lblContent><FONT size=2>&nbsp;</FONT>
<P><STRONG><FONT size=2>线程池处理部分</FONT></STRONG></P>
<P><FONT size=2>续上在这里我将要向大家简单介绍一下游戏服务器中必须要处理另外一项主要技术：</FONT></P>
<P><FONT size=2>线程池技术</FONT></P>
<P><FONT size=2>开始&nbsp;我来向大家简单来介绍一下线程池的概念，先简单了解下线程先，线程可以理解为一个function&nbsp;,&nbsp;是一个为了进行某一项任务或者处理某一项具体事务的函数。例如：</FONT></P>
<P><FONT size=2>UINT&nbsp;&nbsp;WINAPI&nbsp;&nbsp;FunctionCtrl(void&nbsp;*)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//线程处理函数<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;进行某一项任务或者处理某一项具体事务<BR>&nbsp;&nbsp;&nbsp;&nbsp;………….<BR>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;EXITFUNCTION_CODE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//退出码<BR>}</FONT></P>
<P><FONT size=2>而我们的线程池自身可以理解为是很多线程的一个管理者也可以说是一个很多线程的统筹者。因为我们的线程池具有生成线程功能也具有撤消线程的权利。这就是简单的线程池的概念（我的理解，呵呵！！）接下来就来具体介绍线程池了！！</FONT></P>
<P><FONT size=2>首先&nbsp;介绍我们为什么要使用线程池技术呢？大家都知道我们的游戏服务器端要处理大量的用户请求,，同时需要发送大量的游戏数据到客户端，从而来驱动客户端程序的执行和维持游戏的进行。那我们的服务器端是如何进行处理的呢？其实在这里我们就充分用到了线程池技术。<BR>那么用这种技术有什么好处和优点呢？以下就来简述这些，有不足之处和不当之处希望有心人指正，呵呵！！</FONT></P>
<P><FONT size=2>大家都了解在我们服务器整个运行过程中，我们将整个运行时间分成很多个时间片。而对于这些已经分成的各个微小的时间片而言，在各个不同时间片中要处理的用户请求和需要发送到用户端的游戏数据量也将是不一样的。而处理用户的请求和发送数据到客户端的工作都是由一系列的线程来执行的。</FONT></P>
<P><FONT size=2>鉴于上面，这样我们就可以感性的设想下服务器运行中的两种情况：<BR>第一种在我们服务器运行到某个时间片需要处理大量的用户请求和发送大量数据，有这样繁重的工作任务，我们就需要有很多的工作者线程来处理完成这样的任务，以此来满足我们的工作需要。这样说我们就必须拥有很多工作者线程。</FONT></P>
<P><FONT size=2>第二种在我们服务器运行到某个时间片需要处理的用户请求和发送数据工作量比较小，由于任务比较少，我们用来处理任务的工作者线程也就不需要很多。也就是说我们只要有少量的工作者线程就可以达到我们的工作要求了。<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>对于上面的两种情况，我们可以说明这样的一个事实，也就是说我们服务器在运行过程中运行状态是动态改变的，呼忙呼闲，时急时慢的。服务器的这样的行为动作和性质可以做一个如下比喻：服务器就是一个企业，在企业业务非常忙的时候，公司的员工数量就必须要增多来满足业务的需要。而在企业不景气的时候，接的业务也就比较少，那么来说就会有很多员工比较闲。那我们该怎么办呢？为了不浪费公司资源和员工自身资源，我们就必须要裁减员工，从而来配合公司的运行。而做这样工作的可能是公司的人力资源部或者其他部分。现在就认为是人力资源部了。呵呵。</FONT></P>
<P><FONT size=2>对于上面的比喻我们来抓几个关键词和列举关键词和我们主题对象进行对照，以此来帮大家来简单理解服务器运行和线程池。</FONT></P>
<P><FONT size=2>企业&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;：&nbsp;&nbsp;游戏服务器<BR>人力资源部&nbsp;&nbsp;：&nbsp;&nbsp;线程池<BR>职员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;：&nbsp;&nbsp;工作者线程</FONT></P>
<P><FONT size=2>在说了这么多的废话后，就具体的将线程池模型&nbsp;&nbsp;ThreadPool.h文件提供以供大家参考：</FONT></P>
<P><BR><FONT size=2>class&nbsp;&nbsp;&nbsp;GThreadPoolModel<BR>{<BR>friend static&nbsp;&nbsp;&nbsp;UINT&nbsp;WINAPI&nbsp;&nbsp;PoolManagerProc(void*&nbsp;pThread);&nbsp;&nbsp;//线程池管理线程<BR>friend&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;&nbsp;&nbsp;UINT&nbsp;WINAPI&nbsp;&nbsp;WorkerProc&nbsp;(void*&nbsp;pThread);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//工作者线程<BR>enum SThreadStatus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//线程池状态<BR>{<BR>BUSY,<BR>NORMAL,<BR>IDLE<BR>};<BR>enum SReturnvalue&nbsp; //线程返回值<BR>{<BR>MANAGERPROC_RETURN_value &nbsp;=&nbsp;10001,<BR>WORKERPROC_RETURN_value &nbsp;=&nbsp;10002,<BR>…………….<BR>};<BR>public:<BR>GThreadPoolModel&nbsp;();<BR>virtual&nbsp;~&nbsp;GThreadPoolModel&nbsp;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;bool&nbsp;&nbsp;StartUp(WORD&nbsp;static_num,WORD&nbsp;max_num)=0;&nbsp;&nbsp;&nbsp;//启动线程驰<BR>virtual&nbsp;bool&nbsp;&nbsp;Stop(void&nbsp;)=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//停止线程池<BR>virtual&nbsp;bool&nbsp;&nbsp;ProcessJob(void&nbsp;*)=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//提出工作处理要求<BR>protected:<BR>virtual&nbsp;bool&nbsp;&nbsp;AddNewThread(void&nbsp;)=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//增加新线程<BR>virtual&nbsp;bool&nbsp;&nbsp;DeleteIdleThread(void)=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//删除空闲线程<BR>static&nbsp;&nbsp;UINT&nbsp;WINAPI&nbsp;PoolManagerProc&nbsp;(void*&nbsp;pThread);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//线程池管理线程<BR>&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;&nbsp;UINT&nbsp;WINAPI&nbsp;WorkerProc&nbsp;(void*&nbsp;pThread);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//工作者线程<BR>GThreadPoolModel::SThreadStatus&nbsp;&nbsp;GetThreadPoolStatus(&nbsp;void&nbsp;);&nbsp;//获取线程池当前工作状态<BR>private:<BR>void&nbsp;&nbsp;&nbsp;&nbsp;Init();<BR>void&nbsp;&nbsp;&nbsp;&nbsp;Release();<BR>protected:<BR>………………………..<BR>private:<BR>};</FONT></P>
<P><FONT size=2>以上是线程池模型的一个简单class，而对于具体的工作处理线程池，可以由此模型进行继承。以此来满足具体的需要。到这里就简单的向大家介绍了线程池的处理方式。有不对之处望指正。同时欢迎大家和我交流。</FONT></P></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/1118.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-13 11:52 <a href="http://www.blogjava.net/yangsail/archive/2005/02/13/1118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络游戏制作技术（四）</title><link>http://www.blogjava.net/yangsail/archive/2005/02/13/1119.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 13 Feb 2005 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/13/1119.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1119.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/13/1119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1119.html</trackback:ping><description><![CDATA[<SPAN id=lblContent><FONT size=2>&nbsp;</FONT>
<P><STRONG><FONT size=2>服务器程序设计部分</FONT></STRONG></P>
<P><FONT size=2>续上在这里我将要向大家简单介绍一下游戏服务器中必须要处理另外一项主要技术：<BR>内存分配处理技术也可以称为内存池处理技术（这个比较洋气，前面通俗的好，呵呵）</FONT></P>
<P><FONT size=2>开始向大家介绍一般情况下我们对于内存的一些基本操作。简单而言，内存操作就只有三个步骤：申请、使用、销毁。而对于这些操作我们在C和C++中的处理方式略有不同:</FONT></P>
<P><FONT size=2>在C中我们一般用malloc(….)函数来进行申请，而对应销毁已经申请的内存使用free(…)函数。<BR>在C++我们一般使用new操作符和delete操作符进行处理申请和销毁。<BR>大家一定要问了，我们一般都是这样处理的呀！！没有什么可以说的哦！！呵呵，我感觉就有还是有一些东东和大家聊的哦。先聊简单几条吧！！<BR>1．Malloc(…..)和free(….),&nbsp;new&nbsp;….和&nbsp;delete&nbsp;…必须成对出现不可以混杂哦，混杂的话，后果就不可以想了哦！！（也没有什么，就是内存被泄漏了，呵呵）<BR>2．在我们使用new&nbsp;…和delete&nbsp;….一定要注意一些细节，否则后果同上哦！！什么细节呢？下面看一个简单的例子：<BR>char&nbsp;&nbsp;*block_memory&nbsp;&nbsp;=&nbsp;NULL;<BR>block_memory&nbsp;&nbsp;=&nbsp;new&nbsp;&nbsp;char[1024];<BR>delete&nbsp;&nbsp;block_memory;<BR>block_memory&nbsp;=&nbsp;NULL;<BR>大家沉思一会。。。。。。。。。<BR>大家看有错吗？没有错吧！！<BR>如果说没有错的，就要好好补补课了，是有错的，上面实际申请的内存是没有完全被释放的，为什么呢？因为大家没有注意第一条的完全匹配原则哦，在new&nbsp;的时候有[&nbsp;]，我们在delete&nbsp;怎么就没有看见[&nbsp;]&nbsp;的影子呢？&nbsp;这就造成了大错有1023个字节没有被释放。正确的是&nbsp;：&nbsp;delete&nbsp;[]block_memory;</FONT></P>
<P><FONT size=2>关于内存基本操作的我是说这两条，其他要注意还是有的，基本就源于此了。</FONT></P>
<P><FONT size=2>了解了上面那些接下来就想大家说说服务器内存处理技术了。上面都没有弄清楚了，就算了。呵呵。</FONT></P>
<P><FONT size=2>大家都知道，我们的服务器要频繁的响应客户端的消息同时要将消息发送到客户端，并且还要处理服务器后台游戏World的运行。这样我们就必须要大量的使用内存，并且要进行大量的内存操作（申请和销毁）。而在这样的操作中，我们还必须要保证我们的绝对正确无误，否则就会造成内存的泄漏，而内存泄漏对于服务器而言是非常可怕的，也可能就是我们服务器设计失败的毒药。而我们如何进行服务器内存的正确和合理的管理呢？那就是我们<BR>必须建立一套适合我们自己的内存管理技术。现在就向大家说一说我在内存管理方面的一些做法。<BR>基本原理先用图形表示一下：</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>回收内存块<BR>超大块内存<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在要申请的内存块</FONT></P>
<P><FONT size=2>上面的意思是：我们在服务器启动过程中就为自己申请一块比较大的内存块，而我们在服务器运行过程中需要使用内存我们就到这样一块比较大已经申请好的内存块中去取。而使用完后要进行回收。原理就是这么简单。而最重要的是我们如何管理这个大的内存块呢？<BR>（非常复杂也比较难，呵呵）<BR>首先&nbsp;就内存块操作而言就只有申请（类似&nbsp;new）和回收（类似&nbsp;delete）。<BR>其次&nbsp;我们必须要清楚那些内存我们在使用中，那些是可以申请的。</FONT></P>
<P><FONT size=2>关于上面我简单将这样的一些数据结构和class定义在下面供大家参考使用。<BR><BR>&nbsp;&nbsp;&nbsp;typedef&nbsp;&nbsp;struct&nbsp;&nbsp;MemoryBlock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//内存块结构<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;*buffer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//内存块指针<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;b_Size;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//内存块尺寸<BR>}&nbsp;MemoryBlock;</FONT></P>
<P><FONT size=2>class&nbsp;&nbsp;&nbsp;CMemoryList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//列表对象类（相当于数组管理类）<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMemoryList();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;~&nbsp;CMemoryList();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;InitList(int&nbsp;&nbsp;data_size,int&nbsp;data_num);//初始化列表数据结构尺寸和数量<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;AddToList(void&nbsp;*data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加入列表中<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;DeleteItem(int&nbsp;index);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//删除指定索引元素<BR>……………..<BR>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Init();<BR>&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Release();<BR>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;*memory;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;total_size;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;total_num;<BR>&nbsp;&nbsp;&nbsp;&nbsp;protected:<BR>};</FONT></P>
<P><FONT size=2>classs&nbsp;&nbsp;&nbsp;CMemoryPool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//内存池处理类<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMemoryPool();&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;~&nbsp;CMemoryPool();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;InitMemoryPool(int&nbsp;&nbsp;size);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//初始化内存池<BR>void&nbsp;*&nbsp;&nbsp;ApplicationMemory(int&nbsp;size);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//申请指定size内存<BR>void&nbsp;&nbsp;&nbsp;CallBackMemory(void&nbsp;*,int&nbsp;size);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//回收指定size内存</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Init();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Release():<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemoryBlock&nbsp;&nbsp;*UniteMemory(MemoryBlock&nbsp;&nbsp;*block_a，MemoryBlock&nbsp;&nbsp;*&nbsp;block_b);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//合并内存</FONT></P>
<P><BR><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemoryBlock&nbsp;&nbsp;memoryPool_Block;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//内存池块<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMemoryList&nbsp;&nbsp;*callBackMemory_List;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//回收内存列表<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMemoryList&nbsp;&nbsp;*usingMemory_List;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使用中内存列表<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMemoryList&nbsp;&nbsp;*spacingMemory_List;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//空白内存列表<BR>&nbsp;&nbsp;&nbsp;&nbsp;protected:<BR>};</FONT></P>
<P><FONT size=2>以上就是这个内存管理类的一些基本操作和数据定义，class&nbsp;&nbsp;CMemoryList&nbsp;&nbsp;在这里不是重点暂且就不说了，有空再聊。而具体的内存池处理方法简单叙述如下：</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;函数InitMemoryPool（）：&nbsp;&nbsp;初始化申请一块超大内存。<BR>&nbsp;&nbsp;&nbsp;函数ApplicationMemory（）：申请指定尺寸，申请内存成功后，要将成功申请的内存及其尺寸标示到usingMemory_List列表，同时要将spacingMemory_List列表进行重新分配。以便于正确管理。<BR>&nbsp;&nbsp;&nbsp;函数CallBackMemory（）：回收指定尺寸内存，成功回收后，要修改spacingMemory_List列表，同时如果有相邻的内存块就要合并成一个大的内存块。usingMemory_List修改使用列表，要在使用列表中的这一项删除。</FONT></P>
<P><FONT size=2>以上就是一些简单处理说明，更加详细的就需要大家自己琢磨和处理了。我就不细说了。呵呵。不足之处就请大家进行指正，以便让我们大家都提高。先谢谢了。</FONT></P></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/1119.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-13 11:52 <a href="http://www.blogjava.net/yangsail/archive/2005/02/13/1119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络游戏制作技术（二）</title><link>http://www.blogjava.net/yangsail/archive/2005/02/13/1117.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 13 Feb 2005 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/13/1117.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1117.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/13/1117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1117.html</trackback:ping><description><![CDATA[<SPAN id=lblContent><STRONG><FONT size=2>消息打包处理部分<BR><BR></FONT></STRONG>
<P><FONT size=2>续上在上面我简单的说了一下服务器完成端口处理部分，接下来我想大家介绍一下关于如何建立服务器和客户端的联系规则，也就是服务器和客户端的游戏协议部分。有不足之处希望大家和我进行交流。</FONT></P>
<P><FONT size=2>首先解释一下这里协议的概念，协议大家都了解是一种通信规则，例如：TCP/IP，UDP等等，这些是我们在网络通信过程中所处理使用的协议。而我们这里的协议是我们的游戏服务器和客户端的通信规则。简而言之，也就是客户端发送到服务器的数据包和服务器发送的数据包双方解释规则。下面就通过几个部分来具体介绍这种协议的建立和处理。</FONT></P>
<P><FONT size=2>消息头定义</FONT></P>
<P><FONT size=2>如果我们能够解释双方的数据包的意义，我们就必须为双方数据包定义一个统一规则的消息头，我是这么定义消息头的。服务器数据包和客户端数据包分别定义不同的消息头。以下就是双方消息头的简单定义。</FONT></P>
<P><FONT size=2>struct&nbsp;&nbsp;&nbsp;&nbsp;ServerMsg_Head&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//服务器消息头<BR>{<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;s_version;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//版本信息<BR>&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;&nbsp;s_flages;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息标志<BR>&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;&nbsp;s_who;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息驱动者<BR>&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;&nbsp;s_sort;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息类别<BR>&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;&nbsp;s_value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息值<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;s_len;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息长度<BR>}&nbsp;;</FONT></P>
<P><FONT size=2>struct&nbsp;&nbsp;&nbsp;&nbsp;ClientMsg_Head&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//客户端消息头<BR>{<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;c_version;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//版本信息<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;c_flages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息标志<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;c_sort;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息类别<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;c_value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息值<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;c_scene;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//场景信息<BR>&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;c_len;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息长度<BR>};</FONT></P>
<P><FONT size=2>以上是我个人简单定义的消息头，具体的各个参数意义，就是需要规划设计的人来定了。这些我就不多说了。</FONT></P>
<P><FONT size=2>在我们处理完我们的消息头后，我们就可以将我们的具体游戏数据进行打包。关于数据打包，我们必须要处理两件事情：数据打包，数据加密。为此我就建立相应的class来处理这样的一些操作。DataCtrl.h处理如下：</FONT></P>
<P><FONT size=2>class&nbsp;&nbsp;Ppackage类可以拆解为两个单独处理类，打包类和解包类。而此处我就用下面一个类来进行处理。只是给大家开个头，要设计的更好还是靠大家共同来进行斟酌呀！！</FONT></P>
<P><BR><FONT size=2>class&nbsp;&nbsp;&nbsp;PPackage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//游戏数据包处理类<BR>{<BR>public:<BR>PPackage(BYTE&nbsp;msg_type);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置所打包消息类型<BR>virtual&nbsp;~PPackage();<BR>//消息数据打包部分<BR>void&nbsp;&nbsp;SetMsgHead(void&nbsp;&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置消息头<BR>void&nbsp;&nbsp;AddByte(BYTE&nbsp;&nbsp;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加入一字节<BR>void&nbsp;&nbsp;AddWord(WORD&nbsp;&nbsp;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加入二字节<BR>void&nbsp;&nbsp;AddDword(DWORD&nbsp;&nbsp;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加入四字节<BR>void&nbsp;&nbsp;AddPoint(POINT&nbsp;&nbsp;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加入八字节<BR>void&nbsp;&nbsp;AddBuf(char&nbsp;*&nbsp;data&nbsp;,int&nbsp;&nbsp;data_len);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加入多个字节<BR>//消息内容获取<BR>void&nbsp;&nbsp;FinishPack();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//完成打包<BR>char&nbsp;&nbsp;*GetPackage();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取数据包<BR>int&nbsp;&nbsp;&nbsp;GetPacketLen();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取数据包长度</FONT></P>
<P><BR><FONT size=2>//消息数据解包部分<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetMsgPackage(char&nbsp;*buf,int&nbsp;_Len);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//将获取消息进行录入<BR>void&nbsp;&nbsp;&nbsp;&nbsp;*GetMsgHead();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取消息头数据 <BR>BYTE&nbsp;&nbsp;&nbsp;GetByte();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取一字节<BR>WORD&nbsp;&nbsp;GetWord();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取二字节<BR>DWORD&nbsp;GetDword();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取三字节<BR>POINT&nbsp;*&nbsp;GetPoint();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取四字节<BR>char&nbsp;&nbsp;*&nbsp;&nbsp;GetBuf(int&nbsp;buf_len);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取多字节<BR>bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IfFinishGet();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//是否完成解包</FONT></P>
<P><FONT size=2>private:&nbsp;</FONT></P>
<P><FONT size=2>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Init();<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Release();<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StartBindPakage();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开始打包<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StartUndoPackage();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开始解包<BR>&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageEncrypt();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息加密<BR>&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageUndo();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息解密</FONT></P>
<P><FONT size=2>private:</FONT></P>
<P><FONT size=2>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;&nbsp;msg_type;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;/{1-SERVER_PACKAGE=1,2-CLIENT_PACKAGE=2}<BR>char&nbsp;&nbsp;*&nbsp;&nbsp;msg_buffer; <BR>char&nbsp;&nbsp;*&nbsp;&nbsp;buffer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//后备缓冲区<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg_len;<BR>//消息内容长度<BR>Server_Msg_Head&nbsp;&nbsp;msg_Head;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消息头<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf_Len;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_pos;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//指针的当前位置<BR>protected:<BR>};</FONT></P>
<P><FONT size=2>以上就是关于服务器和消息打包类的一些建立和解释，这些方面知识其实也没有什么，主要是“仁者见仁，智者见智”了。而对于网络游戏的制作最重要的还是在于Game&nbsp;World的规划和设计，同时这个方面也是最难和最不好处理的。随后将和大家进行探讨。。</FONT></P></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/1117.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-13 11:51 <a href="http://www.blogjava.net/yangsail/archive/2005/02/13/1117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络游戏制作技术（一）</title><link>http://www.blogjava.net/yangsail/archive/2005/02/13/1116.html</link><dc:creator>蓝色雪焰</dc:creator><author>蓝色雪焰</author><pubDate>Sun, 13 Feb 2005 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/yangsail/archive/2005/02/13/1116.html</guid><wfw:comment>http://www.blogjava.net/yangsail/comments/1116.html</wfw:comment><comments>http://www.blogjava.net/yangsail/archive/2005/02/13/1116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangsail/comments/commentRss/1116.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangsail/services/trackbacks/1116.html</trackback:ping><description><![CDATA[<SPAN id=lblContent><FONT size=2>当今网络游戏在中国大陆已经在大范围的蔓延，暂且不论这样的一种趋势会带来什么样的游戏产业趋势。这里只就网络游戏的制作和大家进行交流，同时将自己的制作经验写处理，希望为中国的游戏业的发展做出一点点的贡献。。<BR>&nbsp;&nbsp;&nbsp;<BR>网络游戏的程序开发从某种意义上来看，最重要的应该在于游戏服务器端的设计和制作。对于服务器端的制作。将分为以下几个模块进行： </FONT>
<P></P>
<P><FONT size=2>1．网络通信模块<BR>2．协议模块<BR>3．线程池模块<BR>4．内存管理模块<BR>5．游戏规则处理模块<BR>6．后台游戏仿真世界模块。</FONT></P>
<P><FONT size=2>现在就网络中的通信模块处理谈一下自己的看法！！</FONT></P>
<P><FONT size=2>在网络游戏客户端和服务器端进行交互的双向I/O模型中分别有以下几种模型：<BR>1． Select模型<BR>2． 事件驱动模型<BR>3． 消息驱动模型<BR>4． 重叠模型<BR>5． 完成端口重叠模型。<BR>在这样的几种模型中，能够通过硬件性能的提高而提高软件性能，并且能够同时处理成千上百个I/O请求的模型。服务器端应该采用的最佳模型是：完成端口模型。然而在众多的模型之中完成端口的处理是最复杂的，而它的复杂之处就在于多服务器工作线程并行处理客户端的I/O请求和理解完成端口的请求处理过程。<BR>对于服务器端完成端口的处理过程总结以下一些步骤：<BR>1． 建立服务器端SOCKET套接字描述符，这一点比较简单。<BR>例如：<BR>SOCKET&nbsp;&nbsp;server_socket;<BR>Server_socket&nbsp;=&nbsp;socket(AF_INET,SOCK_STREAM,0);<BR>2.绑定套接字server_socket。<BR>&nbsp;&nbsp;&nbsp;&nbsp;Const&nbsp;int&nbsp;SERV_TCP_PORT&nbsp;=&nbsp;5555;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;sockaddr_in&nbsp;&nbsp;server_address.<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>memset(&amp;server_address,&nbsp;0,&nbsp;sizeof(struct&nbsp;sockaddr_in));<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_address.sin_family&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;AF_INET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_address.sin_addr.s_addr&nbsp;=&nbsp;htonl(INADDR_ANY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_address.sin_port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;htons(SERV_TCP_PORT);<BR>//绑定<BR>Bind（serve_socket,(&nbsp;struct&nbsp;sockaddr&nbsp;*)&amp;server_address,&nbsp;sizeof(server_address)）；</FONT></P>
<P><FONT size=2>2． 对于建立的服务器套接字描述符侦听。<BR>Listen(server_socket&nbsp;,5);<BR>3.&nbsp;初始化我们的完成端口，开始的时候是产生一个新的完成端口。</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;HANDLE&nbsp;&nbsp;hCompletionPort;<BR>&nbsp;&nbsp;&nbsp;HCompletionPort&nbsp;=&nbsp;CreateIoCompletionPort(NULL,NULL,NULL,0);<BR>4.&nbsp;在我们已经产生出来新的完成端口之后，我们就需要进行系统的侦测来得到系统的硬件信息。从而来定出我们的服务器完成端口工作线程的数量。</FONT></P>
<P><FONT size=2>SYSTEM_INFO&nbsp;&nbsp;&nbsp;system_info;<BR>GetSystemInfo(&amp;system_info);</FONT></P>
<P><FONT size=2>在我们知道我们系统的信息之后，我们就需要做这样的一个决定，那就是我们的服务器系统该有多少个线程进行工作，我一般会选择当前处理器的2倍来生成我们的工作线程数量（原因考虑线程的阻塞，所以就必须有后备的线程来占有处理器进行运行，这样就可以充分的提高处理器的利用率）。<BR>代码：<BR>WORD&nbsp;threadNum&nbsp;=&nbsp;system_info.&nbsp;DwNumberOfProcessors*2+2;<BR>for(int&nbsp;i=0;I<THREADNUM;I++)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;&nbsp;hThread;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;&nbsp;&nbsp;dwthreadId;<BR>&nbsp;&nbsp;&nbsp;&nbsp;hThread&nbsp;=&nbsp;_beginthreadex(NULL,ServerWorkThrea,&nbsp;<BR>(LPVOID)hCompletePort,0,&amp;dwthreadId);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hThread);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR>CloseHandle(hThread)在程序代码中的作用是在工作线程在结束后，能够自动销毁对象作用。<BR>6． 产生服务器检测客户端连接并且处理线程。</FONT></P>
<P><FONT size=2>HANDLE&nbsp;&nbsp;hAcceptThread;<BR>DWORD&nbsp;&nbsp;&nbsp;dwThreadId;<BR>hAcceptThread=&nbsp;_beginthreadex(NULL,AcceptWorkThread,NULL,<BR>&amp;dwThreadId);<BR>CloseHandle(hAcceptThread);</FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT size=2></FONT></P>
<P><FONT size=2>7.连接处理线程的处理，在线程处理之前我们必须定义一些属于自己的数据结构体来进行网络I/O交互过程中的数据记录和保存。</FONT></P>
<P><FONT size=2>首先我要将如下几个函数来向大家进行解析：<BR>1.<BR>HANDLE&nbsp;CreateIoCompletionPort&nbsp;(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;FileHandle,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;handle&nbsp;to&nbsp;file<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;ExistingCompletionPort,&nbsp;&nbsp;//&nbsp;handle&nbsp;to&nbsp;I/O&nbsp;completion&nbsp;port<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ULONG_PTR&nbsp;CompletionKey,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;completion&nbsp;key<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;NumberOfConcurrentThreads&nbsp;//&nbsp;number&nbsp;of&nbsp;threads&nbsp;to&nbsp;execute&nbsp;concurrently<BR>);<BR>参数1：<BR>可以用来和完成端口联系的各种句柄，在这其中可以包括如下一些：<BR>套接字，文件等。</FONT></P>
<P><FONT size=2>参数2：<BR>已经存在的完成端口的句柄，也就是在第三步我们初始化的完成端口的句柄就可以了。</FONT></P>
<P><FONT size=2>参数3：<BR>这个参数对于我们来说将非常有用途。这就要具体看设计者的想法了，&nbsp;ULONG_PTR对于完成端口而言是一个单句柄数据，同时也是它的完成键值。同时我们在进行<BR>这样的GetQueuedCompletionStatus（….）(以下解释)函数时我们可以完全得到我们在此联系函数中的完成键，简单的说也就是我们在CreateIoCompletionPort(…..)申请的内存块，在GetQueuedCompletionStatus(……)中可以完封不动的得到这个内存块，并且使用它。这样就给我们带来了一个便利。也就是我们可以定义任意数据结构来存储我们的信息。在使用的时候只要进行强制转化就可以了。</FONT></P>
<P><FONT size=2>参数4：<BR>引用MSDN上的解释<BR>[in]&nbsp;Maximum number of&nbsp; threads that the operating system allows to concurrently process I/O completion packets for the I/O completion port.&nbsp;If this parameter is zero,&nbsp;the system allows as many concurrently running threads as there are processors in the system.<BR>这个参数我们在使用中只需要将它初始化为0就可以了。上面的意思我想大家应该也是了解的了！嘿嘿！！</FONT></P>
<P><FONT size=2>我要向大家介绍的第二个函数也就是<BR>2.<BR>BOOL&nbsp;GetQueuedCompletionStatus(<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;CompletionPort,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;handle&nbsp;to&nbsp;completion&nbsp;port<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPDWORD&nbsp;lpNumberOfBytes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;bytes&nbsp;transferred<BR>&nbsp;&nbsp;&nbsp;&nbsp;PULONG_PTR&nbsp;lpCompletionKey,&nbsp;&nbsp;//&nbsp;file&nbsp;completion&nbsp;key<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPOVERLAPPED&nbsp;*lpOverlapped,&nbsp;&nbsp;//&nbsp;buffer<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwMilliseconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;optional&nbsp;timeout&nbsp;value<BR>);<BR>参数1：<BR>我们已经在前面产生的完成端口句柄，同时它对于客户端而言，也是和客户端SOCKET连接的那个端口。</FONT></P>
<P><FONT size=2>参数2：<BR>一次完成请求被交换的字节数。（重叠请求以下解释）</FONT></P>
<P><FONT size=2>参数3：<BR>完成端口的单句柄数据指针，这个指针将可以得到我们在CreateIoCompletionPort（………）中申请那片内存。<BR>借用MSDN的解释：<BR>[out]&nbsp;Pointer to a variable that receives the completion key value associated with the file handle whose I/O operation has completed.A completion key is a per-file key that is specified in a call to CreateIoCompletionPort.<BR>所以在使用这个函数的时候只需要将此处填一相应数据结构的空指针就可以了。上面的解释只有大家自己摆平了。</FONT></P>
<P><FONT size=2>参数4：<BR>重叠I/O请求结构，这个结构同样是指向我们在重叠请求时所申请的内存块，同时和lpCompletionKey,一样我们也可以利用这个内存块来存储我们要保存的任意数据。以便于我们来进行适当的服务器程序开发。<BR>[out]&nbsp;Pointer to a variable that receives the address of&nbsp;the OVERLAPPED structure that was specified when the completed I/O operation was started.（MSDN）</FONT></P>
<P><FONT size=2>3．<BR>int&nbsp;WSARecv(<BR>&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;s,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPWSABUF&nbsp;lpBuffers,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwBufferCount,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPDWORD&nbsp;lpNumberOfBytesRecvd,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPDWORD&nbsp;lpFlags,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPWSAOVERLAPPED&nbsp;lpOverlapped,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPWSAOVERLAPPED_COMPLETION_ROUTINE&nbsp;lpCompletionRoutine&nbsp;&nbsp;<BR>);<BR>这个函数也就是我们在进行完成端口请求时所使用的请求接受函数，同样这个函数可以用ReadFile(………)来代替，但不建议使用这个函数。</FONT></P>
<P><FONT size=2>参数1：<BR>已经和Listen套接字建立连接的客户端的套接字。</FONT></P>
<P><FONT size=2>参数2：<BR>用于接受请求数据的缓冲区。<BR>[in/out]&nbsp;Pointer to an array of WSABUF structures.&nbsp;Each WSABUF structure contains a pointer to a buffer and the length of the buffer.（MSDN）。<BR>参数3：<BR>参数2所指向的WSABUF结构的数量。<BR>[in]&nbsp;Number of WSABUF&nbsp;structures&nbsp;in&nbsp;the&nbsp;lpBuffers&nbsp;array.（MSDN）</FONT></P>
<P><FONT size=2>参数4：</FONT></P>
<P><FONT size=2>[out]&nbsp;Pointer to the number of bytes received by this call if the receive operation completes immediately.&nbsp;（MSDN）</FONT></P>
<P><FONT size=2>参数5：<BR>[in/out]&nbsp;Pointer&nbsp;to&nbsp;flags.（MSDN）<BR>参数6：</FONT></P>
<P><FONT size=2>这个参数对于我们来说是比较有作用的，当它不为空的时候我们就是提出我们的重叠请求。同时我们申请的这样的一块内存块可以在完成请求后直接得到，因此我们同样可以通过它来为我们保存客户端和服务器的I/O信息。<BR>参数7：<BR>[in]&nbsp;Pointer to the completion routine called when the receive operation has been completed (ignored for nonoverlapped sockets).（MSDN）<BR>4．<BR>int&nbsp;WSASend(<BR>&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;s,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPWSABUF&nbsp;lpBuffers,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwBufferCount,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPDWORD&nbsp;lpNumberOfBytesSent,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwFlags,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPWSAOVERLAPPED&nbsp;lpOverlapped,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPWSAOVERLAPPED_COMPLETION_ROUTINE&nbsp;lpCompletionRoutine&nbsp;&nbsp;<BR>);<BR>参数解释可以参考上面或者MSDN。在这里就不再多说了。</FONT></P>
<P><FONT size=2>下面就关client端用户连接（connect（……..））请求的处理方式进行</FONT></P>
<P><FONT size=2>举例如下：<BR>const&nbsp;int&nbsp;BUFFER_SIZE&nbsp;=&nbsp;1024;<BR>typedef&nbsp;&nbsp;struct&nbsp;&nbsp;IO_CS_DATA<BR>{<BR>&nbsp;&nbsp;&nbsp;SOCKET&nbsp;&nbsp;clisnt_s;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//客户端SOCKET<BR>&nbsp;&nbsp;&nbsp;WSABUF&nbsp;&nbsp;wsaBuf;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;Char&nbsp;&nbsp;&nbsp;inBuffer[BUFFET_SIZE];<BR>&nbsp;&nbsp;&nbsp;Char&nbsp;&nbsp;&nbsp;outBuffer[BUFFER_SIZE];<BR>&nbsp;&nbsp;&nbsp;Int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recvLen;<BR>&nbsp;&nbsp;&nbsp;Int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendLen;<BR>&nbsp;&nbsp;&nbsp;SYSTEM_TIME&nbsp;start_time;<BR>&nbsp;&nbsp;&nbsp;SYSTEM_TIME&nbsp;start_time;<BR>}IO_CS_DATA;</FONT></P>
<P><BR><FONT size=2>UINT&nbsp;WINAPI&nbsp;&nbsp;ServerAcceptThread(LPVOID&nbsp;param)<BR>{<BR>SOCKET&nbsp;&nbsp;client_s;<BR>HANDLE&nbsp;&nbsp;hCompltPort&nbsp;=&nbsp;(HANDLE)&nbsp;param;<BR>struct&nbsp;sockaddr_in&nbsp;&nbsp;client_addr;<BR>int&nbsp;addr_Len&nbsp;=&nbsp;sizeof(client_addr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPHANDLE_DATA&nbsp;&nbsp;hand_Data&nbsp;=&nbsp;NULL;&nbsp;&nbsp;<BR>while(true)<BR>{<BR>&nbsp;&nbsp;&nbsp;If((client_s=accept(server_socket,NULL,NULL))<BR>==SOCKET_ERROR)<BR>{<BR>printf("Accept()&nbsp;Error:&nbsp;%d",GetLastError());<BR>return&nbsp;0;<BR>}<BR>hand_Data&nbsp;=&nbsp;(LPHANDLE_DATA)malloc(sizeof(HANDLE_DATA));<BR>hand_Data-&gt;socket&nbsp;=&nbsp;client_s;<BR>if(CreateIoCompletionPort((HANDLE)client_s,hCompltPort,<BR>(DWORD)hand_Data,0)==NULL)<BR>{<BR>printf("CreateIoCompletionPort()Error:&nbsp;%d",<BR>GetLastError());<BR>}<BR>else<BR>{&nbsp;<BR>game_Server-&gt;RecvDataRequest(client_s);<BR>}<BR>}<BR>return&nbsp;&nbsp;0;<BR>}</FONT></P>
<P><FONT size=2>在这个例子中，我们要阐述的是使用我们已经产生的接受连接线程来完成我们响应Client端的connect请求。关于这个线程我们同样可以用我们线程池的方式来进行生成多个线程来进行处理，其他具体的函数解释已经在上面解释过了，希望不懂的自己琢磨。<BR>关于game_Sever&nbsp;object的定义处理将在下面进行介绍。</FONT></P>
<P><FONT size=2></FONT></P>
<P><BR><FONT size=2>class&nbsp;&nbsp;&nbsp;CServerSocket&nbsp;:&nbsp;public&nbsp;CBaseSocket<BR>{<BR>public:<BR>CServerSocket();<BR>virtual&nbsp;~CServerSocket();<BR>bool&nbsp;&nbsp;&nbsp;StartUpServer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动服务器<BR>void&nbsp;&nbsp;&nbsp;StopServer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关闭服务器<BR>//发送或者接受数据（重叠请求）<BR>bool&nbsp;&nbsp;&nbsp;&nbsp;RecvDataRequest(SOCKET&nbsp;client_s);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;&nbsp;SendDataRequest(SOCKET&nbsp;client_s,char&nbsp;*buf,int&nbsp;b_len);</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;&nbsp;ControlRecvData(SOCKET&nbsp;client_s,char&nbsp;*buf,int&nbsp;b_len);</FONT></P>
<P><FONT size=2>void&nbsp;&nbsp;&nbsp;&nbsp;CloseClient(SOCKET&nbsp;client_s);&nbsp;&nbsp;<BR>private:<BR>friend&nbsp;&nbsp;UINT&nbsp;WINAPI&nbsp;GameServerThread(LPVOID&nbsp;completionPortID);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//游戏服务器通信工作线程<BR>private:<BR>void&nbsp;&nbsp;&nbsp;Init();<BR>void&nbsp;&nbsp;&nbsp;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;InitComplePort();<BR>bool&nbsp;&nbsp;&nbsp;InitServer();<BR>bool&nbsp;&nbsp;&nbsp;CheckOsVersion();<BR>bool&nbsp;&nbsp;&nbsp;StartupWorkThread();<BR>bool&nbsp;&nbsp;&nbsp;StartupAcceptThread();<BR>private:<BR>enum&nbsp;&nbsp;&nbsp;{&nbsp;SERVER_PORT&nbsp;=&nbsp;10006};<BR>UINT&nbsp;&nbsp;&nbsp;cpu_Num;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//处理器数量<BR>&nbsp;&nbsp;&nbsp;&nbsp;CEvent&nbsp;g_ServerStop;&nbsp;&nbsp;&nbsp;//服务器停止事件<BR>CEvent&nbsp;g_ServerWatch;&nbsp;&nbsp;//服务器监视事件<BR>public:<BR>HANDLE&nbsp;hCompletionPort;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//完成端口句柄<BR>};</FONT></P>
<P><FONT size=2>在上面的类中，是我们用来处理客户端用户请求的服务器端socket模型。</FONT></P></SPAN><img src ="http://www.blogjava.net/yangsail/aggbug/1116.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-13 11:49 <a href="http://www.blogjava.net/yangsail/archive/2005/02/13/1116.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>