Home

Awesome

airplanes

License Go Report Card ActionsCI Play online

A 2D shoot 'em up game made with:

Assets by Kenney.

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

Shoot enemies and avoid bullets.

Collect powerups to evolve your airplane!

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 (/).

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:

Other packages:

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.

Supported objects are:

ObjectDescription
enemy-airplaneAn enemy airplane.
enemy-tankAn enemy tank shooting at the player.
enemy-turret-missilesAn enemy turret shooting homing missiles.
group-spawnA group enemy spawn.

The rotation of objects is reflected in-game.

Parameters:

ParameterDescription
speedSpeed of the enemy, if different than default.
pathPath of the enemy. If not provided, the enemy moves in the facing direction.
spawnGroup 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.

Mobile Development Notes

  1. task mobile to create the Airplanes.xcframework.
  2. Open the Xcode project and deploy.
  3. If the app takes long to launch, <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>,</kbd> and disable the "Debug executable" option.

Creating a new mobile project

  1. Create a new Xcode project (Game, SpriteKit).
  2. Add the Airplanes.xcframework to the project as a framework.
  3. Add the GameController.framework to the project as a framework.
  4. Update GameViewController to use MobileEbitenViewController.