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
unity3D mirror网络游戏开发笔记的更多相关文章
- [开发笔记]-未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出【转载自:酷小孩】
原文地址:http://www.cnblogs.com/babycool/p/3199158.html 今天打算用VisualStudio2012做一个js效果页面测试的时候,打开VS2012新建项目 ...
- EasyUI 开发笔记(二)
接上篇 :EasyUI 开发笔记(一) (http://www.cnblogs.com/yiayi/p/3485258.html) 这期就简单介绍下, easyui 的 list 展示, 在easy ...
- EasyUI 开发笔记(一)
由于某些原因,在公司做的后台需要改成类似于Ext.js 形式的后台,主要看好其中的 框架布局,以及tab开页面和弹出式内部窗体. 后来看看,改成EasyUI,较Ext.js 库小很多,也便于公司的初级 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- Unity3D手游开发实践
<腾讯桌球:客户端总结> 本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身.虽然基于Unity3D,很多东西同样适用于Cocos.本文从以下10大点进行阐述: 架构设计 原生插件/ ...
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用 ...
- Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...
- 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新
今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...
- 轻松搭建Unity3D 安卓Android开发环境
1,下载安装Java的JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html (JDK中,包含JRE) 如果是6 ...
- Lucene/Solr搜索引擎开发笔记 - 第1章 Solr安装与部署(Jetty篇)
一.为何开博客写<Lucene/Solr搜索引擎开发笔记> 本人毕业于2011年,2011-2014的三年时间里,在深圳前50强企业工作,从事工业控制领域的机器视觉方向,主要使用语言为C/ ...
随机推荐
- Grafana 系列文章(八):Grafana Explore 中的 Inspector
️URL: https://grafana.com/docs/grafana/latest/explore/explore-inspector/ Description: Explore 中的检查器 ...
- RestTemplate的超全讲解(全)转
RestTemplate的超全讲解(全)转 https://blog.csdn.net/weixin_47872288/article/details/121842374 (81条消息) RestTe ...
- JAVA虚拟机03-常量池项中字面量和符号引用
转https://baijiahao.baidu.com/s?id=1682261792528500739&wfr=spider&for=pc 1 符号引用 符号引用以一组符号来描述所 ...
- 复制内容到剪切板通用的js方法
复制内容到剪切板通用的js方法 /** * 复制内容到剪切板 * @param text 要复制的内容 */ function Clipboard(text) { if (navigator.clip ...
- SpringMVC返回值类型及响应数据类型
1.SpringMVC 和 Struts2 的优略分析 共同点: 它们都是表现层框架,都是基于 MVC 模型编写的. 它们的底层都离不开原始 ServletAPI. 它们处理请求的机制都是一个核心控制 ...
- .net core 从(本地)服务器获取APK文件并解析APK信息
1.apk解析除了使用客户端利用aapt.exe.unzip.exe开发客户端解析外,还可以直接利用服务进行解析 /// <summary> /// 从本地服务器获取APK文件并解析APK ...
- .net core 上传文件到本地服务器
1.本文是上传文件到本地服务器,主要以作者做的业务上传apk为例子,下面直接上代码 [HttpGet, HttpPost, HttpOptions] [Consumes("applicati ...
- 【TS】函数重载--可选参数--默认参数
可选参数--默认参数 在ts中定义的数据类型,某些情况下只需要传入定义数据类型的一部分参数,比如:id .name.age.address,此时需要修改用户的名称,那么只需要传入id.name就够了: ...
- TCP/IP协议(7): NAT(Network Address Translation) —— 解决 IPv4 地址短缺的问题
TCP/IP协议(7): NAT(Network Address Translation) -- 解决 IPv4 地址短缺的问题 关于 NAT(Network Address Translation) ...
- Technique to Read Source Code
Technique to Read Source Code Excerpted from http://ruby-hacking-guide.github.io/intro.htm Any progr ...