《啪啪三國》技術詳解

2021-07-04 10:23:25 字數 3057 閱讀 8357

說到unity3d我這裡有乙個引擎程式設計師的說法,他要懂3d引擎。你怎麼判斷這個引擎程式設計師合格不合格呢?你問他看什麼書?他如果說我在看《21天學會unity3d》這是無法做引擎程式設計師的。這是乙個引擎程式設計師的書架,看過哪些書呢?《遊戲程式設計精粹》,《gpu精粹》系列,《shaderx》系列等,哪怕你出去找工作,你跟老闆談我讀過這個,也至少看上去象個樣,即使沒看過,至少眼界得開闊,unity3d之所以用不好,因為有這麼多書要看。如果說你經常上unity3d學院的**,這個是不管用的。所以說只看《21天學會unity3d》是學不會unity3d的。

引擎程式設計師我講講核心的要點,他首先是要了解3d引擎工作的原理,優化起來有的放矢,出了問題才知道如何救火。如果你開始沒有把握好專案的標準的話,一不小心就跳進大坑。這一塊做不好的話最要命的是我,比如人物做了50套,如果一旦不行,你們推倒重來,那你這個美術資源就打水漂了。真正找到靠譜的unity3d的人,那就是「媽媽再也不用擔心我用unity3d做手遊了。」

一句話證明你用過unity3d

普通群眾的評價是:unity3d坑真多。專家會說?創業團隊用unity3d做手遊必死。

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

unity3d的坑我覺得最嚴重的坑就是沒有懂3d的程式設計師,把unity當成office用。

unity發展這麼多年,已經是很強的引擎了。我就摘出來說一說我們遇到的坑,有點不是特別好用,就是第5條,它有乙個多人協作的asset server偶爾會有時候不靠譜,我們現在改用svn來做版本管理。然後有乙個坑,就是很多團隊很少進行真機測試,屌絲開發商可能連iphone都沒有,一旦測試發現遊戲根本跑不動。還有就是第10條,在ios下無法更新c#**,更新就下100m這不是unity的錯,是ios的錯。我們做《啪啪三國》的時候也是不知道ios的限制,負責當初應該規劃一下做成指令碼更新。最後簡單說一句,因為現在windows phone也很熱了,要做wp的有要盡早測試。經鑑定unity是群眾喜聞樂見、發家致富的好引擎。

然後是經驗分享,「絕密」,我們是怎麼做《啪啪三國》的。說之前,我表達一下我對我們兩個創業合夥人的感謝,這些都是絕密,一般人是不輕易說的。現在unity大家用起來是有一定的門檻,但是也許三個月也許半年後,大家熟悉這些工具以後,們團隊的價值就體現出來了。我們程式設計師就是做好後勤。

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

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

第二個就是用資料說話,善用unity4強大的profiler工具,我現在感覺有點水平的程式設計師,依靠unity4強大的profiler工具,沒有理由做不出乙個跑不起來的遊戲,因為這裡面設計的效能分析和統計是相當詳細和相當有作用的,它可以統計你cpu的佔用率,又可以統計你每個模組、每個函式,每個執行的時間。還有乙個就是說cpu的效益,然後我們知道還有顯示卡,還有gpu,gpu就是它有乙個很直觀的圖,你渲染了多少三角面。內行人一看就知道了。

最後再強調一點就是真機制測試,經常發布到手機上跑跑,如果是屌絲團隊,你沒有iphone手機的話還是趕緊買吧。

優化1:

說說我們的方法,draw call太高怎麼解決。

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

然後第二個就是物體太多,可以考慮將多個物體合成乙個,這個可以由美術來做,也可以由程式來做。我原來是一片樹林,起碼有20多棵樹,我們讓美術合併一下,把這20多個樹合併成乙個物體,看起來是乙個樹林,另外乙個就是讓程式來做的,你看我們戰場西面,因為我們有攻兵,乙個隊伍有30多人一人射一支箭這就就要300多個,就讓程式把所有的動態合併成三個。包括影子,就是動態合併所有的影子。

優化2

理解所使用material的實現原理,不濫用material。前面有人講過,unity跟玩遊戲一樣的,你發現後面跑不動了,就要有乙個明白人給你做乙個規劃,你有沒有這樣的效果,如果有的話你要怎麼實現。我們用什麼樣的shader,是不是還有高低配。給大家看一下,左邊這個小選單是我們自己寫的部分材質的效果,上面也是包括人物和效果。

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

這個從顯示卡上看是乙個人,但是它其實是由三角形組成的。比如說你的人物三角面形特別多?那怎麼辦?就減。渲染很多兵的時候我們就用右邊的這個沒腿的,其實做遊戲,遊戲視覺就是蒙人。

接下來就是乙個外掛程式/庫,這是我們用到的第三方的東西,乙個是ngui,這是unity做ui比較靠譜的,也是沒得選擇的選擇。

第二個和第三個就是protobuf,這是我們用於客戶端和伺服器之間傳遞訊息包的乙個庫,這個庫不錯比較穩定,的是乙個國外吃飽了撐的程式設計師做的,它支援很多的平台,像安卓、ios等都有。

接下來是unityvs,這個東西是unity**除錯的外掛程式,這個用起來不錯,可以遠離unity本身提供的mono工具。

最後乙個是prime storekit,這個是搞定正版蘋果的支付。你買了之後你這個蘋果有多少坑就一一而過了。

我這塊的建議就是慎用第三方**庫,可能會給跨平台發布帶來麻煩。

nefu 三國之戰

三國之戰 time limit 1000 memory limit 65536 description 在三國某某戰爭中,魏軍要圍攻蜀國.諸葛亮親自指揮戰爭,對抗曹操。現假設諸葛亮有n個大炮,每個大炮都有乙個攻擊值ai ai 0 ai 100 而且他有乙個神奇的技能,就是他能指定任意區間的大炮,使他...

新三國爭霸

descrption input output sample input 3 3 5 10 30 1 2 1 2 3 2 1 3 4 11 3 2 5sample output 180hint 分析 顯然現在問題如何知道 w j 1 i n le 300 範圍比較小,我們可以 n 2 預處理出區間內...

寫個三國殺

自己老早以前就想寫個區域網的三國殺,以前思考過其遊戲邏輯的實現,覺得有點複雜,一直也沒有真正動手,上個週末,真正動手做了起來,2天裡寫了大約2000來行 算是把整個框架有了個大致的實現。下面把整個思路整理一下。既然是輕量級的區域網版本,就沒必要把伺服器和客戶端分開來做,就讓程式自帶服務端和客戶端,類...