{"id":15663682,"url":"https://github.com/shnewto/limbo_pass","last_synced_at":"2025-05-06T18:15:38.516Z","repository":{"id":75084083,"uuid":"487645986","full_name":"shnewto/limbo_pass","owner":"shnewto","description":"a little game, limbo on a mountain pass","archived":false,"fork":false,"pushed_at":"2024-03-06T06:34:57.000Z","size":7111,"stargazers_count":17,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-04T23:48:07.250Z","etag":null,"topics":["3d","bevy","blender","collision-detection","game-development","rapier3d","rust"],"latest_commit_sha":null,"homepage":"https://sheas.blog/post/limbo-pass.html","language":"Rust","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/shnewto.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":"2022-05-01T21:25:30.000Z","updated_at":"2025-02-21T10:47:22.000Z","dependencies_parsed_at":"2024-10-23T08:38:33.319Z","dependency_job_id":"9bf365af-d7ad-43cf-9ed7-17040fe240c5","html_url":"https://github.com/shnewto/limbo_pass","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnewto%2Flimbo_pass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnewto%2Flimbo_pass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnewto%2Flimbo_pass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnewto%2Flimbo_pass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shnewto","download_url":"https://codeload.github.com/shnewto/limbo_pass/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252741475,"owners_count":21797027,"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":["3d","bevy","blender","collision-detection","game-development","rapier3d","rust"],"created_at":"2024-10-03T13:39:24.016Z","updated_at":"2025-05-06T18:15:38.490Z","avatar_url":"https://github.com/shnewto.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# limbo pass\n\na little game, limbo on a mountain pass\n\n![limbo pass screenshot](img/bevy-scene.png)\n\n## run the game\n\nbuild / run with the **release** flag so the overworld theme loads on time :)\n\n```sh\ncargo run --release\n```\n\n## wander\n\n- space bar\n- ← ↑ ↓ →\n- w a s d\n\n## look\n\n- hold ctrl and move the mouse to orbit the camera around the scene\n- scroll to zoom\n- secondary click / right click for a slow camera pan\n\n## about\n\n- limbo pass was written with rust, bevy, and the amazing bevy plugins bevy_kira_audio, bevy_rapier3d, and smooth-bevy-cameras. the scene was modled in blender 3.2.0 alpha\n- the overworld theme was made on an op-1, using the the deep space string synthesizer and tombola sequencer - then post processed with ffmpeg. if you just want to hear the theme, it's also listenable on [soundcloud](https://soundcloud.com/wanderball)\n\n## why\n\nmostly this little game was me figuring out how to use blender assets in bevy and then how to make the ghost's movement respect the surfaces of the terrain. i drew a lot of inspiration and owe a lot of lightbulb moments to the @sdfgeoff projects [blender_bevy_toolkit](https://github.com/sdfgeoff/blender_bevy_toolkit) and [blender_bevy_top_down_space_shooter](blender_bevy_top_down_space_shooter).\n\n## blender\n\nsome details on implementation on the blender side. in case you're curious or looking for examples of how to do this sort of stuff yourself like i was at every step of the way.\n\n- the scenes used for this project live in `blend/limbo_pass.blend` and are exported to `limbo_pass/assets/gltf/limbo_pass.gltf`\n- this project gets both scenes and the terrain mesh by name so make sure you keep track of those :)\n- the ghost's origin is somewhere near the object's center of mass but I toggled it a bit. on the bevy / rapier3d side, the scene shares a transform with a sphere collider and because the ghost's shape is irregular it needed a bit of adjusting to match the collider's vertical area\n- i ended up doing some... cursed looking things i probably didn't have to to get the terrain's vertices and indexes for the trimesh collider, if you can point me at a better solution I'd be glad for it :)\n- i left this commented out in the main function, it was very helpful when developing colliders to see them rendered `.add_plugin(RapierDebugRenderPlugin::default())`\n\n![ghost form scene](img/ghost-form-scene.png)\n\n![terrain scene](img/terrain-scene.png)\n\n![gltf export](img/gltf-export.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshnewto%2Flimbo_pass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshnewto%2Flimbo_pass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshnewto%2Flimbo_pass/lists"}