- 新的开始
- 开始之前的准备工作:
- 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场景,打开该场景。
运行main场景后,我们发现这个项目需要连接服务器,毕竟MMO大型多人在线游戏,如下图所示: 所以我们需要部署服务器,这个大鹏也说明了,他使用的是云风大神开源的skynet服务器框架,详情点击skynet主页。
- Skynet是非常了不起的开源框架,很多网络游戏都在使用,所以我也将其加入到学习计划当中了。Skynet只支持Linux服务器,所以我们需要安装虚拟机,作者大鹏使用的CentOS7,我们也安装CentOS7虚拟机来作为服务器。
- 安装虚拟机的教程这里跳过不讲,CSDN上有非常多非常详细的教程,按照步骤操作即可。
- 安装好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
等待编译完成…… 这个时候编译程序报错,发现权限不够,解决方法很简单,授权即可:
chmod -R 777 Server
这步操作需要cd回到root(或Server文件夹的父节点),更改权限后,先查看一下,如图: 好了该有的权限都有了,重复最开始的操作即可,但是很快又遇到错误了,如图:
这个问题很好解决,安装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; //查看数据库
这时数据库中已经有这两个库了,我们需要打开另外一个终端,然后cd到Server/data/下,如图:
接下来在继续输入命令如下:
mysql -u root -p
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?