游戏核心玩法:

玩家在三大阵营中(民间、狼人和独狼)被秘密分配角色,需要欺骗,推测,生存。游戏轮流进入白天、夜晚和投票阶段Classic 角色全部支持,以及新鲜角色不断追加中!

你也可以与好友自定义游戏并在这里玩!

背后的事实:

  1. Firebase Realtime DB 快速检测玩家断线,Firestore 存储游戏状态,以便结构化查询。
  2. 敏感游戏逻辑通过 Firebase Cloud Functions 实现,服务器端逻辑严格。角色分配、投票结果、击杀处理、陷阱反应链、结算判断和客户端无法干扰结果。

一套完美的清理系统,保证不活跃玩家不会一直留存在系统中。当断线玩家重新连接时,onValueUpdated 触发器会立即触发,同时设定了每分钟扫描一次作为保险。

投票系统采用重量投票,实时计算和决策。Firebase Firestore 的 transaction 中计算结果。

使用 GetX 管理游戏状态,UI 会及时响应 Firestore 的实时变化,而无需频繁重建UI。

这里最具难度的是在多个客户端同时写入时处理阶段转换期间发生的竞态条件。解决方法是将投票决策移到触发器,客户端直接呼叫不再采用这种形式。

在做这一切时,处理竞态条件似乎是最困难的一点。 OMG 我测试了一整晚的过程简直就是噩梦。

希望你们都能试试,因为我现在好像是整个项目的唯一参与者。

希望我的所有错误都能得到宽恕,我仍然只是一个 2 年级的学生

如果有经验在 Flutter 中实现实时多人游戏的朋友,可以提供反馈,我正等待你们的建议和指教。