unity3D mirror网络游戏开发笔记

最近想开发一款多人在线网络游戏,使用unity3d的mirror插件可以提高开发效率,并且该插件免费。

但是由于使用插件开发效率太低,经过研究,ummorpg开发模板是居于该插件开发而来,使用它可以提高开发的效率,对于初学者来说比较友好,能够基于模板的修改快速做出属于自己的游戏,进一步激发初学者开发游戏的兴趣,兴趣才是最好的导师。

很多小白想开发游戏但更多的中途放弃,我认为游戏开发这个行业一是由于门槛较高,二是由于这个行业比较考验一个人的综合能力,做为一名初学者,没有资金,没有人脉,无法招聘、无法吸引志同道合、愿意不图回报的人员来一起做是非常少的,可以这么说:几乎没有。三是由于国外厂商的不断内卷,不缺各类3A大作,不管是在3D画面的精美上还是性能的优化上都已经做到行业顶尖,尽管玩法各式各样,也有一些小缺陷,但从技术上来说已经做到了无可挑剔的地步。

玩家的审美标准也随着各类出众的游戏技术标准而不断提升,中国的游戏开发者不缺游戏故事背景,中国是一个拥有上千年历史文明的国家,古代文人骚客的思想对后人的影响也是源远流长,有着取之不尽用之不竭的叙事思想。但要把这些传统文化很好的融入到历史背景当中却是不容易的。

一是技术,二是资本。

站在目前的技术上来说,已经不是什么大问题。

就资本而言,我觉得目前的游戏开发环境是劣币驱逐良币。

资本家投入资本来打造一款游戏,由于开发周期长和市场的不确定性因素太多,回报周期长导致大多数资本对游戏开不感兴趣。

也许,会有一些大的资本愿意,但是大资本有不会投入太多,他们投资的金额对我们来说已经非常大,但对他们来说就给你扔点零花钱这么简单。也不怕你破产或跑路。

能不能从技术上来解决资本的问题?答案是能。

随着技术发展,游戏开发的门槛也越来越低,各类插件和资源市场的建立,就是为了解决开发周期这一大问题的。

 成就一番大事均是从小事开始,从做好今天开始,不积跬步无以至千里,万事有始有终,贵在坚持不懈。

我们开始使用ummorpg创建一个网络游戏,编译客户端和服务端并让他运行起来。

最终运行效果:

 

 

一、导入包

 将uMMORPG Remastered - MMORPG Engine 2.37包拖到你的3D空项目中,找到场景,开始以demo场景进行修改,你所要做的就是修改场景,制作建筑、角色建模和动画等(这些在市场中均能购买到,愿意花钱不用请设计师了)。

二、制作自己的角色

导入角色到unity,角色至少包含贴图和动画吧

 

 选中角色模型,修改animation type 为humanid,然后点击Apply。

在ummorpg项目目录下(路径:uMMORPG\Prefabs\Entities\players)找到两个玩家预制件,Archer是射手,Warrior是战士。

这里我们选中Archer,按Ctrl+D复制一份出来,并重命名。双击打开预制件,找到3d model,删除。

 

 删除后,把我们准备好的角色3D模型拖拽上去,右键角色模型——》unpack解包,等下要往角色内添加元素。

选中根节点:

1、找到animator,给我们的角色指定好Avatar和Controller

 

 2、找到player script脚本,这里需要一个碰撞体Collider

 

 我们找到角色骨骼的root节点,选中并新建一个Capsule Collider,拖拽碰撞体直到调整到合适的位置。

 

 2、在根节点中找到Combat脚本下的Collider,将刚刚制作好的碰撞体拖过来

 

 

 3、新建武器挂载点

找到角色左手的根节点,新建一个空对象,并命名为WeaponMountPoint,将这个空对象调整好位置,拖拽给player skills脚本的Effect Mount。

 

 4、添加角色到NetworkManager

选中NetworkManager并找到NetworkManagerMMO脚本,找到Registered spawnable prefab,点击下方+,新建一个,将刚刚做好的玩家预制件拖进来。

 

 

到这里

我们的角色已经制作好了。点击play进行测试:点击play&server,同时启动服务端和游戏客户端。

 

 

 三、编译Linux服务端和windows64位客户端(官方为了代码复用,将服务器端和客户端融为一体了)

1、编译服务端前的准备工作

我们先来编译Linux服务器端。客户端和服务器端的工作原理是:用户登录,服务器端先创建玩家角色,再通知客户端创建,玩移动、砍杀、死亡等,客户端将帧同步到服务器端,服务器端向所有的玩家客户端进行帧同步。

提前准备好一台Linux云服务器或者你自己在局域网内架设好的Linux服务器(这里测试不一定非得用服务器,可以是一台普通电脑,安装好Linux系统,例如:centos、ubantu等)并未这台Linux系统配置一个固定的ip地址(如果不用固定ip,重启设备后将会得到新的ip地址,这时你要么重新编译,要么设置固定ip)

配置服务端ip:选中NetworkManager并找到NetworkManagerMMO脚本,找到server list,对ip和那么进行修改。

2、开始构建服务端:

点击file—》build seting,首先安装一下Linux客户端的编译环境,点击Android—》点击右侧install with unityhub

 

 在弹出的界面找到linux dedicated server build sport,勾选点击安装。

 

 安装后(可能要重启项目)点击file——》build seting,选中dedicated server,点击切换。

 

 切换好后直接点击build按钮,选择一个保存位置。

 3、Linux环境配置

使用ssh工具连接到你的服务器。由于ummorpg使用的数据库是sqlite,我们要在服务器上先安装sqlite的运行环境。后面会教大家如何将它改成mysql数据库。

到官方下载最新的sqlite for linux,使用xshell等工具将他上传到服务器。

tar xzf sqlite.tar.gz    ;#  解压
    mkdir bld                ;#  创建新文件夹
    cd bld                   ;#  切换到新文件夹
    ../configure      ;#  运行configure脚本
    make                     ;#  运行makefile.
    make install             ;#  安装

  (如有需要,可以留言,我使用网盘分享)

 如果上述步骤顺利,没有报错,说明你的sqlite已成功安装,如果报错,请检查你的GCC和G++是否安装。

官方推荐安装方法:

sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

  将你的游戏服务端使用tar压缩并上传到服务器,并进行解压,tar -zxvf swordgame.tar.gz

运行服务端:

例如:./SwordGame.x86_64

  在后台运行服务端:因为你的shell退出,那么服务端也会被关闭,后台运行是最好的解决方案:

nohup ./SwordGame.x86_64 &

  使用ps -A | grep SwordGame查看是否在运行

nohup会在运行目录下生成一个nohup文件用于存放服务端日志,使用cat nohup查看里面的内容。

到这里你的服务端已经成功的运行在服务器上了

下面我们开始编译客户端,然后把客户端发给你的小伙伴,大家一起测试,玩耍。

 

{持续更新中.......}

 ummorpg中英对照翻译文档:https://files.cnblogs.com/files/Leekin/ummorpg%E4%B8%AD%E8%8B%B1%E5%AF%B9%E7%85%A7%E7%BF%BB%E8%AF%91.rar

posted @ 2022-10-18 23:44  SWordStudio  阅读(1389)  评论(0编辑  收藏  举报