将k8s制作成3D射击游戏,好玩到停不下来,附源码
? 點(diǎn)擊上方藍(lán)字?關(guān)注【我的小碗湯】
大家好,我是小碗湯,今天演示一個(gè)項(xiàng)目,利用Unity做場(chǎng)景、用C#做交互邏輯,將k8s制作成一個(gè)3D射擊游戲。正好最近在學(xué)習(xí)Unity,所以利用這個(gè)項(xiàng)目開始上手挺合適的。源碼、可執(zhí)行文件可以自行下載,也可在文末獲取!
kube-chaos[1]是一款基于混沌工程風(fēng)格的shmup游戲。
Shmup:一種射擊游戲,可以控制一架??,或者角色,在空中水平或垂直翻滾與敵人作戰(zhàn)的游戲。
這款游戲和kubernetes集群結(jié)合,允許你進(jìn)入集群節(jié)點(diǎn)探索Pod,發(fā)射子彈摧毀節(jié)點(diǎn)上運(yùn)行的Pod。
游戲交互邏輯是用c#編寫,并由Unity引擎驅(qū)動(dòng)。
前提條件
需要提前有一個(gè)kubernetes集群
可以隨意破壞的namespace作為戰(zhàn)場(chǎng)
本地機(jī)器上硬件資源使用Unity引擎來(lái)運(yùn)行游戲
如需編譯自己的程序,還需安裝Unity[2] 2019.4或更高版本
開始實(shí)踐
當(dāng)前Mac機(jī)器上~/.kube/config中包含兩個(gè)集群context:
#?kubectl?config?get-contexts? CURRENT???NAME???????????????CLUSTER??????????AUTHINFO?????????NAMESPACE *?????????context-cluster1???cluster1?????????admin????????????docker-desktop?????docker-desktop???docker-desktopcluster1對(duì)應(yīng)的context為context-cluster1是測(cè)試集群,節(jié)點(diǎn)、Pod較多,玩起來(lái)更刺激,但有風(fēng)險(xiǎn)。
docker-desktop對(duì)應(yīng)的context為docker-desktop,是本地集群,Pod較少,較為穩(wěn)妥。
從項(xiàng)目Releases[3]頁(yè)面下載Windows或MacOS版本。下面在Mac上來(lái)做示例。
下載MacOS的壓縮包之后解壓,進(jìn)入可執(zhí)行文件目錄運(yùn)行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會(huì)進(jìn)入到這樣的界面,從上到下輸入集群的namespace、集群context、kubectl(必須在System Path中):
然后Start運(yùn)行進(jìn)入游戲界面。
摧毀Pod現(xiàn)場(chǎng)可以通過(guò)鍵盤的W、S、A、D或者上、下、左、右鍵控制飛機(jī)移動(dòng)的方向,鼠標(biāo)左鍵控制發(fā)射。
靠近Node時(shí)會(huì)自動(dòng)打開進(jìn)入節(jié)點(diǎn)的通道,進(jìn)入后可以看到該節(jié)點(diǎn)上指定的namespace下的Pod。
發(fā)射子彈摧毀Pod,會(huì)實(shí)時(shí)的反映在k8s API中,狀態(tài)變?yōu)門erminating。Node是不可以摧毀的。進(jìn)入圓圈可以退出當(dāng)前Node。
這里附上視頻,來(lái)個(gè)贊:
編譯自己的程序
如果你想在前人的肩膀上,增加自己的功能靈感,然后編譯源代碼,構(gòu)建自己的可執(zhí)行文件,在Win、Linux、macOS多平臺(tái)上運(yùn)行,可以按照以下步驟來(lái)操作。
這里使用的Unity Hub 2.5.7、Unity 2019.4.34f1c1版本。
啟動(dòng)Unity Hub,在項(xiàng)目頁(yè)面點(diǎn)擊添加項(xiàng)目,選擇這個(gè)項(xiàng)目的根文件夾。
在第一次加載時(shí),Unity將生成庫(kù)資產(chǎn),可能會(huì)很慢。
進(jìn)入File -> Build Settings,或用快捷鍵:Windows:Ctrl+Shift+B;Mac:Command+Shift+B。確保Build中的設(shè)置如下圖所示:
配置Target Platform為想要構(gòu)建的平臺(tái)。這里下拉框的可選項(xiàng),如Windows/macOs/Linux,需要在安裝Unity的時(shí)候勾選目標(biāo)平臺(tái):
Player Settings按鈕中的其他配置保持默認(rèn)即可。
單擊Build,并選擇一個(gè)構(gòu)建輸出位置,這里輸出到項(xiàng)目根目錄:
之后,可執(zhí)行文件將被輸出到這個(gè)位置,構(gòu)建需要一段時(shí)間,這取決于機(jī)器性能:
編譯中成功輸出kube-chaos-me可執(zhí)行文件這里其實(shí)生成一個(gè)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運(yùn)行KubeChaos可執(zhí)行文件啟動(dòng)游戲。
這里附上視頻,來(lái)個(gè)贊再走:
本項(xiàng)目通過(guò)Unity、C#、kubernetes結(jié)合,制作的小游戲,非常有創(chuàng)意,對(duì)于入門來(lái)說(shuō),是個(gè)不錯(cuò)的練手項(xiàng)目。感興趣的兄弟可親自體驗(yàn)一下摧毀Pod的快感。
參考資料
[1]
kube-chaos: https://github.com/Shogan/kube-chaos
[2]Unity: https://unity3d.com/get-unity/download
[3]項(xiàng)目Releases: https://github.com/Shogan/kube-chaos/releases
[4]https://www.bilibili.com/video/BV14f4y1F7HB/
總結(jié)
以上是生活随笔為你收集整理的将k8s制作成3D射击游戏,好玩到停不下来,附源码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# using static 声明
- 下一篇: 周选特辑|一些超棒的开源项目!