{"id":19466667,"url":"https://github.com/theovier/athena","last_synced_at":"2026-02-26T03:02:25.714Z","repository":{"id":42077307,"uuid":"385699324","full_name":"theovier/athena","owner":"theovier","description":"Playground. Prototyping ideas for a simple 2D game.","archived":false,"fork":false,"pushed_at":"2024-06-30T13:39:39.000Z","size":70048,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T17:08:29.916Z","etag":null,"topics":["2d","ashely","desktop","ecs","game","kotlin","ktx","libgdx","maven","prototype"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/theovier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2021-07-13T18:25:47.000Z","updated_at":"2024-06-30T13:39:42.000Z","dependencies_parsed_at":"2024-11-10T18:41:09.493Z","dependency_job_id":null,"html_url":"https://github.com/theovier/athena","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/theovier/athena","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovier%2Fathena","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovier%2Fathena/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovier%2Fathena/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovier%2Fathena/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theovier","download_url":"https://codeload.github.com/theovier/athena/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovier%2Fathena/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281863754,"owners_count":26574923,"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-10-30T02:00:06.501Z","response_time":61,"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":["2d","ashely","desktop","ecs","game","kotlin","ktx","libgdx","maven","prototype"],"created_at":"2024-11-10T18:29:37.206Z","updated_at":"2025-10-30T19:10:57.043Z","avatar_url":"https://github.com/theovier.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Main Build](https://img.shields.io/github/workflow/status/theovier/athena/Kotlin%20CI%20with%20Maven?label=Main)](https://github.com/theovier/athena/actions)\n[![GitHub license](https://img.shields.io/github/license/theovier/athena)](https://github.com/theovier/athena/blob/main/COPYING)\n[![LibGDX](https://img.shields.io/badge/LibGDX-1.10.0-red.svg)](https://github.com/libgdx/libgdx)\n[![LibKTX](https://img.shields.io/badge/LibKTX-1.10.0--b1-red.svg)](https://github.com/libktx/ktx)\n\n# Athena\nThis is a 2D shoot'em up game done in [KTX](https://github.com/libktx/ktx).\nThe main purpose of this project is simply to play around with some ideas and homemade graphics.\nDon't expect anything too fancy or polished here.\n\n## Status\nWork in progress.\n\n## Features\n- Uses [Ashley](https://github.com/libktx/ktx/tree/master/ashley) as its [ECS](https://en.wikipedia.org/wiki/Entity_component_system)\n- Basic movement system with acceleration and friction\n- Smooth camera movement by simple [asymptotic average](https://www.youtube.com/watch?v=tu-Qe66AvtY\u0026t)\n- Smooth translational + rotational [camera shake based on trauma](https://www.youtube.com/watch?v=tu-Qe66AvtY\u0026t)\n- Custom prefab system (using JSON)\n  - Including entity hierarchy\n  - Components can reference other entities/components in same prefab file\n- Controller support with [relatively smooth aiming](https://www.gamasutra.com/blogs/MarkVenturelli/20150817/251387/Everything_I_Learned_About_DualStick_Shooter_Controls.php)\n- Basic support for [tiled maps](https://github.com/libktx/ktx/tree/master/tiled)\n- Particle system relying on [LibGdx's particle system](https://github.com/libgdx/libgdx/wiki/2D-ParticleEffects)\n- Supports [Spine](http://de.esotericsoftware.com/) animations and skeletons\n- Uses [LibGdx's Box2D](https://github.com/libgdx/libgdx/wiki/Box2d) as physic engine\n- Simple damage system with critical hits and floating damage text \n- Simple loot system\n- Bullet impact effects using dynamic spawning of particles\n- Finite State Machines\n- Aim Assist\n\n## Screenshots\n![screenshot_001](screenshots/screenshot_002.gif)\n![screenshot_002](screenshots/screenshot_003.gif)\n\n## Building from Source\nThis project uses **Gradle** as its build management tool.\nSimply run\n\n```\n./gradlew build\n```\n\nand check your /build folder for the newly generated jar files at `/build/libs/client-VERSION.jar`.\n\n### macOS\nPlease note that (even when run from within your IDE) you need to add the VM option flag `-XstartOnFirstThread`\nto make the application window appear on macOS.\n\n## Contribution\nFeel free to open up pull-requests or discuss issues with us on GitHub.\n\n## Acknowledgement\nI used the [Quilly-Crawler](https://github.com/Quillraven/Quilly-Crawler) game as reference on how to get started with KTX.\nAlso, I found [Sioncore](https://github.com/dsaltares/sioncore) to be a good read on how to develop modular LibGdx/KTX games.\n\nFor the creation of the bullet shell effects, I found [Rowdy Lemon's Youtube tutorial on shell casings](https://www.youtube.com/watch?v=vTAR14bVJPA\u0026list=LL\u0026index=16) extremely valuable.\n\nFor creating particle effects, I use the brilliant open-source [Talos Particle Engine](https://github.com/rockbite/talos).\n\nFor the ideas of FSM in ECS, I found [Richard Lord's view](https://www.richardlord.net/blog/ecs/finite-state-machines-with-ash.html) worth the read.\n\n## License\n[GNU General Public License v3.0](https://choosealicense.com/licenses/gpl-3.0/#) except for the Spine Runtime.\n\n### Spine Runtime\nPlease note that since the Spine Runtime dependency is used, this part of the project is licenced under the [Spine Runtime Licence](https://github.com/EsotericSoftware/spine-runtimes/blob/4.0/LICENSE) instead.\n\n### Audio Files (Teeworlds)\nSome audio files (namely `gun_fire-01.ogg`, `gun_fire-02.ogg` and `gun_fire-03.ogg`) are converted versions of the [Teeworlds' Sound Effects](https://github.com/teeworlds/teeworlds/tree/master/datasrc/audio) which are licenced under the [CC-BY-SA 3.0](https://github.com/teeworlds/teeworlds/blob/master/license.txt) \n\n### Audio Files (Other)\n* The \"gun shell hitting the floor\" and the \"ka-ching\" sounds are licenced under the [Creative Commons Attributive Licence](https://creativecommons.org/licenses/by/3.0):\n  * https://freesound.org/s/159002\n  * https://freesound.org/s/159003\n  * https://freesound.org/s/159004\n  * https://freesound.org/s/159005\n  * https://freesound.org/s/159006\n  * https://freesound.org/s/159008\n  * https://freesound.org/s/554841\n\n### [Banger Font](https://www.1001fonts.com/bangers-font.html)\nThe used [banger font](https://www.1001fonts.com/bangers-font.html) is licenced under the [SIL Open Font Licence (OFL)](http://scripts.sil.org/OFL).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheovier%2Fathena","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheovier%2Fathena","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheovier%2Fathena/lists"}