將k8s製作成3D射擊遊戲,好玩到停不下來,附原始碼
點選上方 藍字 關注【我的小碗湯】
大家好,我是小碗湯,今天演示一個專案,利用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
執行進入遊戲介面。

可以通過鍵盤的 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.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的快感。
參考資料
kube-chaos: https://github.com/Shogan/kube-chaos
Unity: https://unity3d.com/get-unity/download
專案Releases: https://github.com/Shogan/kube-chaos/releases
[4]
https://www.bilibili.com/video/BV14f4y1F7HB/
- C# 對型別系統擴充套件性的改進
- ABP會臃腫嗎?
- .NET 為大型應用接入 ApplicationStartupManager 啟動流程框架
- Dapr 原始碼解析 系列文章彙總
- C# 學習經驗分享
- 基於.NET6的開源工業物聯網閘道器
- .NET 很好,你可能對它有一些誤解
- c#Clay開源的動態語言dynamic框架,讓您形如javascript的方式建立物件!
- .NET6結合Docker傻瓜式實現容器編排
- 一點雜感 以及 java8 Streams API 與 C# Linq 簡要對比分析
- .NET MAUI 應用程式中配置生命週期事件
- 如何使用c#編寫微控制器程式
- 可能是.NET領域效能最好的物件對映框架——Mapster
- 通過Dapr實現一個簡單的基於.net的微服務電商系統(十九)——分散式事務之Saga模式
- C# 11 中的引數 null 檢查
- 基於C#的計時管理器
- .NET 誕生已20週年,您的 .NET 技能是否還停留在2010 年?
- 虎年雲原生落地技術趨勢
- C#10 和 .NET6 程式碼跨平臺開發
- 通過Dapr實現一個簡單的基於.net的微服務電商系統(十八)——服務保護之多級快取