- 所有的数据都定义在proto/data里面,数据和逻辑完全分离,玩家的数据存储在一个proto中,这样既方便序列化,又方便使用json进行快速验证,又方便客户端做热加载(客户端逻辑与数据分离)
- 所有服务器通过与中心服务器通信来确定自己的类型,所有配置档(包括服务器配置和游戏配置)都由中心服发出
- 最终实现的目标是所有玩家只在逻辑上分区,实际不分区服的在服务器集群中
- 使用ECS结构编写逻辑
- 只有有限的数据作为存储单元 这个得想一下 比如角色、地图、帮会等。 而怪物应该是跟随地图走,Buff跟随角色走
- 是否使用机器服务器来启动当前机器上的各个服务器
- 后台功能
- (done) ELK 收集日志
- 现在服务器都是单线程的 如果后期有必要的话 可以把一些压力大的服务器改为多线程
- 中心服务器 (广播服务器状态,发送服务器配置,游戏配置)
- 登录服务器
- 门服务器 (只做消息转发,不做逻辑处理)
- 世界服务器 (静态场景,分线)
- 副本服务器 (动态场景,可以随时创建销毁,不保存副本配置,这样可以由客户端直接发来运行时配置用于快速调试)
- 聊天服务器 (世界,当前,帮派,组队,好友)
- 邮件服务器
- AI服务器
- 玩家消息中转服务器 (用于向不确定Gate的玩家发送消息)
- 数据库服务器
- 日志服务器
- 负载服务器 (负责统计当前机器的负载情况)
- 匹配、帧同步、排行榜、帮派等专项功能服务器
- SDK服务器 (登录、支付等)
- 消息分类与消息流整理
- 服务器存储数据类型整理
- 角色加载与释放流程整理
- gopsutil 搜集机器负载,CPU使用率等