Otk4lmvemyonzjxxfnus

鄒濬安 Eric Zou

我是熱愛製作遊戲的青年,大學時期就讀電機工程系,也是在大學時期接觸到程式語言,因此開始覺得自己可以透過精進程式語言往遊戲業發展。碩士就讀資訊工程系,並跟隨一位遊戲領域相關的教授進行研究,在碩士期間專研於 AI 、 Machine Learning 、PCG 等領域。

軟體工程師

台灣科技大學 電機系畢業、台灣科技大學 資工研究所
Wugu, New Taipei City, TW
[email protected]

經歷

宏正自動科技軟體工程師,2020.2 ~ 現在

  • 目前擔任產品:UC9020 與 UC9040 產品維護工作,以撰寫 Linux C/C++ 與 8051 C 為主。
  • 於開發中心產品擔任 STM32 晶片程式開發。

鈊象電子遊戲測試員,2019.6 ~ 2019.9

於研究所期間獲得實習機會前往鈊象電子進行實習,於實習過程中了解了遊戲業的生態,對於銜接遊戲業界有良好的認知與幫助。

臺灣科技大學資訊工程研究所,2016.9 ~ 2020.2

  • 於產學合作案中,臺科大撞球團隊協助廠商在 Unity 上實做撞球遊戲的各項應用,如:
    • 採用了 程序化內容生成 等技術實作做出 撞球關卡自動生成系統
    • 採用了 Machine Learning 協助學長實作預測撞球路徑的 路徑預測系統
    • 採用了 Rule-based AI 協助學長實作了 撞球 AI 系統
    • 採用了 Machine Learning 協助學弟實作 新版撞球 AI 系統
    • 為方便開發,有別於廠商提供的平台,我們自行研發了我們的撞球遊戲,採用 自製物理系統 覆蓋 Unity 原本的碰撞機制,已達到符合真實撞球的特性。
  • 於碩一時期修習 初階圖學的相關課程 ,學習到有關 OpenGLShader 等圖學基本知識,並實作作品。
  • 於碩一時期修習 類神經網路資料探勘人工智慧 等與資料應用相關的課程,並實際應用於產學合作案

臺灣科技大學電機工程系,2012.9 ~ 2016.6

  • 於專題研究中使用 C++ 語言與 OpenCV 套件開發了機器人馬拉松比賽的 AI 系統。
  • 參與 2015 年舉辦的 RoboCup 協助設計與維護機器人的 硬體電路板 與部分 AI 程式。
  • 於大四參與 手機遊戲開發 課程,並利用 Unity3D 完成了遊戲 DUEL 的開發,並獲得課程 佳作
  • 曾參與過 Android 行動 APP 開發課程並與隊員製作過 APP。

技能 Skills


Readings 00 00@2x

Unity/C#

於大學時期有用 Unity 開發小遊戲的經驗。於研究所時期參與了產學合作案,因合作夥伴公司之遊戲開發於 Unity 上,因此有很長一段時間持續在接觸 Unity。


Readings 00 01@2x

機器學習/Python

於研究所時期有選修機器學習等相關課程,並實際運用於撞球的路徑預測中,日後也參與學弟們的論文,採用機器學習的方式研發撞球 AI 。


Readings 00 00@2x

Android/java

於大學時期,有參加過 APP 應用開發課程,並自製一套用藥提醒 APP,可自行登記藥種、新增用藥時間、醫師姓名等等資訊。


Readings 00 01@2x

C/C++

於大學專題時期,有使用 C 於 Arduino 控制板上寫入機器人程式,並採用 C++ 與 Open CV 等視覺辨識完成機器人運動會的各項運動項目,並奪得佳績。


Readings 00 00@2x

遊戲人工智能

於研究所期間研讀大量 AI 相關論文,並且參與學長研究撞球 Rule-based AI 的研發,


Readings 00 01@2x

程序化內容生成

於碩士論文時期,已如何產出具娛樂且難度要求的撞球關卡作為題目,並實際應用並產出盤面。


Robocup 2015

於 2015 年參加國際機器人足球賽「Robocup」,與有經驗的學長一同撰寫機器人的對策程序,運用 C++ 與 Open CV 撰寫策略邏輯,將策略傳送至 Arduino 單晶片控制板中,控制板搭載機器人運動學程式,指揮機器人按照策略邏輯執行。


Paragraph image 01 00@2x
Paragraph image 01 00@2x
Paragraph image 00 00@2x

DUEL

DUEL 為大學時期開發的手機遊戲,期主題為美國西部的牛仔風格。期劇情描述一位牛仔為了復仇而一路上討罰仇家的故事。該遊戲於「手機遊戲開發」的課程中獲得「佳作」。

自製的過場動畫

利用 Unity 3D 的動畫編輯功能,我們做出了精緻的過場動畫,讓玩家更能融入西部牛仔為了自己心愛之人的死而復仇的驚心動魄的劇情。

Paragraph image 00 00@2x

簡單的遊玩體驗

DUEL 並沒有用到許多高深的 Unity 功能,但我們開發小組更著重於遊戲性的部分,為了確保機制與關卡的合理性,我們反覆與調整遊戲的機制與功能,讓玩家有更好的遊玩體驗。

Paragraph image 01 00@2x

考驗玩家的反應力

本遊戲著重於玩家的反應力,透過瞬間反應避開敵人的攻擊,並找尋縫隙開槍藉此打倒敵人。透過不斷調整難度,讓玩家更須集中精神在敵人的攻擊變化上,使得玩家有刺激的遊玩體驗。

