用 Unity 进行网络游戏开发(一)

用Unity进行网络游戏开发(一)这是我之前写的了,一直保存在电脑里,现在学习写博客。希望多和大家交流,共同进步,文章中说得不好的地方请指出,谢谢!使用Unity3D进行网络游戏开发一.Unity3d简介   Unity3d是时下比较流行的一款游戏引擎,流行是因为用它做游戏很方便,无论是3d还是2d都会有非常好的效果,即便某些朋友不懂编程,也可以通过U

大家好,又见面了,我是你们的朋友全栈君。

用 Unity 进行网络游戏开发(一)

晨 张.的头像

这是我之前写的了,一直保存在电脑里,现在学习写博客。希望多和大家交流,共同进步,文章中说得不好的地方请指出,谢谢!
使用Unity3D进行网络游戏开发
一.Unity3d 简介
     Unity3d是时下比较流行的一款游戏引擎,流行是因为用它做游戏很方便,无论是3d还是2d都会有非常好的效果,即便某些朋友不懂编程,也可以通过Unity自带的组件做出一些简单的诸如三维视频游戏、建筑可视化、实时三维动画等类型的小作品。在正式发布前,Unity经历的多年的开发阶段,Gooball在2005三月发布,运用了Unity的预发售版本 开发。Unity从出道到现在已有8年历史,有很多优秀的作品都是用Unity做的,诸如《神庙逃亡》、《绝代双骄》、《坦克英雄》、《将魂三国》、《梦幻国度2》、《新仙剑Online》以及《纵横无双》等。


二.网络游戏简介
  
    网络游戏又称为MMOG(Massivemultiplayeronlinegame)。通常只要某一游戏的服务器端到客户端连线玩家数量超过
1000人即可算作大型多人在线游戏,但是狭义上必须有大量玩家处于同一“游戏世界”的游戏才能称之为大型多人在线
游戏。
    目前网络游戏的分类主要如下:
     1.从使用形式上进行分类:
    浏览器形式和客户端形式。基于浏览器的游戏,也就是通常说到的网页游戏,又称为WEB游戏,它不用下载客户端,任何地方任何时间任何一台能上网的电脑快乐的游戏,尤其适合上班族。其类型及题材也非常丰富,典型的类型有角色扮演(天书奇谭)、战争策略(热血三国)、社区养成(猫游记)、SNS(开心农场)等。 而对于客户端形式这一种类型是由公司所架设的服务器来提供游戏,而玩家们则是由公司所提供的客户端来连上公司服务器以进行游戏,而现在称之为网络游戏的大都属于此类型。此类游戏的特征是大多数玩家都会有一个专属于自己的角色(虚拟身份),而一切存盘以及游戏资讯均记录在服务端。此类游戏大部分来自欧美以及亚洲地区,这类型游戏有World of Warcraft(魔兽世界)(美)、战地之王(韩国)、EVE Online(冰岛)、战地(Battlefield)(瑞典)、信长
之野望Online(日本)、天堂2(韩国)、梦幻西游(中国)等等。

    2.从游戏种类上进行分类:

   棋牌类休闲网络游戏:即登陆网络服务商提供的游戏平台后,进行双人或多人对弈,如纸牌、象棋等,提供此类游戏的公司主要有腾讯、联众、新浪等。网络对战类游戏 :即玩家通过安装市场上销售的支持局域网对战功能游戏,通过网络中间服务器,实现对战,如CS、星际争霸、魔兽争霸等,主要的网络平台有盛大、腾讯、浩方等。角色扮演类大型网上游戏:即RPG类,通过扮演某一角色,通过任务的执行,使其提升等级,等到宝物等,如大话西游、传奇等,提供此类平台的主要有盛大等。


   3.从游戏模式上进行分类:
     这样分类比较多,主要有:一、 MMORPG-大型多人角色扮演类游戏,如时下火爆的《DNF》《DN》《诛仙3》等。二、MMOFPS-大型多人第一人称射击游戏,如《CF》等。三、MMOKTS-大型多人及时策略游戏,这类游戏目前主要以浏览器形式发展而非客户端,如《破碎银河系》等。 四、MMODG-大型多人网络舞蹈游戏,《劲舞团》已经火了很多年了。 五、MMOMG-大型多人网络经营类游戏,这类游戏也是主要依托浏览器形式发展,如《Hattrick》等游戏。 六、MMOR-大型多人网络竞速类游戏,如《跑跑卡丁车》等游戏。 七、MMOTG-大型多人网络大亨类游戏,代表作为《网络大富翁》。 八、MMOSG-大型多人网络体育类游戏,以《街头篮球》为代表。
 
   四.网络游戏的架构:
     一、PTP(Peer-to-Peer)即在多个玩家参与的游戏中,各玩家之间采用Peer-to-Peer的直接通信方式。在网络通信服务的形式上,一般采用浮动服务器的形式,即其中一个玩家的机器既是客户端,又扮演服务器的角色,一般由创建游戏局的玩家担任服务器(主机)。很多对战型的RTS网络游戏都采用这种结构。
     二、基于游戏大厅代理的结构,通过会话大厅(lobby)结构,为不同玩家牵线搭桥,既直接管理客户端,也管理游戏局,是回合制网络游戏的常见类型
     三、网络游戏的最典型的结构是C/S结构,特别适合于多人在线游戏,如RPG,成千上万人进行同一场游戏。服务器上有完整的游戏世界模型,玩家在客户端去观察这个世界,并与之互动。C/S结 构的优点是能够充分发挥客户端计算机的处理能力,很多工作可以在客户端处理后再提交给服务器,使得客户端响应速度快。对于网络游戏来讲,这是十分关键的。 其缺点就是网络游戏的升级比较麻烦,每次升级需要客户端下载体积庞大的更新软件,然后进行安装,对于一些带宽并不是十分充足的用户而言,升级就成了游戏的梦魇。不过,良好的客户端程序框架设计完全可以避免升级时下载庞大的更新软件。比如,客户端软件可以把场景定义文件独立出来,客户端程序在运行时动态加载 场景定义文件。这样,当网络游戏的设计者发现需要增加游戏场景时,他只需要更新一个场景定义文件就可以了,当然还需要一些必需的场景资源文件,如新增加的 图像、背景音效等。


