【提问】网络游戏编程 底层数据交流格式
游戏编程吧
全部回复
仅看楼主
level 2
1002042998 楼主
目前我在做一个联机游戏,用到了网络方面的数据传递,之前用了text格式方式来传递数据,用json格式打包数据,然后在另一端解析。
比如一方发送{"type":"game_position","position_x":100,"position_y":100}来把自己的坐标传递给对方,然后对方解析后把人物显示在相应位置,但是这样效率明显比较低下,有人提示我用二进制方式进行传递,我有点迷茫,不知道业界在这方面都是怎么处理的呢?
2015年10月15日 03点10分 1
level 2
1002042998 楼主
突然想到一个比较不错的办法,就是把游戏数据按照一个的格式写好,比如 :
信息类型(int)+ 信息内容(根据信息内容来定)
然后读取的时候:
int n;
file.read(n,sizeof(int));
if(n == GEME_DATA)
{
...
}else if(...)
{
}
2015年10月15日 04点10分 2
level 8
不用这么麻煩吧?事先订好或者協议好各数据项在封包里的排位格式就可以了。比如说,头一个byte表示次序号/起始数/渡过的时间(Tick之类),第二个byte表示数据包的总大小(或者后面还有几个包),第三个byte表示要更新的物品角色的Guid,第四个byte表示2-8种封包的属性/类别/狀态之类,之後十二个bytes表示更新的坐标···· 直到最后一两个byte表示数据包的终止符(类似EOF的一个自定义数值)。反正不用加密,一个包大概就十来到几十个bytes,省时省力省传输量。楼主你自己想想是不是有道理~?
2015年10月19日 12点10分 3
谢谢你!!!很赞同你的建议!我现在正在这么做[哈哈]
2015年10月19日 14点10分
level 2
一般2字节id,2字节length,后面是数据,分隔符一般头尾,也可以不用,另外数据加下密。可以看下mangos,这个是魔兽私服服务器源码。
2015年10月23日 16点10分 4
level 1
楼主,不好意思挖个坟!我只是想问楼主,做网游有参考的书目或者视频没!我也搞网游,但不知道从何下手。我会一些Linux和Windows下的网络编程!
2017年07月26日 14点07分 5
1