猜你喜欢
深度解析Java游戏服务器开发

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

书籍作者:何金成 ISBN:9787121301421
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:9484
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

为了帮助想了解入门游戏服务器开发的从业人员或非从业人员迅速掌握Java游戏服务器开发的技术,本书从游戏的行业分析、Java技术、游戏逻辑、数据库技术、网络理论、服务器技术、架构分析、系统优化等方面对游戏服务器开发做了全面解析,并对目前市面较热门的游戏进行分析,从行业到理论到技术,再到架构到实战。本书带领读者熟悉Java游戏服务器开发相关领域,帮助想要入门游戏服务器领域的读者更快地了解并掌握相关内容。本书实用性强,既是非游戏行业人员迅速了解并掌握游戏服务器技术的宝典,又是游戏行业从业人员进阶提升的实用手册。本书适合作为非游戏行业但想入门游戏行业的Java工程师、想了解游戏服务端技术的游戏前端工程师、需要游戏服务器开发入门工具书的人员,以及其他对游戏服务器开发有兴趣爱好的各类人员的阅读书籍。

作者简介
何金成,游戏行业开发者,从事于游戏服务器研发工作,曾就职于游戏谷,参与大型3DMMORPG《七雄无双》的服务端研发,后任职熊孩子游戏,并担任Java服务端主程,负责《英雄守卫战》、《王者守卫战》、《国战三国志》以及《英雄对冲》等多款手游的服务端研发工作。腾讯GAD开发社区特约撰稿人。涉猎广泛,擅长Java后端研发,分布式服务开发,同时也精通Cocos、Egret等游戏前端引擎,曾在博客写过不少详细的游戏开发案例,掌握多种技术,并且非常乐于分享,是一位有着游戏梦的游戏开发者。
前言

Java诞生于20世纪90年代,是一款面向对象的工具,为企业级的计算领域提供解决方案。目前,Java普遍应用于分布式开发及大数据云计算领域,无论是大家手中的安卓手机,还是企业级CS、BS项目,以及微信公众号和APP后台开发,处处可见Java的身影,而本书将重点介绍Java在游戏服务器开发领域的应用。

本书特色

本书将讲解在游戏开发领域,如何使用Java开发游戏服务器。本书附有丰富的源码案例,并对目前较热门的网络游戏服务器进行分析。

市面上大部分讲解Java的书都以Java基础、JavaEE企业级开发、Android开发、微信开发等为主,本书将重点讲解Java在游戏领域的应用——Java作为游戏服务器开发的卓越表现。虽然,服务器领域一直由C++主导,C++优秀的性能在服务器中有着良好的表现,但近些年来,Java也变得越来越优秀,Java在网络方面的处理性能也有了显著提升,使用Java开发游戏服务器也成为可能。本书为使用Java开发游戏服务器提供指导,让有Java基础的读者快速入门Java游戏服务器开发。


本书对游戏服务器开发的各种技术都做了详细介绍,并且源码中有相应的案例,代码中也有非常详细的注释。对于不容易理解的内容,结合图表进行讲解,使读者可以有一个更加直观的认识。

书中涉及的均是目前使用较广泛、较热门、较实用的技术,想要了解新技术的人可以把本书作为参考。

本书优势

虽然目前也有少量关于游戏服务器的书讲解得非常细致,但大多是基于C++语言实现的服务端内容,而使用Java开发游戏服务器的开发商越来越多,本书针对的就是有一定Java基础的人,每章均配有源码案例,可带领读者快速入门Java游戏服务器开发。

为什么是Java?

JDK4提供了NIO类库——异步IO,NIO框架也越来越被人熟知,而且Mina、Netty都是基于NIO网络框架的。随着大规模分布式系统、大数据和流式计算框架的崛起,基于Java构建这些系统已经成为主流,NIO编程和NIO框架也得到了广泛应用。在互联网领域,阿里的分布式服务框架Dubbo、RocketMQ、大数据的基础序列化通信框架Avro,以及很多开源的软件都已经使用Netty框架构建高性能、分布式的通信。所以,Java是能胜任游戏服务器开发的,也完全能满足当下的游戏性能要求。

本书各章内容

本书分为基础篇、入门篇和高级篇三个篇章,共10章。

基础篇

