關於Unity3D手機網遊開發一些小見解

  

它的知識技能和職責,我就不仔細說了,說細了有一點像招聘啓示。他的主要職責雖然負責技術,可是也給產品決策和方向提供一些決策。他最主要的考覈指標,就是經驗很重要,最好主導或參與過一款網絡遊戲的開發。舉個例子好比說兩個程序員,一個是剛畢業於西太平洋大學,主攻方向是複雜電子穩定器。另一我的可能在煤老闆手下開發過一款遊戲,雖然容量不大但遊戲能夠承擔3000人,我確定是選跟煤老闆幹過的人,這是我對服務器程序員的認識。程序員

引擎程序員數據庫

 

說到Unity3D我這裏有一個引擎程序員的說法,他要懂3D引擎。你怎麼判斷這個引擎程序員合格不合格呢?你問他看什麼書?他若是說我在看《21天學會Unity3D》這是沒法作引擎程序員的。這是一個引擎程序員的書架,看過哪些書呢?《遊戲編程精粹》,《GPU精粹》系列,《ShaderX》系列等,哪怕你出去找工做,你跟老闆談我讀過這個,也至少看上去象個樣,即便沒看過,至少眼界得開闊,Unity3D之因此用很差,由於有這麼多書要看。若是說你常常上Unity3D學院的網站,這個是無論用的。因此說只看《21天學會Unity3D》是學不會Unity3D的。編程

 

引擎程序員我講講核心的要點,他首先是要了解3D引擎工做的原理,優化起來有的放矢,出了問題才知道如何救火。若是你開始沒有把握好項目的標準的話,一不當心就跳進大坑。這一塊作很差的話最要命的是我,好比人物作了50套,若是一旦不行,大家推倒重來,那你這個美術資源就打水漂了。真正找到靠譜的Unity3D的人,那就是「媽媽不再用擔憂我用Unity3D作手遊了。」服務器

一句話證實你用過Unity3D網絡

普通羣衆的評價是:Unity3D坑真多。專家會說?創業團隊用Unity3D作手遊必死。函數

講到這兒我想大部分的人就是想聽聽Unity3D有什麼坑。工具

 

Unity3D的坑我以爲最嚴重的坑就是沒有懂3D的程序員,把Unity當成Office用。性能

先說一下咱們程序的工做環境,首先是小黑屋,程序員工做環境不能太敞亮了。咱們在硬件設施上是不計成本的,好比說右邊這個高端大氣上檔次的巨屏雙顯,i5CPU+Win7 64,8G內存,SSD固態硬盤。爲何要用這麼好?不少程序員招聘的時候都會問,大家公司是否是雙顯啊?從咱們關心生產力的角度來說,這套「神機」能夠大大提升Unity3D的開發效率。Unity3D在整個程序員開發的過程中,它其實不少的工做是須要不少讀盤操做的,你有這麼一套神機的配置,程序員的工做效率我估計應該會有5—6倍的提升,這個是實話實說。若是大家還像咱們同樣高端大氣的話,你還應該配一個Macbook Pro的匹配。測試

效率優化大數據

而後講咱們效率優化的通常方法。固然咱們講這些方法其實創建在一個方法上,就是你熟讀我前面的50本書你就融會貫通了,我說什麼你就一目瞭然了。

第一個排除法,懷疑哪裏就屏掉哪裏。這是最基礎的一個方法,也是最有效的。

第二個就是用數聽說話,善用Unity強大的Profiler工具,我如今感受有點水平的程序員,依靠Unity強大的Profiler工具,沒有理由作不出一個跑不起來的遊戲,由於這裏面設計的性能分析和統計是至關詳細和至關有做用的,它能夠統計你CPU的佔用率,又能夠統計你每一個模塊、每一個函數,每一個執行的時間。還有一個就是說CPU的效益,而後咱們知道還有顯卡,還有GPU,GPU就是它有一個很直觀的圖,你渲染了多少三角面。內行人一看就知道了。

最後再強調一點就是真機制測試,常常發佈到手機上跑跑,若是是屌絲團隊,你沒有IPhone手機的話仍是趕忙買吧。
優化1:

說說咱們的方法,draw call過高怎麼解決。

 

3D渲染東西,一我的和一百我的是不同的。你一百我的就要渲染一百次,怎麼講呢?想讓效率提升的話,最優先的辦法就是看draw call高不高,高的話就下降一下。最快的渲染,就是不渲染。這塊就涉及到咱們在這個屋子裏,屋子外面是看不見的,可是計算機是能夠看到的,你就不要渲染出來,或者是我背後有誰,若是有兩我的我就把它刪掉。還有土辦法就是手動配置可見範圍列表。

而後第二個就是物體太多,能夠考慮將多個物體合成一個,這個能夠由美術來作,也能夠由程序來作。我原來是一片樹林,起碼有20多棵樹,咱們讓美術合併一下,把這20多個樹合併成一個物體,看起來是一個樹林,另一個就是讓程序來作的,你看咱們戰場西面,由於咱們有攻兵,一個隊伍有30多人一人射一支箭這就就要300多個,就讓程序把全部的動態合併成三個。包括影子,就是動態合併全部的影子。

