https://github.com/m110/airplanes Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + For + Enterprise + Teams + Startups + Education + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} m110 / airplanes Public * Notifications * Fork 5 * Star 104 A 2D shoot 'em up game made with Go, Ebitengine, and donburi. Featuring ECS (Entity Component System). m110.github.io/airplanes/ License MIT license 104 stars 5 forks Star Notifications * Code * Issues 1 * Pull requests 0 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights m110/airplanes This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 0 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/m] Use Git or checkout with SVN using the web URL. [gh repo clone m110/a] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @m110 m110 Update README ... 47937be Dec 1, 2022 Update README 47937be Git stats * 104 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows Try another github action Oct 11, 2022 archetype Update README Nov 30, 2022 assets Update README Nov 30, 2022 component Add naive missile turret Nov 12, 2022 docs Update README Dec 1, 2022 engine Use EventBus from donburi Nov 6, 2022 scene Update README Nov 30, 2022 system Update README Nov 30, 2022 web No border Oct 15, 2022 LICENSE Add LICENSE Oct 4, 2022 README.md Update README Dec 1, 2022 go.mod Bump donburi Nov 6, 2022 go.sum Bump donburi Nov 6, 2022 main.go Improve player select Oct 15, 2022 View code [ ] airplanes GitHub GameOff Disclaimer Status How to play Playing Debug Mode Architecture Level Editor Spawning README.md airplanes License Go Report Card ActionsCI Play online A 2D shoot 'em up game made with: * Go * Ebitengine * donburi * Tiled and go-tiled Assets by Kenney. [screenshot] GitHub GameOff Disclaimer Most of this game was created during October 2022. I wanted to take part in GitHub GameOff, but sadly didn't have enough time to create a new game. I'm submitting this one and I hope this is still in the spirit of the competition since it was created pretty much within one month. You be the judge. :) Status Playable, with a long list of ideas and TODOs in the code. There are just two levels right now. How to play * Player 1: WASD to move, Space to shoot * Player 2: Arrow keys to move, Enter to shoot Shoot enemies and avoid bullets. Collect powerups to evolve your airplane! [evolution] Playing Play online: https://m110.github.io/airplanes/ Or local: go run github.com/m110/airplanes@latest Debug Mode To enable debug mode, press the slash key (/). [debug] Architecture This game uses the ECS architecture provided by donburi. Parts of airplanes were ported to donburi as features. The ECS structure is as follows: * component - contains all components. Components are Go structs with no behavior other than occasional helper methods. * system - contains all systems. Systems keep the logic of the game. Each system works on entities with a specific set of components. * archetype - contains helper functions for creating entities with specific sets of components. Other packages: * assets - contains all assets. Assets are loaded using Go embedding, so they are compiled into the final binary (which makes it easier to distribute the game). * engine - helper functions for generic game logic. * scenes - contains all scenes. Level Editor You can edit the levels in the assets/levels directory using Tiled. Levels are loaded using the level*.tmx pattern, so you can add new levels by adding new files with bigger numbers. [editor] Supported objects are: Object Description enemy-airplane An enemy airplane. enemy-tank An enemy tank shooting at the player. enemy-turret-missiles An enemy turret shooting homing missiles. group-spawn A group enemy spawn. The rotation of objects is reflected in-game. Parameters: Parameter Description speed Speed of the enemy, if different than default. path Path of the enemy. If not provided, the enemy moves in the facing direction. spawn Group spawn, if a group of enemies needs to spawn at once. The path should point to either a polygon or a polyline object in the same layer. If a polyline is used, the enemy will follow the path and keep moving in the facing direction after the last point. Polygon paths work like loops. Spawning Enemies are spawned once the top camera boundary reaches their position. A group spawn spawns all connected enemies at once. All objects despawn once they go out of screen. About A 2D shoot 'em up game made with Go, Ebitengine, and donburi. Featuring ECS (Entity Component System). m110.github.io/airplanes/ Topics game ecs entity-component-system ebiten ebitengine Resources Readme License MIT license Stars 104 stars Watchers 1 watching Forks 5 forks Releases No releases published Languages * Go 99.3% * HTML 0.7% Footer (c) 2022 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.