【问题标题】:Unity3d client +.NET Server - recommend network layerUnity3d客户端+.NET Server——推荐网络层
【发布时间】:2017-08-01 18:55:49
【问题描述】:

您会为多人在线游戏选择什么网络层,满足以下要求:

  • 服务器用C#开发,客户端用C#开发 Unity3d?
  • 实时双向通道(最小延迟)
  • 快速、紧凑

根据我的研究,我正在研究以下内容:

交通:

数据协议:

  • Protobuf 与平面缓冲区。 JSON 没有考虑到...

有什么推荐吗?

【问题讨论】:

    标签: networking unity3d websocket signalr protocol-buffers


    【解决方案1】:

    这取决于你的游戏。基于 twitch 的快速第一人称射击游戏可能需要高度自定义的网络代码来提供良好的游戏体验,而对于回合制游戏,任何网络解决方案都可以工作。

    FlatBuffers 比 Protobuf 对游戏/性能更友好,但有线格式往往更大一些,而且还没有 GRPC 与 C# 集成(只有 C++ 和 Go)。

    如果您的游戏是动作游戏,那么您就不能真正使用 TCP 或其他任何东西。 TCP 具有内置的限制/重新发送机制,一旦连接出现更多数据包丢失,就会严重破坏您的延迟。正确进行动作游戏的唯一方法是使用 UDP。有一些库可以在 UDP 上为您重新发送可靠数据(例如用于 C/C++ 的 Enet),但我不熟悉用于 C# 的库。

    【讨论】:

    • 谢谢,我的游戏是动作游戏。我想最好的办法是使用 flatbuffers 和 websockets。 (顺便说一下,gRPC 已经有 C# 实现了grpc.io/docs/quickstart/csharp.html)
    • 我指的是带有 FlatBuffers 的 C# GRPC。现有的 C# GRPC 库希望与 Protobuf 一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2011-05-02
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多