{"id":49883331,"url":"https://github.com/perbu/dfender","last_synced_at":"2026-05-15T16:11:11.685Z","repository":{"id":349377525,"uuid":"1202103786","full_name":"perbu/dfender","owner":"perbu","description":"2D space shooter","archived":false,"fork":false,"pushed_at":"2026-04-19T12:19:22.000Z","size":4386,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-19T14:31:08.112Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/perbu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-05T15:50:18.000Z","updated_at":"2026-04-19T12:19:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/perbu/dfender","commit_stats":null,"previous_names":["perbu/dfender"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/perbu/dfender","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fdfender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fdfender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fdfender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fdfender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perbu","download_url":"https://codeload.github.com/perbu/dfender/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fdfender/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33071692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2026-05-15T16:11:10.860Z","updated_at":"2026-05-15T16:11:11.677Z","avatar_url":"https://github.com/perbu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dFender\n\nTop-down 2D arena shooter written in Go with [Ebitengine](https://ebitengine.org/). Defend against waves of enemies pouring through four gates. Newtonian physics, a freely rotating turret, and art deco visuals with bloom and shader effects.\n\nConcept copied from Stardew Valley arcade.\n\n![screenshot](assets/screenshot.png)\n\nNo external assets — all graphics are procedural (vector shapes + Kage shaders).\n\n## Controls\n\n- **WASD** — thrust (Newtonian — you drift, brake yourself)\n- **Arrow keys** — rotate turret\n- **Space** — fire (overheats)\n- **E** — fire missile (if carrying any)\n\nHit a wall too fast and you die. Touch an enemy and you die.\n\n## Install\n\n```\ngo install github.com/perbu/dfender@latest\n```\nIt might take a minute or two to install.\nRequires Go 1.26+ and the Ebitengine dependencies for your platform (see [Ebitengine install guide](https://ebitengine.org/en/documents/install.html)).\n\n## Gameplay Mechanics\n\n### Ship \u0026 Movement\n\n- Newtonian physics — four thrusters (WASD) apply force impulses, no friction, no speed cap.\n- Thruster exhaust produces particles and glow.\n- **Soft wall impact** (below speed threshold): bounce with velocity dampening and particle burst.\n- **Hard wall impact** (above speed threshold): instant death. You can reach lethal speed after ~3 seconds of single-thruster acceleration.\n- One-hit-kill from enemy contact.\n\n### Turret \u0026 Weapon\n\n- Turret rotates independently at ~180°/sec via arrow keys.\n- Machine gun fires while Space is held (~10 rounds/sec, unlimited ammo).\n- Heat gauge fills over ~4 seconds of continuous fire. Overheat locks the gun for ~2 seconds. Heat dissipates in ~3 seconds when not firing.\n- Turret glows from amber to red as heat builds.\n\n### Enemies \u0026 Waves\n\n- Enemies spawn from four gate portals (one per wall) and home toward the player.\n- **Wave 1**: 1 HP enemies, small count. Each subsequent wave adds +1 HP and more enemies.\n- Enemies trickle in over several seconds per wave, with a ~3 second pause between waves.\n- Enemy speed increases slightly per wave.\n\n### Power-Ups\n\nEnemies have a 20% chance to drop a power-up on death, starting from wave 2. Power-ups float in the arena for 10 seconds (blinking before they despawn). All three types coexist independently.\n\n- **Shield** (gold hexagon): Absorbs one enemy hit and kills the attacker. Carry one at a time; pick up another to refill.\n- **Guns** (amber pentagon): 20-second buff — double barrel with faster fire rate. Picking up another resets the timer.\n- **Missile** (red diamond): Adds one homing missile to your inventory (max 9). Fire with **E** — the missile homes toward the nearest enemy in the turret's direction and one-hit kills regardless of HP. Explodes on wall contact.\n\n### Scoring\n\n- 100 base points per kill.\n- Combo multiplier: kills within 2 seconds of each other increment the multiplier (x2, x3, ...). Resets after 2 seconds of no kills.\n- Wave completion bonus: 500 × wave number.\n\n### Visual Style\n\nArt deco palette — deep navy background, gold/amber player, teal enemies. Heavy shader work: bloom on everything luminous, gate portal swirls, heat distortion near overheat, screen shake on impacts and deaths. All graphics are procedural vector shapes rendered at 1920×1080.\n\n## License\n\nApache Public License 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperbu%2Fdfender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperbu%2Fdfender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperbu%2Fdfender/lists"}