用户 - scutrobotlab/RM2021_simulation GitHub Wiki

模拟器就是一个网络游戏,网络游戏就有用户系统。用户系统实现可以分为在线体系和离线体系。在线用户系统可以依托于中心化的认证服务,或者接入其他平台的用户系统。用户可以通过在不同机器之间登录同一账户,同步用户名,软件设置,游戏等级等信息。离线用户系统将用户信息存储在本地,如果用户更换登录机器,需要自己复制用户信息或重新配置信息。离线用户系统往往没有唯一性保障,可能有多个用户使用同样的用户名,当他们连接到同一个服务器时,就必须进行重名用户的处理:提醒用户更换登录名或根据 IP 地址等信息区分用户。在线用户系统一般用于大型、长期运行的网络软件,离线用户系统常见于小型、分散运行、一次性的网络软件。

在线用户系统有一个优势,即可以明确用户身份。一个用户对应一个账户,账户中可以记录用户的比赛历史、作战习惯、所属队伍等信息。只要稍加设计,就可以为模拟器增加线上匹配、比赛回放、社交等功能。

2021 赛季的模拟器使用了离线用户系统。每个玩家本地没有持久化信息,每次启动模拟器时,需要输入服务器 IP 地址和登录名。如果登录名没有与服务器内用户重名,则登陆成功,否则服务器将拒绝连接并提示用户更换登录名,以此保证服务器中登录名的唯一。在用户登陆成功时,服务器会为每个用户分配一个临时数字 ID,这个 ID 将作为用户本次连接服务器的唯一标识,在后续权限确认等环节使用。

节选自 Networking/LobbyManager.cs

这个离线用户系统的好处是轻量,即用即走,没有冗余数据包袱。缺点是无法进行任何形式的在线记录,无法明确用户身份,对在线部分功能扩展造成了限制。分享一个实现在线用户系统的设想:通过接入 GitHub 用户体系,得到每个用户的唯一标识符,用于在服务器中标识用户。利用这个标识符,可以为模拟器建立一套网络服务,实现战队注册、线上匹配、比赛回放、Demo共享、Demo评论区等功能,建立起赛前战术交流社区。

⚠️ **GitHub.com Fallback** ⚠️