{"id":21915802,"url":"https://github.com/wpernath/quarkus-grumpycat","last_synced_at":"2026-02-25T12:13:41.889Z","repository":{"id":37443639,"uuid":"491893565","full_name":"wpernath/quarkus-grumpycat","owner":"wpernath","description":"A simple fat-cat / packman like multi player game, with a logic server written in Java with Quarkus and a Engine written in JavaScript with the MelonJS game framework. ","archived":false,"fork":false,"pushed_at":"2024-11-26T20:35:56.000Z","size":120259,"stargazers_count":17,"open_issues_count":9,"forks_count":20,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-26T21:30:07.843Z","etag":null,"topics":["argocd","game","game-development","gitops","html5-canvas","java","javascript","kubernetes","melonjs","openshift","quarkusio","tekton-pipelines"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wpernath.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-13T12:43:17.000Z","updated_at":"2024-11-26T20:36:01.000Z","dependencies_parsed_at":"2023-01-29T21:15:52.356Z","dependency_job_id":"8ff17f8c-2cd1-42a1-a266-8096e9ad6db9","html_url":"https://github.com/wpernath/quarkus-grumpycat","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpernath%2Fquarkus-grumpycat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpernath%2Fquarkus-grumpycat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpernath%2Fquarkus-grumpycat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpernath%2Fquarkus-grumpycat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wpernath","download_url":"https://codeload.github.com/wpernath/quarkus-grumpycat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226971307,"owners_count":17711413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["argocd","game","game-development","gitops","html5-canvas","java","javascript","kubernetes","melonjs","openshift","quarkusio","tekton-pipelines"],"created_at":"2024-11-28T19:14:15.830Z","updated_at":"2026-02-25T12:13:36.865Z","avatar_url":"https://github.com/wpernath.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quarkus GrumpyCat\n![Quarkus GrumpyCat](./melonjs-client/src/main/client/data/img/GrumpyCat-Title.png)\n\nThis Game uses Quarkus, the Supersonic Subatomic Java Framework and HTML 5 / JavaScript and MelonJS.\n\nIf you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .\n\nAll client game logic is currently coded with JavaScript and [MelonJS](https://github.com/melonjs/melonjs).\n\nThere is a demo of this game running [here](http://cat-client-grumpycat.apps.kelly.rhepds.com/generated/index). \n\n\n## Technical Blog entries\nI am currently blogging about the creation of this game as it's still meant to be educational.\n\nHere are the current articles:\n\n- [How to setup, prepare and demo GrumpyCat as a GitOps example](https://www.opensourcerers.org/2023/05/08/how-to-set-up-and-demonstrate-quarkus-grumpycat-gitops-demo/)\n- [Chapter #1 - Initial Setup](https://www.opensourcerers.org/2022/10/24/using-quarkus-to-develop-a-multiplayer-game-chapter-1-initial-setup/)\n- [Chapter #2 - The server feeds the client](https://www.opensourcerers.org/2022/12/19/using-quarkus-to-develop-a-multiplayer-game-chapter-2-the-server-feeds-the-client/)\n\n\n## The Game\n\nThis game was inspired by the old Fat-Cat game and by PacMan. You're controlling a dog in a maze which needs to eat all food without being caught by a grumpy cat or other enemies. \n\nIt also supports multi player gaming. A host can invite up to 3 other players who can join a multi player session. The winner of such a session is \"last dog standing\" or the player who has collected most points.\n\n### How to play (single player)\nRight now you can control the dog with arrow keys UP, DOWN, LEFT \u0026 RIGHT and with W, A, S, D. More keys are:\n\n- *P* PAUSE\n- *SPACE* place bomb\n- *Shift* + UP/DOWN/LEFT/RIGHT: place barrier in the direction\n- *ALT | option* + UP/DOWN/LEFT/RIGHT: throw a magic bolt into the direction, killing spiders or stunning other enemies (cats, golems).\n- *Q* start a magic firespin around your player. Any other player / enemy coming too close to you will be stunned / killed (depending on the enemy). Spell is up for 15sec\n- *E* start a magic protection circle around your player. No other players / enemies could harm you for 15sec.\n- *R* place a magic nebula at the place you are right now. Path finding enemies (cats, spiders) will walk to this place and get damaged / stunned. Spell is up for 15sec.\n\nIf the cat gets into an exploding bomb, it stops for 3sec. A bomb can destroy barriers. The level ends if you got all food or if you don't have any energy left.\n\nIn order to use those weapons, you have to collect them in form of a magic potion or in form of a bomb first. \n  \n### How to play (multi player)\nYou can start the game in multi player modus. Up to 4 players are able to play against each other. \nYou can place bombs, throw magic bolts and cast the magic firespin to harm other players. If you're hurting others, you also get points.\n\nIn multi player mode a level ends if either all bonus is collected or if you are the last player standing. The winner is that player with the highest score. \n\n\n### Bonus tiles\nThere are different bonus tiles to be collected. \n- Pill (looks like a cactus): 10 Pts\n- Bomb: 50 Pts, add 5 bombs to your inventory\n- Meat: 25 Pts, add 25 points more energy\n- Cheese: 15 Pts, add 20 points more energy\n- Chest: 250 Pts, add a random weapon to your inventory (does NOT count for level end!)\n- Potion: 50 Pts\n  - Small red: maxEnergy + 25\n  - Big red: maxEnergy + 50\n  - Blue: +3 magic bolts \n  - brown: +3 magic firespins\n  - green: +3 magic protection circles\n  - violet: +3 magic nebula\n\n![Bonus Tiles](./docs/37E7903F-54F1-40A4-8E73-9DB6198D4BD2.jpeg)\n\n### Life demo\nThere is a demo of this game running [here](http://cat-client-grumpycat.apps.ruby.rhepds.com). \nPlease note, that I am using this server also for workshops etc. So the system might not be as stable as expected. But you can give it a try.\n\nIf you have any suggestestions or want to contribute, please open an [issue here](https://github.com/wpernath/quarkus-grumpycat/issues). Thank you!\n\n\n### Game Graphics\n\n![the game](docs/game-title.png)\n![cats](docs/the-game1.png)\n![spiders](docs/the-game2.png)\n![game over](docs/game-over.png)\n\n\n## What's NEW?\nStarting with v0.6.0, there is a multi player mode where up to 4 players can play against each other via network on specialized multi player maps (right now just 2 of them). \n\nThe game is over if:\n- All bonus items have been collected\n- All other players left the game (intentionally or unintentionally)\n\nThe winner of the match is the player who has a higher score than all others or who has survived all others. \n\n- Players can drop bombs to other players to hit them (-50 Energy, plus 100 score). \n- Players can lock other players by throwing a barrier into the way (those can be destroyed with a bomb)\n\nAnd do not forget: There are still other enemies who can hit you!\n\n\n## Running the applications in dev mode\nPlease have a look at the [contributors guide](./CONTRIBUTING.md).\n\n## Running on Docker / Podman\nThere are container images ready to be used on [Quay.io](https://quay.io/wpernath/quarkus-grumpycat). Use this command to pull the images to your local repository:\n\n```shell\ndocker pull quay.io/wpernath/quarkus-grumpycat\ndocker pull quay.io/wpernath/grumpycat-melonjs\n```\n\nTo run the server, the required database and the client, you need to have Docker / Podman configured and running. You can use the `docker-compose.yaml` to start the latest version of the game:\n\n```shell\ndocker-compose [--detach|-d] up\n```\n\nThe app is then available under `http://localhost:8085` in your browser.\n\n\n## Running on Kubernetes / OpenShift\n\n### OpenShift / Kubernetes image deployment in a GitOps way\nPlease have a look [here](./kubernetes-config/README.md)\n\n### Using full featured GitOps\nTo make use of all GitOps features, have a look at the documentation inside the [gitops](./gitops/README.md) folder of this project. \n\n\n\n## Roadmap\n\n- Split cat-server to a cat-server and a cat-multiplayer service. \n- Implement an Infispan service to make cat-multiplayer more scalable\n- Make cat-multiplayer reactive to keep up with several concurrent sessions\n\n\n## About the graphics\nThe map graphics are coming from [LPC Terrain](https://opengameart.org/content/tiled-terrains) and all its authors. Special thanks to all of them!\n                    \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwpernath%2Fquarkus-grumpycat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwpernath%2Fquarkus-grumpycat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwpernath%2Fquarkus-grumpycat/lists"}