{"id":50670533,"url":"https://github.com/dylanlangston/asteroids","last_synced_at":"2026-06-08T10:34:07.456Z","repository":{"id":210812589,"uuid":"727498373","full_name":"dylanlangston/asteroids","owner":"dylanlangston","description":"A twist on the classic game where asteroids bounce off the walls.","archived":false,"fork":false,"pushed_at":"2024-01-16T02:16:38.000Z","size":4543,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-01-16T07:24:56.341Z","etag":null,"topics":["asteroids","asteroids-game","game-jam","raylib","zig"],"latest_commit_sha":null,"homepage":"https://asteroids.dylanlangston.com/","language":"Zig","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/dylanlangston.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}},"created_at":"2023-12-05T01:33:07.000Z","updated_at":"2024-01-09T04:21:29.000Z","dependencies_parsed_at":"2024-01-10T17:12:50.070Z","dependency_job_id":null,"html_url":"https://github.com/dylanlangston/asteroids","commit_stats":null,"previous_names":["dylanlangston/astroids","dylanlangston/asteroids"],"tags_count":94,"template":null,"template_full_name":null,"purl":"pkg:github/dylanlangston/asteroids","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlangston%2Fasteroids","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlangston%2Fasteroids/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlangston%2Fasteroids/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlangston%2Fasteroids/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dylanlangston","download_url":"https://codeload.github.com/dylanlangston/asteroids/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlangston%2Fasteroids/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34059156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"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":["asteroids","asteroids-game","game-jam","raylib","zig"],"created_at":"2026-06-08T10:34:06.720Z","updated_at":"2026-06-08T10:34:07.448Z","avatar_url":"https://github.com/dylanlangston.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"[//]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet\n\n\u003ca href=\"https://asteroids.dylanlangston.com/\" title=\"Asteroid Arena 🪨\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./banner.png\" alt=\"Asteroid Arena 🪨\" align=\"center\"\u003e\u003c/img\u003e\n  \u003c/p\u003e\n\u003c/a\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://itch.io/jam/raylib-slo-jam\"\u003e\u003cimg alt=\"Due January 8th 2024 at 3:00 PM EST\" src=\"https://img.shields.io/badge/dynamic/xml?url=https%3A%2F%2Ffree.timeanddate.com%2Fcountdown%2FtatTime%2520left%2520to%2520Event%2520in%2Ftac000%2FtptTime%2520since%2520Event%2520started%2520in%2Ftpc000%2Fmac000%2Fmpc000%2Fiso2024-01-08T20%3A00%3A00\u0026query=%2F%2Ftd%5B%40id%3D%22cd%22%5D\u0026suffix=%20days\u0026label=Deadline%3A\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://ziglang.org/download\"\u003e\u003cimg alt=\"Zig\" src=\"https://img.shields.io/badge/Zig-0.11.0-fd9930.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.raylib.com/\"\u003e\u003cimg alt=\"Zig\" src=\"https://img.shields.io/badge/raylib-4.6.0--dev-%23FFF.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/dylanlangston/asteroids/actions/workflows/DeployPages.yml\"\u003e\u003cimg alt=\"GitHub Workflow CI/CD\" src=\"https://img.shields.io/github/actions/workflow/status/dylanlangston/asteroids/DeployPages.yml?label=CI%2FCD\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/dylanlangston/asteroids/blob/main/LICENSE\"\u003e\u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/dylanlangston/asteroids\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/dylanlangston/asteroids/releases/latest\"\u003e\u003cimg alt=\"Latest Build\" src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Frepos%2Fdylanlangston%2Fasteroids%2Freleases\u0026query=%24%5B%3A1%5D.tag_name\u0026label=Latest%20Build\u0026color=%234c1\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://api.github.com/repos/dylanlangston/asteroids\"\u003e\u003cimg alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/dylanlangston/asteroids\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nAsteroid Arena is a twist on the classic game with an expanded world where asteroids bounce off the walls. Try to keep up as the amount of asteroids increases the more you destroy. Also watch out for rogue aliens!!\n\nThis [Mobile First](https://developer.mozilla.org/en-US/docs/Glossary/Mobile_First) [Progressive Web App](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) is a submission to the 2023 *Raylib Slo-Jam* event hosted on [itch.io](https://itch.io/), It was created by [@dylanlangston](https://github.com/dylanlangston) using the following:\n- [Zig](https://ziglang.org/)\n- [raylib](https://www.raylib.com/) via [raylib-Zig](https://github.com/Not-Nik/raylib-zig/tree/devel)\n- [Emscripten](https://emscripten.org/)\n- [Binaryen](https://github.com/WebAssembly/binaryen)\n- [Svelte](https://svelte.dev/)\n- [TypeScript](https://www.typescriptlang.org/)\n- [TailwindCSS](https://tailwindcss.com/)\n\n#### What's raylib Slo-Jam?\n\n\u003e The goal of [raylib Slo-Jam](https://itch.io/jam/raylib-slo-jam) is to have participants all make the same kind of game, using raylib and not be rushed by short time constraints. The focus is on quality and polish, not scope and features. We want you to make the best game you can based on the theme. \n\u003e\n\u003e Everyone who participates in the jam will be building the classic arcade game: **Asteroids**\n\n\u003ca href=\"https://dylanlangston.itch.io/asteroids\"\u003e![Play on Itch.io](itch.io-banner.png)\u003c/a\u003e\n\n------\n\n### Getting Started\n*This repository includes a [devcontainer.json](.devcontainer/devcontainer.json) to get up and running quickly with a full-featured development environment in the cloud!*[^local-development]\n\n#### Clone\n1. Clone this repository: `git clone https://github.com/dylanlangston/asteroids.git`\n2. Change directories into the newly created `./asteroids` folder. Then initialize the submodules: `git submodule update --init --recursive`\n\n#### Debug Locally:\n1. If you haven't already, install Zig version 0.11.0 using the [instructions here](https://ziglang.org/learn/getting-started/#installing-zig).\n2. Configure you build environment for Raylib using the appropriate [instructions](https://github.com/raysan5/raylib/wiki#development-platforms) for you platform.\n3. Finally, to start the game run the command `zig build run`. Alternatively run the **_Debug_** task in VSCode.\n\n#### Build for Web:\n1. Complete steps to __Clone__ and __Debug Locally__ above first.\n2. Change directories into the `./asteroids` folder. Build the zig portion of the game using command `zig build -Dtarget=wasm32-emscripten`. Alternatively run the **_Build Web_** task in VSCode.\n3. If you haven't already, install NodeJS LTS from [here](https://nodejs.org/en/download) (or your preferred source).\n4. Change directories into the `./asteroids/src/asteroids-website` folder. Then install the required node packages using `npm install`.\n5. Build the web version by running the command `npm run build`. You can find the generated static site in the `./asteroids/src/asteroids-website/build` folder.\n\n#### Localizing:\nThis application is fully localized into English, French, and Spanish. It should be possible to support any language using a Latin Character set. The following steps can be used to translate the application:\n\n*Localizating the Zig portion:*\n1. Open the `./src/Locales/` folder. Copy an existing locale `.zig` file and rename it to the appropriate language name. For example \"german.zig\".\n2. Edit the new file by translating the strings to the choosen language (i.e. - German).\n3. Open the `./src/Localelizer.zig` file. Add your new language to the __Locales__ enum, take note of the order for later. Then update the __Localelizer.get__ function to handle the new enum. The changes should look something like this:\n```zig\npub const Localelizer = struct {\n    pub inline fn get(locale: Locales) Locale {\n        switch (locale) {\n            Locales.german =\u003e {\n                return @import(\"./Locales/german.zig\").german;\n            },\n        }\n    }\n};\npub const Locales = enum(usize) {\n    ...\n    german,\n};\n```\n\n*Localizating the Web portion:*\n1. Open the `./src/asteroids-website/src/locales` folder. Copy an existing locale `.json` file and rename it to the appropriate language name. For example \"de.json\".\n2. Edit the new file by translating the strings to the choosen language (i.e. - German).\n3. Open the `./src/asteroids-website/static/manifests` folder. Copy an existing `manifest.json` file and rename it to the appropriate language name (i.e. - \"de.manifest.json\").\n4. Edit the new manifest file and translate the appropriate strings to the choosen language (i.e. - German). [Read more about the manifest.json format here.](https://developer.mozilla.org/en-US/docs/Web/Manifest)\n5. Open the `./src/asteroids-website/src/lib/localizer.ts` file. Add your new language to the __Locales__ enum, ensure the order is the same as the Zig enums you updated earlier. Update the __LocaleGroup.LocalePrefixes__ array with the new enum and the language prefix (the file name from step 1). The changes should look something like this:\n```TypeScript\nexport enum Locales {\n    ...\n    german,\n}\n\nclass LocaleGroup {\n    public static readonly LocalePrefixes = [\n        {\n            key:   Locales.german,\n            value: \"de\"\n        },\n    ];\n}\n```\n\n------\n\n### Credits\n| Font | Source | License |\n|:---- |:------:| -------:|\n| _Hyperspace_ | https://www.fontspace.com/hyperspace-font-f18038 | Freeware, Non-Commercial |\n| _Two Lines_ | https://www.fontspace.com/2-lines-font-f14541 | Freeware, Non-Commercial |\n\n| Palette | Source |\n|:-------:|:------:|\n| _AKC12_ | https://lospec.com/palette-list/akc12 |\n\n| Sound | Creator | Tool | Copy/Paste | License |\n|:-------:|:------:|:---:|:---------- |:-------:|\n| _[Acceleration](./src/Sounds/Acceleration.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQgcFIngEIOhkZGBrq3RknMTEzvGH6X_-_ntXIGCTRUH_GB5WeEYldPE0NQjOsYzcynghi_7eHiMBowgJ8vG2nQbR3-ClGZDNhdv4HQ0cHixAGegIAUKwyuw..` | Creative Commons (by) Attribution |\n| _[Alien Explosion](./src/Sounds/AlienExplosion.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQieOMAQODHOvaOwwMDfUMDPNY-pmm8_2vV4pmEZBgYAAJnvGB0HdU_HVB9GNVHSMQnWG4-CiI7jEP7wPRaWpHHEA00zp2I-OJDAwKjM-lny4FiVxT3nkPbPx_e4hRMJoZXYCPt-00iPYOP8UIMRMiPiMSqg4MI1XmRzHQEwAAYv454w..` | Creative Commons (by) Attribution |\n| _[Alien Pew](./src/Sounds/AlienPew.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQgeWMQ8MpBjBoqGdgmMTUxiDH-r_eN4nFyBgieMYHQk-22HwXRDNqZ20E0TnqkTtBtHDe73kgOk0Nasg6diPjiQwMjEy8up4HQSIv1XbeA8v8t4cogdHM6AJ8vG2nQbR3-ClGZDNnRELVgWGkCsRNdAMAw4g3_g..` | Creative Commons (by) Attribution |\n| _[Explosion](./src/Sounds/Explosion.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQkSNNi4Hh6953dxgYGuoZGJJZH7P-4_pfrxTNIiDBwAASPOODSs-IxC6epnbEAUQzrmM3Mp7IwKDA-t8eIgOjGdAFmNEF-HjbToNo7_BTjBAzUe38D4amcqlpDPQEADcqNn8.` | Creative Commons (by) Attribution |\n| _[Hit Wall](./src/Sounds/HitWall.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQgeW_vlcrAxg01DMwlDHwM9kx_q__b898zRkieMYHQj9WNdsHomdEoorD6DQ1qCHr2I2MJ4LY_-0hIjCasAAfb9tpEO0dfooR2UyYnf_B0NEhOJmBngAA6yE0Wg..` | Creative Commons (by) Attribution |\n| _[Med Explosion](./src/Sounds/MedExplosion.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQg-O_MgND7X8GIGioZ2CYxDSD-R_X_3q9WAYjY4jgGR9UekYkdvE0tSMOIJpxHbuR8USQ2H97iAyMJizAx9t2GkR7h59ihJiJaud_MHTWdkhgoCcAAKqnNQY.` | Creative Commons (by) Attribution |\n| _[Pew](./src/Sounds/Pew.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQie2_vcFeAYkmBQaGhnp3RmaGcOaVLP_ra-IZjIwZGECCZ3wg9BGF3OMg-poz6zZkcRidpgahGdaxGxlPBDKZeHU9D4JEXqrtvAeimf7bQ5TAaGZ0AT7ettMg2jv8FCOymTMioerAMFKF15eBngAATc423A..` | Creative Commons (by) Attribution |\n| _[Small Explosion](./src/Sounds/SmallExplosion.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [Chiptone](https://sfbgames.itch.io/chiptone) | `eNpjYig-PkOQgSNNjoGh9j8DEDTUMzCEM59j_Mf1v_6_PYORMUTwjA8qPSMSu3iaGtSQdexGxhNBbKAhYBEYTViAj7ftNIj2Dj_FiGwmzM7_YFhl8iCKgZ4AACVNNOI.` | Creative Commons (by) Attribution |\n\n| Music | Creator | Tool | Link | License |\n|:-------:|:------:|:---:|:----:|:-------:|\n| _[Background](./src/Music/BackgroundMusic.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [BeepBox](https://www.beepbox.co/) | [Background](https://www.beepbox.co/#9n31s1k9l00e05t1Aa7g05j07r1i0o432T0v2u00f10l7q8142d35w2h0E0T5v2u50f0qwx10p511d08H-JJAArrqiih999h0E1b6T1v2u01f10r8q011d35AcF8B5Q0259P8998E0T3v3uf7f0qwx10m711d08SZIztrsrzrqiiiiiE1b6b4zhm4zhl4zdi4h4hp22mISLA2qJaHaAZlHJK3x1c3qXHqGiOGyox8vrdTmpHZ6WJJiLjIS5DAOJWYe8ebdHWEq-WHGL1qxkWHGL2oGKHaKFJvokBjjGicBsaq_4idkz9icz9q5dltBJR-FnprjljkFJv9kzt0yCL05dJdldl80) | Creative Commons (by) Attribution |\n| _[Game Over](./src/Sounds/Gameover.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [BeepBox](https://www.beepbox.co/) | [Game Over](https://www.beepbox.co/#9n30s1k9l00e00t2ma4g00j07r1i0o432T0v1u00f0q012d08w2h2E306060cT5v3u50f0qwx10p511d08H-JJAArrqiih999h0E1b6T1v1u84f10r8q011d35AcF8B5Q0259P8998E0b4hp1uFH-5I59O82CLUmOs3i0FJvQCLQsh00) | Creative Commons (by) Attribution |\n| _[Title Screen](./src/Music/TitleScreenMusic.ogg)_ | [miajohnson99](https://github.com/miajohnson99) | [BeepBox](https://www.beepbox.co/) | [Title Screen](https://www.beepbox.co/#9n30s1k9l00e04t1Za7g04j07r1i0o432T0v1u00f0q012d08w2h0E0T5v2u50f0qwx10p511d08H-JJAArrqiih999h0E1b6T1v2u84f10r8q011d35AcF8B5Q0259P8998E0b4zhh8Qkid5p22BIR_6GgAR_u8TwullupL4l5JFEZ6CODrHGHXAIHcCXHYQePrHSGqGqHWqKAiiSXAHaAtESLsl5dHYaoaDcq-2FIR_ixdvRAt2Zk6CzNGZGLbbGGqHWqJO-WG-KKMmrz-dky9JvHDy8umrnXiVmbKQbujnZpepAZ54nrNSw) | Creative Commons (by) Attribution |\n\nAll the included textures were created using [Piskel](https://www.piskelapp.com/p/create/sprite) and can be found in the [`Piskel`](./Piskel/) folder. They are licensed as Creative Commons (by) Attribution.\n\n[^local-development]: For local development check out [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) and [DevPod](https://devpod.sh/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylanlangston%2Fasteroids","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdylanlangston%2Fasteroids","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylanlangston%2Fasteroids/lists"}