当前位置:  开发笔记 > 编程语言 > 正文

可用的游戏网络协议定义语言和代码生成

如何解决《可用的游戏网络协议定义语言和代码生成》经验,为你挑选了1个好方法。

我一直在寻找一个好的通用二进制网络协议定义框架,以提供一种以多种语言编写实时游戏服务器和客户端(想想魔兽世界或Quake III)的方法(例如Java后端服务器和iPhone前端用Objective-C和Cocoa编写的客户端).

我想支持Windows上的Java Flash客户端,iPhone客户端和C#客户端(以及XBOX上的XNA客户端).

我正在寻找一种通过TCP/IP或UDP套接字流连接有效发送/接收消息的方法.我不是在寻找可以通过HTTP Web服务发送的东西,比如JSON或XML编组的对象.虽然Hessian的二进制Web服务协议是一个非常有趣的解决方案

我想要一种网络协议格式和客户端/服务器基本实现,它允许客户端连接到服务器并以定义的协议发送任何消息,并接收协议中的任何消息,而不必绑定到某种RPC端点.我希望我的协议传入和传出的任何消息的通用流.这样我就可以支持诸如服务器每隔100毫秒向所有客户端发送游戏中各种实体的位置.



1> Dougnukem..:

我发现的网络协议框架如下:

    谷歌的协议缓冲区 - 但它缺乏对从你的协议发送/接收任意消息的支持.

    Apache Thrift - 一个有趣的选项,但它主要面向RPC而不是通用游戏客户端/服务器套接字类型连接,客户端或服务器可以随时发送消息,而不仅仅是响应客户端RPC请求.

    Raknet Multiplayer - Raknet提供完整的多人网络图书馆(独立开发免费,收入低于25万美元)

更新:OculusVR现在收购了RakNet及其Free/OpenSource.你可以在Github上找到它

    Hessian Binary Web服务协议 - 是一种HTTP Web服务二进制协议,非常适合发送二进制数据,而无需使用附件扩展协议.

Raknet提供了一个很好的面向游戏/模拟的多人游戏库.

Apache Thrift和Google的协议缓冲区似乎是在游戏网络协议客户端/服务器架构中使用的最简单方法.

如果你想使用某种类型的服务器推送技术(如COMET)创建一个带有Java或Flash客户端的基于Web的游戏服务器,Hessian似乎非常适合.Hessian可能会提供一种非常有趣的方式来支持网络上的实时游戏,甚至能够在谷歌的App引擎或亚马逊的EC2等VM网络解决方案上托管它们.

关于为游戏和其他用途使用各种协议定义框架有一些讨论:

各种序列化框架的比较

Thrift vs Protocol Buffers - Thrift被宣布为更好的框架,因为它具有完全支持的RPC客户端/服务器实现

使用Protocol Buffers为客户端服务器Game API确定要解码的消息类型

使用thrift的双向RPC

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有