This repository contains the code I write while learning game development, ECS architectures and Rust. I have no experience in any of these things, so don't expect this code to be of very high quality.
The game logic and assets are all based on CS50's Introduction to Game Development course on edX.
My goal is to implement all the 2D games (lecture 1-8) from that course in Rust using the GGEZ game engine and the Specs ECS library. The main reason I am doing this is to learn the Rust language and experiment with ECS architectures in general.
- Pong
- Flappy Bird
- Breakout
- Match 3
- Super Mario Bros
- Legend of Zelda
- Angry Birds
- Pokemon
Clone the repository and run cargo run -p [game-name]
. E.g. to start pong run cargo run -p pong
.
The idea is to try out some new features and concepts in each game, and make them progressively more advanced in terms of ECS usage.
- setup
ggez
andSpecs ECS
in rather basic way - handle basic
keyboard input
- uses the concept of
scenes
- load
custom fonts
- render
rectangle
andtext
entities indraw
methods - uses
sounds
in various systems.
- implement a
RenderSystem
with z-index sorting - render
images
rotate
images around their center- add a
parallax
effect system