/GameSever

A server for shooting plane game based on UDP of Computer Network Class, Jian Larry Shen, Tongji University

Primary LanguageC++

基于UDP的炸飞机游戏服务器

developed by TaihouDaisuki (UDP Socket by APTXOUS(yyy)-my roommate)
Client developed by kagaya-my roommate


基本交互逻辑

原则:服务器不对包进行确认,仅对客户端发出请求进行响应

固定包结构:1字节阶段号+1字节事件号+20字节请求者用户名

  • 登陆阶段

    接收包:用户登陆请求事件,载荷20字节密码
    发送包:1字节登陆结果(1-成功;0-失败)+100字节附加字符串


  • 用户界面阶段

    接收包:登出,空包
    返回包:等待,空包(这里起确认作用)

    接收包:拉取在线用户列表事件,1字节起始数目,1字节请求数目
    发送包:用户列表,1字节用户个数,1字节在线总数,若干20字节在线用户名
    发送包:邀请请求,20字节邀请方用户名

    接收包:邀请用户对局,20字节被邀请方用户名
    发送包:空包,等待对方响应
    发送包:对局确认,4字节字符串,为房间id(0000-9999)时接受,否则拒绝

    接收包:邀请结果,1字节结果(1-同意;0-拒绝)
    发送包:对局确认,4字节字符串,为房间id(0000-9999)时接受,否则拒绝


  • 房间界面阶段

    接收包:离开房间,空包
    发送包:等待,空包(这里起确认作用)

    接收包:用户状态,1字节是否准备(1-已准备;0-未准备)
    发送包:对方状态,1字节是否准备(1-已准备;0-未准备)
    发送包:对方已退出房间,空包
    发送包:双方已准备,对局即将开始

    接收包:飞机坐标,4字节机头+机尾
    发送包:空包,等待对方上传飞机信息
    发送包:开始,1字节先后手信息(1-先;0-后)


  • 对局阶段

    接收包:空包,等待方
    发送包:空包,对方未操作
    发送包:点击操作,2字节点击位置,1字节结果(1-空;2-飞机;3-机头)
    发送包:确认操作,4字节确认位置,1字节结果(1-猜中;0-未猜中),1字节对局信息(1-结束;0-继续) 发送包:对方已退出房间,空包(对局直接获胜)

    接收包:点击操作,2字节点击位置
    发送包:点击反馈,1字节结果

    接收包:确认操作,4字节确认位置
    发送包:确认反馈,1字节结果,1字节对局信息


  • 特殊情况(任何情况下收到之后都会立即发送,优先级最高)

    发送包:踢人(预存进用户缓存,收到该用户包后立即返回)