在呈现群集中的节点之间同步视图状态

时间:2013-02-27 23:52:20

标签: c# network-programming opentk

我正在构建一个显示墙演示应用程序。

环境:

  • N台机器,每台机器最多可驱动六台显示器
  • 有线千兆交换机
  • OpenTK应用程序绘制漂亮的图片,在每个节点上运行1个副本

每个节点都运行演示可执行文件的相同副本。每个节点还有一些配置数据,其中包含整个墙的分辨率以及该节点在该空间内的显示的相对位置。渲染时,在投影矩阵之后应用缩放/平移变换(有效地放大节点负责渲染的视图部分。

节点在启动脚本中设置了“模式”开关,将它们置于“发送”或“接收”模式。除一个节点外的所有节点都在“接收”中。 (将节点切换为“发送”会导致所有其他节点切换到“接收”)。

演示应用程序是基本的FPS类型飞行的一些原始几何(网格,二十面体等)。在每次更新时,发送方节点广播包含一些状态信息的UDP数据报(摄像机平移/旋转,移动对象的变换)。

监听器异步接收这些数据报,反序列化状态并更新其本地副本。

净效应是我在我的笔记本电脑上运行应用程序并飞来飞去,墙很顺利。一切都很好。

然而,我担心随着系统的扩展(从10个显示器到500个),网络延迟将成为一个问题。我也认为,不是通过这种方式在网络上发送垃圾信息,将它填入数据库并让每个节点从那里拉出来都会很好,但我怀疑任何现成的数据库是否会受到影响。 60FPS * 500节点循环。

连连呢?真正,非常快速地在很多节点之间共享状态的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我在gamedev.stackexchange.com收到了相当完整的回复。感兴趣的人可以查看here