A Platformer Game UI to Kubernetes and other data as I learn Rust Bevy game programming.
This learning exercise is exploring the ECS - Entity Component
System programming
paradigm. Game programming can teach us a lot about software architectures that
coordinate huge numbers of lively objects all advancing their state at different
rates. The game will evolve into a POC of using ECS to create digital twin
runtimes (in contrast to actor-based
runtimes) for IOT
and knowledge base
applications.
The world in this game is a graph of rooms connected by doors. Every door is on a platform. The player moves left and right with arrow keys and jumps with the space bar. Once on a platform, the player enters the next room through the door by pressing the up arrow key.
key | description | action |
---|---|---|
-> | right arrow | run to the right |
<- | left arrow | run to the left |
sp | space bar | jump |
^ | up arrow | enter a room |
q | 'q' key | end the game |
Game-play is enhanced by the Avian physics engine and the Bevy Lit lighting crates.
The rooms and their connections via doors are a directed graph. The world of doors and rooms is built from external data converted into triples stored in a graph implemented by the petgraph crate.
The initial world is generated from your live Kubernetes cluster. Make sure you
have access to a cluster via kubectl and doors
will use the same
authentication to query your cluster and build the game world using kube-rs
crate API results. Rooms are namespaces
,
deployments
, replicasets
, pods
, and containers
- all connected by doors.
The graph naturally uses nodes
as rooms and edges
as doors. It decides to put a
door between two rooms based on their relationship found in the Kubernetes API
results (normally seen as yaml by devops engineers).
- a UI to overlay text details from the rooms' real-world analog
- proper player graphics and animation
- animate the doors
- read RDF for world generation
- sound
- swag and power-ups
- multi-player
- re-implement in isometric style
- re-re-implement in 3D
cargo install --path .
cargo run --features bevy/dynamic_linking
# for avoiding the expensive kube crate compile
cargo run --features bevy/dynamic_linking --no-default-features