加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 演员是否是在简单的多人游戏之间实现消息传递的合适工

发布时间:2020-12-16 18:07:35 所属栏目:安全 来源:网络整理
导读:我正在考虑将演员用于一个简单的类似小行星的游戏,用 Scala和 Java2D编写,可以由两个玩家以合作模式玩. 两个玩家都可以在共享的游戏场上控制自己的船只,小行星在这个场地中漂浮. 我想知道演员是否是在两个玩家之间实现网络元素的正确工具,比如位置更新或小行
我正在考虑将演员用于一个简单的类似小行星的游戏,用 Scala和 Java2D编写,可以由两个玩家以合作模式玩.

两个玩家都可以在共享的游戏场上控制自己的船只,小行星在这个场地中漂浮.

我想知道演员是否是在两个玩家之间实现网络元素的正确工具,比如位置更新或小行星的破坏.

实施它需要什么?什么是困难的部分?我担心我会让他们保持同步…

有更好的解决方案吗?

编辑:

我不打算做任何关于防火墙或NAT的花哨的东西…我想有两个客户端连接的小“服务器”. (实际上,一个客户端将启动服务器并在同一台PC上运行它.)

两个客户端都将连接到它,最好是与远程actor一起连接,这样我就没有特殊情况下的远程/本地情况.

如果它更容易,我在使用P2P路由时没有问题.需求是固定的,我从来没有计划“我们需要一个64人游戏!!!”的情况.

解决方法

我最近参与了一个或多或少使用相同类型的消息传递方法的游戏的开发.即让远程服务器在一个端口上侦听,然后是几个客户端连接到它并来回传递消息.

它是在Python中完成的,因为我们不想依赖任何外部库,我们确实在它们之上编写了我们自己的actor和远程消息系统.
事实证明,有一些速度问题但我认为它们主要与Python的线程化方式有关(而且我们对它缺乏了解). Scala Actors或Akka的基准测试总是提供比我们在Python中可以做的更好的数字.

同步对我们来说不是一个大问题,至少在游戏本身不是.但后来我们没有那么多数据可以交换,而且它是一款基于圆形的游戏.因此,一个接一个地查询每个客户端,如果有超时,则查询下一个客户端.在我们的问题中,客户端只对服务器提供的内容作出反应.然而,这可能不是更实时游戏中的最佳解决方案.

对于实时事物,您可能在服务器上有一个传入队列(Actor)来接收所有客户端移动,并且可能有一个单独的游戏状态通道以避免阻塞.这确实会涉及更多同步.所以它取决于你需要更新的速度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读