Delphi Datasnap是否适用于多达8款非通信密集型双向多人游戏?

Delphi Datasnap是否适用于多达8款非通信密集型双向多人游戏?,delphi,delphi-2010,multiplayer,datasnap,Delphi,Delphi 2010,Multiplayer,Datasnap,我正在构建一个小型Multiplayer,它将需要以下内容: 它必须是用德尔菲写的 必须支持Internet连接(不仅仅是LAN) 在HTTP上工作 支持一些数据包加密(可能是自定义的) 能够向服务器发送命令 能够从服务器接收响应 能够将最多8名玩家连接到一台服务器 能够将复杂对象(可能是JSON序列化)传递到服务器 您认为新的Delphi 2010 Datasnap可以成功地用于此场景,还是应该使用普通的旧TSocket?Datasnap可以完成上面列出的所有功能: DataSnap是用D

我正在构建一个小型Multiplayer,它将需要以下内容:

  • 它必须是用德尔菲写的
  • 必须支持Internet连接(不仅仅是LAN)
  • 在HTTP上工作
  • 支持一些数据包加密(可能是自定义的)
  • 能够向服务器发送命令
  • 能够从服务器接收响应
  • 能够将最多8名玩家连接到一台服务器
  • 能够将复杂对象(可能是JSON序列化)传递到服务器

您认为新的Delphi 2010 Datasnap可以成功地用于此场景,还是应该使用普通的旧TSocket?

Datasnap可以完成上面列出的所有功能:

  • DataSnap是用Delphi编写的
  • 它可以通过HTTP通过任何连接(本地、网络或远程)进行连接
  • 它将在HTTP上工作,包括对HTTP连接隧道的支持
  • 您可以随意过滤数据流。该产品包括一个压缩过滤器。丹尼尔·泰蒂写了一些
  • 您可以通过调用服务器方法向服务器发送命令
  • 您可以通过服务器回调从服务器接收响应
  • 您可以轻松地将八个人连接到一台服务器
  • 您可以传递JSON对象。这是客户端和服务器之间发送的默认类型

  • 因此,为了回答您的问题,是的,我认为新的Delphi 2010 DataSnap可以用于您的场景。

    正如Nick所说,答案是肯定的


    Bob Swart撰写了一份白皮书,并制作了一些更新版的视频,可以帮助您开始。

    如果您的多人游戏没有发送太多数据,HTTP和Datasnap可能会起作用。如果您需要快速通信,我会使用UDP和自定义二进制协议。除非你必须绕过一个公司防火墙,它几乎可以阻止除HTTP以外的任何协议——而且公司通常不喜欢人们在工作时间玩游戏——否则防火墙会阻止传入连接,而不是传出连接。只是服务器需要开放的端口来允许客户端连接。
    我也会避免使用JSON——如果您不需要互操作性,二进制序列化会快得多

    您的意思是,即使在企业网络中使用端口80,防火墙也可以阻止通信(传入)?适当的受管防火墙不允许传入到端口80的连接,但允许用于允许的web服务器(通常在DMZ或类似区域)。客户端可以向端口80上的外部Web服务器发送HTTP请求,并接收应答,但除非防火墙允许,否则网络内部的服务器无法接收请求。您是对的,AFAIK UDP不能在本地网络外部路由(除非您执行一些复杂的NAT),而HTTP/TCP是。从性能的角度来看,我永远不会使用DataSnap——但在这里,要求最多有8个客户端,因此在这种情况下DataSnap将无缝地处理它。请注意,上面的“非常好的过滤器”根本不安全——因为您需要一种安全的方式来交换会话密钥。