持續 🫠🫠🫠🫠 中
製程
前陣子在思考一件關於製程的事,還有自己的專業又哪部分真的專屬於自己,哪部分不是?
完全專屬於自己的應該就是理論知識(數學、色彩理論)、經驗、實作能力(編程、畫技)這些,只有「你來才行」的部分。
而「製程」不是,它本身不會專屬於誰
雖然「研發」出製程的專業能力是自己的,但在完成後這個「成果」就不專屬於自己了,它會變成某個獨立於自己的存在。
任何人只要知道這個製程,照著做就能重現與自己相同的成果,雖然還有一定門檻,但會減低很多。
像我們團隊的 3D 筆觸風格就是
為了讓團隊的所有美術都能達成效果,我們有一份很詳細的逐步製作流程文件(感謝主美 Yuki)雖然會有其他限制,但它幾乎消除了製做這種貼圖的門檻(但也有相應的缺點)。
有足夠知識的技美或 3D 應該能從文章提到的片段推敲出做法,但那份文件可以讓任何人在完全不懂原理的情況下重現甚至做出更好的成果,實際上,隊內真的懂原理的只有我與主美吧。
所以,意思是當我把製程優化的越好、使用門檻越低,它與我的聯繫也會越來越低,最後我的存在與否就無關緊要了。
總覺得,意識到這件事還蠻令人害怕(哲學上的),有種把自己的獨特性?或不可取代性分割出去的感覺 @@
這就是為什麼這種研發工作要有高保密性吧,因為外流就等於失去它應該帶來的相對優勢。也是為什麼 ConfyUI 用 workflows 稱呼他的節點圖,因為外流後任何人都能用。
還有為什麼一個好的技美對團隊的價值那麼高,因為即使他離開團隊,先前留下的技術資產還是會以某種程度帶來幫助。
(當然前提是有「好的」技美,我第一次工作時就沒進入狀況也不會分辨需求,花大把時間在沒用的東西上,經濟效應應該是負的==)
三下專題
※臨時隨機
給隨機系統加了一個隔離功能,可以執行幾次不影響&不被原先種子碼影響的功能,隨機函式會在執行完委派後恢復先前狀態。
可以用來跑一些不影響主機制的隨機,像視覺之類的?
※架構
後來才發現我在學的是 DDD (domain-driven design),但自己瞎摸也不確定觀念正不正確就是了,Presention 和 Infrastructure 蠻好理解的,最大問題還是 Domain 跟 Application 不太清楚怎麼分🤔
腳本數量多到一定程度後,開文件都直接用搜索的,翻資料夾找不知道要找多久。
老實說,專題程度應該用不到這種架構?要用可能就代表預期規模太大了,加上企劃的頻繁更動,花太多時間架構可能會…確實會增加沉沒成本。
我現在完全懂為什麼要有 Zenject 之類的 DI 自動注入框架,在全手動的情況下有一堆 interface 要傳來傳去跟本惡夢。
※反射工廠
工廠模式聽了好久,之前也試過,但都是用一堆函式 + 手動註冊進 Dictionary 裏,每次要增加生成類別都要手動處理。
這次嘗試用 Reflection 自動處理類別擴展,只要宣告一個 ReflectionFactory<T>,建構時就會去抓哪些 Type 繼承了 Interface,然後把實例物件的建構子快取起來,避免效能問題。
要生成的時候就輸入 Type Name 和建構子需要的變數輸入,比較大的缺點是建構子輸入也要統一,而且是吃 object[] 當參數。
弄出這玩意後,我把一堆東西都工廠化了,物件生成器(用工廠取得工廠)、物件行為、物件渲染器,擴展只要建立新 class 繼承 interface 就行,不用改一行既有程式,綜合起來應該是我目前做到最高程度的 SOLID 了。
然後反射好像連 dll 都抓的到,N 年前嘗試碰過 Rimworld 的模組編寫,現在也懂它是怎麼用 Interface 達成外部行為擴展的了,而且 C# 可以提供更高程度的行為修改,讓遊戲能被改成完全不同的樣子。
我也懂為什麼 Rimworld 裝一堆後 mod 要載入半小時了,Reflection 真的跑超慢。
資料驅動也不是問題,因為反射工廠也是用字串找類別的,我讓資料定義多一個欄位去指定就能設置物體的行為。
※Garbage Collection
遊戲有超嚴重的效能問題,打開 Profiler 發現整個更新週期都在 GC
我把腳本丟給 GPT 檢查,第一個問題是 Enumerator 和 Linq 造成的,改成寫入既有 List 就好了, GC 從 10K 降低到 6K。之前有耳聞 Linq 的問題,但沒想到那麼嚴重。
剩下是字串合併造成的,這是我沒想到的,每幀的大量字串合併導致了另外 4K 的 GC 次數,把字串預先組合好就沒事了。
剩下的 1.5K 靠 Deep profile 找,他可以精確追蹤到每行。
把有問題的函式丟給 GPT 後發現是 Func 造成的,修掉之後 GC 歸零。
※小踩雷
Unity 的 New Input System,設置完之後如果忘了先 git commit,會被 pull 吃掉,而且沒有警告,害我要重設一次 ==
※手勢控制
我讓玩家可以用滑鼠手勢控制一些東西,操作臺之類的,因為原本想弄《艾迪芬奇的記憶》那種更沉浸的操作感,嗯,原本。
※第一次大砍
原本遊戲有好幾種類型的謎題和系統,但架了一些程式和資料結構後發現規模太大了,而且有點擺錯設計方向,所以砍了所有謎題機制,把重點放在地圖探索上(這是一款雙人合作的太空探索遊戲)
然後跟主美討論後改了背景設定和新方向,還好美術部分已經完成的不太影響,而災情最重的企劃和程式都我負責的,而且主要系統框架是能沿用的…吧?
※全砍
沒有
期中前弄出第二版原型,跟主美試玩後決定全砍了。
災害範圍擴大到整組,半學期的工作量要拋棄掉,媽的當企劃壓力也太大。
最大問題是我們毫無先例可尋,雖然有概念相似的作品,但幾乎找不到真正能當參考的競品,核心機制太新穎了。(而且現有方向的美術表現也會受侷限)
之前 TGDF 聽《Storyteller》作者分享過,他們好像花了十年?打磨才完成那款作品,當時他就說「做沒人做過的事,等於解決沒人解決過的問題」,創新的最大風險就是你不知道要花多長時間才能成功。
我們擔不起那個成本…
所以跟主美討論後決定止損,把現有的東西當作業交了就好,畢專再考慮新方向。
創新果然不是凡人能隨便挑戰的==
然後期中跟老師試玩,修正過後的版本又被說很好、覺得不錯,幹,上次看他才偷跟組員說覺得沒機會,也不知道這次是客套還是實話,我前幾天才下定決心放棄這個。
你媽的,這樣搞我真的會崩潰 🫠🫠🫠🫠🫠
※新方向
決定改向後也跟主美重新討論不少東西,首先是重新確認期望跟目標吧,畢竟組員變了。
除了好玩之外,這次還要明確定義目標的規模。如果是重複遊玩型的,規模會限制在唯一核心機制加計分系統,類似 Islanders, Dorfromantik;如果是單次遊玩,規模會定在 Toem, Viewfinder 的一到兩關。
還有一部分考量要放棄,像是獎項,不是說不報了,只是設計時就不特別考慮獎項,有得獎很好,沒有也沒關係,因為不確定性太高了。
第二是個人表現的問題,我設計時其實有考慮怎麼讓所有組員都好表現…至少我有想,但後來放棄了,因為決策負擔太大,又不見得有收穫。
最後就是,正式畢專的企劃…應該說遊戲設計會交給主美,因為有些事我真的不擅長,後面再題細節。
所以這學期的成果就不沿用,弄完機制原型和期末企劃文件後就當作業交了,資料留著等之後比賽。時間考量,暑假不能找人試玩也可惜了。
角色設計課
我報了新的 CGArk 課程,這次是關於企劃和角色設計的《一登場即征服:讓玩家信服的角色設計》課程,講師是艾可米遊戲(做《失落迷城》的公司)的美術總監 Eeron。
※面試
這次的課除了書審之外還要面試,原本蠻擔心作品不夠,畢竟技能點都在技術和程式上,還好最後關頭把專題的圖片加進自介簡報裏,雖然都是技術和企劃相關的東西,但能講的東西多的多。講師說他有看到我的文欸,研究那篇 :DDDDD
原本蠻怕上這個課能力會差距太大(課程招生有要求三年的美術工作經驗),但老師說不用擔心,課程其實更偏重企劃,主要是教怎麼定義問題、合作、設計思維相關的,還有一些不用畫圖就能提案的方式。
天啊我超需要 (´;ω;`)
面試過程就不細說了,分享一個特別有印象的部分。
題目是關於自己做獨立和進公司工作,因為我是偏好自己做獨立的,所以講師問,我覺得如果自己要進公司工作,會遇到什麼難題?(或差別?有點忘了具體敘述)
總之我當時是說一些關於心態轉換上的答案。答案應該沒什麼問題,也是我的想法沒錯,但覺得當時沒表達好有點可惜,所以日誌這裡在補充一下。
這部影片算蠻準確的描述了我的問題,也分享一下。
簡單來說就是,我「太」重視個人學習了。
好學本身當然不是問題,問題在先後順序沒放好,自學搞自己的小玩意時,要怎麼研究都隨便我,但如果是工作,就該把解決問題放在第一位,尋找適當而非有趣的解法,甚至要去思考這個問題有沒有必要解決。
畢竟,對我來說搞砸了也能學到東西沒錯,但對老闆或投資者來說,我搞砸了賠錢的是他們。
這雷我踩兩次了,第一次是入學前的工作,第二次是二年級的產學專案,兩次都很爆炸==
這學期專題我盡量克制了,所以企劃時直接排除聯網,也不再嘗試用 Lua 提升擴展性…但看來光這樣還不夠,就像上面說的,學生程度的專案可能根本不用管架構。
正式畢專應該就完全放棄維護性了,盡可能縮短回饋週期可能更重要。
面試部分就醬,課程內容可能有保密問題就不細講了,如果之後能應用在專題上再分享,後面就聊一些比較針對個人的心得或上課期間遇到的有趣事情。
※學員
4/12 號是第一堂課,老師讓大家做自我介紹。學員範圍蠻廣的,除了遊戲業之外還有動畫、科技業,年齡跟資歷範圍也差很大,有五個學生都我們班的,其他還有大學剛畢業或主管級的人物。
※技美
第一週就是介紹一下講師和課程內容,然後簡單帶過一些設計思考的東西。這次除了講師以外,艾可米的遊戲總監也在,剛好趁機會問了和技美有關的問題,這裡也分享一下。
我有跟總監先生簡單介紹了自己在專題搞的東西,製程和 Shader Graph 之類的,他說這是(偏美術)的技美工作沒錯,只是這種風格的需求在國內比較少。
另一邊就是偏向工程或程式的技美,會需要更高的程式或手寫 Shader 的能力,一些案例像是輔助工具、或場景環境效果的過度之類的。
技美就是工程和美術的橋樑,你要有工程師邏輯又兼具解美術需求的能力,不一定要繪畫圖,但美感能力要有,要知道怎麼詮釋和實現美術的需求。例如想要真實 Shader 的話技美就要去找實現方式,或是美術說要 Tool Shader,技美要能分辨對方是要「哪一種」Toon Shader。
總之就是審美能力很重要。
(前一句忘了),技美難找不是沒有原因的,如果我有這方面的專長的話可以考慮繼續深入。
我應該找個地方把所有聽到技美的資訊統一紀錄。提醒一聲,上面寫的不是對方的原話噢,我當下的筆記很碎片,這是靠筆記和記憶解讀的內容。
通勤四小時,每週回家作業也要多花四到八小時…加油RRR
※專業 1
第一周作業是找 50 款以上的產品做分析,兩人一組,主題任意(我選 Roguelike ),第二周上台報告。老師會給每組回饋,到我的時候因為犯錯被指正了,因為我在 Miro 和口頭結論的時候多說了一句以學生的心得 (´;ω;`)
其實原本也沒左邊那張,是我後來加上的 🫠
但我覺得結論本身應該沒問題,所以吃飯時也找老師追問了一下。老師也說沒問題,我會追問就代表自己對結論是有信心的。
老師跟我解釋說,聽眾在乎的是你報告的內容,不是你的身份。
問題是那個「學生」的部分,聽眾的時間很寶貴,他是來聽你的「專業論點」而非學生態度的想法,說話和報告時要維持專業態度,不要自降格調。
他說如果遇到屬下這樣說話,就會去追問為什麼要加這個?加前面這句的目的是什麼?
目的…
老師應該知道吧,只是沒直說。
我自己也知道…就是某些信心議題沒解決。
即使我有意識到這件事,即使我清楚自己只是自卑,但我還是加上了,為了減輕自己的心理負擔。第一周回答某個問題時也是…
老師說,不用特別去「改變」,他很怕別人聽他的建議後說會改,這不是一時半刻能改的,因為可能是一種慣性了…藏不住的。
有意識到、知道為什麼不該這樣就好。
確實藏不住,日誌還能做些自我審查,但現實的言行已經根深蒂固了,這是一種慣性…
一種對自己的不信任。
※專業 2
第二周作業,又換了不同組別,這次要用兩軸去分析遊戲的定位。因為第一週作業有累積的資料,所以我們組拿我的 Roguelike 遊戲延伸。
我拿自己玩過(或接觸過)的遊戲分析,原本只是想說自己玩過比較好判斷而已。
但組員說這張圖也可以證明我涉獵廣泛,是這種遊戲的專家。我沒想到玩個遊戲也有專家這回事,算聽到了沒想過的觀點吧,學到一課了。
雖然我對報告時這張圖的功能只剩證明我的專業不太滿意,但算了。
※爬蟲
第二周上課就看到有人用 Python 爬蟲挖資料,爬蟲我也聽好久了,但都沒學。剛好當週的作業我靈機一動,想到說不定能用 Google Apps Script 爬蟲。
我問 GPT 結果還真的可以,就讓他寫了,而且效果很理想。
基本上,原理就是把整個網頁的 HTML 抓下來,然後用 Regex 之類的方式提取出自己要的內容吧,像是 Steam 商店頁面的標籤、評論數、縮圖之類的(可以用 Formula 插入圖片) 。
至於提取用的 Regex 可以直接給 GPT 整段 html 讓她幫忙寫。
如果要查詢特定標籤下的遊戲,可以從查詢頁面設好 Filter,然後把 URL 中的條件記下來。要改變排序方式也是。
但最棒的還是 GAS 跟 Google Sheet 的關聯性,抓到的資料可以直接寫進表格當線上資料庫,而且腳本也是遠端執行的,不用在本地部署或配置什麼。
剛開始腳本挺亂的,但我讓 GPT 幫我重構了配置性高一點版本,之後有需要應該可以重用。有這工具後競品分析找樣本應該容易許多。
後來發現另一個缺點,抓遊戲評論的時候遇到的,如果訪問頁面之前有內容警告的話就讀不到,GAS 的 UrlFetchApp.fetch(url) 只能請求頁面 html,沒辦法自動點擊按鈕,所以遇到這種情況好像就只能跳過了。
※問答
最後是一些報告回饋、問答環節聽到的資訊,我裡就用條例的。
提問是要得到自己想知道的事,不是讓對方說他想說的
回答問題是花自己的時間,答重點就好,滿足對方提問的目的就好,不用說服對方
注意 AI 的假結論,聽講時覺得不合理的地方要點出來
對講者回答答案有質疑也應該提出
為甚麼提問者會問你講過的問題?
這可以提供一個反面思考,是你的報告有什麼潛在問題?沒說清楚?簡報不清楚?或脈絡問題?
但當然也可能能只是對方沒專心聽
遇到提問時,未定的東西就說未定就好,不要在提問壓力下草率決定,對方可能也沒這意思,只是單純好奇而已
SWOT 的重點是優勢和機會,因為劣勢或威脅是執行者可以(或需要)靠能力蓋過去的
重新調整
講回專題,老實說,要把設計工作交出去是件蠻痛苦的事情,因為我覺得自己經驗最豐富?因為不認為別人能做更好?或我覺得邊設計變寫程式會更快?
或許能寫個小作文為自己辯護,指責組員都不參與或不理解我的想法…?
但還是算了,這種行為對事情沒幫助,也不是身為組長該有的行為…或許也無關身份?只是單純專業態度或成熟度的問題而已。
而深入思考才發現,問題只是我太想被人看見而已。
之前就被主美說過,我的技美身份已經很引人注目了,也確實如此,除此之外還有身兼企劃和程式的頭銜在…但我想要更多。
這種想被注意到、想被關注、想被在乎的匱乏感是個無底洞。
恐怕也是另一個創傷特質吧,要跟著我一輩子的。
一個成長過程總是受到忽略的小孩,很想要父母(或他人)的關注,但又很害怕被注意到而導致的控制。這是一種矛盾的感覺,去諮商初談時也被老師也點出來過。(對,我去做諮商了,下篇【生活】會再談)
這也反映出我現實的部份行為,有時希望自己能低調點但又忍不住表現。
持續至今的日誌可能也是填補心裡空缺的手段吧。
或許也是我總想自己完成所有事情的原因之一…
畢竟這樣所有目光都只會聚集在我身上。
而我也能像個成熟獨立的孩子一樣
不用依靠任何人
像一直以來一樣
※理想
說真的,遊戲太難並不是什麼問題,參數平衡都能再改,設計本來就得花時間調整,更何況原本就計畫花整學期和暑假處理遊戲設計。
所以被質疑、點出問題、發現現實合理想不符後是真的蠻挫折的,畢竟我知道自己在做什麼、知道暑假至今每個決策和階段想達成的目的,也確實一步步走在自己預期的路上。
只是沒考慮到人本身。
可能是參與感不夠吧,導致士氣和向心力低落成為最大的問題,因為從上學期開始,基本上都是我埋頭想企劃,規劃執行方式後讓大家各自完成,一個指令一個動作。
老實說這跟我最初期望或想像的也不同。
我嚮往的是那些獨立團隊的故事中,大家討論熱絡、積極提供想法的樣子,但我沒做到,不是不想,只是缺乏這種能力而已。
讓社交能力低落的人當隊長就會有這種問題?
至少我自知自己不是因為多會領導人而當隊長,只是單人能力足夠撐起這個頭銜而已。
我真的不是什麼特別可靠的隊長啊…或許我根本不適合當?
有時也忍不住想,如果當初單幹會不會更簡單?或當個小組員執行任務就好,畢竟不用承擔決策責任真的輕鬆很多。
但就想想而已,我不會突然說不幹了就擺爛,也不會後悔現在的決定。
有人能做的比我好嗎?
或許吧,班上也確實有企劃能力更強的人,但我不會找對方合作,我不會放下組長位置,從決定組隊的那一刻就不會了。
我不會後悔的。
這是我的決定,當隊長不是我多擅長這件事,而是因為這裡有我想得到的東西,有我獨自一人得不到的東西。
不是誰逼我的,是我想當才當的。
簡單的路多的是機會選,但既然選了難的,就算哭著也要把他走完,不要放棄或擺爛,再挫折也要負起責任。
沒有什麼會真正白費的。
紀錄了那麼久,我很清楚所有的付出、所有的努力都會給我帶來某種程度的收穫,即使不是馬上、即使看起來很微小都是珍貴的收穫。
這些紀錄確實留著,周圍的人也確實看著。
我很努力了。
真的很努力了。
做不到就交給能依靠的人吧,就算少一點關注也沒關係,最重要的是大家在過程中是開心的。
這才是我最希望的。
這才是我想成為的樣子
※回饋
重新思考問題後,發現要改善的點有四個,基本上全都指向缺乏回饋的問題吧,也跟主美討論了解決方案。
第一是企劃或遊戲設計工作的問題,上面提過,解決方案是讓主美從很草的提案開始,大家到到圖書館進一步討論,讓所有人都參與前期設計,最後最好弄個紙面能嘗試的版本。
第二是原型進度回饋太慢,我得改掉程式習慣,不管維護性和架構了,反正這裡沒有什麼長期的問題,盡量每週都有新的原型進度,縮短回饋循環是最重要的。
第三是概念圖,概念美術在初期遊戲樣貌還不清楚的時候,能提供遊戲樣貌的明確想像,雖然有專門的組員負責,但可能需要一些備案分擔壓力,像找參考圖、畫簡單草圖給其他美術、用 AI 之類的。
最後是溝通和做事效率的問題。
遊戲開發前期工作真的不該遠端 + 每週開會,現在該有的溝通密度連該有的百分之一都不到,進度超拖還會有找不到人的問題。
之後最好實體工作,有進度直接交,要討論直接講,遠端還是等量產階段再說吧。
星庭手記
最後再補充一下,上學期的專題作品《星庭手記》的系列社群文章都發出囉,可以到
大學專題的資料夾去看。
然後我們也投了放視,入圍複選但決選沒上,有點可惜,但不算意外吧,我對這個成績已經很滿意了。