《3d山地賽車》遊戲-網路部分(一)
1 前言
《3d山地賽車》專案從6月12日做到7月7日,花了3週多的時間。其中網路部分的實現就花了一周多,將近2周。所以關於其中網路部分,我想寫寫我的一點心得。
《3d山地賽車》專案要求裡有個optional要求是實現聯機。雖然這是乙個可選項,做不做影響不大,但是我想做出來。
因為《3d山地賽車》是一款android端的3d賽車遊戲,如果有聯機的功能的話,就能夠讓2個人對戰,這樣整個遊戲就變得有意思起來。如果僅僅有單人模式(pve),玩家會很快搞清楚ai是怎樣行動的,這樣很容易就會無聊起來。但是有了聯機(pvp),玩家們會在遊戲競速的規則下,自己去思考一定的策略,畢竟和自己對戰的是另一名玩家的話,難道你會不認真起來嗎?
(至於說為什麼有時要做出選擇,是因為關卡設計時,有些地方是可以走「捷徑」的,但是走「捷徑」需要一定的操作,不然很容易翻車)
還有乙個原因,我是專案的程式,乙個人在這麼短時間內將整個遊戲「單人模式」的3大關卡給實現出來,還能把聯機部分給實現的話,那我會相當有成就感。聯機部分的實現是乙個挑戰,需要搭建伺服器,還要實現客戶端、伺服器之間的通訊,編寫2端的**。這是乙個挑戰。但是我有自信,因為我大一大二學過一段時間前端、後台,伺服器、linux也用過,對網路之間如何通訊還是比較熟悉。關鍵是理清思路,跑通整個流程。所以我覺得應該不難吧。
始料未及的是,本來我以為很容易就能做完聯機,卻花了一周多。。。
2 聯機方案的選擇
查網上的資料,看了一些案例,可行的聯機方案有3種:unity自帶的network、photon+unity、自己實現socket。其中靠譜的是2種:photon+unity、自己實現socket。
下面講下這幾種方案
2 photon+unity
看網上例項後,覺得photon設計,提供出來的api比較好,好用而且易讀,看名字就知道這個函式有什麼用。比unity自己提供的好太多了。
但是我不知道它會不會因為在中國的原因,網路延遲會大些。而且伺服器端做了什麼我也不知道,這樣我難以實現一些聯機設計上的思路,以及優化遊戲。再如果出了問題,我難以知道是延遲問題,還是服務端資料處理出了問題。
3 自己實現socket
「自己實現socket」是國內端遊、手遊採用的方案。它的特點就是可定製性高,編寫難度大。
因為國內端遊、手遊對遊戲的網路效能要求很高,一般要求能夠實現多人聯機,實時對戰。所以自己實現socket,就能夠根據相應的遊戲做出不少演算法上、設計上的優化。
雖然《3d山地賽車》乙個場景裡是2個玩家進行對戰,但其實和多人聯機沒多大區別,只是人數上的差異罷了。而且賽車遊戲也是實時的,對網路要求也很高。所以採用這個方案很合適。
所以最終選擇自己實現socket通訊這一方案。
驚暴 EXCEL竟然隱藏3D賽車遊戲!
驚暴 excel竟然隱藏3d賽車遊戲!剛看朋友介紹,以為開玩笑,但還是傻呵呵地試了一下,昏掉了,我徹底暈倒,這一切都是真的!我在這裡點上n個驚奇表情都不足以形容我的靈魂深處的昏 我開始懷疑這一切哇。神啊,救救我吧!天哪!操作流程 不要說看不懂哇,問問同事當中excel用得好的dx就行了 1 開啟ex...
驚暴 EXCEL竟然隱藏3D賽車遊戲!
驚暴 excel竟然隱藏3d賽車遊戲!剛看朋友介紹,以為開玩笑,但還是傻呵呵地試了一下,昏掉了,我徹底暈倒,這一切都是真的!我在這裡點上n個驚奇表情都不足以形容我的靈魂深處的昏 我開始懷疑這一切哇。神啊,救救我吧!天哪!操作流程 不要說看不懂哇,問問同事當中excel用得好的dx就行了 1 開啟ex...
3D遊戲引擎系列一
筆者介紹 姜雪偉,it公司技術合夥人,it高階講師,csdn 社群專家,特邀編輯,暢銷書作者,國家專利發明人 已出版書籍 手把手教你 架構 3d遊戲引擎 電子工業出版社 和 unity3d 實戰核心技術詳解 電子工業出版社等。為了能讓開發者重視引擎開發,最近一直在寫一些關於學習引擎的一些博文,為此還...