官方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主页。
第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了。
我们在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数据库中创建UnityMMOAccount和UnityMMOGame两个数据库,命令如下:
create database UnityMMOAccount;
create database UnityMMOGame;
show databases; //查看数据库
这时数据库中已经有这两个库了,我们需要打开另外一个终端,然后cd到Server/data/下,如图:
接下来在继续输入命令如下:
mysql -u root -p < ./UnityMMOAccount.sql #还原数据库
mysql -u root -p < ./UnityMMOGame.sql #还原数据库
我们再切换到之前创建数据库的终端,查询数据:
数据库已经有数据了,切换另外一个终端,cd到Server文件夹,输入命令:
./run.sh
这一篇的流程大体如下:
主要的难点在于部署服务器,不过遇到的问题都可以搜索到解决方案,可能还有一些遗漏的地方,请大家做补充。
如果喜欢我的文章可以点赞支持一下,谢谢鼓励!如果有什么疑问可以给我留言,有错漏的地方请批评指证!
如果有技术难题需要讨论,可以加入开发者联盟:566189328(付费群)为您提供有限的技术支持,以及,心灵鸡汤!
当然,不需要技术支持也欢迎加入进来,随时可以请我喝咖啡、茶和果汁!( ̄┰ ̄*)