【游戏开发】《Java游戏服务器架构实战》项目在windows上部署
【游戏开发】《Java游戏服务器架构实战》项目在windows上部署
文章目录
- 【游戏开发】《Java游戏服务器架构实战》项目在windows上部署
- 一、配置项目基础环境
- 二、配置服务注册中心 - consul
- 三、配置缓存数据库 - redis
- 四、配置持久化数据库 - mongodb
- 五、配置消息中间件 - kafka
- 六、运行项目
- 1、修改项目中的配置文件
- 2、服务器项目启动
- 3、客户端项目启动
- 4、客户端打包时可能存在的问题
参考《Java游戏服务器架构实战》源码运行介绍 · 语雀
一、配置项目基础环境
1、克隆项目
git clone https://gitee.com/imeetou/book-code.git
2、IDEA导入项目
先配置JDK,接着在pom.xml
上add maven project
,配置Springboot
框架环境
二、配置服务注册中心 - consul
安装教程参考Windows环境安装consul,consul官网
查看consul
版本:consul --version
运行consul
:consul agent -dev
浏览器查看consul
服务:localhost:8500/
三、配置缓存数据库 - redis
redis5.0+
安装参考Windows安装Redis5.0,在windows上配置redis启动脚本
redis
服务端启动脚本:
redis-server.exe redis.windows.conf
redis
客户端启动脚本:
redis-cli -h 127.0.0.1 -p 6379
四、配置持久化数据库 - mongodb
mongdb_4.2.2
安装参考MongoDB4.2在Win10上最强安装教程
启动mongodb
:执行mongo.exe
即可
设置mongodb
密码(在mongo控制台中):
use my-game #切换my-game数据库#设置用户名和密码,即admin,123456
db.createUser({user: 'admin', // 用户名(自定义)pwd: '123456', // 密码(自定义)roles:[{role: 'root', // 使用超级用户角色db: 'admin' // 指定数据库}]
})
mongodb
查看用户名密码:参考mongodb 查看用户名密码 - CSDN
> use my-game #切换my-game数据库
switched to dbmy-gamen
> db.auth('root','123456')
Error: Authentication failed.
0
> db.auth('admin','123456')
1
五、配置消息中间件 - kafka
kafka_2.13-2.8.0
需要先安装zookeeper
,安装参考windows下安装kafka 2.13-2.8.0,windows环境下安装zookeeper(单机版)
Note:
如果启动
zookeeper
出现闪退,检查解压后的zookeeper
是否包含lib
文件夹,应下载apache-zookeeper-3.6.3-bin.tar.gz
二进制压缩包,而不是源码压缩包zookeeper-3.6.3.tar.gz
。参考 错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain - youqc - 博客园,Windows下Zookeeper启动zkServer.cmd闪退问题的解决方案Windows解压
apache-zookeeper-3.6.3-bin.tar.gz
或者apache-zookeeper-3.6.3.tar.gz
时用7-zip
,用WinRAR
会报错。
安装并启动zookeeper
(其实直接安装kafka
即可,里面包含zookeeper
):
拷贝
zoo_sample.cfg
,修改zoo.cfg
文件:# 存放内存数据库快照的目录 dataDir=D:\programSoftware\Java\kafka_2.13_2.8.0\apache-zookeeper-3.6.3-bin\data # 存放事务日志目录 dataLogDir=D:\programSoftware\Java\kafka_2.13_2.8.0\apache-zookeeper-3.6.3-bin\logs# the port at which the clients will connect audit.enable=true clientPort=2181 #zookeeper的默认端口2181 admin.serverPort=7070 #zookeeper服务启动时会启动一个AdminServer的服务,这里端口设置为7070
在配制好
conf/zoo.cfg
之后,启动zookeeper
:参考windows下载安装zookeeper开启zookeeper服务端:双击
zkServer.cmd
启动zookeeper客户端:双击
zkCli.cmd
安装并启动kafka
:
修改如下配置:编辑文件
Kafka
配置文件:\config\server.properties
找到并编辑
log.dirs=D:\\Tools\\kafka_2.13-2.8.0\\kafka-logs
, (自定义文件夹)找到并编辑
zookeeper.connect=localhost:2181
。表示本地运行(默认的可以不改)Kafka会按照默认,在9092端口上运行,并连接zookeeper的默认端口:2181。
启动
kafka
:进入
kafka_2.13-2.8.0\bin\windows
,编写zookeeper
启动脚本(start_zookeeper.bat
或者start_zookeeper.cmd
):start_zookeeper.bat ..\..\config\zookeeper.properties
执行命令之前,先根据上面
zoo.cfg
修改zookeeper.properties
进入
kafka_2.13-2.8.0\bin\windows
,编写启动脚本(start_kafka.bat
或者start_kafka.cmd
):kafka-server-start.bat ..\..\config\server.properties
六、运行项目
1、修改项目中的配置文件
将配置文件中consul
,kafka
,redis
,mongodb
(注意配好指定数据库和密码)的配置换成自己电脑上的地址。 需要修改的项目有:my-game-center
,my-game-gateway
,my-game-im
例如游戏服务中心项目:
my-game-center
,进入到此项目的config目录下,将application-yourenv.yml
配置文件复制一份,然后重命名,比如命名为application-local.yml
,将此配置文件中的配置信息换成自己电脑的配置。然后修改application.yml
配置,如下所示:spring:application:name: game-center-serverprofiles:active:- local # 在这里指定你的配置文件
其它项目依次类推。
修改配置文件中的
mongodb
数据库的连接信息spring:data:mongodb: # 将数据库信息换成自己电脑的配置uri: mongodb://admin:123456@localhost:27017/my-game# host: localhost# port: 27017# username: root# password: 123456# authentication-database: admin# database: my-gameredis: # 将redis配置换成自己电脑的配置host: localhostport: 6379password:
2、服务器项目启动
首先保证consul,redis,kafka,mongodb都已启动成功,并且配置文件已全部修改。然后运行项目中的启动类:
my-game-center
启动类(游戏服务中心):WebGameCenterServerMain
my-game-gateway
启动类(游戏服务器网关):GameGatewayMain
my-game-web-gateway
启动类(web服务器网关):WebGameGatewayServerMain
my-game-xinyue
启动类(游戏业务处理服务):XinyueGameServerMain
my-game-im
启动类(即时通讯服务):GameIMMain
本次项目启动以聊天项目为示例演示,其它的请参考书中所述的开发顺序自行演示。
consul
服务注册中心界面如下:包括游戏服务中心,游戏网关和游戏业务服务。
其中service-name = game-logic
的服务有两个,即存在两个游戏业务服务:
3、客户端项目启动
因为要以聊天演示,所以客户端需要最少启动两个,为了方便演示,将客户端项目my-game-client
项目打包为jar包运行。在my-game-client
项目中右键,直接执行Run As -> Maven Install
即可。然后打开命令终端,进入到my-game-client的target目录,执行命令:
java -jar my-game-client-0.0.1-SNAPSHOT.jar
再打开另一个终端执行相同的命令即可。
第一步,首先登陆账号,输入:login aaa
:
第二步,创建角色,输入:create-player one
:
第三步,选择要连接的网关,这一步是自动选择,输入:select-gateway
,如下图所示:
第四步,另一个客户端也按上述三个步骤执行,登陆不同的账号,创建角色,连接网关
第五步,发送聊天消息: send "my name is one"
,双方发送都可以接收到,如下图所示:
4、客户端打包时可能存在的问题
Q:IDEA如何通过maven打包整个项目中的各个模块?
A:这里给出几个错误演示 和 一个正确演示。
错误演示1 - 单独打包每个模块:由于要对
my-game-client
进行打包,由pom.xml
可以看到my-game-client
依赖于项目中的my-game-common
和my-game-network-param
;所以先将
my-game-common
和my-game-network-param
分别打包成不可执行的 jar 包(参考SpringBoot:解决可执行jar包不能被其他项目依赖问题)。单独打包
my-game-common
是没有问题的,maven
会将该项目的可调用jar
包保存在maven
本地仓库中。但是在单独打包
my-game-network-param
时会存在这个问题:Failed to read artifact descriptor for com.game:my-game-common:jar:0.0.1-SNAPSHOT
错误演示2 - 将本项目某模块的jar包手动导入:由于
my-game-common
中有可引用的jar
包(解压后有META-INF
,如果是可执行jar
包解压后为BOOT-INF
),因此这里尝试在IDEA中手动导入jar
导lib
文件夹中,但是会报错,意思是my-game-common
是my-game-server
本项目下的,因此由于全限名原因,无法正常导入。
正确演示1 - 直接对整个项目进行打包:对整个项目
my-game-server
进行mvn install
,可以根据各个模块之间的调用关系,找到依赖模块并进行打包(可执行jar
/不可执行jar
)。
此时会将所有模块打成jar
包保存在本地maven
库
【游戏开发】《Java游戏服务器架构实战》项目在windows上部署相关推荐
- Unity3D游戏开发之网络游戏服务器架构设计培训
下面我们开始今天的Unity3D游戏开发技能培训. 我们专业培养"游戏主程",挑战20W年薪,初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改 ...
- Unity3D游戏开发之网络游戏服务器架构设计(如何做一名主程)
下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...
- Unity3D游戏开发之网络游戏服务器架构设计培训(如何做一名主程)
下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...
- java游戏开发(java游戏开发教程)
Java游戏开发绘图器是什么呢? 众所周知,Java GUI以paint进行绘图,以repaint进行图像刷新,而完成repaint及paint这一连贯过程中所用到绘图组件,我将其称为绘图器.就我个人 ...
- 【阅读笔记】Java游戏服务器架构实战
[阅读笔记]Java游戏服务器架构实战 书籍链接:Java游戏服务器架构实战 作者提供的源码链接:kebukeYi / book-code 这里对书籍中比较重要的知识点(精华部分)进行摘录(总结) 文 ...
- java演练 猜奇偶小游戏开发 DB游戏必输的设计
java演练 猜奇偶小游戏开发 DB游戏必输的设计 阶段一,视频 https://www.ixigua.com/6870390946270446088?logTag=J_BVJOm_LIpQ-hWYY ...
- android_Android游戏开发–基本游戏架构
android 因此,我们启动并运行了我们的Android应用程序,但是您可能想知道哪种类型的应用程序正是游戏. 我会尽力让您了解它. 下图显示了游戏架构. Android手机上的游戏架构 在上面的架 ...
- 【云风skynet】详解skynet的多核高并发编程丨actor模型丨游戏开发丨游戏服务端开发丨多线程丨Linux服务器开发丨后端开发
skynet中多核高并发编程给我们的启发 1. 多核并发编程 2. actor模型详解 3. 手撕一个万人同时在线游戏 视频讲解如下,点击观看: [云风skynet]详解skynet的多核高并发编程丨 ...
- XBOX ONE游戏开发之登陆服务器(一)
XBOX ONE游戏开发之登陆服务器(一) XBOX LIVE是微软自已的认证服务器, 当我们开发游戏时,如果是联网游戏,需要自已架设单点登陆(SSO)服务器 这个需要微软提供Relying Part ...
最新文章
- RHEL 5服务篇—修改MySQl数据库root密码的几种方式
- php ×××号码效验码生成函数
- PCIe配置空间和PCI设备中的寄存器
- Python 技术篇-3行代码实现语音朗读,pywin32库实现语音朗读
- 码农口述:AI创业两年,积蓄花光,重回职场敲代码
- android 界面切换【转】
- 使用RSA算法解析令牌
- unittest所有断言方法
- 如何让Excel单元格中的名字分散对齐
- 将军令:数据安全平台建设实践 1
- 操作元素之表单属性设置
- 想自学python看哪位的视频比较好-python学习视频好的有哪些
- file 图片上传 java_Java MultipartFile 上传文件/上传图片 亲测
- 基于Socket网络编程基本步骤
- 单片机死机了怎么办?
- 应用安全测试技术DAST、SAST、IAST对比分析-持续更新
- Chrome浏览器数据本地备份
- 人工智能写歌词?看我是如何用Python来C位出道的……
- 过渡属性: transition
- Python连接MySQL数据库locahost无法连接的问题