繼去年參加TGDF後, 今年似乎沒有好興奮或好雀躍, 還少去一天其實是年假不夠用了
Indie space變得好盛大阿, 相比去年擠在會議同一層, 現在可以獨立一個樓層(60幾個攤位)
當天早上玩了幾款遊戲:
紳士之路Gentleman: 像素風的殺豬動作遊戲
幻.緹: 解謎冒險遊戲, 用光與影設計解謎機關, 挺新鮮的
打工吧!大俠!: 回合養成的武俠遊戲, 打工賺錢行俠仗義, 不過遊戲初期很多瓶頸
Garrison: Archangel: 機器人大戰3D格鬥遊戲! 好炫阿但是運鏡咻咻咻的變換讓人眼花撩亂
…
攤位太多, 可惜沒辦法好好玩過一遍
By the way, 眾神之鬥又進化了!!! 去年還只有幾個神, 現在已經能大亂鬥了~
第二天早上keynote請到了《Rez Infinite》製作人 水口 哲也
從他身上看到了製作人的執念, 一個人固執起來很可怕的
他深信《Rez》是非常適合用VR遊玩, 直到10幾年後VR裝置問世, 再加上觸覺體驗裝置(聯覺裝備 Synesthesia Suit), 打造了全新體驗的《Rez Infinite》!
為了做出 《Rez Infinite》到處募資, 貸款, 找投資者, 用盡洪荒之力終於成了, 也為下一代 Synesthesia Suit開發掙得研究資金.
水口 哲也也提到他們工作室的運作模式, 他的工作室沒有固定的開發者(員工), 所有開發者都是從外面找來, 一方面確保開發者的品質, 一方面也確認開發者是否對製作人的項目感興趣.
他認為影視產業, 音樂產業都是這麼運作的, 遊戲產業也是可以的.
由開發者自由的選擇參加遊戲專案,會不會哪天遊戲也真的變成這樣?

近幾年興起的遊戲群眾募資, 在國外已相當成熟
各種募資平台問世, 像是 kickstarter, Fig, Indiegogo, Ulule, Patreon, Gambitious, 魔點網, Campfire, …
本來, 遊戲開發者的生存方式就不只是依附於公司, 獨立開發者們除了自己貸款也能透過募資管道取得資金, 各有各的好與壞 😀
然而steam early access也是不錯的選擇, 能在遊戲有一定雛形後以低價格預先發售, 後續再開發進階內容.
林大涵先生指出投資玩家與一般玩家之間的微妙差異 “When people pre-order a game, they do that three months in advance. When they support a game three years in advance, they want a stake"
投資玩家多半是憑著一股希望遊戲問世, 參與遊戲過程的熱誠下海投資!他們期待成為遊戲的一部分

雖說優化是所有平台都必須重視的, 但是在性能略顯不足的手機硬體上, 優化格外重要
在Unity開發, 我們可以運用unity profiler觀察CPU與GPU的運行效能, 找出效能低落之處進行優化
侑虎科技的張鑫先生分享公司提供優化技術支援的心得與案例, 歸納了部分手機遊戲開法常見的優化瓶頸, 有分幾個大項: 渲染, UI, 資源載入, Memory管理
渲染方面:
– 控制draw call次數, 簡化Mesh數量, 多用batching, 少用動態生成material, 避免lightmap過大, 減少skinned mesh複雜度, 避免粒子系統數量過多, 避免shader program重複創建(減少shader variant)
– PS. 動態生成的Material(instance)有別於prefab裡的material, 無法納入batching
– PS. lightmap過大時, 會自動分割成數個小的lightmap
– PS. 計算skinned mesh的渲染資訊是從初始化狀態(T-pose), 由root bone到各個bone, 由bone到mesh, 逐一計算而來, 所以減少bone或者mesh複雜度是能增進CPU效能的
– PS. Material.SetPassFast與shader資源加載有關, 可參考UWA問答論談的 “Material.SetPassFast的CPU占用如此之高“文章
UI方面:
– 動態元素與靜態元素分離(避免UI合批後一有小變動整個UI重繪), 減少頻繁的Instantiate/Destroy或Active/Deactive切換複雜UI
– PS. 透過UIPanel分離動/靜態元素, 雖會減少WaitingForJob時間, 但也會增加draw call
– PS. Instantiate/Destroy或Active/Deactive UI會重新initialize, 占用緩存
AssetBundle載入方面:
– 避免短時間內重複加載卸載同一資源(可設定time clock自動卸載), 避免資源冗贅(可 設定AssetBundle包的相依性 )
– PS. 關於資源冗贅的解決方案可參考UWA blog"Unity 5.x AssetBundle零冗余解决方案"
Memory管理方面:
– 隨時注意memory使用量
– Mipmap層級越多, 越占用memory
結論提到, 現今的優化經驗並不重要, 到未來同樣的優化方式不一定適用, 我們需要的應該是研究問題, 從定位問題, 分析問題, 到解決問題!
相信自己並以成為一個專業的軟體開發者為目標吧
玩家喜歡一款遊戲會稱讚劇情很感人, 風格好優美之類的, 但是不太有人會稱讚這程式碼寫的真好
雷亞的鐘致遠先生以幽默方式示範結構化的程式碼幫助產出易維護易讀程式, 想成為專業的軟體開發者不妨試試吧
CTO的工作?
– 維持程式碼品質
– 建立有效且友善的開發環境(製成)
– 教育與招募
增進coding skill方向: 減少code complexity
– Functional programming
– OOP
– Interface (實踐abstraction)
隨著開發工具的提升, 遊戲開發的門檻降低, 每個人都能成為開發者
然而,如果你是軟體開發者的話,使用工具還是得理解工具背後的運作原理,透過系統性的學習(K書)或是實戰學習是都可以的
“There is no magic. There is only knowledge, more or less hidden." ― Gene Wolfe, Shadow & Claw
最後, 勇於面對程式碼的混亂吧!
話說,我提問太沒存在感了
你看不見我你看不見我
不負責任到此…
要甚麼需要修正/討論的內容也歡迎交流 😀