将k8s制作成3D射击游戏,好玩到停不下来,附源码

328b2bc419fe7e2f7b28647a5c2d8fc7.gif  点击上方蓝字 关注【我的小碗汤】

大家好,我是小碗汤,今天演示一个项目,利用Unity做场景、用C#做交互逻辑,将k8s制作成一个3D射击游戏。正好最近在学习Unity,所以利用这个项目开始上手挺合适的。源码、可执行文件可以自行下载,也可在文末获取!


kube-chaos[1]是一款基于混沌工程风格的shmup游戏。

Shmup:一种射击游戏,可以控制一架✈️,或者角色,在空中水平或垂直翻滚与敌人作战的游戏。

这款游戏和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中):

a5f19f8e478bfd2544d72b693508fe6a.png

然后Start运行进入游戏界面。

ec0ee021b72d0fd76bfe9d2fb380a2d5.gif
摧毁Pod现场

可以通过键盘的W、S、A、D或者上、下、左、右键控制飞机移动的方向,鼠标左键控制发射。

靠近Node时会自动打开进入节点的通道,进入后可以看到该节点上指定的namespace下的Pod

发射子弹摧毁Pod,会实时的反映在k8s API中,状态变为TerminatingNode是不可以摧毁的。进入圆圈可以退出当前Node

这里附上视频,来个赞13290a47ac1b913a22eba52c74679202.png


编译自己的程序

如果你想在前人的肩膀上,增加自己的功能灵感,然后编译源代码,构建自己的可执行文件,在Win、Linux、macOS多平台上运行,可以按照以下步骤来操作。

这里使用的Unity Hub 2.5.7、Unity 2019.4.34f1c1版本。

启动Unity Hub,在项目页面点击添加项目,选择这个项目的根文件夹。

在第一次加载时,Unity将生成库资产,可能会很慢。

进入File -> Build Settings,或用快捷键:Windows:Ctrl+Shift+BMac:Command+Shift+B。确保Build中的设置如下图所示:

239a6dc3c3b8aaf273fab42c9902dcd9.png

配置Target Platform为想要构建的平台。这里下拉框的可选项,如Windows/macOs/Linux,需要在安装Unity的时候勾选目标平台:

3e583db7d65ffbdae3ebd59138fdfca1.png

Player Settings按钮中的其他配置保持默认即可。

单击Build,并选择一个构建输出位置,这里输出到项目根目录:

023f28f94c07a3bd4e344712dc3f3b4e.png

之后,可执行文件将被输出到这个位置,构建需要一段时间,这取决于机器性能:

24207229791b1b6cbced0c0d7d73e5c5.png
编译中
9c00e1eee1ec933463a21e472e853a84.png
成功输出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可执行文件启动游戏。

这里附上视频,来个赞再走bbc9c73acfdeaa31b96c1c34d0d4f446.png

本项目通过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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaJVM之ClassLoader源码分析

