將k8s製作成3D射擊遊戲,好玩到停不下來,附原始碼

語言: CN / TW / HK

  點選上方 藍字  關注【我的小碗湯】

大家好,我是小碗湯,今天演示一個專案,利用Unity做場景、用C#做互動邏輯,將k8s製作成一個3D射擊遊戲。正好最近在學習Unity,所以利用這個專案開始上手挺合適的。 原始碼、可執行檔案可以自行下載,也可在文末獲取!

kube-chaos [1] 是一款基於混沌工程風格的shmup遊戲。

Shmup:一種射擊遊戲,可以控制一架:airplane:,或者角色, 在空中水平或垂直翻滾 與敵人作戰的遊戲。

這款遊戲和 kubernetes 叢集結合,允許你進入叢集節點探索 Pod ,發射子彈摧毀節點上執行的 Pod

遊戲互動邏輯是用 c# 編寫,並由 Unity 引擎驅動。

前提條件

  • 需要提前有一個 kubernetes 叢集
  • 可以隨意破壞的 namespace 作為戰場
  • 本地機器上硬體資源使用 Unity 引擎來運行遊戲
  • 如需編譯自己的程式,還需安裝 Unity [2] 2019.4或更高版本

開始實踐

當前Mac機器上 ~/.kube/config 中包含兩個叢集 context

# kubectl config get-contexts 
CURRENT   NAME               CLUSTER          AUTHINFO         NAMESPACE
*         context-cluster1   cluster1         admin            
          docker-desktop     docker-desktop   docker-desktop

cluster1 對應的context為 context-cluster1 是測試叢集,節點、Pod較多, 玩起來更刺激,但有風險

docker-desktop 對應的context為 docker-desktop ,是本地叢集,Pod較少, 較為穩妥

專案Releases [3] 頁面下載Windows或MacOS版本。下面在Mac上來做示例。

下載MacOS的壓縮包之後解壓,進入可執行檔案目錄執行 KubeChaos

wget https://github.com/Shogan/kube-chaos/releases/download/1.0.0/KubeChaos_macOS_1.0.0.zip
unzip KubeChaos_macOS_1.0.0.zip
cd KubeChaosmacOS/Contents/MacOS
./KubeChaos 

會進入到這樣的介面,從上到下輸入叢集的namespace、叢集context、kubectl(必須在System Path中):

然後 Start 執行進入遊戲介面。

摧毀Pod現場

可以通過鍵盤的 W、S、A、D 或者 上、下、左、右 鍵控制飛機移動的方向,滑鼠左鍵控制發射。

靠近 Node 時會自動開啟進入節點的通道,進入後可以看到該節點上指定的 namespace 下的 Pod

發射子彈摧毀 Pod ,會實時的反映在 k8s API中,狀態變為 Terminating Node 是不可以摧毀的。進入圓圈可以退出當前 Node

這裡附上影片,來個贊

編譯自己的程式

如果你想在前人的肩膀上,增加自己的功能靈感,然後編譯原始碼,構建自己的可執行檔案,在Win、Linux、macOS多平臺上執行,可以按照以下步驟來操作。

這裡使用的Unity Hub 2.5.7、Unity 2019.4.34f1c1版本。

啟動Unity Hub,在 專案 頁面點選 新增 專案,選擇這個專案的根資料夾。

在第一次載入時,Unity將生成庫資產,可能會很慢。

進入 File -> Build Settings ,或用快捷鍵: Windows:Ctrl+Shift+B Mac:Command+Shift+B 。確保Build中的設定如下圖所示:

配置 Target Platform 為想要構建的平臺。這裡下拉框的可選項,如 Windows/macOs/Linux ,需要在安裝 Unity 的時候勾選目標平臺:

Player Settings 按鈕中的其他配置保持預設即可。

單擊 Build ,並選擇一個構建輸出位置,這裡輸出到專案根目錄:

之後,可執行檔案將被輸出到這個位置,構建需要一段時間,這取決於機器效能:

編譯中
成功輸出kube-chaos-me可執行檔案

這裡其實生成一個 kube-chaos-me.app 目錄:

# ls -l                  
-rw-r--r--   1 smallsoup  test  53894 Jan 18 17:46 Assembly-CSharp.csproj
drwxr-xr-x  14 smallsoup  test    448 Jan 18 15:22 Assets
drwxr-xr-x  41 smallsoup  test   1312 Jan 18 19:08 Library
drwxr-xr-x   3 smallsoup  test     96 Jan 18 17:29 Logs
drwxr-xr-x   4 smallsoup  test    128 Jan 18 17:32 Packages
drwxr-xr-x  23 smallsoup  test    736 Jan 18 19:05 ProjectSettings
-rw-r--r--   1 smallsoup  test   3797 Jan 18 15:22 README.md
drwxr-xr-x  44 smallsoup  test   1408 Jan 18 19:08 Temp
drwxr-xr-x   6 smallsoup  test    192 Jan 18 15:22 docs
drwxr-xr-x   3 smallsoup  test     96 Jan 18 19:08 kube-chaos-me.app
-rw-r--r--   1 smallsoup  test    712 Jan 18 17:46 kube-chaos.sln
drwxr-xr-x   3 smallsoup  test     96 Jan 18 18:48 obj
# cd kube-chaos-me.app/Contents/MacOS 

# ls
KubeChaos

#  ./KubeChaos

執行 KubeChaos 可執行檔案啟動遊戲。

這裡附上影片,來個贊再走

本專案通過 Unity、C#、kubernetes 結合,製作的小遊戲,非常有創意,對於入門來說,是個不錯的練 手專案。感興趣的兄弟可親自體驗一下摧毀Pod的快感。

參考資料

[1]

kube-chaos: https://github.com/Shogan/kube-chaos

[2]

Unity: https://unity3d.com/get-unity/download

[3]

專案Releases: https://github.com/Shogan/kube-chaos/releases

[4]

https://www.bilibili.com/video/BV14f4y1F7HB/