5

我刚刚创建了一个带有 Flutter 的手机游戏,并希望将其扩展到多人在线游戏。所以我想用firebase来做。我对这个领域相当陌生,所以我希望我的问题听起来不会太愚蠢。

随着我游戏中的角色流畅地移动,我需要每帧至少更新一次他们的位置,所以在使用 firebase 的情况下,我需要一个每秒运行 60 次且永不结束的云功能。然后,此函数将获取游戏中的所有对象(存储在实时数据库中)并根据它们的速度更新它们的位置。更新的值被写回客户端监听的数据库。它们更新游戏中的值并将对象渲染到正确的位置。每当玩家以某种方式与游戏交互时,都会调用另一个云函数来处理它并更新所需的内容。

有可能做这样的事情吗?这有意义吗?以这种方式使用云功能对我来说听起来不是很顺利,但我没有其他想法来实现它。它将如何影响成本?听起来像很多函数调用和数据库读/写..

如果这完全不可想象,还有什么替代方案?我不介意使用另一个数据库和/或框架来制作游戏本身。

非常感谢

4

2 回答 2

5

通过数据库传达位置等信息的速度不足以让您每秒执行 60 次。您将不得不使用某种形式的混合 UDP 和 TCP 解决方案,不幸的是,它并不像某些游戏引擎那样为 Flame 预先构建,但是根据复杂程度自己构建一个可能不会太复杂你的用例是。

就像@Fattie 建议的那样,尝试一下PubNub是否适合您可能是个好主意。

更新:Flutter 现在有一个早期阶段的 Nakama(开源游戏服务器)集成在这里

于 2020-12-01T13:58:53.130 回答
-1

Firebase 与您正在尝试做的事情完全没有联系。

您只需使用Unity和其中一种实时多人游戏服务 - 例如Photon

作为一个业余爱好者,你会从头开始尝试编写实时、帧间、预测的quat,这是不可思议的。联网!

五分钟后...

https://doc.photonengine.com/en-us/pun/v2/demos-and-tutorials/pun-basics-tutorial/intro

下载 Photon/Unity 演示并玩实时多用户游戏需要 5 分钟。

在此处输入图像描述

然后,您只需学习如何添加枪支或其他任何东西并添加您自己的模型。

火焰...

火焰是壮观的顺便说一句。要使用 Flutter/Flame 进行 R/T MP 演示,我建议只使用 PubNub,这不会花时间。

http://pubnub.com/developers/demos/codoodler(所有的演示都很棒)。它是世界上主要的实时骨干网,没有什么比它更快的了,他们使用 Flutter 就是这样——仅此而已。

于 2020-12-01T14:16:34.057 回答