金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  371 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
客户端服务器应统一库的使用

网游服务器和客户端有许多功能是完全相同的。相关功能的代码应该是可以共用的。
但是服务器和客户端使用了一些专门的工具库,使两边的代码不能直接共用。

如装备升级功能中,哪个装备添加哪些材料,花费多少,最终生成哪个装备,
这些由一个配置文件配置,服务器端和客户端是一样的配置文件。
客户端会预先判断是否可以升级,然后向服务器请求。服务器会进行同样的判断。
配置文件的读取和条件的判断这两个功能服务器客户端是相同的。
相关功能的代码应该也是可以共用的。

但是客户端用的xml解析库是tinyXml, 服务器用的是其他的xml库。
客户端大量使用了引擎自带的工具库,如单件,智能指针,
那一套与服务器的工具库也是不能通用的。
客户端是Windows平台的,服务器是Linux的,各自使用了平台专用的API,
结果也会造成无法通用。

为了能够一份代码两边共用,需要统一服务器和客户端所使用的库。
通用的功能都使用该公共库,不得使用专用的库和API。

1. 尽量使用 STL,BOOST 通用库。
2. 客户端3D引擎中通用的工具库共享给服务器使用。
3. 使用平台通用的库和API。

(金庆的专栏)

posted on 2010-05-12 09:43 金庆 阅读(451) 评论(3)  编辑 收藏 引用 所属分类: 2. 网游开发

评论

# re: 客户端服务器应统一库的使用 2010-05-12 18:13 战魂小筑
客户端跟服务器还要啥XML,直接上MySQL本地模式或者SQLite就好了嘛  回复  更多评论
  

# re: 客户端服务器应统一库的使用 2010-05-13 09:49 金庆
@战魂小筑
用数据库来配置,代码量更大,逻辑上多了一层,结构上受限于数据库的表格模式,各方面都没有配置文件更适合。我认为,在网游中,只读的数据应该用配置文件,数据保存才用数据库。配置文件可以用INI,XML,或自定义文本格式,不应该用二进制格式,因为文本可以直接编辑。用XML有XML验证功能,如判断某个属性必须配置,这一点上优于其他配置文件。  回复  更多评论
  

# re: 客户端服务器应统一库的使用 2010-05-14 10:08 战魂小筑
@金庆
我在游戏项目里实际用过SQLite, 服务器端是SQLServer, 主要是考虑到后期运营维护, 更新服务器数据(比如商店, 换装)后, 客户端也需要更新.传统的配置文件你得再写一套转换, 而且维护成本和BUG率很高, 很多公司使用EXCEL+CSV,简单数据方便,但是批量修改, 还得SQL语句,这我们是实际操作比较过的.
我们后期把本地化字符串都放入SQL统一管理, 事实证明,工作流非常高效  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理