Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design Doc v1 #1

Open
ZhangChee opened this issue Mar 11, 2017 · 0 comments
Open

Design Doc v1 #1

ZhangChee opened this issue Mar 11, 2017 · 0 comments

Comments

@ZhangChee
Copy link
Collaborator

长连接 vs 短链接

  • 出于游戏考虑,游戏过程中,后端需要不断地向前端发送通知消息,所以暂时使用长连接 (web socket)。

登录、注册、房间等功能

  • 打开网页,输入昵称,直接登录到默认房间
  • 暂不支持创建房间的功能,只提供唯一默认房间
  • 前端直接发起建立web socket。初始化消息为昵称

游戏准备过程

  • 首个连接的玩家为房主,可以在所有玩家准备就绪状态下,开始游戏
  • 前端显示玩家数目以及就绪状态
  • 前端提供按钮,方便玩家更改就绪状态。状态改变请求通过web socket发送。后端需要向每一个接入的玩家发送通知。各个收到通知的玩家的前端进行相应更新

游戏进行过程

  • 行动开始:
    • 后端在每个角色行动前,向前端对应角色发送开始消息。
    • 前端接收到消息后,提示玩家,并允许该玩家进行操作。
  • 行动过程:
    • 看牌操作(化身幽灵看牌,狼人互相确认,独狼看底牌,爪牙确认狼人,预言家看牌,强盗看牌,失眠者看牌)
      • 后端将对应身份信息以消息的形式返回给前端
      • 前端将信息正确显示
    • 选择操作(化身幽灵选牌,预言家选牌,强盗选牌,捣蛋鬼选牌,酒鬼选牌,猎人选牌)
      • 前端提供选择界面,并将选择结果以消息方式发送给后端进行处理。
      • 后端根据选择卡牌已经所处行动,队卡牌进行处理。如果需要向前端反馈,则发送消息予以通知。
    • 换牌操作
      • 后端默默进行
      • 前端可以动画显示
      • 前后端无须通信
  • 行动结束:
    • 后端在认为前端行动结束后,向前端发送结束消息。并等待反馈。
    • 前端在接收到结束消息后,弹出通知框。确认后向后端发送消息。
  • 下一轮行动:
    • 后端收到所有前端行动结束的消息确认后,发起下一轮行动。
    • 如果是最后一轮结束,后端向前端发送行动全部完成的通知消息。

撕逼过程

  • 整个过程前端提供投票界面,并随时可以进行投票。
  • 前端提供投票确认按钮,一旦点击,则向后端发送投票结果。
  • 所有人均投票结束,后端统计。
  • 如果投死的是猎人,后端额外发起一轮行动,如上。
  • 猎人通过前端确认了带走的人之后,后端再次统计投票结果,并向前端公布所有人的身份和游戏结果
  • 前端显示所有人身份,并显示游戏结果
  • 前端显示返回按钮,点击则返回至游戏准备过程
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant