diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 16aa444..9032737 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,4 +1,4 @@ -name: Build +name: Builds on: ["push", "pull_request"] diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5bd45a4..cac5273 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,4 +1,4 @@ -name: Test +name: Tests on: ["push", "pull_request"] diff --git a/README.md b/README.md index 7551ab3..9bb0b50 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,33 @@ # Pac-Man -If the title doesn't clue you in, I'm remaking Pac-Man with SDL and Rust. +[![Tests Status][badge-test]][test] [![Build Status][badge-build]][build] [![Code Coverage][badge-coverage]][coverage] [![Online Demo][badge-online-demo]][demo] [![Last Commit][badge-last-commit]][commits] -The project is _extremely_ early in development, but check back in a week, and maybe I'll have something cool to look -at. +[badge-test]: https://github.com/Xevion/Pac-Man/actions/workflows/test.yaml/badge.svg +[badge-build]: https://github.com/Xevion/Pac-Man/actions/workflows/build.yaml/badge.svg +[badge-coverage]: https://coveralls.io/repos/github/Xevion/Pac-Man/badge.svg?branch=master +[badge-demo]: https://img.shields.io/github/deployments/Xevion/Pac-Man/github-pages?label=GitHub%20Pages +[badge-online-demo]: https://img.shields.io/badge/GitHub%20Pages-Demo-brightgreen +[badge-last-commit]: https://img.shields.io/github/last-commit/Xevion/Pac-Man +[build]: https://github.com/Xevion/Pac-Man/actions/workflows/build.yaml +[test]: https://github.com/Xevion/Pac-Man/actions/workflows/test.yaml +[coverage]: https://coveralls.io/github/Xevion/Pac-Man?branch=master +[demo]: https://xevion.github.io/Pac-Man/ +[commits]: https://github.com/Xevion/Pac-Man/commits/master + +## Description + +A faithful recreation of the classic Pac-Man arcade game written in Rust. This project aims to replicate the original game's mechanics, graphics, sound, and behavior as accurately as possible while providing modern development features like cross-platform compatibility and WebAssembly support. + +The game includes all the original features you'd expect from Pac-Man: + +- [x] Classic maze navigation and dot collection +- [ ] Four ghosts with their unique AI behaviors (Blinky, Pinky, Inky, and Clyde) +- [ ] Power pellets that allow Pac-Man to eat ghosts +- [ ] Fruit bonuses that appear periodically +- [ ] Progressive difficulty with faster ghosts and shorter power pellet duration +- [x] Authentic sound effects and sprites + +Built with SDL2 for cross-platform graphics and audio, this implementation can run on Windows, Linux, macOS, and in web browsers via WebAssembly. ## Feature Targets @@ -12,68 +36,17 @@ at. - Online demo, playable in a browser. - Automatic build system, with releases for Windows, Linux, and Mac & Web-Assembly. - Debug tooling - - Game state visualization - - Game speed controls + pausing - - Log tracing - - Performance details + - Game state visualization + - Game speed controls + pausing + - Log tracing + - Performance details ## Experimental Ideas - Perfected Ghost Algorithms - More than 4 ghosts - Custom Level Generation - - Multi-map tunnelling + - Multi-map tunnelling - Online Scoreboard - - WebAssembly build contains a special API key for communicating with server. - - To prevent abuse, the server will only accept scores from the WebAssembly build. - -## Installation - -Besides SDL2, the following extensions are required: Image, Mixer, and TTF. - -### Ubuntu - -On Ubuntu, you can install the required packages with the following command: - -``` -sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev -``` - -### Windows - -On Windows, installation requires either building from source (not covered), or downloading the pre-built binaries. - -The latest releases can be found here: - -- [SDL2](https://github.com/libsdl-org/SDL/releases/latest/) -- [SDL2_image](https://github.com/libsdl-org/SDL_image/releases/latest/) -- [SDL2_mixer](https://github.com/libsdl-org/SDL_mixer/releases/latest/) -- [SDL2_ttf](https://github.com/libsdl-org/SDL_ttf/releases/latest/) - -Download each for your architecture, and locate the appropriately named DLL within. Move said DLL to root of this project. - -In total, you should have the following DLLs in the root of the project: - -- SDL2.dll -- SDL2_mixer.dll -- SDL2_ttf.dll -- SDL2_image.dll -- libpngX-X.dll - - Not sure on what specific version is to be used, or if naming matters. `libpng16-16.dll` is what I had used. -- zlib1.dll - -## Building - -To build the project, run the following command: - -``` -cargo build -``` - -During development, you can easily run the project with: - -``` -cargo run -cargo run -q # Quiet mode, no logging -cargo run --release # Release mode, optimized -``` \ No newline at end of file + - WebAssembly build contains a special API key for communicating with server. + - To prevent abuse, the server will only accept scores from the WebAssembly build.