{"id":48217551,"url":"https://github.com/ractive/air-combat","last_synced_at":"2026-04-04T19:01:19.900Z","repository":{"id":54128309,"uuid":"257985616","full_name":"ractive/air-combat","owner":"ractive","description":"Classic shooter game","archived":false,"fork":false,"pushed_at":"2021-03-08T22:12:12.000Z","size":3920,"stargazers_count":0,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-12T00:21:24.071Z","etag":null,"topics":["arcade-game","game","makecode"],"latest_commit_sha":null,"homepage":"https://ractive.github.io/air-combat/","language":"TypeScript","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/ractive.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}},"created_at":"2020-04-22T18:24:51.000Z","updated_at":"2022-10-28T14:09:31.000Z","dependencies_parsed_at":"2022-08-13T07:01:24.183Z","dependency_job_id":null,"html_url":"https://github.com/ractive/air-combat","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/ractive/air-combat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fair-combat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fair-combat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fair-combat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fair-combat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ractive","download_url":"https://codeload.github.com/ractive/air-combat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fair-combat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31409471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["arcade-game","game","makecode"],"created_at":"2026-04-04T19:01:19.217Z","updated_at":"2026-04-04T19:01:19.883Z","avatar_url":"https://github.com/ractive.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Air Combat ![Build Status Abzeichen](https://github.com/ractive/air-combat/workflows/MakeCode/badge.svg)\n\nAir Combat is a classic arcade shooter game for arcade.makecode.com.\n\n\u003cimg width=\"400\" alt=\"air-combat\" src=\"https://user-images.githubusercontent.com/783861/81269256-5ae21600-9049-11ea-8df7-f8ef9c46f561.png\"\u003e\n\n## How to play\n\nPress and hold button B to shoot and drop bombs with A (if you collected any). In the browser, use key E or Enter for button B and Q or space for button A.\nIf you play with a second player (only available in the browser), the second player can be controlled with the keys J, K, L, I and U and O.\n\nCollect the green powerups to upgrade your weapon and to get points.\n\nThe hearts will give you more lifes (max. 5). If you got shot or collide with an enemy, first the weapon upgrades are destroyed before you loose a life.\n\nWhen playing in \"hardcore\" mode, the enemies take double as many hits as normal.\n\n## Code\nThis game was developed for the arcade.makecode.com platform. When [opening it in arcade.makecode.com](https://arcade.makecode.com/#pub:github:ractive/air-combat) you can also download it to supported devices like the [PyGamer](https://www.adafruit.com/product/4242).\n\nContributions are welcome. Some nicer artwork, some better tuned levels and more types of enemies would always be nice.\n\nThis game is written in Typescript and cannot be developed in block mode.\nThe game is split in various files:\n### main.ts\nContains all the classes that represent the enemies and helper classes to create them.\n### player.ts\nHosts the `Player` class, which draws the player's plane, handles the shooting and picking up powerups.\n### powerup.ts\n`PowereUp` class that shows and hides powerups in random intervals.\n### storybook.ts\nContains the level configurations. It can be defined, which enemy or element should appear when, where, with what velocity.\nThe exported `play` function then makes those elements and enemies appear at the right time.\n### interval.ts\nAllows to subscribe **and unsubscribe** callbacks to be called regularly with `game.onUpdate`. This allows using `game.onUpdate` with short lived objects like the enemy objects.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fractive%2Fair-combat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fractive%2Fair-combat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fractive%2Fair-combat/lists"}