優化2

 

理解所使用Material的實現原理,不濫用Material。前面有人講過,Unity跟玩遊戲同樣的,你發現後面跑不動了,就要有一個明白人給你作一個規劃,你有沒有這樣的效果,若是有的話你要怎麼實現。咱們用什麼樣的Shader,是否是還有高低配。給你們看一下,左邊這個小菜單是咱們本身寫的部分材質的效果,上面也是包括人物和效果。

第三個優化方面,就是模型面數太多。


這個從顯卡上看是一我的,可是它實際上是由三角形組成的。好比說你的人物三角面形特別多?那怎麼辦?就減。渲染不少兵的時候咱們就用右邊的這個沒腿的,其實作遊戲,遊戲視覺就是蒙人。

工具化

 

一鍵搞定全部平臺的安裝包。由於你們知道你如今渠道接這麼多,你出個版本一個鍵,好比說你有十個渠道,你沒有咱們那個神機的話,那打包一個渠道就得半小時。這是咱們安卓渠道的出包工具,排名不分前後(全場鬨笑)。

由於我作了這麼多年的技術,我對工具這個東西很是看重的,包括程序員要有利用工具解放本身的手。

服務器的結構

 


這是一個典型的端遊結構,前面一個是鏈接服務器,它的做用就是說咱們遊戲是一個長鏈接的遊戲,一臺物理機承載服務器承載是有限的,咱們是要有不少臺,而後後面就是路由服務器,還鏈接了兩臺和多臺的服務器。後面這個紅色的是遊戲服務器,再後面就是數據庫服務器,提供一個高速的緩衝。選擇這種服務器結構緣由是易於拓展

放外掛

 

第三個就是咱們遊戲的小祕密,咱們這個戰場的整個戰鬥的核心是C++寫的。這樣的一好處就是一次編寫屢次運行,更進一步地好處我後面會講,缺點就是開發速度慢,調試困難。

這是防外掛,防外掛有幾個原則,就是隻信任服務器,全部玩家數據都存在服務器。戰鬥結果由服務器進行驗證。由於個人戰鬥模塊是C++寫的。

數據分析

而後就是數據分析這塊,如今都講究大數據這一塊,其實3、四年前咱們就作這樣的東西。遊戲裏面玩家全部的行爲,在服務器上都有日誌產生,天天程序收集這個海量的數據,而後放在數據庫進行分析。

瘋狂的SDK

接下來就是瘋狂的SDK了,咱們如今的狀況是IOS10來個,安卓40+,確實挺多,可是這沒有什麼很差。

 

可是有兩個原則要注意,一個是與遊戲代碼的關聯性小,第二個要方便調試和測試。這樣的話,咱們接SDK的時候,就用工具,用SDK的程序員就能夠了解。同時開發商也能夠把SDK交給別人去接,不會產生泄露遊戲代碼的一個尷尬和擔憂。事實證實咱們安卓渠道的代理商很是給力,咱們全部安卓渠道的SDK都是他們幫咱們接的。

我想辦法就是兩個辦法,一個是客戶端的,從第一個標準接口,而後服務器這塊咱們引入了一個SDK轉接的服務器,咱們遊戲的接口至關於經過一個橋樑進行對接。我用一個穩定的服務器就夠了。可以給工程師測試和調試。這個也能提升工做的效率,他不用成天去熟悉你遊戲的關卡。

插件庫

 

接下來就是一個插件/庫,這是咱們用到的第三方的東西,一個是NGUI,這是Unity作UI比較靠譜的,也是沒得選擇的選擇。

第二個和第三個就是Protobuf,這是咱們用於客戶端和服務器之間傳遞消息包的一個庫,這個庫不錯比較穩定,的是一個國外吃飽了撐的程序員作的,它支持不少的平臺,像安卓、IOS等都有。

接下來是UnityVs,這個東西是Unity代碼調試的插件,這個用起來不錯,能夠遠離Unity自己提供的MONO工具。

最後一個是Prime Storekit,這個是搞定正版蘋果的支付。你買了以後你這個蘋果有多少坑就一一而過了。

我這塊的建議就是慎用第三方代碼庫,可能會給跨平臺發佈帶來麻煩。

主角製造

 

再接下來就是咱們主角光照,三點式光照方法,咱們把它引用到遊戲裏面,左邊的這個角色就是光照模型下來的效果,右邊是普通的,你們看一下能夠看出區別,左邊的更立體。而後是主角的製造,咱們這個主角也是花了大價錢,雖然是屌絲公司,可是咱們省吃儉用不發工資,咱們請了龍將的概念美術給咱們作了一個設定,能夠看到從原畫到3D模型,還原度很高。想增長一點模式的話就Unity提供的光照效果。

相關文章
相關標籤/搜索