﻿<?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>C++博客-PeakGao-随笔分类-游戏开发</title><link>http://www.cppblog.com/PeakGao/category/1929.html</link><description>别读成痞子高</description><language>zh-cn</language><lastBuildDate>Wed, 21 May 2008 12:37:24 GMT</lastBuildDate><pubDate>Wed, 21 May 2008 12:37:24 GMT</pubDate><ttl>60</ttl><item><title>MMORPG游戏服务器设计随想</title><link>http://www.cppblog.com/PeakGao/archive/2006/06/10/8381.html</link><dc:creator>PeakGao</dc:creator><author>PeakGao</author><pubDate>Sat, 10 Jun 2006 08:28:00 GMT</pubDate><guid>http://www.cppblog.com/PeakGao/archive/2006/06/10/8381.html</guid><wfw:comment>http://www.cppblog.com/PeakGao/comments/8381.html</wfw:comment><comments>http://www.cppblog.com/PeakGao/archive/2006/06/10/8381.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/PeakGao/comments/commentRss/8381.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/PeakGao/services/trackbacks/8381.html</trackback:ping><description><![CDATA[
		<p>在开发完一个游戏后，看了一些文章和当前一些流行的技术后，感触颇深，所以随笔聊聊。<br /><br />游戏服务器的设计比较复杂，这里也不打算写出每个细节，只是讲一下框架方面的想法。<br /><br />1、实体系统和功能子系统<br /><br />在服务器的框架部分，主要写些基本的服务器功能模块，可以实现一个实体系统，游戏中的实体主要指那些生物对象，如角色，怪物，NPC等，其实在游戏中没有必要写具体的角色类，怪物类，NPC类，我们可以将他们统称为实体，从游戏服务器的角度看，他们没有什么不同，当策划将这些实体对象进行配置后就成了具有类型差异的各种各样的对象，如角色，怪物。功能子系统指MMORPG游戏中一些必不可少的相对独立的功能集，如运动系统，财产系统，社交系统，声望系统等，每个实体具有自己的属性集，一些功能子系统，一些特性集（决定了生物的类型），这些属性集、特性集和子系统可依赖配置文件进行配置。这样的好处是不会存在通过实现各种对象的类来人为的增大类结构的复杂性，通过具体的类（或继承类）实现各种生物甚至有时候会存在冲突，因为有的对象既是A类型又是B类型。<br /><br />2、基于服务的构建思想<br /><br />游戏服务器除了上面的实体和子系统外，其他有好多东西可以借鉴现在的SOA思想，如聊天系统，好友系统，师徒系统等是否都可以看作是一种游戏服务呢？当开启了这些服务，那么相应的功能就能表现，关闭则隐藏。<br /><br />3、封闭的数据管理层<br /><br />服务器的数据管理比较复杂，如果我们讲所有（或大部分）的数据交由一个独立的数据管理层进行管理，那么上层开发人员或者上层应用模块就不直接关心数据在哪个地方，怎么更新，怎么存储等。基于前面的实体系统，整个服务器的程序架构已经比较抽象，在这个抽象的类对象的基础上构建封闭的数据管理应该比散乱的大量不同对象的系统中构建数据管理层来得更方便，比如实体对象的属性集，基本可以涵盖一个实体对象大部分的数据，那么数据管理层只要管好属性集就可以带来不少的方便，而属性集中的大部分属性是通过配置而来的（至少很多需持久化的属性肯定是配置的），除了实体系统的数据，还有那些子系统和基于服务的那些对象都可以纳入数据管理层进行管理。<br /><br />4、脚本化支持<br /><br />对于游戏服务器那些核心的模块，通过脚本封装（如Lua封装）后，可以让上层应用层进行很好的扩展和开发，所以游戏服务器应该也必须支持脚本编程。像那些AI，任务，聊天等等大多数应用模块中的大部分代码都是可以拿脚本编写的。考虑到脚本性能问题，一些对性能影响比较大的地方还是建议用c/c++实现，脚本里面进行调控即可。<br /><br />还有一些乱七八糟的东西，考虑到怕不小心泄密，这里就不多讲了。</p>
<img src ="http://www.cppblog.com/PeakGao/aggbug/8381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/PeakGao/" target="_blank">PeakGao</a> 2006-06-10 16:28 <a href="http://www.cppblog.com/PeakGao/archive/2006/06/10/8381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一点想法，第一次写blog:-)</title><link>http://www.cppblog.com/PeakGao/archive/2006/06/10/8378.html</link><dc:creator>PeakGao</dc:creator><author>PeakGao</author><pubDate>Sat, 10 Jun 2006 06:53:00 GMT</pubDate><guid>http://www.cppblog.com/PeakGao/archive/2006/06/10/8378.html</guid><wfw:comment>http://www.cppblog.com/PeakGao/comments/8378.html</wfw:comment><comments>http://www.cppblog.com/PeakGao/archive/2006/06/10/8378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/PeakGao/comments/commentRss/8378.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/PeakGao/services/trackbacks/8378.html</trackback:ping><description><![CDATA[      干游戏开发已经碾转5个年头了，曾经经历过一个完整的大型网游的开发，感觉在经验方面也学到了不少，不管是在程序开发上，在策划、美术、测试、管理、以及运营方面都有了不少的收获。但是回首这5年，感觉大型网游的开发，尤其是我们这种从入行开始的程序员来说，个中的感想是很明显的，一个字：累。渐渐的，自己对大型MMORPG的开发有点激情不足，想自己找几个人来开发一些休闲游戏，谁叫现在休闲游戏那么火呢？加之休闲游戏对于我们经历过大型MMORPG的人来说，开发的难度已经不是问题。而且休闲游戏的开发成本低多了，至少程序员（经验丰富的）2－3名足已，美工1－2个估计也够了（具体依赖具体的游戏内容），至于策划，我想经验丰富的游戏程序员可以当半个策划了（不是贬低策划，我很欣赏能提出一些具有创意的策划人员）。不过，在运营休闲游戏方面的成本，我还不是很清楚，如果有一种免费的运营平台那多好（窃喜，估计没有这种免费的午餐，呵呵）。<img src ="http://www.cppblog.com/PeakGao/aggbug/8378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/PeakGao/" target="_blank">PeakGao</a> 2006-06-10 14:53 <a href="http://www.cppblog.com/PeakGao/archive/2006/06/10/8378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>