1 .了解游戏
1.1什么是游戏

1.1.1游戏定义
人类正常生理需要以外的活动可以称为游戏
1.1.2游戏分类
RPG角色扮演游戏、ACT动作游戏、AVG冒险游戏、FPS第一人称视点射击游戏、TPS第三人称视点射击游戏、FTG格斗游戏、SPT运动游戏、RAC竞速游戏、RTS实时策略游戏SIM生活模拟游戏、TCG养成游戏GAL美少女游戏、WAG手机游戏、MMOPRG大型多人在线角色扮演游戏、ARPG动作角色扮演游戏、ETC其他类型游戏、动漫游戏、mobile
1.2游戏开发与分工
可行性和计划研究阶段、分析需求阶段、设计阶段、开发阶段、测试阶段、系统检验
开发流程:产品立项、游戏设计、开发阶段、测试阶段、alpha测试(项目团队内部测试)、beta测试)、在线推广阶段、运营阶段
1.3游戏行业现状分析
虚拟现实设备及内容、移动游戏操作设备、网络游戏创业、电竞直播平台、原创IP、H5游戏
1.4游戏服务器开发要点
网络知识( OSI参考模型、套接字、长连接、短连接)、并发编程、设计模式);单实例模式、工厂模式、观察模式)、数据库( MySQL、Mongo、MySQL
2 .环境建设
2.1构建windows开发环境
2.1.1安装JDK
设置Path变量、设置CLASSPATH环境变量和设置JAVA_HOME
2.1.2安装eclipse
2.1.3安装数据库客户端工具
NavicatforMySQL(MySQL ):http: //www.navicat.eom.cn/
Mongovue(Mongo ):http:/www.mongo vue.com
redisclient(redis ):https//github.com/caoxin/redis client
2.1.4安装ssh工具
shell:http://www.net sarang.com/products/xsh _ overview.html
ssh:http://ultra.pr.erau.edu//jaffem/tutoriavssh _ secure _ shell _ client.htm
2.1.5安装其他工具
文本编辑器
EDIlus:https://www.EDIlus.com/download.htrnl
sublime text:http://www.sublime text.com /
容器
Tomcat:https://Tomcat.Apache.org /
JBoss: http://jbossas.jboss.o
Jon分析工具
在线JSON分析: http://json.cn
2.2构建MAC OS x开发环境
2.3构建Linux服务器环境
3 .网络通信
3.1通信协议
TCP/IP模型:链路层、网络层、传输层、APP传输层
3.1.1面向连接的TCP
三次握手建立连接
面向连接:通信前必须通过三次“握手”建立可靠的连接
安全性:每次通信都要得到对方的响应。 否则,认为数据报丢失,需要重新发送。
全双工通信:一旦建立连接,双方都可以通过信道进行数据传输
通信只能在两个点之间建立
面向流的通信:通信传输以流的形式进行。
3.1.2数据报的UDP
3.1.3HTTP编程
3.1.4套接字编程
服务器监听、客户端请求、连接确认
3.1.5web套接字编程
3.2Java NIO基础知识
3.2.1BIO编程(阻塞IO ) ) ) ) ) ) ) ) ) ) )。
3.2.2NIO编程(非阻塞IO ) ) )。
创建一个线程来处理I/o事件和事件分发。
事件驱动机制不是异步监视事件,而是在事件到达后触发。
通过在线程之间使用wait notify等进行通信,减少了不必要的线程切换。
3.2.3AIO编程(异步IO ) )。
没有等待客户端连接的块
3.3Mina介绍及其使用
3.3.1总体框架
3.3.2io服务器
负责IO相关工作
3.3.3IoFilterChain
扩展处理器
3.3.4IoHandler
业务逻辑处理
3.3.5IoSession
支持客户端和服务器端I/o连接
3.3.6工作原理
3.3.7加速器和连接器线程
监听连接
3.3.8专业技术支持线程
复制I/o读取/写入
3.3.9线程模式
3.3.10请求的处理过程
保证请求IO请求的顺序
3.3.11Mina编程
3.4母语介绍及其使用
3.4.1总体体系结构
3.4.2零拷贝
Netty的发送和接收使用ByteBuffer,ByteBuffer使用Direct Buffers。 这意味着ByteBuffer直接使用堆外的内存读写套接字,不需要字节缓冲区的辅助副本
Netty的组合Buffer对象可以将多个ByteBuffer对象合并在一起,在用户操作多个Buffer的情况下,可以首先将这些Buffer组合起来,然后再操作其组合Buffer
Netty使用transferTo进行文件传输,可以将文件缓冲区的数据直接发送到目标信道
3.4.3代码框架
帧解码器
帧解码器维护DynamicChannelBuffer以存储接收到的数据。 它提供了一个抽象模板,您只需在模板中描述整个解码过程并在子类中实现decode方法即可。
更换解码器
replaying decoder帧解码器的无阻塞解码
对象编码器和对象编码器
这两个类可以对Java对象进行编解码和序列化。
http请求编码器和http请求解码器
在Netty中也可以实现HTTP服务器,在HTTPrequestencoderhtrequest decoder中可以实现http请求和响应的编解码器。
3.4.4
3.4.5信道事件
3.4.6通道管道
3.4.7 Netty编程
4 .数据交流
4.1数据传输格式
网络数据大小、网络数据安全、实现复杂性、协议通用性
数据类型:自定义二进制Binary、开源协议、文博会协议
4.2JSON的使用和分析
4.3XML的使用和分析
4.4介绍和使用谷歌协议缓冲区
4.4.1安装和编译proto buffer
4.4.2专业缓冲语法
识别符。 Proto buffer协议的标识符表示消息枚举,消息表示消息类型,枚举表示枚举类型,由Proto buffer编译器编译后生成Java类。
修饰符
required :此宇段不能为空。 必须传递值。 否则,消息将无法正确初始化。
optional :此字段可以为空。 无论是否传递了值,都会正确初始化消息。
repeated :与动态数组等效的重复字段。 编译为Java时会变成List,但数据可以为空。
数据类型
包
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数据库比较
5.2MySql的介绍和使用
5.3MongoDB的介绍和使用
文档保留、可扩展性、轻松搜索和安全性
5.4Memcache的介绍和使用
5.5Redis的介绍和使用
5.5.1Redis的特征
高速、数据类型丰富、操作原子性、持续化、应用场景丰富
5.5.3Redis持续化
AOF模式是指Redis在执行过程中记录所有写入命令,并在恢复数据时按照当时记录的顺序执行路径命令
RDB模式是将Red is保存的数据的快照在不同的时间点保存到磁盘等介质,Red is在永久化的过程中向临时文件写入数据,在永久化的过程结束后将上次永久化的文件置换为临时文件
5.5.4Redis主从复制
6 .游戏逻辑
6.1逻辑体系结构
6.1.1项目目录
6.1.2模块介绍
核心:核心模块
Gamelnit :游戏服务器的启停类,负责加载和释放服务器资源
Router :处理玩家请求访问的逻辑处理消息的发送
管理器:逻辑模块
事件事件处理模块。
模块:逻辑模块。
net )网络模块、使用的网络框架和网络请求处理等
rpc :负责逻辑服务器和其他服务器的远程服务呼叫。
NetFramework :模拟网络层框架,负责封装网络请求响应(这里只写了一个模拟类)。 正式开发需要使用Netty Mina等网络框架)。
NetHandler :虚拟网络框架处理接口。 处理网络框架的逻辑。
NetHandlerlmpl :模拟网络框架处理接口的实现类
NetModule :模拟网络层框架封装,负责网络框架的封装。
ProtoIds :网络请求协议号,客户端和服务器交换的协议号
ProtoMessage :网络请求消息主体、客户端和服务器交互的消息结构
ResultCode :网络应答代码,客户端和服务器交互地返回结构体的应答代码封装
net.properties :网络配置IP端口文件
任务:任务模块,游戏所需的定时任务。
job mgr :作业管理类
quartz管理器: quartz管理类
TestJob :测试Job类
template :加载和读取静态数据、游戏中的静态数据。
数据加载器:游戏服务器数据加载类。
util :所需的工具,包括数据库工具、缓存工具和线程池工具
CacheUtil缓存管理类
数据库管理类
执行池管理类
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
发现服务、订阅服务和服务通知
支持可用的策略,例如故障恢复故障快速,以及在服务器连续失败达到规定次数时检测心跳
支持低优先级并发、致命散列、随机请求和轮询负载平衡策略
支持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服务器体系结构发展
8.2全区同服结构分析
8.2.1 coc体系结构模型分析
8.2.2 COK体系结构模型分析
8.3分区服务体系结构分析
8.4弱网络类游戏架构分析
8.5MMORPG类游戏架构分析
9. 《皇室战争》游戏开发实战
9.1微竞技游戏简介
9.2体系结构分析和构建
9.2.1功能分析
9.2.2服务器部署体系结构
9.2.3系统体系结构
.通信机制、数据处理、项目管理、系统技术架构图
9.3数据持久化方案
9.3.1数据结构分析
9.3.2使用morphia操作MongoDB
9.4使用netty网络框架
9.4.1 Netty实现的HTTP服务器
9.4.2 Netty实现的TCP服务器
9.5帐户系统
9.6个人信息
9.7英雄牌系统
9.8宝箱系统
9.9战斗系统
9.10客户端模拟
10 .游戏开发技术前景
10.1埃列特
10.2Cocos 20
10.3单位
10.4通用
10.5Java
10.6Node.js
光遇1.23每日任务该怎么完成呢?在光遇世界有着各种精彩有趣的任务内容,玩家可以完成后获取大量的游戏奖励,小编
《云顶之弈》这游戏中卢安娜的飓风这件武器最近版本更新中被强化了,分裂攻击的伤害效果大大提升。有些小伙伴
迷你世界激活码2023是哪些呢?在精彩有趣的全新挑战活动中,玩家可以体验到更多丰富的游戏奖励。小编今天准备了
很多传奇的老玩家关心关于贪玩蓝月祝福油怎么用的相关问题,今天柠檬友玩小编给大家搜集整理了如下内容,希望对
《魔兽世界怀旧服》中存在着多样的公会制度,DKPROLL团就是其中之一,关于这个制度的意思好优劣势,本文将为你解
斗罗大陆魂师对决阵容最佳搭配2023,新版本上线了很多魂师,我们应该如何搭配呢?以下为大家分享新版本顶级阵容大
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14
时间:2022-11-14