Skip to content

About

Combat top-down 2D airplane game with fuel management, multiple weapons, multi-level, and adjustable difficulty. Made with Godot 4.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

8 stars

Watchers

0 watching

Forks

Latest commit

 

History

4,544 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Start Made with Godot Godot GDScript Itch.io CodeRabbit Pull Request Reviews CI/CD Latest Release Last Commit Downloads codecov Repo Size Closed Issues Open Issues All Contributors

A top-down combat airplane web game built with Godot 4.X — fuel management, multiple weapons, multi-level progression, and adjustable difficulty.

Play it now on itch.io.

Sky Lock Assault

This is a learning-focused Godot project. We started with a simple main menu and continue expanding into player controls, enemy AI, and aerial combat. Source is publicly available under the PolyForm Noncommercial License 1.0.0.


Table of Contents


Project Overview

Item Details
Godot Version 4.X stable (or compatible)
Primary OS Windows 10/11 64-bit
Supported Browsers Chrome 90+, Firefox 88+, Edge 90+ (WebGL 2.0 required)
Known Limitations Mobile touch controls are experimental; fullscreen may not persist on iOS Safari
Goal Playable top-down shooter with HTML5/Web export, local testing, and itch.io deployment

Local development tools

  • Docker Desktop (local web testing)
  • GitHub Desktop (repo management)
  • PyCharm / any editor (file editing)
  • Windows PowerShell (Docker commands)

Play Instructions

Online (itch.io)

  1. Visit ikostan.itch.io/sky-lock-assault
  2. Click Run game

In Godot Editor

  1. Open the project
  2. Press F5 to run the main scene (main_menu.tscn)
  3. Use keyboard/mouse for navigation

Local Web Testing

  1. Export the project to HTML5 (see Setup Instructions)
  2. From infra/ in PowerShell: docker compose up -d
  3. Open http://localhost:9090
  4. Click Run game in the iframe (use fullscreen for immersion; ignore harmless desktop console warnings)

The game is browser-first and landscape-oriented. Mobile support is experimental.

Tip: While playing, try the options menu — test quit handling (platform-specific) and log levels.


Game Assets

Asset Source
Empire State Font dafont.com
Pixel Planes Assets Pack clavs.itch.io
Laser Bullets Pack 2020 wenrexa.itch.io
Free assets collection Csaba Felvegi / chabull
Royalty-free stock Pixabay
Music — Battle Epic Hot_Dope
SFX — Retro laser 1 Driken5482

Documentation

# Document
1 Guide to Implementing Versioning
2 Godot Documentation
3 Development Guide
4 Local CI Pipeline for Godot (Docker)
5 Docker Local Test Server
6 Setup Instructions
7 Signing Setup for GitHub Desktop
8 Free Web Browser Game Deployment Platforms
9 Inspect files saved by a Godot web export
10 CI/CD Production Salt Injection & Security Guard Architecture
11 Browser DevTools Guide — Verifying Web Save Encryption

Bots & automation tools used in the repo


Architecture Highlights

  • Separation of gameplay logic and UI state
  • Resource-based state model (FuelResource, SpeedResource, GameSettingsResource)
  • Speed-based gameplay scaling
  • Modular audio system with buses
  • CI/CD-driven deployment workflow
  • Test-driven improvements with GUT
  • Observer-based Settings System: centralized GameSettingsResource that handles automatic persistence and UI synchronization through signals

Project Structure

The scripts/ directory is organized by purpose:

Directory Contents
scripts/core/ Foundational systems: game_paths.gd, globals.gd, main_scene.gd, settings.gd
scripts/resources/ Data containers & configuration: game_settings_resource.gd, audio_constants.gd
scripts/entities/ Game objects: player.gd, bullet.gd, weapon.gd
scripts/system/ Platform wrappers: audio_web_bridge.gd, JavaScriptBridgeWrapper.gd, OSWrapper.gd
scripts/managers/ Game-loop managers: audio_manager.gd, parallax_manager.gd, resource_preloader.gd
scripts/ui/ Interface layer: hud.gd; sub-dirs menus/, screens/, components/

Known Issues

  • Harmless console warning on desktop fullscreen (NotSupportedError for orientation lock — non-fatal, does not affect gameplay).
  • Placeholder level still lacks full mechanics (work in progress):
    • Core loop is functional (movement, fuel, speed, audio)
    • Enemy AI and combat progression are upcoming

Report new issues on GitHub Issues.


DevOps & Automation

  • GitHub Actions CI/CD pipeline
  • Automated HTML5 build & itch.io deployment
  • Codecov coverage tracking
  • Snyk security scanning
  • Docker-based local web testing
  • Release Drafter for automated changelogs

Testing

Sky Lock Assault uses the GUT (Godot Unit Test) framework.

Covered areas

  • Input remapping logic
  • Fuel system behavior
  • Speed system thresholds & UI sync
  • Player movement constraints
  • Settings observer (signal emission, value clamping, serialization)
  • JavaScript bridge communication and web integration reliability

Tests run locally and in CI via GitHub Actions. Coverage is tracked with Codecov.

How to run tests

  • Open Godot → GUT Test Runner, or
  • Run via the CI pipeline

Testing is required for gameplay logic changes.


Contributors

Thanks to everyone who has contributed!

ikostan
ikostan

💻 ⚠️ 📖 🚇 🤔 🎨
espanakosta-jpg
espanakosta-jpg

🔊 🎨
dependabot[bot]
dependabot[bot]

🚇 🛡️ 🚧
sourcery-ai
sourcery-ai

👀 📖
coderabbitai
coderabbitai

👀 📖
deepsource-io
deepsource-io

👀 🛡️

This project is currently closed to external code contributions. However, if you find a bug or have feedback, you are welcome to open a GitHub issue. See CONTRIBUTING.md for more details.


License

This project is source-available under the PolyForm Noncommercial License 1.0.0.

  • Free for noncommercial purposes (personal study, hobby projects, eligible noncommercial organizations)
  • Modification and redistribution allowed only for non-commercial purposes
  • Commercial use is prohibited without a separate commercial license

For commercial licensing inquiries, open a GitHub issue or contact via X @EgorKostan.

See the LICENSE file for full terms.


Security

For details on reporting vulnerabilities and our disclosure process, see SECURITY.md.


Player Feedback

We value your input! Share thoughts, bugs, or suggestions via:

About

Combat top-down 2D airplane game with fuel management, multiple weapons, multi-level, and adjustable difficulty. Made with Godot 4.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

8 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages