基于Firebase实现的实时多人游戏

6
我刚用Flutter创建了一个移动游戏,并想将其扩展为多人在线游戏。所以我考虑使用Firebase来制作游戏。由于我的游戏中的角色在流畅移动,因此我需要每帧更新它们的位置,所以如果使用Firebase,我需要一个每秒运行60次且永远不会结束的云函数。然后,这个函数会获取游戏中的所有对象(存储在实时数据库中),并根据它们的速度更新它们的位置。更新后的值写回到数据库,客户端监听更新后的值并将对象渲染在正确的位置。每当玩家与游戏进行交互时,另一个云函数将被调用来处理并更新所需的内容。
这是否可行?听起来使用云函数方式不是很顺畅,但我没有其他实现方式的想法。它会对成本产生什么影响?听起来会有很多函数调用和数据库读/写...
如果完全无法实现,有什么替代方案吗?我也不介意使用其他数据库或框架来制作游戏。
非常感谢!

这与Firebase绝对没有任何关系。你只需要使用Photon(例如)- 你可以在五分钟内让它运行。享受吧。 - Fattie
请注意,Firebase与实时无关 - 您可能正在考虑世界上主要的实时网络PubNub,这是令人惊叹的(单击并尝试其演示)。但是,如果您想制作实时多人游戏,您当然可以使用为此提供的许多系统。 - Fattie
2个回答

6
通过数据库进行位置等通信并不能在每秒60次的情况下快速完成。您将需要使用某种混合UDP和TCP解决方案,不幸的是,与一些游戏引擎不同,Flame上不存在预构建的解决方案,但根据您的用例复杂程度,自行构建一个解决方案可能并不太复杂。

像@Fattie建议的那样,尝试使用PubNub可能是个好主意。

更新:现在有一个早期阶段的Nakama(开源游戏服务器)集成适用于Flutter,在此处


1
我不会点踩,但这有点像建议某个需要电子表格来记录星巴克支出的人学习软件工程然后从头开始开发SQL数据库并使用它 :) - Fattie
@fattie 由于Flame是一个相当简单的2D游戏引擎,根据玩家之间需要的交互类型和准确性,它并不一定需要很难才能实现自己的解决方案。 - spydon
顺便说一下,Flame非常棒。如果想要在Flutter/Flame中进行实时多人演示,我建议只需使用PubNub即可,这不需要花费太多时间。https://www.pubnub.com/developers/demos/codoodler/(所有演示都很棒)。它是世界上主要的实时后台,没有任何比它更快的,他们也支持Flutter - 就是这样。 - Fattie
如果您编辑您的回答以添加那部分,我将会取消我的“反对票”。 :) - spydon

-1

Firebase与您尝试进行的操作完全没有关联。

您只需使用Unity和实时多人游戏服务之一,例如Photon

作为业余爱好者,从头开始编写实时、帧间、预测四元数网络是不可想象的!

五分钟内...

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

下载Photon/Unity演示并玩实时多用户游戏,只需5分钟即可完成,机器人在游戏中奔跑。

enter image description here

然后你只需要学习如何添加枪支或其他物品,并添加自己的模型。

Flame ...

顺便说一句,Flame 真是太棒了。如果要使用 Flutter/Flame 进行实时多人演示,我建议使用 PubNub,这不需要花费太多时间。

http://pubnub.com/developers/demos/codoodler(所有演示都非常棒)。它是世界上最主要的实时后台,速度最快,他们也支持 Flutter - 就是这样。


3
你需要为另一个游戏引擎回答问题。 - spydon
嗨 @spydon!“如果这是完全不可想象的,那么可能有什么替代方案?”这是绝对不可想象的,我已经解释了该怎么做。 - Fattie
2
你说得对,这是写下来的内容,但我认为那不是他的意思(重新编写/移植他当前的整个游戏)。 这也不是“完全不可想象”,在Flame社区中已经有人做过了。 - spydon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接