{"id":29649838,"url":"https://github.com/jjohannes/javarcade","last_synced_at":"2026-05-08T15:09:36.056Z","repository":{"id":302778027,"uuid":"982751043","full_name":"jjohannes/javarcade","owner":"jjohannes","description":"Example used in presentations about Modularization and Dependency Management in Java projects","archived":false,"fork":false,"pushed_at":"2025-07-04T07:05:16.000Z","size":101,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T07:32:53.109Z","etag":null,"topics":["gradle","java","jpms","maven"],"latest_commit_sha":null,"homepage":"https://javarca.de","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jjohannes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2025-05-13T10:59:18.000Z","updated_at":"2025-07-04T06:44:14.000Z","dependencies_parsed_at":"2025-07-04T07:43:02.830Z","dependency_job_id":null,"html_url":"https://github.com/jjohannes/javarcade","commit_stats":null,"previous_names":["jjohannes/javarcade"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jjohannes/javarcade","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjohannes%2Fjavarcade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjohannes%2Fjavarcade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjohannes%2Fjavarcade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjohannes%2Fjavarcade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jjohannes","download_url":"https://codeload.github.com/jjohannes/javarcade/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjohannes%2Fjavarcade/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266428574,"owners_count":23927023,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["gradle","java","jpms","maven"],"created_at":"2025-07-22T04:35:35.913Z","updated_at":"2026-05-08T15:09:31.032Z","avatar_url":"https://github.com/jjohannes.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to the JavaRCAde!\n\n_This repository is..._\n\n🧩 an example for using the [javaRCA.de](https://javarca.de) recipe with different Java development tools.\n\n👾 a concise game engine to develop arcade games in Java while learning about Java dependencies and modules.\n\n## The Recipe\n\n[\u003cimg src=\"https://javarca.de/recipe.png\"\u003e](https://javarca.de/#recipe)\n\n## Variations of the Example\n\nThere are multiple branches in this repository that may interest you.\nThe modules and Java code are the same on all of them.\nOnly the build tool setups differ [depending on the choice of dependency notation](https://javarca.de/#notation).\nThere are:\n\n- 🧩 [`main`](https://github.com/jjohannes/javarcade)\n  This is **my favorite choice**: use the `module-info.java` for dependency declaration and **Gradle** as build tool.\n  (Gradle being the most performant and feature-rich build tool currently available for Java projects.)\n- 🥯 [`everything`](https://github.com/jjohannes/javarcade/tree/everything) This is same as `main` but with the setup for **Maven**\n  added. The Gradle setup is kept on the branch as the two definitions do not collide. You can use that branch with\n  both build tools and compare.\n- 👵🏼 [`no-module-info`](https://github.com/jjohannes/javarcade/tree/no-module-info)\n  This is **old school Java**: no `module-info.java` files and **dependencies are declared directly in the build tools**.\n  Both **Gradle** and **Maven** setups can be inspected next to each other.\n\nFor more details on the structure of this Java project, and Java projects in general, please visit the\n[gradle-project-setup-howto](https://github.com/jjohannes/gradle-project-setup-howto/) repository.\n\n## Building and Running the Game Engine and the Example Game\n\n**Compile and run with one command**\n\n```shell\n./gradlew run\n```\n\n**Build with Gradle and run with Java**\n\n```shell\n# Compile code, run checks, run tests, assemble artifacts\n./gradlew build\n\n# find the install folder\ncd apps/app-jamcatch/build/install/app-jamcatch\n\n# Run as Module\njava --module-path 'lib' --module de.javarca.engine\n# Run on Classpath (old school)\njava --class-path 'lib/*' de.javarca.engine.Engine\n```\n\n**Build with Maven and run with Java**\n\n```shell\n# Compile code, run checks, run tests, assemble artifacts\n./mvnw clean verify\n\n# find the install folder\ncd apps/app-jamcatch/target/install/app-jamcatch\n\n# Run as Module\njava --module-path 'lib' --module de.javarca.engine\n# Run on Classpath (old school)\njava --class-path 'lib/*' de.javarca.engine.Engine\n```\n\n## Other Build Setup Topics\n\nIf you follow the recipe based on this repository, you may have questions about certain other build configuration topics\nthat are currently out of scope here. Please have a look at the [issues](https://github.com/jjohannes/javarcade/issues) and the \n[gradle-project-setup-howto](https://github.com/jjohannes/gradle-project-setup-howto) project for further guidance.\n\n\n## Modifying the Example Game or Developing Your Own\n\n\u003e [!NOTE]\n\u003e️ The game engine is in an early state as it primarily acts as an example here.\n\u003e However, it is fully functional to the point it is and may evolve further.\n\nThe [javarca-engine](engine/javarca-engine) offers \n[a number of service endpoints](engine/javarca-engine/src/main/java/module-info.java) based on the\n[javarca-model](engine/javarca-model).\n\nThe example Game – **Jamcatch 🫙** – uses this to plug the game implementation into the engine.\nIt is split into three modules:\n\n- [jamcatch-stage](game/jamcatch-stage) - the stage setup in which the game takes place\n- [jamcatch-actors](game/jamcatch-actors) - the game logic\n- [jamcatch-assets](game/jamcatch-assets) - graphic assets for the game\n\nFor convenience, there is an additional project [app-jamcatch](apps/app-jamcatch) for composing the game. In the\n[build.gradle.kts](apps/app-jamcatch/build.gradle.kts) or \n[pom.xml](https://github.com/jjohannes/javarcade/blob/everything/apps/app-jamcatch/pom.xml) file of that\nproject you finde the list of modules that make up the game that is used by Gradle or Maven to fill\nthe `install` folder when building.\n\nSome things you can try:\n- Remove entries from [app-jamcatch/build.gradle.kts](apps/app-jamcatch/build.gradle.kts) or\n  [app-jamcatch/pom.xml](apps/app-jamcatch/pom.xml) to dynamically change the composition of the game.\n  For example, you can remove the assets and the game still works without graphics.\n- Modify code or assets in one of the three `jamcatch-` modules to modify the game.\n- You can add additional modules to the `game` folder with your own implementations and assets and\n  replace modules in [app-jamcatch](apps/app-jamcatch). Or add another `app-` project to the `apps` folder.\n  (Note: for Maven you need to register each additional module in the root [pom.xml](https://github.com/jjohannes/javarcade/blob/everything/pom.xml))\n\n## Inspiration\n\nCertain aspects of [PICO-8](https://www.lexaloffle.com/pico-8.php) were an inspiration for the game engine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjohannes%2Fjavarcade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjjohannes%2Fjavarcade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjohannes%2Fjavarcade/lists"}