三、使用Unity开发简单的网络游戏
    网络游戏和单机游戏最大的区别就是网络游戏把单机游戏的逻辑判断移到了服务器端。当客户端向服务器发出一个请求后,比如说行走,服务器收到客户端发来的这个数据包,然后读出内容,进行逻辑判断处理,然后把结果从新返回给客户端。客户端收到服务器的回复后,开始进行屏幕渲染,于是就出现了行走的动画了。逻辑判断在服务器端,客户端只负责渲染。把逻辑放在服务器端有一个很明显的好处,就是防止第三方修改数据,即降低玩家“开挂”的可能性。使用Unity进行网络游戏开发,最好不要用Unity自带的NetworkView,选择socket更好,理由如下:(我这里借鉴A哥所总结)
  一、unity network 需要向unity的masterserver服务器注册我们的服务,而socket服务由开发者自己定义
  二、采用socket想要共享哪些数据更加灵活 而network显然是没有这么方便
  三、网络占用 socket在需要的时候 只需要传输开发者定义好的需要交互的数据即可 network则是整个的实时同步 网络占用会高出不少
  四、network是类似于p2p的客户端直连共享模式 需要nat穿透 用户的设备不一定支持。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128783.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 哈希冲突-哈希碰撞「建议收藏」

    哈希冲突-哈希碰撞「建议收藏」当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入的时候,发现已经被其他元素占用了,其实这就是所谓的哈希冲突,也叫哈希碰撞。哈希函数的设计至关重要,好的哈希函数会尽可能地保证计算简单和散列地址分布均匀,但是,我们需要清楚的是,数组是一块连续的固定长度的内存空间,再好的哈希函数也不能保证得到的存储地址绝对不发生冲突。那么哈希冲突如何解决呢?哈希冲突的解决方案有多种:开放地址法(发生…

    2022年6月16日
    46
  • var let和const的区别_const声明

    var let和const的区别_const声明1.let命令基本语法ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。{leta=1varb=2console

    2022年8月7日
    1
  • Oracle number类型详解

    Oracle number类型详解Oraclenumber类型详解简介基本说明容易出错情况Number与MySQL数据类型简介Oracle的number类型比较复杂,很多限制,但是掌握一点小技巧就能轻松搞定。基本说明number(precision,scale)precision表示数字中的有效位,从左边第一个不为0的数算起,小数点和负号不计入有效位数precision的取值范围是[1,38]precision默认值为38,number等价于number(38)scale大于0,表示数字精确到小数点右边的位数,numb

    2022年7月24日
    4
  • 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。「建议收藏」

    8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。「建议收藏」在使用Microsoft.Office.Interop.Word转pdf时,出现如下的错误RetrievingtheCOMclassfactoryforcomponentwithCLSID{000209FF-0000-0000-C000-000000000046}failedduetothefollowingerror:8000401a因为配置标识不正确,系…

    2022年8月20日
    8
  • GB28181服务器_GB28181收费吗

    GB28181服务器_GB28181收费吗CarEye开发GB28181服务器有将近两年时间了,早期我们用纯C++开发了一个GB28181视频服务期,对外的接口是基于MQ协议的。这样开发出来的服务器主要有几个问题。1.SIP服务器和流媒体服务器是绑定在一个进程中的,因为没有分离,造成了视频处理和SIP服务器只能在一台服务器上运行,既不能打到GB28181协议的构架要求。也造成无法使用负载均衡的功能。2.对外接口采用了MQ通信方式。虽然MQ消息处理实时,对一些数据处理,如报警,对讲等。但MQ本身是重量级构建,不方便一些应用场景快速构建

    2022年8月31日
    0
  • IntelliJ IDEA中的神仙插件(写代码必备)

    IntelliJ IDEA中的神仙插件(写代码必备)俗话说:"工欲善其事必先利其器",今天准备和大家一起分享一下实际工作中能提升幸福感和工作效率的IDEA插件。

    2022年5月29日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号