Paragraph image 00 00@2x

電腦圖學練習作業

此作品中完成於碩士期間,選修電腦圖學課程時,練習了如何使用 Open-GL 實現 3D 物件的 Transformation 的運用、Shader 的運用、基本的 Cube Mapping 等等。

Paragraph image 04 00@2x
Paragraph image 04 01@2x

可控制 Panel

介面下方的控制 Panel 呈現許多功能,能讓使用者透過操作下方的 Panel 來切換與呈現該作品中的許多細節。

Paragraph image 00 00@2x

調整軌道形狀

該部分為曲線練習,可分別選擇三種曲線方程式來製作軌道,分別有 Bézier、Hermite 和直線連接三種模式。

Paragraph image 01 00@2x

基礎 Phong Shading

在地形與模型上,接套用了基本的 Phong Shading,可從右圖看出山丘有高低差與背光所導致的陰影,這樣的效果讓畫面看起來更逼竟真實的真實。

Paragraph image 00 00@2x

視角轉換

該部分為練習 MVP 互相轉換的部分,透過將攝影機放置在雲霄飛車上來練習從 World 視角轉變為 Model 視角。

Paragraph image 01 00@2x

海面 Shader & Cube Mapping

該部分為練習更進階的 Shader 操作,如海浪的曲線是透過外部將時間傳入 Shader 後,再運算出波浪的樣子,且該波浪會隨著時間推移。


我們也在這個練習中學會如何利用貼圖來達到 Cube Mapping 的效果,讓海面看起來有反射背景的感覺。

Paragraph image 00 00@2x

撞球路徑預測系統

此為碩士時期參與的產學合作案。雖為學長發表的論文,但有參與方法發想與製作過程。若要在短時間內透過數學實際運算撞球位置將會耗費大量的運算時間與資源,因此我們研發了一套利用 Machine Learning 來建構一個可以取代物理模擬的 Model,透過 Model 直接推測出撞球可能的物理運動結果,以節省大量的思考時間。

Paragraph image 00 00@2x

極高的準確度

可由右圖實驗結果看出,透過預測系統預計的母球落點位置幾乎與實際打擊的結果相符,雖不能到完全一致,但對撞球遊戲而言些微的偏差對於讓BOT進行下一桿的推測而言並不會有太大的影響。

Paragraph image 00 00@2x

大幅降低運算時間

以傳統若想要預測撞球的移動路徑,必須在一個 frame 之內迅速模擬多個 frame 之後的結果,這種方法雖然可以獲得最精準的預測結果,但卻要消耗大量的運算資源與時間。相較於實際物理模擬運算,用我們訓練出來的預測模型可以將快 100~2000 毫秒的運算在短短的 10~20 毫秒內完成。

Paragraph image 01 00@2x

多次碰撞預測

本 Model 並非只進行單一次碰撞預測,可以實際預測所有可能將發生的碰撞。且在極多次碰撞預測下,仍能保持一定的準度。

Paragraph image 00 00@2x

擬真撞球遊戲

與合作公司開發撞球遊戲期間,因對方的程式碼已開發多時,內容龐雜且眾多;我製作出自己的撞球遊戲版本,以方便開發。

Paragraph image 00 00@2x

自製物理系統

因 Unity 本身的碰撞偵測不夠嚴謹,可能會發生球體與球體之間互相穿越卻無法偵測到碰撞的情形發生。為避免此狀況,我們研發了自己的物理碰撞系統,已達到逼近真實撞球的效果。

Paragraph image 00 00@2x

單幀多點碰撞偵測

可在單幀中偵測多點碰撞,用來降低超高速的碰撞偵測帶來的誤差。

Paragraph image 00 00@2x

撞球關卡生成系統

採用了獨特的盤面設計系統與生成技術來生成各式各樣盤面,以提供趣味化與難度兼具的撞球關卡。使用者可自行定義難度要求,系統將自動生成符合使用者難度要求的盤面。最終套用物理校正調整角度,讓每個球都能精確入袋。

Paragraph image 00 00@2x

客製化盤面細節

可以自訂盤面的結構形式,若使用者想生成一個有 1 Cushion + 2 Combo 的盤面皆可使用右邊的 UI 介面調整並生成符合使用者需求的盤面。

Paragraph image 00 00@2x

調整盤面難易度

再設定好盤面細節後,使用者可以再調整盤面的難度與其他難度相關維度,如整體路徑長度、力道大小、容錯打擊角度等等。

Paragraph image 00 00@2x

生成多個盤面候選

在每次約不到一分鐘的生成時間內,除了生成最符合使用者要求的結果外,系統還同時蒐集了在搜尋過程中的所有可行結果,供使用者選擇並微調。

Paragraph image 00 00@2x

使用者手動修正調整

若自動生成的盤面使用者仍不滿意,系統提供了使用者調整盤面上各點位置的功能。當使用者要調整其中一點時,系統即時運算盤面上其他的店位置變動,呈現盤面的變化。

Paragraph image 00 00@2x

物理校正

當盤面生成完成時,因為處於理想的打擊狀態的位置上,在實際打擊時會因為滾動的關係導致路徑偏移,因此需透過實際試打的物理校正系統,微調各點的位置,使整串打擊能完整打入每個袋口。

Paragraph image 00 00@2x
Powered by CakeResumePowered by CakeResume