目錄 Table of contents
  1. Games
    1. Bionic Bay: 換影循跡 (2019 - Now)
  2. Tools
    1. Unity-AnimatorTransitionCopier (2020)
    2. Unity-EasingAnimationCurve (2020)
    3. Steam Marketing Tool (2021)
    4. vid2gif-ffmpeg-gifski (2022)
    5. GDC-transcript (2023)
    6. SS Water Reflection 2D (2022)
  3. Side/School Projects
    1. PROJECT1ON (2019)
    2. Turn-based strategy but you are RNG (2023)
    3. Swaportal (2018 - 2019)
    4. Dark Cabin (2022)
    5. Dungeon Generator (2016 - 2017)
    6. SHOOT TO MOVE (2020)
    7. SPIDER CIRCUS (2022)
    8. Card Recogization for Ipad (2018)
    9. VR Web Browser for Android (2019)
    10. CUDA Acceleration for Game Simulation (2018)
    11. BANG MAZE (2018)
    12. TANKMAN (2018)
    13. NS-SHAFT-Tetris-Battle (2018)
    14. TBC. 作品集仍在建置中

Games

這裡以商業遊戲作品為主,大概會有好一段時間不會有新東西。


Bionic Bay: 換影循跡 (2019 - Now)

On-going, Windows, 2D platformer game, Unity.
A three-person full-time project with one part-time sound designer.
Made by Psychoflow Studio & Mureena Oy.

Steam頁面《Bionic Bay: 換影循跡》
Facebook 粉專 @BionicBayTW
Twitter @BionicBay

從 2019 年底全職做到現在,算是第一款商業遊戲產品。這種痛苦還要持續多久
負責的部分有:

  • Gameplay Programming
    • Character Controller
    • 2D Camera Control System
  • Physics Programming
    • Swap Physics (Solving constraints while scaling)
    • Liquid Simulation (Smoothed particle hydrodynamics)
    • Ragdoll Physics
    • Blower(Wind) Physics (Air Momentum)
  • Graphics Programming
    • Sprite-based Blend Modes as Photoshop
    • Screen Space Water Reflection
    • Liquid Rendering
    • 2D Light Casting (Shadowing)
  • Tool Programming
    • In-game Level Editor
      • Cloud Storage
    • Collider 2D Generator
    • Build Pipeline (Build -> Upload Google Drive -> Upload Steam)
    • Asset Importing Pipeline
  • FMOD Integration
  • Character Rigger & Technical Animator

Tools

大部分是輔助遊戲開發而寫的工具。


Unity-AnimatorTransitionCopier (2020)

Open-source(MIT), Unity, editor tool.
AnimatorTransitionCopier is a simple tool for copying and pasting animation transitions in the Animator editor.


Github repository

一個用於複製 Unity Animator 中的 transitions 的小工具。
當初的開發紀錄: Unity Copy Paste Animator Transitions


Unity-EasingAnimationCurve (2020)

Open-source(MIT), Unity, editor tool.
EasingAnimationCurve is a simple and fast solution of converting Easing functions to UnityEngine.AnimationCurve.


Github repository

把常見的 Easing Functions 以最少的控制點轉換成 Unity 常用的 AnimationCurve 型別的小工具和 Presets。
當初的開發紀錄: Unity AnimationCurve with Easing Functions


Steam Marketing Tool (2021)

Open-source(MIT), Chrome Extension, front-end webpage.
Steam Marketing Tool is an Chrome Extensions for analyzing marketing data on Steam and Steamworks.


Github repository

擴充 Steam 商店頁面和 Steam 後台頁面的功能。

  • 可以快速以圖表CSV輸出願望清單的地區分布
  • 擴充 Steam 商店頁面的超連結,可自定義想要加入的網站列表,目前預設有:
    • SteamDB
    • Steam Scout
    • Gamalytic
    • VG Insights
    • Real-time followers
    • Micro Trailer

當初是開了 Bionic Bay 的 Steam 商店頁面後發現要追蹤願望清單的地區分布實在太狗屎了所以做了這個擴充來輔助自己使用。而商店擴充單純是不滿足於 Argumented Steam 所提供的擴充連結才自己也寫了一套功能來方便開啟常用網站。


vid2gif-ffmpeg-gifski (2022)

Open-source(MIT), Batch script, Windows only.
Simple batch scripts for making high quality compressed gifs from videos on Windows.


Github repository

