云原生多人同屏对战游戏服务器系统设计方案
作者:互联网
一、项目背景介绍
1.1 项目内容
以世界多同屏为技术背景,结合云原生技术,设计并实现一款支持多人交互的高实性游戏后台系统。借助Kubernetes云原生技术将后台系统按照工业界标准进行容器化,使得面临业务时能够灵活的弹性伸缩与动态调度。在实现基础游戏服务框架的基础上,支撑多玩家同屏竞技,对多人竞技的性能问题进行进一步的优化。搭建工业化的流程管线,借助敏捷方法与DevOps思想支持持续迭代和运维自动化,可一键部署到云环境中对外提供可靠服务。
1.2 项目意义
在游戏发展如此迅速的今天,网络游戏越来越频繁地进入人们的视线,但网络游戏的开发和运维中有着一系列的问题也逐渐暴露出来,例如:游戏中数据的同步问题、影响客户端与服务端交互的性能瓶颈问题、最大支持的同屏人数问题、以及在运维过程当中的单点故障等问题。
本课题的目的拟在实现一个部署在云端的游戏后台系统,来实现对多人同屏的支持、单点故障的解决以及对后台服务的更好地维护和管理。在当前游戏产业不断成熟、消费群体不断扩大的大背景下,该后台系统可以为解决上述网络游戏开发的常见问题提供良好的解决方案。
二、软件设计方案
2.1 系统架构
本项目内部系统之间采用微服务架构,微服务架构是由一系列独立的微服务共同组成软件系统的一种架构模式;每个微服务单独部署,跑在自己的进程中,也就是说每个微服务可以有一个自己独立的运行环境和软件堆栈;每个微服务为独立的业务功能开发,一般每个微服务应分解到最小可变产品(MVP),达到功能内聚的理想状态。系统中的各微服务是分布式管理的,各微服务之间非常强调隔离性,互相之间无耦合或者极为松散的耦合,系统通过前端应用或API网关来聚合各微服务完成整体系统的业务功能;
客户端与对战专属服务器之间采用C/S架构(客服-服务器架构),客户端通过udp协议与对战专属服务器进行通信,服务器为所有客户端提供转发和业务处理服务。
2.2 接口API列表
三、软件系统概念原型视图
四、数据库设计
账户(Account):用于存储玩家账户信息,主要存储登录凭证以及玩家的等级得分等持久化数据。
玩家(Player):玩家代表一局游戏中出现的账户实体,相比于账户,玩家是一个更实时性的概念,由于核心数据都持久化存储在账户表中,因而玩家可以随时被创建和销毁,不用担心持久存储的问题。
对局(Game):对局主要管理单局比赛的数据,包括玩家的创建和销毁,玩家之间的匹配,以及等级和分数的结算等。
道具(Prop):代表可能出现在对局中的道具,不同的道具有不同的效果和类型,对玩家带来的增益也不同。
蛇(Snake):对局中玩家操控蛇对象的实际表征数据。
五、技术选型&部署环境
5.1 技术选型
- grpc:基于HTTP/2高性能RPC框架
- kcp-go: 高安全性的kcp的 GO语言实现,包含 UDP会话管理的简单实现,可以作为后续开发的基础库
- mongoDB:基于分布式文件存储的非关系型数据库
5.2 部署环境
- Kubernetes:Google开源的一个容器编排引擎
- Docker:开源的应用容器引擎
- 腾讯云
六、项目概念原型核心工作机制
项目概念原型的核心工作流程为:
- 玩家通过登录、注册等常规操作进入游戏,进入游戏后可以查看到账号的等级、历史最高分等信息
- 玩家点击开始匹配按钮以后可以开始进行多玩家对局匹配,匹配成功以后玩家进入到贪吃蛇对局中,可以通过遥感操控蛇移动与吃道具等游戏操作
- 对局倒计时结束进行所有玩家的分数结算,然后玩家返回到主界面
标签:服务,游戏,对局,系统,玩家,对战,设计方案,同屏,架构 来源: https://www.cnblogs.com/fwvvvvv/p/14203519.html