{"id":34074976,"url":"https://github.com/iamdudeman/sola-game-engine","last_synced_at":"2026-02-27T04:09:28.451Z","repository":{"id":63870757,"uuid":"361290615","full_name":"iamdudeman/sola-game-engine","owner":"iamdudeman","description":"A 2d game engine in Java. Zero external dependencies other than for transpiling to JS.","archived":false,"fork":false,"pushed_at":"2025-11-28T02:26:43.000Z","size":33942,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-29T20:26:43.670Z","etag":null,"topics":["game-development","game-engine-2d","java","java-17"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamdudeman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-24T23:51:06.000Z","updated_at":"2025-11-28T02:26:48.000Z","dependencies_parsed_at":"2025-12-12T04:08:48.258Z","dependency_job_id":null,"html_url":"https://github.com/iamdudeman/sola-game-engine","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/iamdudeman/sola-game-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdudeman%2Fsola-game-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdudeman%2Fsola-game-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdudeman%2Fsola-game-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdudeman%2Fsola-game-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamdudeman","download_url":"https://codeload.github.com/iamdudeman/sola-game-engine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdudeman%2Fsola-game-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27724104,"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-12-14T02:00:11.348Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["game-development","game-engine-2d","java","java-17"],"created_at":"2025-12-14T09:01:08.262Z","updated_at":"2025-12-14T09:01:09.252Z","avatar_url":"https://github.com/iamdudeman.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [\u003cimg src=\"/sola-logo.jpg\" width=\"64\"/\u003e](/sola-logo.jpg) sola game engine\n\nsola game engine is a zero external dependency game engine (other than teavm for transpiling to JavaScript) that has\nbeen a hobby project for a long time. Two larger pieces of this project were broken into separate repositories for\neasier maintenance (the entity component system and JSON parser). Its purpose has been primarily for learning about how\ngames are developed from the ground up, but I hope to one day use it to also make some small games.\n\nYou can view a collection of demos built with the sola game engine running in your browser at this\n[itch.io page](https://iamdudeman.itch.io/sola-game-engine-demos).\n\n[![Java CI](https://github.com/iamdudeman/sola-game-engine/actions/workflows/ci_build.yml/badge.svg)](https://github.com/iamdudeman/sola-game-engine/actions/workflows/ci_build.yml)\n[![Javadocs Link](https://img.shields.io/badge/Javadocs-blue.svg)](https://iamdudeman.github.io/sola-game-engine/)\n[![](https://jitpack.io/v/iamdudeman/sola-game-engine.svg)](https://jitpack.io/#iamdudeman/sola-game-engine)\n\n## Quick Start\n\nYou can use the [Sola Game Template repo](https://github.com/iamdudeman/sola-game-template) as a template to start\nyour repo using the sola game engine.\n\nThe general structure of a Sola project is to first create an instance\nof [Sola](sola-engine/src/main/java/technology/sola/engine/core/Sola.java). This is where all your amazing game code\ngoes! Then you choose an implementation\nof [SolaPlatform](sola-engine/src/main/java/technology/sola/engine/core/SolaPlatform.java)\nthat has all the bindings for your desired platform to actually \"play\" the Sola.\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        SolaPlatform solaPlatform = new SwingSolaPlatform();\n        Sola sola = new ExampleSola();\n\n        solaPlatform.play(sola);\n    }\n}\n```\n\n## Download\n\n### Gradle + Jitpack:\n\n```kotlin\nrepositories {\n    maven {\n        url = uri(\"https://jitpack.io\")\n    }\n}\n\ndependencies {\n    implementation(\"com.github.iamdudeman.sola-game-engine:sola-engine:SOLA_ENGINE_VERSION\")\n    implementation(\"com.github.iamdudeman.sola-game-engine:platform-swing:SOLA_ENGINE_VERSION\")\n    implementation(\"com.github.iamdudeman.sola-game-engine:tooling:SOLA_ENGINE_VERSION\")\n}\n```\n\n## Internally developed libraries uses\n\n* [sola-json](https://github.com/iamdudeman/sola-json)\n* [sola-ecs](https://github.com/iamdudeman/sola-ecs)\n\n## Supported Platforms\n\n* [Swing](sola-engine/platform/swing)\n* [JavaFX](sola-engine/platform/javafx)\n* [Browser](sola-engine/platform/browser)\n    * Utilizes [teavm](https://github.com/konsoletyper/teavm) for transpiling to JavaScript\n* [Android](sola-engine/platform/android)\n\n## Example Code\n\nYou can execute the example code in the browser at https://iamdudeman.itch.io/sola-game-engine-demos. The local server\nwill have to be downloaded and executed separately.\n\n* [Sola examples](examples/common)\n* [Swing Platform example](examples/swing)\n* [JavaFX Platform example](examples/javafx)\n* [Browser Platform example](examples/browser)\n    * For browser\n      the [GenerateBrowserFilesMain](examples/browser/src/main/java/technology/sola/engine/examples/browser/GenerateBrowserFilesMain.java)\n      is responsible for generating the JavaScript files\n    * The [BrowserMain](examples/browser/src/main/java/technology/sola/engine/examples/browser/BrowserMain.java) is the\n      entry point GenerateBrowserFilesMain uses.\n    * Then\n      [DevBrowserFileServerMain](examples/browser/src/main/java/technology/sola/engine/examples/browser/DevBrowserFileServerMain.java)\n      acts as a simple http server for the files\n* [Android Platform example](examples/android)\n    * [MainActivity.java](examples/android/src/main/java/technology/sola/engine/examples/android/MainActivity.java) is the entry point\n* [Server example](examples/server)\n* [Editor example](examples/editor)\n\n## Games using sola game engine\n\n1. sola game engine demos\n    * Play it on its [itch.io page](https://iamdudeman.itch.io/sola-game-engine-demos)\n2. Acid Rain [OLC CodeJam 2022](https://itch.io/jam/olc-codejam-2022/entries)\n    * Play it on its [itch.io page](https://iamdudeman.itch.io/acid-rain)\n    * Check out its [GitHub repo](https://github.com/iamdudeman/acid-rain)\n3. re;memory [OLC CodeJam 2023](https://itch.io/jam/olc-codejam-2023/entries)\n    * Play it on its [itch.io page](https://iamdudeman.itch.io/rememory)\n    * Check out its [GitHub repo](https://github.com/iamdudeman/re-memory)\n4. Vile [Pirate Software Game Jam 15](https://itch.io/jam/pirate/rate/2848192)\n    * Play it on its [itch.io page](https://iamdudeman.itch.io/vile)\n    * Check out its [GitHub repo](https://github.com/iamdudeman/vile)\n5. Vorm [OLC CodeJam 2025](https://itch.io/jam/olc-codejam-2025/rate/3850158)\n    * Play it on its [itch.io page](https://iamdudeman.itch.io/vorm)\n    * Check out its [GitHub repo](https://github.com/iamdudeman/vorm)\n\n## Packaging for release\n\n### Browser zip file\n\nRun the following gradle command\n\n```shell\n.\\gradlew.bat distWebZip\n```\n\nThe output will be at `dist/browser/examples-browser-\u003cversion\u003e.zip`.\nThis can be deployed to places like `itch.io` when using the \"HTML\" project type.\n\n### Swing + JavaFx fat jar\n\nRun the following gradle command\n\n```shell\n.\\gradlew.bat distFatJar\n```\n\nThe output will be at `dist/swing/examples-swing-\u003cversion\u003e.jar` and `dist/javafx/examples-javafx-\u003cos\u003e-\u003cversion\u003e.jar`.\nYour users will need to have Java 17 installed to run the jar.\n\n### JavaFx .exe\n\nYou also have the option to use [jpackage](\nhttps://docs.oracle.com/en/java/javase/17/jpackage/packaging-overview.html) to create an executable exe file.\nYour users will not need to have Java installed.\n\n1. Install [JDK 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)\n2. Update $JAVA_HOME path environment variable\n    * ex. C:\\Program Files\\Java\\jdk-17.0.5\n    * To test configuration run: `jpackage --version`\n        * Should see the current jdk version returned: `17.0.5`\n3. Run the following gradle command\n\n```shell\n.\\gradlew.bat distWinJPackageZip\n```\n\n4. Output will be in the `dist/javafx` directory\n\n### Android\n\n#### Debug\n\n1. Run the following gradle command\n\n```shell\n.\\gradlew.bat distAndroidDebugApk\n```\n\n#### Release\n\n1. Create an upload keystore file\n   1. https://developer.android.com/studio/publish/app-signing#sign_release\n2. Create a copy of [keystore.example.properties](keystore.example.properties) as `keystore.properties`\n3. Update the `keystore.properties` file with your keystore information\n4. Run the following gradle command\n\n```shell\n.\\gradlew.bat distAndroidReleaseBundle\n```\n\n## JSON Schema\n\n[JSON schema files](json-schema) are provided for various asset types. These can assist you in creating valid assets for\nthe sola game engine to load when manually creating or updating them.\n\n### IntelliJ setup\n\n1. Open settings\n2. Go to `Languages \u0026 Frameworks | Schemas and DTDs | JSON Schema Mappings`\n3. Click `+` and select the schema file to add\n4. Add by file path pattern (recommendations below)\n    * [SpriteSheet.schema.json](json-schema/SpriteSheet.schema.json) -\u003e *.sprites.json\n    * [Font.schema.json](json-schema/Font.schema.json) -\u003e *.font.json\n    * [GuiDocument.schema.json](json-schema/GuiDocument.schema.json) -\u003e *.gui.json\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdudeman%2Fsola-game-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamdudeman%2Fsola-game-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdudeman%2Fsola-game-engine/lists"}