UnityMMO资源整合&服务器部署

基于Unity2019最新ECS架构开发MMO游戏笔记10

  • 新的开始
      • 开始之前的准备工作:
    • Skynet服务器部署
      • 编译Skynet
      • 安装Mysql数据库并导入Server/data/里的两个数据库文件
      • 小结
  • 更新计划
    • 作者的话
  • ECS系列目录
    • ECS官方示例1:ForEach
    • ECS官方案例2:IJobForEach
    • ECS官方案例3:IJobChunk
    • ECS官方案例4:SubScene
    • ECS官方案例5:SpawnFromMonoBehaviour
    • ECS官方案例6:SpawnFromEntity
    • ECS官方案例7:SpawnAndRemove
    • ECS进阶:FixedTimestepWorkaround
    • ECS进阶:Boids
    • ECS进阶:场景切换器
    • ECS进阶:MegaCity0
    • ECS进阶:MegaCity1
    • UnityMMO资源整合&服务器部署
    • UnityMMO选人流程
    • UnityMMO主世界

新的开始

官方ECS案例结束了,但是我们对ECS的研究才刚刚入门,对于实际项目的应用还比较匮乏。之前我就在Github上搜索了与ECS相关的项目,精选了其中几个与Unity相关的,最终刷选出大鹏开发并开源的UnityMMO项目。
接下来的笔记将以UnityMMO项目为基石继续下去,并进行大胆拓展,最终会变得不可思议起来!
这里是大鹏的开发笔记,感兴趣的朋友可以先了解一下,我们将深入这个项目进行学习。

开始之前的准备工作:

0下载Unity编辑器(2019.1.4f1 or 更新的版本),if(已经下载了)continue;
1大鹏将项目代码和资源拆分成两部分,所以我们需要分别下载,然后再整合。
命令行下载UnityMMO,打开Git Shell输入:
git clone https://github.com/liuhaopen/UnityMMO.git --recurse
下载完成后,继续输入:
git clone https://github.com/liuhaopen/UnityMMO-Resource.git --recurse
or 点击UnityMMO和UnityMMO-Resource分别下载Zip压缩包
if(已经下载了)continue;
2如果下载的是压缩包,需要先将两个压缩包分别进行解压。然后打开UnityMMO-Resource并把Assets/AssetBundleRes及其meta文件复制到UnityMMO项目的Assets目录里,接下来将UnityMMO添加到Unity Hub项目中;
3用Unity Hub打开大鹏的开源项目:UnityMMO,等待Unity进行编译工作;
4打开项目后,我们发现还需要下载Third Person Controller - Basic Locomotion FREE插件,这个简单,直接在资源商店找到下载导入即可,然后在Assets/XLuaFramework下找到main场景,打开该场景。

Skynet服务器部署

运行main场景后,我们发现这个项目需要连接服务器,毕竟MMO大型多人在线游戏,如下图所示:
UnityMMO资源整合&服务器部署_第1张图片
所以我们需要部署服务器,这个大鹏也说明了,他使用的是云风大神开源的skynet服务器框架,详情点击skynet主页。

  1. Skynet是非常了不起的开源框架,很多网络游戏都在使用,所以我也将其加入到学习计划当中了。Skynet只支持Linux服务器,所以我们需要安装虚拟机,作者大鹏使用的CentOS7,我们也安装CentOS7虚拟机来作为服务器。
  2. 安装虚拟机的教程这里跳过不讲,CSDN上有非常多非常详细的教程,按照步骤操作即可。
  3. 安装好CentOS7后,我们需要在CentOS7系统上编译Skynet,可以直接在CentOS7上克隆Skynet的源码,也可以直接将UnityMMO下的Server文件夹发送到CentOS7上。

第3步操作有非常多的实现方式,但是长远考虑,本地操作是不足以取的,毕竟以后有了真正的服务器,还是需要进行远程部署。所以我选择Cmder,这个命令行工具可以让我们在Windows系统下使用Linux命令,不仅如此,速度非常快,得到了众多程序员的一致好评。我们在Cmder官网进行下载,安装后用管理员的身份打开Cmder命令窗口输入:

  scp -r localPath root@serverIP:/root/Server/

localPath替换成你电脑上Server文件夹所在的本地路径,把serverIP替换成CentOS7服务器的IP地址,回车即可。
需要注意的是Server端的代码其实还依赖本地端Lua/Config、Lua/Common/Util以及Lua/Proto,因此在进行第3步之前,我们需要将这三个文件夹都拷贝到Server文件夹下。
上传完毕后,我们可以开始编译Skynet了。

编译Skynet

我们在CentOS7的命令行终端上输入以下命令:

  cd Server
  cd skynet
  export PLAT=linux
  make

