查看: 717|回复: 0

让我们去深度了解一下Java语言游戏服务端的开发

[复制链接]

4783

主题

5079

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
18913

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2020-2-16 16:17:00 | 显示全部楼层 |阅读模式

让我们去深度了解一下Java语言游戏服务端的开发 https://www.gmbbs.net/1.认识游戏服务端

1.1什么是游戏服务端

1.1.1游戏服务端的定义

任何人类正常生理需求之外的活动均可称为游戏服务端

1.1.2游戏服务端的分类

RPG角色扮演游戏服务端、ACT动作游戏服务端、AVG冒险游戏服务端、FPS第一人称视角射击游戏服务端、TPS第三人称视角射击游戏服务端、FTG格斗游戏服务端、SPT体育游戏服务端、RAC竞速游戏服务端、RTS即时战略游戏服务端、STG射击类游戏服务端、SLG策略游戏服务端、MSC音乐游戏服务端、SIM生活模拟游戏服务端、TCG育成游戏服务端、CAG卡片游戏服务端、LVG恋爱游戏服务端、GAL美少女游戏服务端、WAG手机游戏服务端、MMOPRG大型多人在线角色扮演游戏服务端、ARPG动作角色扮演游戏服务端、ETC其他类游戏服务端、动漫游戏服务端、MOBA多人在线技术竞技游戏服务端

1.2游戏服务端开发及分工

可行性与计划研究阶段、分析需求阶段、设计阶段、开发阶段、测试阶段、系统验收

开发流程:产品立项、游戏服务端设计、开发阶段、测试阶段、Alpha测试(项目组内部测试)、Beta测试(游戏服务端内测)、上线推广阶段、运营阶段

1.3游戏服务端行业现状分析

模拟设备及内容、移动游戏服务端操控设备、互联网+游戏服务端创业、电竞直播平台、原创IP、H5游戏服务端

1.4游戏服务端服务器开发要点

网络技术(OSI参考模型、套接字、长连接、短连接)、并发编程、设计模式(单例模式、工厂模式、观察者模式)、数据库(MySQL、Mongo,内存数据库Redis、Memcache、Ehcache)、gm运营工具、运维知识(服务器部署、架构搭建、负载均衡、日志管理、数据库备份恢复、灾难处理)

2.环境搭建

2.1Windows开发环境搭建

2.1.1安装JDK

设置Path变量、设置CLASSPATH环境变量、设置JAVA_HOME

2.1.2安装Eclipse

2.1.3安装数据库客户端工具

Navicat for MySQL (MySQL) : http: //www.navicat.eom.cn/

MongoVUE (Mongo ) : http:/ www.mongovue.com

RedisClient (Redis) : https: // github.com/caoxin /RedisClient

2.1.4安装SSH工具

XShell: http: //www.netsarang.com/products/xsh_overview.html

SSH: http://ultra.pr.erau.edu/~·jaffem/tutoriaVSSH _secure_ shell_ client.htm

2.1.5 安装其他工具

文本编辑器

Ediψlus: https: //www.ediφlus.com/download.htrnl

Sublime Text: http: //www.sublimetext.com/

容器

Tomcat: https: //tomcat.apache.org/

JBoss: http://jbossas.jboss.o

JSON 解析工具

在线 JSON 解析: http://json.cn

2.2Mac OS X开发环境搭建

2.3Linux服务器环境搭建

3.网络通信

3.1通信协议

TCP/IP模型:链路层、网络层、传输层、应用层

3.1.1面向连接的 TCP

3次握手建立连接

深度解析Java游戏服务端服务器开发
面向连接:通信之前必须通过三次“握手”建立可靠连接

安全可靠:每 次通信都必须得到对方的应答,否则认为数据报丢失,需要重发。

全双工通信: 旦建立连接,双方都可以通过通道进行数据传输

通信只能建立在两个点之间

面向流通信:通信传输是通过流的形式进行的。

3.1.2面向数据报的UDP

3.1.3HTTP编程

3.1.4Socket编程

服务器监听、客户端请求、连接确认

深度解析Java游戏服务端服务器开发
3.1.5 WebSocket 编程

3.2Java NIO 基础

3.2.1BIO编程(阻塞式IO)

深度解析Java游戏服务端服务器开发
3.2.2NIO编程(非阻塞式IO)

创建1个线程负责处理 IO 事件和 事件的分发。

事件驱动机制非同步监视事件,而是事件到达之后触发。

线程之间通过 wait notify 等方式通信,减少了不必要的线程切换。

深度解析Java游戏服务端服务器开发
3.2.3AIO编程(异步IO)

没有阻塞等待客户端连接

3.3Mina的介绍及其使用

3.3.1总体架构

深度解析Java游戏服务端服务器开发
3.3.2IoService

负责IO相关工作

3.3.3IoFilterChain

扩展处理器

