最近想开发一款多人在线网络游戏,使用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网络游戏开发笔记的更多相关文章

  1. [开发笔记]-未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出【转载自:酷小孩】

    原文地址:http://www.cnblogs.com/babycool/p/3199158.html 今天打算用VisualStudio2012做一个js效果页面测试的时候,打开VS2012新建项目 ...

  2. EasyUI 开发笔记(二)

    接上篇 :EasyUI 开发笔记(一)  (http://www.cnblogs.com/yiayi/p/3485258.html) 这期就简单介绍下, easyui 的 list 展示, 在easy ...

  3. EasyUI 开发笔记(一)

    由于某些原因,在公司做的后台需要改成类似于Ext.js 形式的后台,主要看好其中的 框架布局,以及tab开页面和弹出式内部窗体. 后来看看,改成EasyUI,较Ext.js 库小很多,也便于公司的初级 ...

  4. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...

  5. Unity3D手游开发实践

    <腾讯桌球:客户端总结> 本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身.虽然基于Unity3D,很多东西同样适用于Cocos.本文从以下10大点进行阐述: 架构设计 原生插件/ ...

  6. Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例

    引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用 ...

  7. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  8. 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新

    今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...

  9. 轻松搭建Unity3D 安卓Android开发环境

    1,下载安装Java的JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html (JDK中,包含JRE) 如果是6 ...

  10. Lucene/Solr搜索引擎开发笔记 - 第1章 Solr安装与部署(Jetty篇)

    一.为何开博客写<Lucene/Solr搜索引擎开发笔记> 本人毕业于2011年,2011-2014的三年时间里,在深圳前50强企业工作,从事工业控制领域的机器视觉方向,主要使用语言为C/ ...

随机推荐

  1. Hash table集合-练习_计算一个字符串中每个字符出现次数

    Hash table集合 java.util.Hashtable<K,V>集合implements Map<K,V>接口Hashtable:底层也是一个哈希表,是一个线程安全的 ...

  2. Unity_UIWidgets - 按钮组件IconButton

    Unity_UIWidgets - 按钮组件IconButton 按钮组件IconButton IconButton 结尾 QQ 今日无推荐 按钮组件IconButton 既然上周给大家介绍了ICON ...

  3. Unity_UIWidgets - 组件Drawer

    Unity_UIWidgets - 组件Drawer 组件Drawer Drawer 构造 代码 效果 Drawer使用完毕 结语 图标Icon QQ 今日无推荐 组件Drawer 各位伙伴,周日愉快 ...

  4. 【分析笔记】全志平台 gpio_wdt 驱动应用和 stack crash 解决

    使用说明 第一次遇到看门狗芯片是通过切换电平信号来喂狗,如 SGM706 芯片,之前也比较少会用到看门狗芯片.原本打算参考 sunxi-wdt.c 的框架,利用定时器自己写一个,无意中发现内核已经有 ...

  5. 单线程架构的Redis如此之快的 4 个原因

    前言 作为内存中数据存储,Redis 以其速度和性能着称,通常被用作大多数后端服务的缓存解决方案. 但是,在内部,Redis 采用单线程架构. 为什么单线程设计依然会有这么高的性能?如果利用多线程并发 ...

  6. 重定向Kubernetes pod中的tcpdump输出

    重定向Kubernetes pod中的tcpdump输出 最新发现一个比较有意思的库ksniff,它是一个kubectl 插件,使用tcpdump来远程捕获Kubernetes集群中的pod流量并保存 ...

  7. 断点调试/认证/权限/频率-源码分析/基于APIView编写分页/异常处理

    内容概要 断点调试 认证/权限/频率-源码分析 基于APIView编写分页 异常处理 断点调试 # 程序以 debug模式运行,可以在任意位置停下,查看当前情况下变量数据的变化情况 # pycharm ...

  8. *已解决 Javawe中servlet时出现空白页面,但又网站不报错的问题追溯(编码

    本次随笔内容为在学习过程中遇到问题不断排问题,不断查资料解决的过程,小菜鸟学习~相互交流(菜鸟互啄~) 遇到问题: Javawe中servlet时出现空白页面,但又网站不报错的问题追溯 解决: 1.t ...

  9. 分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

    摘要:北京时间2023年2月9日,Kurator 正式发布 v0.2.0 版本. 本文分享自华为云社区<分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台>,作 ...

  10. 视觉十四讲:第七讲_3D-2D:P3P

    1.P3P P3P输入数据为三对3D-2D的匹配点,一个单目相机,经过初始化,得到初始的3D点,就可以依次得到后续的姿态和3D点. ABC是上一时刻求的的3D点, abc是与上一次时刻的匹配点.利用相 ...