{"id":27441301,"url":"https://github.com/tommyettinger/isometricvoxeldemo","last_synced_at":"2025-10-24T21:05:00.631Z","repository":{"id":276913025,"uuid":"930705888","full_name":"tommyettinger/IsometricVoxelDemo","owner":"tommyettinger","description":"A sample libGDX project with procedural voxels shown as isometric pixel art.","archived":false,"fork":false,"pushed_at":"2025-04-10T09:47:19.000Z","size":7020,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T10:52:14.788Z","etag":null,"topics":["gdx-liftoff","isometric","libgdx","pixel","pixel-art","voxel"],"latest_commit_sha":null,"homepage":"https://tommyettinger.github.io/IsometricVoxelDemo/","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/tommyettinger.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}},"created_at":"2025-02-11T04:25:11.000Z","updated_at":"2025-04-10T09:47:34.000Z","dependencies_parsed_at":"2025-04-10T11:02:29.407Z","dependency_job_id":null,"html_url":"https://github.com/tommyettinger/IsometricVoxelDemo","commit_stats":null,"previous_names":["tommyettinger/voxeldecalexample","tommyettinger/isometricvoxeldemo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommyettinger%2FIsometricVoxelDemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommyettinger%2FIsometricVoxelDemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommyettinger%2FIsometricVoxelDemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommyettinger%2FIsometricVoxelDemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tommyettinger","download_url":"https://codeload.github.com/tommyettinger/IsometricVoxelDemo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248981256,"owners_count":21193143,"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":["gdx-liftoff","isometric","libgdx","pixel","pixel-art","voxel"],"created_at":"2025-04-14T23:40:29.493Z","updated_at":"2025-10-24T21:05:00.621Z","avatar_url":"https://github.com/tommyettinger.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VoxelExample\n\nA sample [libGDX](https://libgdx.com/) project showing voxels using 2D art but 3D positions.\n\n![Rotating the world](docs/rotation.gif)\n\n[**Playable Here!**](https://tommyettinger.github.io/IsometricVoxelDemo/Aug_1_2025_build1/index.html)\n----\n\n## Controls\n\nYour character is the one tiny person wearing blue; all enemies are green orcs.\nYou start blinking for a few seconds; while blinking you are invincible.\nIdeally, use the numpad to move around, but you can also use the four keys `f`, `g`,\n`t`, and `r` to move in those four diagonal directions, as if those four keys on a\nQWERTY keyboard were arrows pointing in an X shape.\nSpacebar, numpad 0, and numpad 5 let you jump. You can press the `[` and `]` keys\nto rotate the world, letting you see things you normally wouldn't be able to.\nYou can press `z` to reset the game and make a new map.\n\nYour goal is to pick up goldfish (by walking into them) without bumping into orcs\ntoo many times. Pick up all 10 and you win!\n\n... Yeah, there's no real gameplay. The orcs can't be harmed at all. This is meant\nas a well-documented sample project to show how isometric pixel art can work. In\nparticular, I wanted to show how depth sorting isn't that complicated if you set\nthings up just right. I also am trying to publicize the usage of f/g/h axes in\nisometric worlds instead of x/y/z... because x/y/z have no standard meanings in\nthis context. Some games use y for elevation and some use z; some have 0,0,0 at\nthe bottom center, others the top center or center left... It's a mess.\n\nThe f/g/h concept has a simple real-world analogy based on a map of Europe:\n - The f-axis is the diagonal from France to Finland (going northeast).\n - The g-axis is the diagonal from Germany to Greenland (going northwest).\n - The h-axis is the elevation line, from your heels to your head (going up).\n\nAs you can see in the GIF at the start of this README.md, the map can be rotated.\nThere's no compass currently, but the f and g axes still point toward the upper\nright and upper left corners of the screen, respectively, when the world rotates.\nThe controls stay the same; it's as if the world was spun 90 degrees around a\ncentral \"carousel pole\" every time you press `[` or `]`.\n\n## Info\n\nBased on [voxelia by bergice](https://gitlab.com/bergice/voxelia/-/tree/master).\nLicense is [MIT](LICENSE).\n\nUses [art by Gustavo Vituri](https://gvituri.itch.io/isometric-trpg).\nLicense says ['You are free to use all sprites in both personal and commercial projects.'](assets/isometric-trpg-License.txt),\nand to credit Gustavo Vituri. Don't use the sprites in any NFT; it isn't permitted.\n\nContains a [scene2d.ui skin by Raymond Buckley](https://ray3k.wordpress.com/clean-crispy-ui-skin-for-libgdx/).\nLicense is [CC-BY 4.0](assets/Skin-License.txt).\n\nContains a [song by Komiku, 'Road 4 Fight'](https://freemusicarchive.org/music/Komiku/Helice_Awesome_Dance_Adventure_/road-4-fight/)\nLicense is [CC0](assets/Komiku%20-%20Road%204%20Fight%20-%20License.txt).\n\nContains the font [Cozette, by ines](https://github.com/the-moonwitch/Cozette).\nIt is [MIT-licensed](assets/Cozette-License.txt).\n\n## Platforms\n\n- `core`: Main module with the application logic shared by all platforms.\n- `lwjgl3`: Primary desktop platform using LWJGL3; was called 'desktop' in older docs.\n- `android`: Android mobile platform. Needs Android SDK.\n- `teavm`: Web platform using TeaVM and WebGL.\n- `ios-moe`: iOS mobile backend using Multi-OS Engine.\n\n## Gradle\n\nThis project uses [Gradle](https://gradle.org/) to manage dependencies.\nThe Gradle wrapper was included, so you can run Gradle tasks using `gradlew.bat` or `./gradlew` commands.\nUseful Gradle tasks and flags:\n\n- `--continue`: when using this flag, errors will not stop the tasks from running.\n- `--daemon`: thanks to this flag, Gradle daemon will be used to run chosen tasks.\n- `--offline`: when using this flag, cached dependency archives will be used.\n- `--refresh-dependencies`: this flag forces validation of all dependencies. Useful for snapshot versions.\n- `android:lint`: performs Android project validation.\n- `build`: builds sources and archives of every project.\n- `cleanEclipse`: removes Eclipse project data.\n- `cleanIdea`: removes IntelliJ project data.\n- `clean`: removes `build` folders, which store compiled classes and built archives.\n- `eclipse`: generates Eclipse project data.\n- `idea`: generates IntelliJ project data.\n- `lwjgl3:jar`: builds application's runnable jar, which can be found at `lwjgl3/build/libs`.\n- `lwjgl3:run`: starts the application.\n- `teavm:build`: builds the JavaScript application into the build/dist/webapp folder.\n- `teavm:run`: serves the JavaScript application at http://localhost:8080 via a local Jetty server.\n- `test`: runs unit tests (if any).\n\nNote that most tasks that are not specific to a single project can be run with `name:` prefix, where the `name` should be replaced with the ID of a specific project.\nFor example, `core:clean` removes `build` folder only from the `core` project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftommyettinger%2Fisometricvoxeldemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftommyettinger%2Fisometricvoxeldemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftommyettinger%2Fisometricvoxeldemo/lists"}