此项目为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算法优化实体之间的交互、检测等逻辑,以及减少同步的网络带宽占用。
此库即为服务器和客户端之间共用的类库。
- Data文件夹内存储的就是excel表格,存储了技能定义、物品定义等,以及对应转换的json和生成的cs文件。
- Inventory文件夹为背包的一些通用代码。
- Network为通用网络框架。
- Proto为protobuf和生成的cs代码。
- Tool为一些通用的工具api。
使用QFramework框架,MVC架构。
实体都使用了状态机进行管理。
玩家使用了一个自制的状态编辑器来管理各种行为以及行为之间的过渡(类似行为树的简化版)。
- 鼠标左键单击是普通攻击,滚轮缩放视野,右键按下然后拖动鼠标为旋转视野。
- 按键盘“V”拾取物品,键盘“I”打开背包,右键物品使用。
- 键盘“Q”、“E”、“R”、“T”分别是技能1、技能2、技能3、技能4的快捷键。
- 在聊天栏使用--/前缀输入作弊码(需要账号有管理员权限),目前只有一个“等级提升”的作弊码,示例:“--/等级提升”。
- 如果要部署到服务器中,记得在服务器中安装个.net环境。
- 客户端的按钮不要重复点,比如登录按钮,进入游戏按钮什么的,当你点击第一次的时候已经在请求服务器了,因为时间原因没有增加加载框什么的,多次点击就会发送多次请求,可能会出问题。
- 客户端还没做注册的UI,目前只能通过直接修改数据库来添加账号(在mmorpg数据库的user表中)。
- 任务系统虽然服务器上框架搭得差不多了,但是客户端还没有接入,NPC那里接取了任务实际上没什么用。
- 客户端素材仅供交流学习使用。
https://www.bilibili.com/video/BV1uNtrefEbn
有什么构建和运行的问题,或者项目bug什么的,可以在该仓库的issues中提问。
QQ群:777411956
代码有看不懂的或者什么其他问题都可以加QQ群问
- 客户端主要负责人:fuyouawa
- 服务器主要负责人:yuyuqwq