# 開發經歷與遊戲業經驗分享 ## 個人簡介 我的工作經驗其實都毫無相關,求職遊戲業辛酸史,概況如下: 1. 2014 年大四要畢業期間在某博弈大公司,擔任美術實習人員 (3D 貼圖繪製) 三個月。 2. 大學畢業後讀研究所時,剛好有機會去到美國 (雖然英文還在努力中...),在那邊的日子過的很辛苦也很充實,畢竟語言與文化差異,然而我白天打黑工,晚上接案寫程式,案子的內容是使用 Groovy 建構編寫後端的 RESTfulAPI,幾乎沒甚麼睡,接案的部分整整持續 1 年左右 (在美國待 2 年),當然最後我研究所沒畢業 (算肄業了~哈哈),因為想要趕快工作。 3. 2019 年年中,獲得人生第一份工程師正職 (有一點故事),從美國回來當完 1 年兵後,對於遊戲有很大的夢想,找遊戲業沒人要 (其實很沮喪,當然也怪自己不夠努力),想說不然先找個後端做,所以進了一間直播電商公司,在那邊擔任全端工程師,待的不久大概 6~7 個月 (因為有遊戲夢)。 4. 其實在上一份某直播電商公司的工作期間,一直思考如果不趕快轉換跑道就來不及了,所幸非常感謝某第一老字號線上遊戲公司的收留,也正式從某直播電商提出離職,在 2020 年開始邁向人生第一個遊戲業 (不過薪水少 1 萬,還是欣然接受)。那時候真的很高興也很期待有前輩能夠分享與提攜 (結果現實是殘酷的,根本沒人),在職期間我幾乎從一個很多都不懂,靠自己的熱情與工作狂特質 (幾乎到晚上 10~11點,有到過夜),開始精進自己的技術,爬到主程式小組長的位子 (名義上,因為實際上團隊是扁平化結構,這點我滿喜歡的)。 然而在研發團隊慢慢組成期間,我用我最大的熱情盡我所能,幫忙企劃到美術做好完整的規劃,打造出商業化的開發方式。當然我個人非常願意分享也不恥下問,只要有願意想學的新人我都會帶,或者我不懂的的我也會詢問,藉此希望能夠將我這份熱情感染給大家,雖然有時候會因為壓力大,偶爾會情緒化 (自己也盡量反省改進),不過如果沒遇到擺爛的人,基本上我都很好溝通,也盡量能夠幫公司打造雙贏 (對自己問心無愧,也對公司有貢獻)。 不過後來也因為團隊執行力過低與某些原因,做滿 3 年也就是 2023 年,我提出了離職,當然我也是非常感謝公司當初願意收留我,讓我有這些經歷成長的機會,相對的我也邁向了人生下一個里程碑,抱著希望能夠找到志同道合的人,能夠一起著手籌備未來的工作室。 ## 遊戲業迷思 雖然我待不多遊戲公司,但是我相信應該滿多遊戲公司大部分都硬做硬兜,導致遊戲產品開發效率與維護性都不高,研發團隊也開始遇到很多瓶頸。 可能會有很多人或者剛畢業想進遊戲業的,認為說要找一個正規的遊戲公司才能學到技術,不過我只能說遇到對的遊戲開發團隊與人最重要,當然這只能自己去挖掘看適不適合這個遊戲開發團隊了。 ## 提高自我學習能力 我個人滿看中學習能力,不管是不是理論型還是實戰型,如果有良好的學習能力,其實技術跟觀念都不會太差,多培養自己的學習能力,多接納不同的技術進而精進自己。 ## 挖掘開源與學習 如果作為一個遊戲研發工程師,非常建議經營 Github (不管是不是遊戲研發工程師都建議經營),像我其實是中後期才開始經營,主要是經營 Github 後,可以從中挖掘一些開源技術進行學習,能夠去思考很多優點設計,相對的也能夠活用開源插件與框架,輔助遊戲開發。 ## 框架定義與運用 對於框架的定義,相信很多人不太清楚定位,其實框架不管大或小,只要有體系規範在就算是框架,它講白一點就是有體系規範的工具組合包,當然在開發遊戲時會用到很多插件這是必然,但是往往在開發時,核心製程缺乏了體系,反而都著重在畫面的呈現 (實際上核心架構都爛掉了),對於商業遊戲專案的日漸肥大,慢慢會發現為什麼會需要框架輔助來制定一套製程,這也是為了產品往後能夠有效堆疊與維護。 ## 引擎選擇的迷思 不管選擇怎樣的遊戲引擎都能完成遊戲開發,但是會非常建議一點,要靈活思考與運用遊戲製作概念,這是不管使用哪種引擎開發都是通用的,就跟學程序一樣,你只要會一個程式語言,再去學另外一個語言都會比較容易上手,因為具備了相關的邏輯性與概念,只差別在於語法與習慣問題,相反的回到遊戲引擎也是一樣。 像我們之前專案有選擇使用 CoscosCreator 嘗試開發 H5 (長達 1 年多左右),當然後面我提議搬到 Unity,畢竟大部分的新人還是想從 Unity 著手,甚至公司未來主力想往手遊發展,相對 Unity 的社群也比較強大。然而從 CocosCreator 搬到 Unity 的過程滿順利的,基本上 CocosCreator 大部分是仿效 Unity 的操作與設計,所以很多共通點,加上本身在 CocosCreator 的遊戲製作概念流程有了 (框架),只是轉換語言與語法而已。 ## 如何思考遊戲開發 我個人會建議從遊戲製作層面開始進行思考,多玩遊戲多實戰,多玩遊戲顧名思義就是培養 Sense 與參考人家的流程,透過多玩遊戲進行調研; 多實戰就是將參考研究出來的論點,加以思考進行統整後,開始進行建構與設計,以下分享我的思考點。 - 如何有效進行 UI 製作與調度? - 如何有效進行遊戲階段之間的整合 (Logo -> Patch -> Login ...)? - 如何有效管理遊戲資源與資源加載? - 如何有效規劃專案目錄,讓團隊好對應與維護查找? - 如何有效將共用系統工具插件化與模組化? 當然思考點還有很多,其實從思考如何建構遊戲開始,就可以慢慢去挖掘一些相關的開源與做法,例如我要製作 UI,那我就會搜尋看看有沒有針對我使用的遊戲引擎相關的 UIFramework (這裡不局限於 Unity),慢慢挖掘後開始去思考建構。 ## 框架的建立 小弟本人也有經營對於 Unity 開發的框架 [OxGFrame](https://github.com/michael811125/OxGFrame) (不嫌棄的話,也歡迎隨時提 issue),像是剛剛有提到去搜尋有沒有 UIFramework 來幫忙輔助製作 UI,之前是使用 CocosCreator 開發關係,所以從 CocosCreator 著手,然而我的框架有滿多靈感來自於 CocosCreator 這套框架 [kirikayakazuto - CocosCreator_UIFrameWork](https://github.com/kirikayakazuto/CocosCreator_UIFrameWork),也開啟我的框架建構之路。 我發現台灣其實滿少人願意經營這一塊,主要可能會有技術成本、心力時間等問題,導致很少人願意花心思經營這塊,亦或者毫無頭緒,其實我的初衷是希望能夠幫助台灣遊戲開發貢獻一點力,幫助更多人用更有效的方式去開發遊戲,當然也非常鼓勵大家撇除意識形態,與對岸的大佬互相學習,不得不說大陸在這一塊真的強的沒話說。 ## 結論 不管是不是剛踏入遊戲業,或者對於遊戲開發有熱情的人,找到正確的方式很重要,進而從網路上學習 -> 重新思考 -> 消化成自己理解的。至於團隊部分就從同理心做起吧!有了同理心後,就會考慮到後人維護性,硬做的下場只會讓團隊每次只能住白宮 (做白工),導致後續的擴展與維護有一道高牆,甚至接手的人又要幫忙擦屁股,如果不想當那一個接爛尾的人,就從良好的遊戲開發做起,當然只要有興趣熱情不怕沒柴燒,屆時培養自己的遊戲製作魂。