从游戏行业的基础知识讲起,带领读者进入游戏开发领域,做一些前置的准备工作。

第1章

讲解游戏的理论知识、游戏行业的现状及发展、游戏开发中的要点等,让读者了解游戏服务器开发的基本内容。

第2章

为后续开发做准备,讲解Java开发环境搭建,并介绍了一些常用开发工具。

入门篇

以Java游戏服务器技术为核心,分模块展开讲解,真正从技术上了解并掌握游戏服务器开发技术。

第3章

网络对游戏服务器起着至关重要的作用,本章讲解游戏服务器开发中的网络层。

第4章

传输数据时,需要拟定双方都能解析的数据格式,使双方都能辨别。

第5章

游戏数据多种多样,如何进行数据缓存,如何使数据持久化,本章将一一进行介绍。

第6章

游戏逻辑是游戏服务器的心脏,不同游戏的业务逻辑,对应着不同的逻辑代码。本章将介绍如何根据游戏业务逻辑进行逻辑层的开发。

第7章

开发游戏服务器时必须要做安全性保护。在外挂满天飞的时代,一个优秀的游戏服务器必须对各种有意或无意的攻击做好安全防护。

高级篇

讲解游戏服务器的架构设计及系统优化,从更高的角度了解游戏服务器,并用一个实例代码进行具体说明。

第8章

分析市面上常见网络游戏的服务器架构,学会分析优秀的架构,了解好的架构对游戏服务器的重要性。

第9章

本章讲解一款游戏实战,指导读者上手开发一款游戏服务器,了解游戏服务器开发中的基本模式,也是对本书所讲内容的一个综合应用。

第10章

本章展望游戏行业的未来,分析游戏行业的走向。

本书读者对象

? 非游戏行业但想入门游戏行业的Java工程师。

? 想了解游戏服务端技术的游戏前端工程师。

? 需要游戏服务器开发入门工具书的人员。

? 其他对游戏服务器开发有兴趣爱好的各类人员。


目录

目录
CONTENTS


