Skip to content
forked from liuhaopen/UnityMMO

an unity mmo demo, include client and server, base on ecs(game play), xlua(ui) and skynet(server)

License

Notifications You must be signed in to change notification settings

dglyoo/UnityMMO

 
 

Repository files navigation

UnityMMO

做游戏几年了,很多东西不好在工作项目上尝试(比如ECS),所以就有了本项目,我打算利用业余时间从头制作一个3D-MMO游戏,很多功能虽然都接触过,但我想换个做法(不然就不好玩了),反正没人逼着上线.前端上使用xlua,玩法系统用c#(主要是想用unity2018推的ECS,虽然目前还未完善各大系统都未对接不能用pure ecs),界面就用lua开发就行了.后端用Skynet(对比了其它几个开源项目后还是觉得skynet最简洁)

使用方法

克隆本项目:git clone https://github.com/liuhaopen/UnityMMO.git --recurse
要求:Unity2018以上并从菜单Window/Package Manager里下载Entities
前端:
下载下来后整个目录就是Unity的项目目录,用Unity打开,运行main.unity场景即可进入游戏的登录界面
注:由于游戏资源过大且经常变更(每个版本的资源都会保存在.git文件夹里,clone就要好久了),所以放到另外的项目管理,可在UnityMMO-Resource下载里面的文件并复制到本项目的Assets/AssetBundleRes里(注:有些插件因为版权问题就没上传了,从其中的download-page见购买链接)
后端:
)安装虚拟机,我使用的是CentOS7,然后设置整个项目目录为虚拟机的共享目录,cd到Server目录,先编译skynet:skynet主页
)在虚拟机安装mysql并导入Server/data/里的两个数据库文件
)运行:./run.sh跑起服务端

各模块的技术选型

)玩法逻辑:使用Unity2018自带的ECS系统(要用Unity的ECS只能用C#),服务端也用lua实现一套类似的ECS系统
)界面逻辑:使用自制的基于组件的UI系统,全lua开发,动画也由lua实现了一份cocos的action
)网络协议:使用sproto,玩法用c#版本,界面用lua版本
)场景管理:用T2M切割地形为NxN小块,使用四叉树管理场景模型的动态加载
)资源管理:使用Unity新版的AssetBundleBrowser打包资源
)数据管理:使用redis,后面再看看要不要加入mysql
)同步模式:基于请求回应的状态+差异同步

已完成

)前端用Luaframework的网络接口,后端用skynet的loginserver通过登录验证
)使用sproto协议,按模块分文件和id组,开发时拼接所有协议文件,发布版则预导出为二进制(支持lua和c#)
)搭建apache服务器提供资源和lua代码的热更新
)增加后端通用的mysql数据库服务
)在PC和安卓手机平台测试通过了,可以连虚拟机上的服务端并登录
)给xlua集成了lpeg,sproto,lua-crypt第三方库
)创建玩家帐号数据库和相关操作服务
)登录流程相关界面
)导出场景信息(前端json后端lua格式)
)九宫格加载场景块
)玩家进入退出场景及坐标信息的同步

Todo

前端:
)人物场景漫游-ECS做法(70%)
)场景切割及动态加载(85%)
)基于组件的UI框架(85%)
)人物动作方面等Unity的新版Animation系统(IAnimationJob)完善后再介入吧
)战斗系统
)场景模型LOD,试试UnityGithub上的AutoLOD

后端:
)lua版本的ECS(20%)
)人物的移动同步(80%)
)NPC与怪物AI
)使用Redis
)AOI

进况

由于unity的entities版本更新修改较多导致之前的部分逻辑要重写了,感觉还是暂时先不弄前端的game play逻辑较好,先弄寻路和后端逻辑吧
初步完成的大世界场景分块加载(还在考虑无限场景的NavMesh资源管理,先尝试用跳跃点连接n个地图块的navmesh):
image

About

an unity mmo demo, include client and server, base on ecs(game play), xlua(ui) and skynet(server)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 59.8%
  • Lua 19.5%
  • C 12.0%
  • CMake 3.6%
  • ShaderLab 2.8%
  • HTML 1.3%
  • Other 1.0%