3.3.4IoHandler

业务逻辑处理

3.3.5IoSession

对应客户端与服务端的IO连接

3.3.6工作原理

深度解析Java游戏服务端服务器开发
3.3.7Acceptor与Connector 线程

监听连接

3.3.8 Processor 线程

复制IO读写操作

3.3.9线程模式

深度解析Java游戏服务端服务器开发
3.3.10请求的处理顺序

保证请求IO请求顺序

3.3.11Mina编程

3.4Netty的介绍及其使用

3.4.1总体架构

深度解析Java游戏服务端服务器开发
3.4.2零拷贝

Netty 的接收和发送来用 ByteBuffer, ByteBuffer 采用 Direct Buffers ,即ByteBuffer 直接使用堆外的内存进行 Socket 读写,而不需要进行字节缓冲区的二次拷贝

Netty 的组合 Buffer 对象,能聚合多个 ByteBuffer 对象,用户如果要操作多个Buffer ,可以先将这些 Buffer 组合,然后操作这个组合 Buffer

Netty 采用 transferTo 进行文件传输,可以直接把文件缓冲区的数据发送到目标的Channel

3.4.3 Codec 框架

FrameDecoder

FrameDecoder 通过维护 DynamicChannelBuffer 存储接收的数据,它提供抽象模板,在模板中写好了整个解码过程,使用它只需在子类实现 decode 方法。

ReplayingDecoder

ReplayingDecoder FrameDecoder 的非阻塞解码

ObjectEncoder和Objectoecoder

这两个类能对 Java 对象进行编解码序列化。

HttpRequestEncoder 和HttpRequestDecoder

Netty中还能实现 HTTP 服务器,通过 HttpRequestEncoder HtφRequestDecoder能实现 HTTP 请求和响应的编解码。

3.4.4 Channel

3.4.5 ChannelEvent

3.4.6 ChannelPipeline

3.4.7 Netty 编程

4.数据交互

4.1数据传输格式

网络数据大小、网络数据安全性、实现复杂度、协议通用性

数据类型:自定义二进制 Binary、开源协议、文博会协议

深度解析Java游戏服务端服务器开发
4.2JSON的使用及解析

4.3XML的使用及解析

4.4Google Protocol Buffer 的介绍及使用

4.4.1 Protobuffer 的安装与编译

4.4.2 Protobuffer 的语法

标识符,Proto buffer 协议的标识符为 message enum, message 代表消息类型, enum 代表枚举类型,在通过 Protobuffer 的编译器编译之后,它们都生成 Java 中的一个类。

修饰符

required :该宇段不能为空,必须传递值,否则 message 不能被正确初始化。

optional :该字段可以为空,不管该字段是否传值, message 都能正确初始化。

repeated :重复的字段,等同动态数组,编译成 Java 后即为 List ,但是其数据可以为空。

数据类型

Package

Option,Option 可以定义 些常用选工页

4.4.3 生成 Java类

4.4.4 Eclipse的protobuf-dt 插件

4.4.5 示例程序

5.数据缓存与持久化

5.1游戏服务端数据存储

5.1.1 数据分类

全局数据(排行榜信息、联盟信息、国家信息、竞技场信息等全服所有玩家共享的信息)、在线玩家数据、离线玩家数据

5.1.2 数据缓存方式

5.1.3 数据持久化方式

5.1.4 数据库的比较

深度解析Java游戏服务端服务器开发
5.2MySql的介绍及使用

5.3MongoDB的介绍及使用

文档存储、可扩展性、易查询、安全性

5.4Memcache的介绍和使用

5.5Redis的介绍和使用

5.5.1Redis的特点

速度快、数据类型丰富、操作原子性、持久化、应用场景丰富

5.5.3Redis的持久化

AOF 模式指 Redis 在执行过程中会把所有的写指令记录下来,当数据恢复时,再按照当时记录的顺序执行 遍命令

RDB 模式是在不同的时间 点将 Red is 存储的数据快照存储到磁盘等介质上, Redis在持久化过程中,会先将数据写到临时文件中,持久化过程结束之后再用临时文件替换上次持久化好的文件

5.5.4Redis的主从复制

6.游戏服务端逻辑

6.1逻辑架构

6.1.1项目目录

深度解析Java游戏服务端服务器开发
6.1.2模块介绍

core :核心模块

Gamelnit :游戏服务端服务器启动关闭类,负责服务器资源的加载与释放

Router :处理玩家请求接入的逻辑处理消息分发

manager:逻辑模块

深度解析Java游戏服务端服务器开发
event 事件处理模块。

module :逻辑模块。

net :网络模块,使用的网络框架及网络请求处理等

rpc:负责逻辑服务器与其他服务器的远程服务调用。

