[ML] 在 Mac 上安裝 Cannonball (Out run) 遊戲,練習強化學習

[ML] 在 Mac 上安裝 Cannonball (Out run) 遊戲,練習強化學習

最近因為公司的 AI 比賽,開始在學習 Machine Learning (機器學習) 的東西~

一個還沒完全搞懂的東西是 Reinforcement Learning (強化學習),

剛看到這東西時,就想到可以拿德軍總部來學習,

結果上網查,已經有一堆人拿遊戲在練習了~

 

像是 Out Run 這個賽車遊戲,

看到畫面就覺得很久以前好像有玩過 (←老人…)

Out Run 這個遊戲本來是在大型電玩上面,

有人用可移植的 C++ 重寫一次,開源在 GitHub 上分享,

名字則叫做 Cannonball~

 

lopespm 大大修改了 Cannonball,以方便從遊戲裡取得必要的資訊,

並藉由這些資料,寫了個強化學習的程式,

用來控制遊戲裡的車子,感覺還蠻厲害的~

(可參考 Deep Reinforcement Learning: Playing a Racing Game)

 

我們這次要裝的就是 lopespm 修改過,適合用來作 Reinforcement Learning 的版本~

這一篇就先記錄一下,要怎麼在 Mac 上安裝這個 Cannonball 吧~

 

1. 安裝 cmake、boost 和 SDL2

先用 Homebrew 安裝 cmake、boost 和 sdl2 這幾個編譯工具與函式庫:

brew install cmake
brew install boost
brew install sdl2

 

2. 取得 Cannonball

從 Github 複製 cannonball 下來:

git clone https://github.com/lopespm/cannonball.git
cd cannonball

 

3. 修改 cmake 設定檔

在 Mac 上要用的 cmake 設定檔是 cmake/sdl2_macosx.cmake,

將它打開編輯,主要就是將 SDK 以及相關函式庫的位置正確設定:

-set(CMAKE_CXX_FLAGS "-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7")
+set(CMAKE_CXX_FLAGS "-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mmacosx-version-min=10.7")

-include_directories("~/Library/Frameworks/SDL2.framework/Headers" "${lib_base}/boost/1.60.0_1/include")
+include_directories("${lib_base}/sdl2/2.0.8/include/SDL2" "${lib_base}/boost/1.67.0_1/include")

 

4. 編譯 Cannonball

先建立 build 目錄,再在這目錄裡執行 cmake 與 make 編譯:

mkdir build
cd build
cmake -G "Unix Makefiles" -DTARGET:STRING=sdl2_macosx ../cmake
make

 

成功的話,會編譯出 cannonball-exe 和 libcannonball.so~

如果失敗的話,看一下錯誤訊息,抓抓問題吧。

比較有可能出現的問題是錯誤的函式庫路徑,

可以回到上一步,先用 brew info boost、brew info sdl2 等等指令,

確定一下這些函式庫安裝的路徑,正確的寫在 cmake/sdl2_macosx.cmake 裡面後,

再重新開始編譯囉~

 

5. 下載遊戲 ROM 檔

上網找一下 OutRun Revision B ROM 的檔案~

原本我是從 EmuParadise 下載的,沒想到隔天站台就關了 @@…

下載之後,把 zip 檔解壓縮到 cannonball/roms 目錄下,

再到 cannonball/build 目錄,建一個符號連結指向那個 roms 目錄:

unzip ~/Downloads/outrun.zip -d ../roms/
ln -s ../roms roms

 

6. 執行 Cannonball 遊戲

在 build 目錄下執行 cannonball-exe,應該可以看到遊戲畫面囉:

./cannonball-exe

 

 

遊戲的操作鍵如下:

  • 左右方向鍵:控制車子左右轉
  • Z:加速
  • X:剎車
  • 空白鍵:換檔
  • 5:投錢
  • 1:開始遊戲
  • Shift:切換攝影機視角
  • F1:暫停
  • F2:暫停時,往前一格 (用來查看顯示問題)
  • F3:切換計時方式 (時間無限)
  • F5:遊戲選單

 

像在遊戲一開始的畫面,可以在 Play Game 上按 Z,

接著看到 Insert coins 提示時按 5,

接著看到 Push start button 提示時按 1,就可以開始玩啦~

按 Z 加速、X 剎車、左右鍵控制方向~

 

預設遊戲是有時間限制的 (非常難),

可以到選單裡 Settings > Game engine > Time 那邊按 Z 切換到 Time Infinite,

就可以無限時間玩了~

 

如上,我們已經成功把 Cannonball 編譯並執行起來,

之後就可以用這個遊戲來練習強化學習囉~^^

(本頁面已被瀏覽過 317 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料