我刚刚发布了这个 Acrophobia —它是一个实时多人在线中文的单词游戏,2到12个玩家竞争来写出最FUNNY的短语来应对随机缩写。 想要分享一些技术决策是那有帮助(和没有)其他独自的应用开发者。
这个游戏:你会得到的信道,就像是T·H·E,写像一个短语“龟有耳”(Turtles Have Elbows),Everyone votes, funniestphrasewins。
成功的架构决策如下:
- Firebase Firestore for实时状态 - 状态快照的侦听器让状态被同步到所有玩家中,几乎没有延迟。每次的游戏阶段(写,选择,结果)都是一份文档更新,所有客户端都会同时做出反应。这比搭建自己的websocket 服务器好使得多。
2.云函数的游戏逻辑 - 所有转变,每次分数和匹配都在服务器端进行。这会阻止cheating并确保客户端是呈现render,只是坏处是,冷开端会以一到两秒的时间来延迟第一次被调用。
3.AI对手拥有各自不同的风格 - 相反的是单一的普通机器人,在12个不同的voting模式和短语写着风格。其中某些是优先pun的,某些会暗嗲的喜剧,某些会投票给下风。在单人模式会让你像是在和玩真实的人打扮。
4.强迫地18n从初始 - 支持44种语言听起来像是疯人院,但它在架构中进行得很好,因为它早就开始了。所有表面的string都会通过一个翻译key来去。这意味着加上一个新语言只意味着加上一个翻译文件,而不再refactoring UI code。
我会更不同:
- 我会使用一个专门的实时数据库(比如 say Supabase实时数据库或 Socket.io)来替代Firebase Firestore来真正的游戏轮回。Firebase在持久化方面很好但在实时对接时有一些延迟小问题。
- 我将在更早时候投资自动化测试。手动测试12个AI对手并且在44种语言是……是很多。
- 我将和小于的特性被发布后迭代更快。 我开了一整年的功能在开播前但是他们都可以根据玩家反馈来添加。
这个游戏在苹果和安卓上面都是免费的,如果你想要了解架构:
- 苹果:https://apps.apple.com/app/id6760745131
- 安卓:https://play.google.com/store/apps/details?id=com.jscriptz.acrophobia
很高兴回答任何你会的架构问题特别是Firefox的实时多人模式的问题。
评论 (0)