NetFramework :模拟网络层框架,负责网络请求响应的封装(这里只写了一个模拟类,正式开发中应当使用 Netty Mina 等网络框架〉

NetHandler :模拟网络框架处理接口,负责处理网络框架的逻辑。

NetHandlerlmpl :模拟网络框架处理接口的实现类

NetModule :模拟网络层框架封装,负责封装网络框架。

ProtoIds :网络请求协议号,客户端与服务器交互的协议号

ProtoMessage :网络请求消息体,客户端与服务器交互的消息结构

ResultCode :网络响应码,客户端与服务器交互返回结构的响应码封装

net.properties :网络配置 IP 端口文件

task :任务模块,游戏服务端中需要的定时任务。

JobMgr: Job 管理类

QuartzManager: Quartz 管理类

TestJob :测试 Job类

template :静态数据,游戏服务端中静态数据的载入和读取。

DataLoader :游戏服务端服务器数据载入类。

util :工具类,所需要的工具类,如数据库工具类、缓存工具类、线程池工具

CacheUtil 缓存管理类

DB 数据库管理类

ExecutorPool 线程池管理类

test:游戏服务端服务器逻辑框架测试类

6.2逻辑流程

6.2.1网络模块

6.2.2线程池

6.2.3启动服务器

6.2.4逻辑请求处理

6.2.5关闭服务器

6.3事件处理器

在游戏服务端服务器中,经常会有事件触发机制,触发的事件通常是通过异步方式执行。服务器内部事件处理器,用于断开模块之间藕合。比如登录后要给好友发上线通知 登录完成后触发一个登录事件,所有关注这个事件的模块,仍然处理自己的业务 避免 登录完成后直接调用其他模块的接口。

6.4定时任务

在游戏服务端服务器中,经常会有定时执行某个逻辑的需求,如每日签到、整点更新、玩 家某个属性在某个时刻进行刷新、联盟或国家的声望值在每周的某个时刻刷新,这一系 列的需求都需要使用定时任务来实现

6.5RPC框架

各个服务器进程之间的通信部分,在多个服务器进程之间的通信,目前使用的技术 般是 RPC

6.5.1 Json-rpc

6.5.2 Motan

发现服务、订阅服务和服务通知

支持 Fail Over FailFast ,以及 Server 连续失败的次数达到规定次数进行心跳检 测等高可用策略

支持优先低并发、 致性 Hash 、随机请求、轮询 负载均衡策略

支持 SPI 扩展

可调用统计日志和访问日志

7.游戏服务端安全

7.1游戏服务端安全的必要性

7.2登录安全

7.3游戏服务端充值

客户端向开发商服务器请求生成订单。

客户端调用联运 SDK 打开支付界面,玩家输入支付信息。

联运 SDK 将订单信息发送给联运服务器。

联运服务器记录订单并发送订单给开发商服务器进行支付验证。

开发商服务器校验订单信息,校验成功就对客户端发货,并返回校验结果给 联运服务器。

联运服务器返回订单结果给客户端。

7.4SQL 注入

7.5通信协议与消息格式

7.6整型溢出

7.7并发请求

7.8逻辑漏洞

7.9日志系统

8.服务器架构分析

8.1服务器架构的演变过程

深度解析Java游戏服务端服务器开发
8.2全区同服架构分析

8.2.1 coc 架构模型分析

深度解析Java游戏服务端服务器开发
8.2.2 COK 架构模型分析

深度解析Java游戏服务端服务器开发
8.3分区分服架构分析

深度解析Java游戏服务端服务器开发
8.4弱联网类游戏服务端架构分析

深度解析Java游戏服务端服务器开发
8.5MMORPG 类游戏服务端架构分析

深度解析Java游戏服务端服务器开发
9.《皇室战争》游戏服务端开发实战

9.1微竞技游戏服务端介绍

9.2架构分析及搭建

9.2.1 功能分析

深度解析Java游戏服务端服务器开发
9.2.2 服务器部署架构

深度解析Java游戏服务端服务器开发
9.2.3 系统架构

.通信机制、数据处理、项目管理、系统技术架构图

深度解析Java游戏服务端服务器开发
9.3数据持久化方案

9.3.1 数据结构分析

深度解析Java游戏服务端服务器开发
9.3.2 使用 Morphia 操作 MongoDB

9.4Netty 网络框架的使用

9.4.1 Netty 实现的 HTTP 服务器

9.4.2 Netty 实现的 TCP 服务器

9.5账号系统

9.6个人信息

9.7英雄卡牌系统

9.8宝箱系统

9.9战斗系统

9.10客户端模拟

10.游戏服务端开发技术前景

10.1Egret

10.2Cocos 20

10.3Unity

10.4Unreal

10.5Java

10.6Node.js



【GM论坛[www.gmbbs.net]免责声明】
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
4、论坛的所有内容都不保证其准确性,完整性,有效性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请告之,本站将立即删除。
   提问发帖求助请点此发帖 https://www.gmbbs.net/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表