一個能夠快速地把影片檔轉換成高品質高壓縮率的 GIF 圖片的小工具。
會寫這個也是為了行銷用途,還有就是寫文章的時候用的 GIF 也大多是透過這個工具直接製作。


GDC-transcript (2023)

Front-end web, Whisper AI, Google Colab.
GDC-transcript is a pet project of PeDev and DK Liao in an attempt to transcribe publicly available videos in Game Developers Conference’s YouTube channel.


Github repository

DK 發起,一個希望把全 GDC 影片逐字稿、字幕以 Whisper AI 爬下來藉以輔助觀看、翻閱的計畫。
我單純協助一些網頁前端、Whisper、Colab 的部分功能撰寫。


SS Water Reflection 2D (2022)

Unity Asset, Shader, Vfx, Bulit-in RP only.
Just a visual effect we implemented for our game Bionic Bay.

Unity Asset Store

專門用於 2D 遊戲的螢幕空間水面反射效果。

當初閒著試試把 Bionic Bay 專案有寫的一些小功能拔出來賣。
只支援 Bultin-RP 是因為 SRP 沒有 GrabPass ,要改成 SRP 的話原本即放即用的便利性(完全不需要指定反射圖層,只要在水面圖層之前渲染的東西都一律反射)會大幅降低,結果 Reivew 都在討 URP,無奈。


Side/School Projects

業餘時間、學生時期參與的專案。基本上 2019 以前的作品都是學生時期的黑歷史,斟酌欣賞。


PROJECT1ON (2019)

GMTK Game Jam 2019 selected game, Windows, Unity.
Made by PeDev, Murlokk, Arthur.
PROJECT1ON is a puzzle platformer, where you can use “only one” slice of a 3D space as your platforms.

Itch.io 遊戲頁面
遊戲介紹

一款可以改變角色所屬的二維平面在三維世界中的旋轉角度進而改變地形的解謎遊戲。

第一次跟認識的人窩在 LAB 玩 Game Jam 的成果,當時一做完就覺得我們是天才。
沒過幾天查到 Perspective 後就一陣顫抖,一切變得索然無味。


Turn-based strategy but you are RNG (2023)

GMTK Game Jam 2023, Personal project, Windows, WebGL, Unity.

Itch.io 遊戲頁面

在回合制戰鬥中,不直接控制角色,而是控制亂數順序的策略遊戲。

第一次獨自參加 Game Jam 的成果,當時一做完就覺得我是天才。
沒過幾分鐘發現我根本沒投稿後就一陣顫抖,一切變得索然無味。

心路歷程寫在這篇:我參加了 GMTK Game Jam 2023


Swaportal (2018 - 2019)

A school project, 2d puzzle platformer, Windows, Unity.
Made by PeDev, Peggy (Character, Monster, Environment Artist), Gwan (English Translation)

改天應該會把遊戲放上 itch.io,當時有用一些版權音樂沒拔。
先放實機遊玩影片墊一下:

一款透過「與物體交換位置」為核心玩法的解謎遊戲(不過其實很吃動作要素)。
大三遊戲企劃課的作業,Bionic Bay 的前身之一。
做完之後有參加一個好幾所公立大學合辦的地下遊戲比賽(完全沒有對外宣傳,只有自己學校知道的怪比賽),意外地得到很不錯的成績,才進而讓我有迷之自信想把遊戲做下去,結果就這樣陷入遊戲開發的泥沼中。
不過方向差很多,當初這款是更著重 Swap 應用的遊戲,但也因此更吃玩家吧,需要真的習慣一些非典型操作(像是跳躍 + 交換保留慣性)才有辦法好好體驗遊戲。

更早以前還有個方塊美術版本的,一開始是用 GameMaker Studio 2 做的。


Dark Cabin (2022)

1 week project, a 2-person split-screen online coop horror game, Windows, Unity
Made by Kevin (Designer, Programmer), PeDev (Graphics programmer, Character gameplay programmer)

