主題

程序|技術美術 - 在遊戲業的長期發展

教授加博士先生 | 2021-01-08 23:54:06

先來張ㄌㄌ圖,提升文章氣質


痾首先警告: 台灣遊戲業哭哭,這篇文章可能不適用於台灣遊戲業發展。

其實重點只有一句話,
學習不要見樹不見林,  新長出來的樹遲早也是死掉,
但過好幾年樹木一直替換,森林的概念卻都在,
你要學的是整座森林的生態系,而不是天天去研究那些新長出的樹,
不要執著那些小細節,那些啥API, component真的都沒這麼重要,
就像你會一種程式語言,那就可以快速融會貫通,一天就會用其他語言。
--------------------------------------------------------------------------------

我們舉Unity當例子,現在啥Unity URP, HDRP, ECS, 每個看起來都很炫泡, So???
最重要還是回到內功最重要。URP, HDRP說穿了就是圖學上耍炫泡,
對於shader, computer graphics有比較深的了解, 管他怎樣變,
表層API改來改去, 介面動來動去, 內功強看看文檔大概就懂了很快就可以用。
圖學+Unity首推這個網站: Catlike Coding, 雖然是用已經過時管線的教學,(不是URP)
但是很多圖學重點概念都有清晰cover到,所以還是非常有用
至於對Unity很多不錯的案例, Makin' Stuff Look Good
--------------------------------------------------------------------------------
多人遊戲編程呢? 管你是UNET(已死), Photon, Mirror (都是Unity的網路Lib)
都是表層炫泡API,不要執著一些Photon API語法,
多人遊戲重點概念很簡單, 高層就Rpc, Sync Variable,
層也就是把Rpc這些概念轉成二進制封包,
用傳輸層transport layer二進制資料扔出去(通常這部分不用自己做)
你有把握到核心概念Rpc, Sync Variable
假設會Photon,一天就可以學會Mirror。
此外有個設計模式的大重點是,
你的程式架構有遵循 MVC多人架構,
管你用啥library,單人轉多人,也都是一周內的事情。
--------------------------------------------------------------------------------
Unity 那個炫泡ECS呢? 其實就是Data Oriented Design (DOD)
就是一種編程模式,我屌你Unity一堆ECS怪語法,重點是,
如果是要學這個,森林是Data Oriented Design (DOD)的思想,
重點不是學Unity他媽的垃圾API語法(樹木),2018推出以來不知道改幾次了。
(相對於OOP Object Oriented Programming).
--------------------------------------------------------------------------------
Unity 那個炫泡 MLAgent 呢? (Unity出的一個AI學習package)
其實就是Machine Learning的Reinforcement Learning
(這我還真的不熟沒學過QQ) 其實說到底還是一些核心功夫最重要
你他媽Reinforcement Learning背景知識不熟,再怎樣用MLAgent也只
是猴子耍大刀,訓練不出啥屌的AI東西,只是玩弄表層API。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

算法, 基礎知識永遠最重要, 上面表層的東西,每年每個月改來改去,
都只是耍炫泡而已, 如果內功不好, 反而學習新東西會比較困難。
而迷失在叢林中。的建議是不用跟著Unity炫泡更新太緊,
尤其是近年Unity瘋狂+新東西,一些這拆那拆東拆西補,
等他東西真的能用, 你真要實戰要用到,再去學(看文檔)就好,
有空閒時不如多練內功,不要刻意追逐時代表層的喧囂。
阿不過台灣垃圾遊戲業的面試主管,看不出你內功就是==

舉個最後的例子,Unity有個內建的Component叫做NavMeshAgent,
主要用來AI巡路用,你可以吃飽太閒,深入研究這個官方DOC
各種API性質瞭若指掌,或是各種神奇BUG,注意事項。
但你他媽真的這麼閒,不如好好去學背後的A* & Dijkstra算法,
如果連DFS, BFS (Depth/Breadth First Search)都不知道我就更頭疼了...
兩年後NavMeshAgent可能就廢了,但算法永遠常在。
更別說相關的開源AI巡路library好幾十個幾百個,
憑甚麼要用NavMeshAgent? 所以重點還是你背後有沒有了解一些
巡路的概念,這一狗大票開源AI巡路library基本上都是抄來抄去,

最後這個UnityList網站很好用
可以搜尋各種Unity開源專案抄襲學習
(當然github上垃圾專案佔了9成以上,盡量挑星星多的)
有時候站在巨人的肩膀上很重要,
我常常看到不少人硬刻一些暴力解去解決問題,
問題是就算解出來了,但是又醜又慢,
基本上多數問題,都早就有人仔細研究過,並有知名的算法處理這問題了
和為何不站在巨人的肩膀上?
所以這裡多提一點,多看看一些優質專案是如何去實現一些事情的,
不要自己閉門造車~

284 巴幣: 2320
秋山
收藏ㄌ 看來要學好奇奇怪怪的東西 先了解其本質最好
2021-01-09 14:27:26
教授加博士先生
我是覺得如果是第一次接觸 (還是舉例NavMeshAgent) 當然還是要先大概了解表面的API 大概知道有這東西就好 大概是怎樣用的 不求甚解。剩下還是專注於本質~
2021-01-09 14:35:26
蝦米蟲
好文推推[e12]
2021-01-09 16:27:41
教授加博士先生
穴穴[e1]
2021-01-09 16:33:10
新手方
程式的話無論任何產業都是這樣。當初在自己寫遊戲的時候也是覺得,就跑去資工系修課惹
2021-01-21 00:56:30
教授加博士先生
是阿 回到核心基礎還是最重要的
2021-01-21 01:03:51
mike
中肯 與其學表面,了解其原理遇到問題才會觸類旁通
2021-02-04 19:01:21

更多創作