返回   cpper编程论坛 > 技术杂烩
注册账号 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记版面已读

技术杂烩 找不到地方的技术问题?这里!

回复
 
LinkBack 主题工具 显示模式
  #1 (permalink)  
旧 2007-06-05
初级会员
 
注册日期: 2007-04-19
帖子: 6
xujing 正向着好的方向发展
默认 请教一下游戏指令的组织问题

游戏中存在很多通信指令,在开发阶段这些指令都是不断的增加的,客户端,以及很多的服务端程序都需要使用不同的指令。这些指令是怎么组织的?采用一个.h?如果修改如何限定?现在感觉很乱,不知道大家都是怎么做的
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #2 (permalink)  
旧 2007-06-05
polyrandom 的头像
超级版主
 
注册日期: 2002-09-03
帖子: 3,138
文章: 20
polyrandom 正向着好的方向发展
默认 回复: 请教一下游戏指令的组织问题

最简单的方式,用一个enum:
代码:
enum InGameCommand { IGC_INVALID = 0, IGC_FORWARD, IGC_SHOOT, ... IGC_COUNT, IGC_FORCE_DWORD = 0x7fffffff };
当然,有更成熟的方法。就看你要做什么了。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #3 (permalink)  
旧 2007-06-06
初级会员
 
注册日期: 2007-04-19
帖子: 6
xujing 正向着好的方向发展
默认 回复: 请教一下游戏指令的组织问题

不是这个意思,我是说对于整个大的游戏项目来说如何去对这些庞大的消息进行维护,变更等操作。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #4 (permalink)  
旧 2007-06-06
polyrandom 的头像
超级版主
 
注册日期: 2002-09-03
帖子: 3,138
文章: 20
polyrandom 正向着好的方向发展
默认 回复: 请教一下游戏指令的组织问题

引用:
作者: xujing 查看帖子
不是这个意思,我是说对于整个大的游戏项目来说如何去对这些庞大的消息进行维护,变更等操作。
这个问题太大了,很难回答。
如果消息不多,我会考虑使用一个头文件,里面放入所有的结构。如果消息很多,并且需要层次,我会使用一个类层次。
维护/变更的涵盖面太广了,需不需要向下兼容?需不需要支持平稳过渡?这些都需要考虑的。如果问题细化一点,或许回答起来会更方便
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #5 (permalink)  
旧 2007-06-06
初级会员
 
注册日期: 2005-03-31
帖子: 2
snlee 正向着好的方向发展
默认 回复: 请教一下游戏指令的组织问题

引用:
作者: polyrandom 查看帖子
最简单的方式,用一个enum:
代码:
enum InGameCommand { IGC_INVALID = 0, IGC_FORWARD, IGC_SHOOT, ... IGC_COUNT, IGC_FORCE_DWORD = 0x7fffffff };
当然,有更成熟的方法。就看你要做什么了。
更成熟的是什么?给个关键字,谢谢
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #6 (permalink)  
旧 2007-06-06
polyrandom 的头像
超级版主
 
注册日期: 2002-09-03
帖子: 3,138
文章: 20
polyrandom 正向着好的方向发展
默认 回复: 请教一下游戏指令的组织问题

引用:
作者: snlee 查看帖子
更成熟的是什么?给个关键字,谢谢
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #7 (permalink)  
旧 2007-06-06
初级会员
 
注册日期: 2007-04-03
帖子: 14
zigzed 正向着好的方向发展
默认 回复: 请教一下游戏指令的组织问题

1。文本方式而不是二进制方式发送消息,例如
代码:
cmd:p1=v1,p2=v2,...pn=vn;
的形式或者曾经很热门的xml。实现简单,兼容性(向下兼容),调试方便,性能并没有想象的那么差。如果需要可以考虑压缩后传输。
2。二进制方式要实现兼容,需要对消息定义规则,而不是硬编码,例如定义一系列命令码和参数码,以及每个命令中可能存在的参数(这个可以是外部配置的),每个参数可以是两种类型(int,string)中的一个,然后解码的时候根据上述信息解码。

例如:
代码:
struct ArgDecodingFunc { int arg; size_t (*func)(const char*, size_t len); }; /// please note, following information can build in run time (of course, array is not suitable for such case. ArgDecodingFunc argFuncs[] = { {0, decoding_int}, {1, decoding_int}, {2, decoding_str},...}; size_t (*cmd_decoding[])(const char*, size_t) = { cmd_0, cmd_1, cmd_2,...cmd_n }; while(buffer_is_not_empty) { int cmd = decode_cmd_code(); *(cmd_decoding[cmd])(buffer, length); }
其实上述代码也可以根据C++对于多态的支持来实现(这个就留给你当练习啦。。。)。

此帖于 2007-06-06 05:41 PM 被 zigzed 编辑.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
回复

书签

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9。现在的时间是 08:27 AM


Powered by vBulletin® 版本 3.7.0
版权所有 ©2000 - 2009,Jelsoft Enterprises Ltd.
(C) Copy Right All Right Reserved 2001 - 2007

Search Engine Friendly URLs by vBSEO 3.1.0