基础篇 走进游戏开发
第1章 认识游戏 2
1.1 什么是游戏 2
1.1.1 游戏的定义 2
1.1.2 游戏的分类 3
1.2 游戏开发及分工 7
1.3 游戏行业现状分析 12
1.4 游戏服务器开发要点 15
总结 17
第2章 环境搭建 18
2.1 Windows开发环境搭建 18
2.1.1 安装JDK 18
2.1.2 安装Eclipse 20
2.1.3 安装数据库客户端工具 21
2.1.4 安装SSH工具 21
2.1.5 安装其他工具 22
2.2 Mac OS X开发环境搭建 22
2.2.1 安装JDK 23
2.2.2 安装Eclipse 23
2.2.3 安装数据库客户端工具 24
2.2.4 安装SSH工具 24
2.2.5 安装其他工具 24
2.3 Linux服务器环境搭建 25
2.3.1 安装JDK 25
2.3.2 安装Tomcat 26
2.3.3 安装MySQL 26
2.3.4 安装Mongo 28
2.3.5 安装Redis 29
2.3.6 安装Memcache 32
2.4 总结 33
入门篇 游戏开发
第3章 网络通信 36
3.1 通信协议 36
3.1.1 面向连接的TCP 37
3.1.2 面向数据报的UDP 38
3.1.3 HTTP编程 39
3.1.4 Socket编程 46
3.1.5 WebSocket编程 54
3.2 Java NIO基础 58
3.2.1 BIO编程(Blocking-IO,阻塞式IO) 59
3.2.2 NIO编程(Non-Blocking IO,非阻塞式IO) 61
3.2.3 AIO编程(Async IO/NIO.2,异步IO) 68
3.3 Mina的介绍及其使用 75
3.3.1 总体架构 76
3.3.2 IoService 77
3.3.3 IoFilterChain 77
3.3.4 IoHandler 77
3.3.5 IoSession 77
3.3.6 工作原理 78
3.3.7 Acceptor与Connector线程 78
3.3.8 Processor线程 78
3.3.9 线程模型 79
3.3.10 请求的处理顺序 80
3.3.11 Mina编程 81
3.4 Netty的介绍及其使用 88
3.4.1 总体架构 88
3.4.2 零拷贝 89
3.4.3 Codec框架 90
3.4.4 Channel 90
3.4.5 ChannelEvent 91
3.4.6 ChannelPipeline 91
3.4.7 Netty编程 91
总结 100
第4章 数据交互 101
4.1 数据传输格式 101
4.2 JSON的使用及解析 103
4.2.1 JSON语法 103
4.2.2 JSON对象 104
4.2.3 JSON数组 104
4.2.4 Java中的JSON解析 105
4.3 XML的使用及解析 110
4.3.1 XML的特征 111
4.3.2 数据共享 111
4.3.3 数据传输 111
4.3.4 平台兼容 111
4.3.5 JSON与XML的比较 112
4.3.6 Java中的XML解析 112
4.4 Google Protocol Buffer的介绍及使用 128
4.4.1 Protobuffer的安装与编译 128
4.4.2 Protobuffer的语法 129
4.4.3 生成Java类 130
4.4.4 Eclipse的protobuf-dt插件 131
4.4.5 示例程序 132
总结 134
第5章 数据缓存与持久化 135
5.1 游戏数据存储 135
5.1.1 数据分类 136
5.1.2 数据缓存方式 136
5.1.3 数据持久化方式 137
5.1.4 数据库的比较 137
5.2 MySQL的介绍及使用 138
5.2.1 特点 138
5.2.2 数据类型 139
5.2.3 MySQL的使用 139
5.2.4 在Java中使用MySQL 142
5.3 MongoDB的介绍及使用 157
5.3.1 MongoDB的主要特点 157
5.3.2 了解API 159
5.3.3 Mongo的使用 162
5.4 Memcache的介绍及使用 174
5.4.1 Memcache的特点 175
5.4.2 Memcache的使用场景 176
5.4.3 在Java中使用Memcache 177
5.4.4 客户端使用要点 182
5.5 Redis的介绍及使用 183
5.5.1 Redis的特点 183
5.5.2 Redis的持久化 184
5.5.3 Redis的主从复制 184
5.5.4 在Java中使用Redis 185
总结 199
第6章 游戏逻辑 200
6.1 逻辑架构 200
6.1.1 项目目录 200
6.1.2 模块介绍 202
6.2 逻辑流程 212
6.2.1 网络模块 212
6.2.2 线程池 221
6.2.3 启动服务器 222
6.2.4 逻辑请求处理 223
6.2.5 关闭服务器 228
6.3 事件处理器 229
6.4 定时任务 236
6.5 RPC框架 244
6.5.1 Json-rpc 244
6.5.2 Motan 253
总结 264
第7章 游戏安全 265
7.1 游戏安全的必要性 265
7.2 登录安全 266
7.3 游戏充值 266
7.4 SQL注入 267
7.5 通信协议与消息格式 268
7.6 整型溢出 269
7.7 并发请求 269
7.8 逻辑漏洞 270
7.9 日志系统 271
总结 271
高级篇 游戏服务器的设计及优化
第8章 服务器架构分析 274
8.1 服务器架构的演变过程 274
8.2 全区同服架构分析 277
8.2.1 COC架构模型分析 278
8.2.2 COK架构模型分析 279
8.3 分区分服架构分析 281
8.4 弱联网类游戏架构分析 282
8.5 MMORPG类游戏架构分析 283
总结 285
第9章 《皇室战争》游戏开发实战 286
9.1 微竞技游戏介绍 286
9.2 架构分析及搭建 287
9.2.1 功能分析 287
9.2.2 服务器部署架构 288
9.2.3 系统架构 289
9.3 数据持久化方案 290
9.3.1 数据结构分析 290
9.3.2 使用Morphia操作MongoDB 295
9.4 Netty网络框架的使用 300
9.4.1 Netty实现的HTTP服务器 300
9.4.2 Netty实现的TCP服务器 309
9.5 账号系统 316
9.6 个人信息 323
9.7 英雄卡牌系统 327
9.8 宝箱系统 334
9.9 战斗系统 339
9.10 客户端模拟 349
9.10.1 登录界面 349
9.10.2 选服界面 354
9.10.3 主逻辑界面 358
9.10.4 对战界面 363
总结 372
第10章 游戏开发技术前景 373
10.1 Egret 373
10.2 Cocos 2D 374
10.3 Unity 375
10.4 Unreal 376
10.5 Java 376
10.6 Node.js 377
总结 378