此项目为MMORPG网游的练习项目(仅仅是个Demo),服务器使用C#,客户端使用Unity。同步方式为状态同步,客户端向服务器发送坐标,服务器保存这个坐标并转发给附近的其他玩家。
首先由于服务器使用Mysql存储数据,所以运行服务器的系统必须先安装了Mysql服务,安装的方法可以去网上查。
数据库默认的账号密码都是root。
需要运行SERVER/Common/Data下的build.bat,在客户端以及服务器的运行目录下生成json数据,包括excel表如果有更改也需要运行这个bat。
SERVER解决方案下的GameServer即为服务器项目,构建并运行即可启动服务器,会自动创建mmorpg的数据库,并且给你一个默认管理员账号(账号为root,密码为1234567890)。
MMORPG即为Unity客户端项目,使用Unity6000.0.56f1打开(如果使用更高版本,OdinInspector插件可能会报错,需要自行更新插件)。
数据库的配置在SERVER\GameServer\Db\DbConfig.cs,默认账号密码都为root。
网络的配置在SERVER\Common\Network\NetConfig.cs,如果想部署到远程服务器上,就要修改这里面的ServerIpAddress,并且再次构建Common类库。
使用C#网络api从0搭建框架,服务器和客户端之间使用protobuf进行通信,使用Mysql存储数据,Serilog作为日志库。
使用excel表格配置地图数据、人物属性、地图上怪物分布情况、掉落物属性等,然后转换为json数据给服务器和客户端解析。
使用aoi算法优化实体之间的交互、检测等逻辑,以及减少同步的网络带宽占用。
此库即为服务器和客户端之间共用的类库。
使用QFramework框架,MVC架构。
实体都使用了状态机进行管理。
玩家使用了一个自制的状态编辑器来管理各种行为以及行为之间的过渡(类似行为树的简化版)。
https://www.bilibili.com/video/BV1uNtrefEbn
有什么构建和运行的问题,或者项目bug什么的,可以在该仓库的issues中提问。
QQ群:777411956
代码有看不懂的或者什么其他问题都可以加QQ群问