等待编译完成……
UnityMMO资源整合&服务器部署_第2张图片
这个时候编译程序报错,发现权限不够,解决方法很简单,授权即可:

chmod -R 777 Server

这步操作需要cd回到root(或Server文件夹的父节点),更改权限后,先查看一下,如图:
UnityMMO资源整合&服务器部署_第3张图片
好了该有的权限都有了,重复最开始的操作即可,但是很快又遇到错误了,如图:
UnityMMO资源整合&服务器部署_第4张图片
这个问题很好解决,安装readline 的开发库即可,命令如下:

yum -y install readline-devel

yum install libtermcap-devel ncurses-devel libevent-devel readline-devel

编译成功后,可以打开另外一个终端试试下面两条命令:

./skynet examples/config	# Launch first skynet node  (Gate server) and a skynet-master (see config for standalone option)
./3rd/lua/lua examples/client.lua 	# Launch a client, and try to input hello.

如果都可以运行的话,就没什么问题了,按Ctrl+C可以关闭运行的程序。

安装Mysql数据库并导入Server/data/里的两个数据库文件

安装的部分参考博主猜不透的安装教程即可。
这里说下导入数据库文件,首先在需要在Mysql数据库中创建UnityMMOAccount和UnityMMOGame两个数据库,命令如下:

create database UnityMMOAccount;
create database UnityMMOGame;
show databases; //查看数据库

UnityMMO资源整合&服务器部署_第5张图片
这时数据库中已经有这两个库了,我们需要打开另外一个终端,然后cd到Server/data/下,如图:
UnityMMO资源整合&服务器部署_第6张图片
接下来在继续输入命令如下:

mysql -u root -p < ./UnityMMOAccount.sql    #还原数据库
mysql -u root -p < ./UnityMMOGame.sql    #还原数据库

我们再切换到之前创建数据库的终端,查询数据:
UnityMMO资源整合&服务器部署_第7张图片
数据库已经有数据了,切换另外一个终端,cd到Server文件夹,输入命令:

./run.sh

UnityMMO资源整合&服务器部署_第8张图片
如图,服务器终于跑起来了!

小结

这一篇的流程大体如下:

git
scp
make
mysql
./run.sh
下载客户端
整合客户端资源
安装CentOS7
上传服务器
编译Skynet
部署数据库
运行服务器

主要的难点在于部署服务器,不过遇到的问题都可以搜索到解决方案,可能还有一些遗漏的地方,请大家做补充。

更新计划

Mon 12 Mon 19 Mon 26 1. ForEach 2. IJobForEach 3. IJobChunk 4. SubScene 5. SpawnFromMonoBehaviour 6. SpawnFromEntity 7. SpawnAndRemove 休息 修正更新计划 参加表哥婚礼 进阶:FixedTimestepWorkaround 进阶:BoidExample 初级:SceneSwitcher 我是休息时间 资源整合 部署服务器 启动流程 登录流程 游戏主世界 待计划 待计划 待计划 待计划 待计划 我是休息时间 待计划 待计划 待计划 待计划 待计划 我是休息时间 读取Excel自动生成Entity 读取Excel自动生成Component 读取数据库自动生成Entity 读取数据库自动生成Component ESC LuaFrameWork Skynet DOTS 官方示例学习笔记 -----休息----- 基于ECS架构开发MMO学习笔记 LuaFrameWork学习笔记 -----休息----- 基于Skynet架构开发服务器学习笔记 制作代码自动生成工具 总结 基于Unity2019最新ECS架构开发MMO游戏笔记

作者的话

AltAlt

如果喜欢我的文章可以点赞支持一下,谢谢鼓励!如果有什么疑问可以给我留言,有错漏的地方请批评指证!
如果有技术难题需要讨论,可以加入开发者联盟:566189328(付费群)为您提供有限的技术支持,以及,心灵鸡汤!
当然,不需要技术支持也欢迎加入进来,随时可以请我喝咖啡、茶和果汁!( ̄┰ ̄*)

ECS系列目录

ECS官方示例1:ForEach

ECS官方案例2:IJobForEach

ECS官方案例3:IJobChunk

ECS官方案例4:SubScene

ECS官方案例5:SpawnFromMonoBehaviour

ECS官方案例6:SpawnFromEntity

ECS官方案例7:SpawnAndRemove

ECS进阶:FixedTimestepWorkaround

ECS进阶:Boids

ECS进阶:场景切换器

ECS进阶:MegaCity0

ECS进阶:MegaCity1

UnityMMO资源整合&服务器部署

UnityMMO选人流程

UnityMMO主世界

你可能感兴趣的:(ECS,Unity,DOTS)