{"id":17791323,"url":"https://github.com/schell/old-gods","last_synced_at":"2025-07-16T05:35:21.344Z","repository":{"id":66386471,"uuid":"227726453","full_name":"schell/old-gods","owner":"schell","description":"Old Gods Engine","archived":false,"fork":false,"pushed_at":"2020-11-27T17:56:00.000Z","size":10637,"stargazers_count":20,"open_issues_count":22,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-01T22:38:40.937Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/schell.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}},"created_at":"2019-12-13T01:05:42.000Z","updated_at":"2023-09-12T04:24:46.000Z","dependencies_parsed_at":"2023-05-07T05:37:26.911Z","dependency_job_id":null,"html_url":"https://github.com/schell/old-gods","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/schell/old-gods","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schell%2Fold-gods","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schell%2Fold-gods/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schell%2Fold-gods/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schell%2Fold-gods/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schell","download_url":"https://codeload.github.com/schell/old-gods/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schell%2Fold-gods/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265484913,"owners_count":23774415,"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":[],"created_at":"2024-10-27T10:50:37.656Z","updated_at":"2025-07-16T05:35:21.306Z","avatar_url":"https://github.com/schell.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\n    The Old Gods Engine\n    \u003cbr /\u003e\n    \u003cimg src=\"old_gods/manual/src/img/logo.png\" /\u003e\n  \u003c/h1\u003e\n\u003c/div\u003e\n\nThis is an aspirational handmade game engine meant for games targeting the web and SDL2.\nIt reads Tiled map files into a specs based entity component system.\n\nRendering is handled by HtmlCanvasElement or the built in SDL2 renderer.\n\nA number of base systems handle the core of the engine:\n* TiledmapSystem - loads maps\n* Physics - collision detection and handling\n* AnimationSystem - sprite animation\n* GamepadSystem - controller support\n\nMore specific add-ons are available as separate crates.\n\n## Warning\nThis is a WIP and it was also my first Rust project. \n\n## Performance\nI'm really surprised at the performance. So far without any attention to\nperformance the engine is running at about 330FPS, with a high of about 500FPS\n(in SDL2). On wasm it's running at a pretty steady 60FPS, but this is only \nbecause the frame rate is tied to `requestAnimationFrame`.\n\n## Core Features\n\n* Map creation using the ubiquitous Tiled map editor.\n* Animation\n* Sprites (nested, keyframed Tiled maps)\n* Collision detection and handling (SAT for AABBs)\n* Dynamic viewport rendering\n* Easily overridable default rendering\n\nSee the [old gods architectural diagram](old_gods/architecture.md) for a quick\noverview of the core systems.\n\n## Extras / Examples\n* Inventory and items\n\n## Building\nFirst you'll need new(ish) version of the rust toolchain. For that you can visit\nhttps://rustup.rs/ and follow the installation instructions.\n\nThis project uses the nightly release:\n\n```\nrustup default nightly\n```\n\nThen you'll need [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/).\n\nThen, if you don't already have it, `cargo install basic-http-server` or use your\nfavorite alternative static web server to serve assets.\n\nAfter that building is pretty straightforward\n\n```\ncargo build\nwasm-pack build --debug --target web examples/{some example}\nbasic-http-server -x -a 127.0.0.1:8888 examples/{some example}\n```\n\nThen visit http://localhost:8888/\n\n## Contributing\n\nIf you'd like to contribute check the [issues][issues]. Or look at what\n[projects][projects] are kicking around!\n\n### Code style\n\nFormatting is enforced by `rustfmt`. Before you commit do:\n\n```\ncargo fmt\n```\n\nand your changes will be reformatted to fit our standard.\n\n[issues]: https://github.com/schell/old-gods/issues\n[projects]: https://github.com/schell/old-gods/projects\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschell%2Fold-gods","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschell%2Fold-gods","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschell%2Fold-gods/lists"}