由 Kevin 發起,花了一個禮拜一同製作的實驗性雙人合作恐怖遊戲,不過以結論來說當初想實驗的東西沒做出來,目前專案無限擱置中。
也是第一次嘗試:

  • 連線遊戲
  • 分割螢幕
  • 黑白風格化渲染(參考 White Night
  • AI 產材質貼圖

Dungeon Generator (2016 - 2017)

Academic cooperation project, Unity tool, Procedural generation.
A node-based procedural level genreator inspired from Joris Dormans’s Machinations research.
Team: Ze-Hao, PeDev, Harrison, Bagus, Ally

Github repository

基於節點與自定義迭代規則來程序化生成房型組成。

大學時期的一個產學合作兼碩士學長的論文專案,我當時負責撰寫從 Node Graph 生成實際關卡的部分(基於預定好的 Node 對應房間的規則找尋無碰撞的可行解)。


SHOOT TO MOVE (2020)

GMTK Game Jam 2020, “Out of Control”, Unfinished game, Unity.
Made by PeDev, murlokk, Arthur, Kevin.
Rhythm + Roguelike + Craft + Move to control all weapons.

第二次和朋友(還是沒有半個美術人員)參加 GMTK Game Jam ,主題是 Out of Control,本來想做成「每場戰鬥都能夠添加一個元件至機體上」 + 「每次按下上下左右的方向鍵都會發送傳遞信號給相連的元件(一個拍點傳遞一格)」的 Roguelike 節奏打飛機遊戲。透過「移動即行動」的概念期盼可以製作出後期極為混亂的場面:

  • 舉例來說加入一些讓戰局更混亂的晶片(比如預設的移動晶片,觸發當下機體會朝該設定方向移動一格,當它不是以預設情況出現時都會讓操作變得很複雜)

不過最後我們沒做完,功能是寫出來了沒錯但敵人 AI 和關卡配置都設計的跟屎一樣所以也沒投稿。


SPIDER CIRCUS (2022)

Faust Game Jam 2022, 4-player Coop game, Windows, WebGL, Unity.
Made by PeDev, Kumama, Cliff Lee, Momo, Allen.

Itch.io 遊戲頁面

四人合作讓肥宅玩鯉魚躍龍門的遊戲。

第一次參加線下的 Game Jam 跟完全不認識的人組隊,主題是「怪奇運動」。
稍微有趣的是 這大概是我做遊戲以來最完整的陣容,有企劃、雙程式、美術、音樂,雖然 5 個人裡面有 2 個沒遊戲開發經驗,而我沒線下 Game Jam 合作經驗,所以結果還是做得比較保守。
然後參加實體 Game Jam 才真正了解原來 Game Jam 根本不用做的這麼累(?
我感覺我們做得超級健康的,大家都選擇自己已經會的東西來實作,在會場吃好吃飽、回家睡好睡飽,社交意義比做遊戲本身的意義還要大。
我也稍微有點不滿意這件事,一直以來都覺得 Game Jam 是個好機會可以拿來嘗試自己不曾試過的東西。
這個專案中我主要負責的是一些 2D 物理的東東:繩索物理、人物 Ragdoll 、蜘蛛移動等等,以及最後發表前花了一點時間做了個 outline 綻放的特效這樣。


Card Recogization for Ipad (2018)

Academic cooperation project, iOS, Unity.
Recogize the encoded card via the camera of iPad mini 2015.

產學合作案。
Unity 的卡牌辨識系統,目的是提供一個 Vuforia 以外的方案。
我在團隊中負責 Unity 端的所有開發項目,以及辨識方案的提供者,也配合業主需求撰寫 Adobe illustrator 的擴充腳本以方便卡片設計。

  • OpenCV 影像處理 + 辨識
  • Adobe illustrator Script 來驗證卡片設計的編碼符合規範
  • 實作具有 Error Correction 性質的編碼以確保辨識順利

VR Web Browser for Android (2019)

Academic cooperation project, Android, Unity.
Embed a web browser in 3D scene on Android for VR devices.

產學合作案。
目的是提供一個可以在 Android 平台上使用的 3D Web Browser ,用於 VR 裝置使用。

  • 支援多點觸控
  • 支援網頁內的影片
  • 支援 HTML5 (Canvas 應用)
  • 支援多數網頁事件的 callbacks (例如點擊 <input> 元素會呼叫一個相對應的 callback,可讓 Unity 端接收並執行對應操作,例如呼叫虛擬鍵盤。)

這個專案是我一人負責,內容稍微複雜了點,我一共寫了:

  • GeckoView 建置並導入進我的 AndroidWebViewLib 專案(GeckoView 這是個數百 GB 的開放原始碼專案)
  • 以 Java 撰寫的 AndroidWebViewLib.aar 是一個提供 Android WebView 元件的 Lib
  • 以 C++ 撰寫了一個 Linux 的 Library NativeRenderLib.so 是一個將 WebView 的 OpenGL texture 轉給 Unity C# 端使用(用以顯示於 RenderTexture 上)的橋梁。
  • Unity 專案本身提供 WebView Component,也包裝了 AndroidWebViewLib 的 API 以便使用者可以直接在 Unity C# 上操作,以及提供一些使用範例。

與 Asset Store 上現成的 3D WebView for Android and iOS (Web Browser) 相比,我是以 Firefox 的 GeckoView 進行實作,而非 Chrome 的 WebView。
當時研究 Chrome WebView 有一些缺陷無法解決,例如:無法偵測接收點擊 <input> 元素的事件,部分 HTML5 支援度不足。而且上面 Asset 的作者不會提供 Android 端的原始碼,所以無法做深入應用。

隔了一兩年之後發現這個 Asset 作者賣翻了,早知道我也把美術包得好看一點然後上架:(


CUDA Acceleration for Game Simulation (2018)

Academic cooperation project, CUDA programming, C++
Using CUDA programming to accelerate the simulation of slot games.

Youtube

產學合作案,用 CUDA 加速計算指定 Slot game 的機率模擬並統計各項分布。
我負責一部分的 CUDA Programming。


BANG MAZE (2018)

An assignment to make a “Maze” for a Unity class on college, Windows, Unity.
First-person horror.

Unity 遊戲製作課的作業,題目是《迷宮》,大約兩個禮拜的課餘時間專案。

作業只是把迷宮生出來很無聊,就順勢做成恐怖遊戲了,直接使用 Spooky’s Jump Scare Mansion 的設計邏輯 –
「拿一個很蠢的東西做 Jump Scare 」。

那時候我同溫層還蠻愛看各種惡搞聖結石的影片(現在他已經完全淡出 youtube 了),就順勢拿這題材來做。
遊戲主旨大致上就是逃離 BANG 怪追殺,可以透過 訂閱 按鈕來保護自己免於追殺,也能透過他老婆的聲音來引導怪物的移動路徑,最後逃出這裡。
事隔這麼多年才公開,希望影片別吃版權砲。
遊戲完整流程影片


TANKMAN (2018)

An assignment to make a “Battle City” for a Unity class on college, Windows, Unity.
The “Battle City” game called “Tank Battle” in Chinese. So the theme is more about the tank itself.
Third-person action (not shooting).

Unity 遊戲製作課的作業,題目是《坦克大戰》,大約兩個禮拜的課餘時間專案。

因為那時候不喜歡坦克、射擊、戰爭類型遊戲,所以就亂搞成第三人稱動作,基本上就是個想到什麼就做什麼莫名其妙專案。目標是想做出很帥氣的第三人稱動作遊戲,不過我當時的美術力和技術力都不足,現在看蠻慘不忍睹的。

花最多時間都在搞骨架動畫、坦克的模型拼裝。


NS-SHAFT-Tetris-Battle (2018)

An assignment to make a “NS-SHAFT” for a Unity class on college, 4-person local-multiplayer, Windows, Unity.
NS-SHAFT + Tetris Battle.

Unity 遊戲製作課的作業,題目是《小朋友下樓梯》,大約兩個禮拜的課餘時間專案。

核心概念就是把《小朋友下樓梯》和《俄羅斯方塊》融合的 2v2 本地多人對戰遊戲。

  • 玩家可以控制角色去抓住方塊、旋轉、向下投擲。
  • 方塊的規則就同《俄羅斯方塊》,消除一排後會讓敵方底下增加一排。
  • 當角色摔碰到底下方塊或是上方尖刺都會扣血,當生命值歸零後角色死亡。
  • 遊戲目標就是要讓敵方隊伍的所有角色死亡。
  • 每隔一段時間雙方會取得道具(轟炸自己最高的那排版面、敵方增加畸形方塊、補血)。
  • 每隔一段時間會有全局場地效果,(傳送門、波動拳、地圖隨機轟炸)
  • 角色有一個特殊技「直線下踢」,期間可以直接視為 l 型方塊,若有進而造成連線成功則不會吃到墜落傷害,連續使用的話很帥。

實際遊玩的負擔蠻大的,當初設計不良導致按鍵太多,光要習慣就得好一段時間。
多打少不見得有優勢,彼此之間會有物理碰撞、波動拳會打到自己人、有 bug 導致磚塊預覽只會有一人顯示,所以可能單人方還比較有優勢(但是傳送門開的時候多人優勢很大)。


TBC. 作品集仍在建置中