层次结构和类图 ClassLoader层次结构:UML类图:sun.misc.Launcher.ExtClassLoader sun.misc.Launcher.AppClassLoader 显式加载类 在代码中显式加载某个类,有三种方法:this.getClass().getClassLoader().loadClass()Class.forName(…

ASP.NET Core Web API使用静态swagger.json文件

前言ASP.NET Core Web API默认集成了Swashbuckle,可以在运行时显示Swagger UI:而Swagger UI实际上是解析的动态生成的swagger.json:app.UseSwagger(); app.UseSwaggerUI(c > c.SwaggerEndpoint("/swagger/v1/swagger.json", &qu…

XenApp共享桌面打开文件警告与桌面文件由于Internet文件安全设置无法打开解决办法...

问题现象 1. 在使用了UPM与文件夹重定向后,个人的桌面路径就会变成一个UNC路径,这个时候如果用户登录共享桌面的话可以看到桌面与快速启动栏的文件与快捷方式,但是打开的时候就会遇到以下错误 这种情况是由于我们放的文件是一个网络路径所导致…

周选特辑|一些超棒的开源项目!

编程导航 每周新增资源优选特辑 02编程导航 致力于推荐优质编程资源 💎项目开源仓库:https://github.com/liyupi/code-nav跪求一个 star ⭐️哈喽大家好!我是编程导航的小编火宝。美好的一周又过去了,大家有没有认真学习呢&#x…

Android插件化开发之DexClassLoader动态加载dex、jar小Demo

一、温故动态加载ClassLoader机制 如果对Android的ClassLoader加载机制不熟悉,猛戳Android插件化开发动态加载基础之ClassLoader工作机制 http://blog.csdn.net/u011068702/article/details/53248960 二、介绍 我们知道在Android中可以跟java一样实现动态加载jar&…

js监听多个事件_JavaScript中的事件与异常捕获解析

这篇文章主要给大家介绍了关于JavaScript中事件与异常捕获的相关资料,文中通过示例代码介绍的非常详细,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。事件处理…

C#多线程开发-使用并发集合

前言大家好,我是阿辉。在C#语言中当需要处理并发的场景时,就需要程序员使用最合理的数据结构。那么哪些数据结构是支持和可以在并行计算中被使用的呢。首先这些数据结构具备可伸缩性,尽可能地避免锁(会造成多个线程的等待,防止资源…

windows 下安装wamp环境

一直以来都是学习在Linux下安装lanmp环境,在Windows下都是用的集成工具比如appserv现在来安装Windows版本的lamp都是从官网下载的资源在Windows下以后还会编辑更多的东西。我的文章都会以后都有更新,因为有时候有点想法,如果不实践的话会忘记…

应用环境下的TIME_WAIT和CLOSE_WAIT

转载自:http://blog.csdn.net/shootyou/article/details/6622226 昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.csdn.net/shootyou/article/details/6615051里头的分析过程有提到,通过查看服务器网…

当社恐和社恐相亲时,场面会有多尴尬?

1 俄国人真实在(素材来源网络,侵删)▼2 alone和lonely的区别(素材来源网络,侵删)▼3 她可能怕她男朋友伤害到别人(素材来源网络,侵删)▼4 真正的笋到家了(…

FlexPod上安装vSphere 5.5配置中的排错(1)

delxu原创文档,转发请一定要标记本文出处和原文URL。 这些日子在进行FlexPod上的vSphere 5.5的安装和配置,过程中遇到一些故障、困难,都一一解决了。觉得有必要和大家分享一下。可能会有好多篇,也可能和以前一样,虎头蛇…

Android插件化开发之动态加载三个关键问题详解

本文摘选自任玉刚著《Android开发艺术探索》,介绍了Android插件化技术的原理和三个关键问题,并给出了作者自己发起的开源插件化框架。 动态加载技术(也叫插件化技术)在技术驱动型的公司中扮演着相当重要的角色,当项目越…

更方便地模拟 Http 响应

更方便地 Mock Http ResponseIntro在我们的业务代码中往往会有很多调用内部其他 team 或者是第三方的一些服务,在编写单元测试代码时,往往需要 Mock Http Response 来模拟更好可能的返回结果,我封装了一个简单的 Http Handler 来简化 Mock 过…

男人的快乐可以多简单?

1 说不出哪里像但是非常像(素材来源网络,侵删)▼2 质量不错,就是风大不建议穿(素材来源网络,侵删)▼3 谈恋爱的要求(素材来源网络,侵删)▼4 当给狗狗看了捕…

Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤

第一步、先制做一个有我们需要的图片资源的APK 如下图,这里有个about_log.png,我们需要生成apk文件。生成的apk文件如果你不到项目的文件夹里面去取apk,想通过命令放到手机里面去可以快速用下面命令 1)、在手机里面通过包名找到apk路径&…

ManualResetEvent实现线程的暂停与恢复

背景前些天遇到一个需求,在没有第三方源码的情况下,刷新一个第三方UI,并且拦截到其ajax请求的返回结果。当结果为AVALIABLE的时候,停止刷新并语音提示,否则继续刷新。分析这个需求,发现需要控制一个刷新循环…

浙大哈佛剑桥学者联手破解数学界几十年的谜题,成果登上数学顶刊

全世界只有3.14 % 的人关注了爆炸吧知识转自:量子位作者:边策 萧箫当两个看似“无关”的数学领域发生碰撞,会发生什么?浙江大学研究员、中科大数学系2003级校友叶和溪,与来自剑桥大学、哈佛大学的两位学者一起&#xf…