1. 程式人生 > >使用Unity3D開發網路遊戲

使用Unity3D開發網路遊戲

(轉載https://software.intel.com/zh-cn/blogs/2014/02/28/unity-0/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=%20others-%20Unity)
使用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穿透 使用者的裝置不一定支援

相關推薦

使用Unity3D開發網路遊戲

(轉載https://software.intel.com/zh-cn/blogs/2014/02/28/unity-0/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm

020-直接利用Socket/TCP開發網路遊戲

今天我們開始本案例的第三部分,因為這個部分非常重要,我將會講的非常詳細,是對前面的總結。 開局一張圖,其餘全靠編。這個圖片是客戶端向伺服器端傳送資料的全部過程。接下來我們將採用順序結構。 1首先是伺服器端的搭建。 我們先要包伺服器端的IP地址與埠號進行繫結,就是一些配置,如下圖。 private

《叢林戰爭》Unity5.6直接利用C# Socket/TCP開發網路遊戲視訊教程

目錄 ├─1.榜首部分 Cocos2d-x 下載和裝置.mp4 ├─10.第二部分 大型地圖.mp4 ├─11.第二部分 Cocos2d-x 繪圖原理及優化(一).wmv.mp4 ├─12.第二部分 Cocos2d-x 繪圖原理及優化(二).mp4 ├

淺析:Unity3D開發遊戲如何降低包體大小

眾所周知,通過Unity3D開發的手遊包體普遍偏大,動則幾百M的安裝包,而包體大則會導致手遊推廣的成本增大,也會影響到使用者轉化率。除去其他因素,使用者在選擇下載時,會著重關注遊戲包體大小,遊戲包體體積過大,下載時間長,會讓使用者取消下載,同時也會考慮到流量的問題。

自己總結的Unity3d RPG網路遊戲 UI邏輯 框架(基於NGUI)

好的,那麼做了兩年遊戲,據說下週終於要籤運營了(想想還有點小激動),於是總結一下用U3D引擎做UI(Ngui,其他例如UGUI等UI框架應該也差不多)的大致架構,做一個如圖的UI,下面是大致的類圖框架(抱歉我畫的圖很不專業),總之我的經驗是一個UI一個類,每個互動元素都要分成類(左邊type,右邊每一行col

[Unity3D ARPG網路遊戲程式設計實踐] 網路連線 :unity NetWork與socket的對比(一)

unity3d ARPG網路遊戲程式設計實踐 作者:A神 目錄 1 網路連線 (unity NetWork與socket的對比) 2 登入介面 (登入協議與模型定製 及流程開發) 3 角色選擇 (進入遊戲後的角色選擇介面及通訊流程) 4 角色建立 (角色建立的介面與流程) 5 進入場景 (選擇角色後 進入場

unity3d開發2d遊戲:自動尋路Navmesh入門

  現在的大部分mmo遊戲都有了自動尋路功能。點選場景上的一個位置,角色就會自動尋路過去。中間可能會有很多的障礙物,角色會自動繞過障礙物,最終達到終點。使用unity3d開發2d遊戲,自動尋路可以有很多種實現方式。第一種比較傳統的是使用A星尋路,它是一種比較傳統的人工智慧演

Unity3D開發網路遊戲中伺服器端的架構設計

    最近在研究網路遊戲開發,感覺結構很好玩,所以就將自己學到了解到的記錄下來。部落格前幾篇的Socket通訊講的就是網路遊戲部分Socket的基本結構。上一篇的對MySql使用就是伺服器對資料庫的連線使用。今天要介紹的就是遊戲伺服器的設計架構以及一些核心程式碼。    通

Unity3d遊戲開發遊戲中的貝塞爾曲線以及其在Unity中的實現

轉載收藏:原文連結https://www.cnblogs.com/msxh/p/6270468.html 閱讀目錄 一、簡介 二、公式 三、實現與應用   RT,馬三最近在參與一款足球遊戲的開發,其中涉及到足球的各種運動軌跡和路徑,比如射門的軌跡,高吊球

Unity3d開發“類三消”遊戲

  新建一個Project,匯入圖片素材和聲音檔案,把圖片的Texture Type都修改為Sprite(2D and UI)【1】。新建一個命名為Background的GameObject,為之新增背景素材圖片【2】。再新建一個命名為GameController的Gam

王者榮耀是怎樣煉成的(一) 王者榮耀 用什麼開發遊戲入門,unity3D介紹

                在國內,如果你沒有聽說過《王者榮耀》,那你一定是古董級的人物了。   《王者

網路遊戲《叢林戰爭》開發與學習之(二):粘包分包現象以及服務端解析資料

1. 粘包和分包 粘包和分包是利用Socket在TCP協議下內部的優化機制。粘包指的是傳送資料比較頻繁,但資料量較少,此時客戶端不會直接將資料包傳送給伺服器,而是會與其它的資料包進行一個結合,例如遊戲中的位置資訊就是屬於頻繁傳送但資料量小的資訊,此時如果每條資料都S

FSM:網路遊戲開發中的有限狀態機(實踐篇)

上一篇文章《FSM:網路遊戲開發中的有限狀態機(理論篇)》中,講解了FSM的基礎知識。這裡,我結合圖形及具體例子,講解下FSM在實際開發中的運用。首先,圖解下上篇文章中提到的各種action。1.InputAction:某狀態下收到某事件,輸出相應動作。這裡不發生狀態變更,只

Unity3D開發的賽車單機小遊戲詳細介紹(附有遊戲下載連結)

博主使用Unity3D開發的賽車單機遊戲詳解(文末附遊戲下載地址) 設計開始於想象。 空中跑道,深山小亭,隱藏在森林中的跑車…… 一切等著你去發現,去體驗…… 我發誓,第一次玩的人不可能獲勝,我不是打擊你,是這遊戲設計的難度太高…… 我不是

讀書——unity3D/2D手機遊戲開發

unity的底層是用C++開發的,但是使用unity只是允許用指令碼進行具體遊戲開發,就回避了底層的複雜性,降低了開發的難度。unity裡的c#是執行再Mono平臺,微軟的c#是執行再.Net平臺上,語

2D網路遊戲開發網路篇)(六)

在前面的章節中,我們實現了一個簡單的聊天室。今天,我們仍然要圍繞這個主題,但採取別的方法,這個方法很有用,應該說是整個網路引擎的關鍵,它就是――RPC(Remote Procedure Calls),翻譯成中文就可以理解成”遠端功能呼叫”。

Unity3d指令碼程式設計 使用C#語言開發跨平臺遊戲》讀書筆記1

1.4指令碼程式設計的優勢 ·易於學習,程式碼維護方便,適合快速開發 ·開發成本低(因易於學習,所以可以啟用新人,同時開發速度快,這些都是降低成本的方法) 2.2.1以速度作為衡量語言級別的標準,那麼語言從低階到高階的大概排名如下 ·組合語言 ·C/C++,編譯型靜態不安全

Unity3D開發射擊遊戲的一些思路(1)

最近有許多朋友問到我一個問題,如何實現像戰地,使命召喚那樣逼真的射擊體驗。首先我們要知道,在沒有動畫師的幫助下,要想實現人為模擬的後坐力,精準度偏移等等其實並不是什麼難事,今天我們就來用較簡短的程式碼來實現一個模擬的槍械後坐力。 首先是我們需要用到的工具類程式碼: publ

Unity3D跑酷遊戲開發-遊戲結束分數排名當前高能顯示 (原創教程)

一般遊戲結束後都會有個分數排名板。 接下來讓分析這功能。 1.遊戲結束後顯示高分排列,當前玩家分數高能顯示。(如果能進入排名板) 2.資料必須持久化,切換場景,關閉開啟遊戲都要能用。。。 流程: 遊戲結束後,調出排名板。 1.取得上次的所有排名資料儲存到list泛

Unity3D網路遊戲實戰》學習筆記--Unity3D軟體安裝之error:CS0246The type or namespace name 'PostEffectsBase' could not

參考:https://forum.unity.com/threads/posteffectsbase-class-missing.307584/ 第一次新建工程的時候一直在報好幾個error:CS0246,後發現問題出在Assets--Import packge,安裝Uni