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.
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.
- Project Overview
- Play Instructions
- Game Assets
- Documentation
- Architecture Highlights
- Project Structure
- Known Issues
- DevOps & Automation
- Testing
- Contributors
- License
- Security
- Player Feedback
| 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 |
- Docker Desktop (local web testing)
- GitHub Desktop (repo management)
- PyCharm / any editor (file editing)
- Windows PowerShell (Docker commands)
- Visit ikostan.itch.io/sky-lock-assault
- Click Run game
- Open the project
- Press F5 to run the main scene (
main_menu.tscn) - Use keyboard/mouse for navigation
- Export the project to HTML5 (see Setup Instructions)
- From
infra/in PowerShell:docker compose up -d - Open http://localhost:9090
- 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.
| 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 |
- Dependabot
- Snyk
- Sourcery AI
- CodeRabbit AI
- LlamaPreview
- IMGBOT
- Release Drafter
- Close Stale Issues and PRs
- All Contributors
- DeepSource
- 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
GameSettingsResourcethat handles automatic persistence and UI synchronization through signals
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/ |
- Harmless console warning on desktop fullscreen (
NotSupportedErrorfor 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.
- 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
Sky Lock Assault uses the GUT (Godot Unit Test) framework.
- 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.
- Open Godot → GUT Test Runner, or
- Run via the CI pipeline
Testing is required for gameplay logic changes.
Thanks to everyone who has contributed!
|
ikostan 💻 |
espanakosta-jpg 🔊 🎨 |
dependabot[bot] 🚇 🛡️ 🚧 |
sourcery-ai 👀 📖 |
coderabbitai 👀 📖 |
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.
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.
For details on reporting vulnerabilities and our disclosure process, see SECURITY.md.
We value your input! Share thoughts, bugs, or suggestions via:
- GitHub Discussions - all the hottest features ar here, share your opinion
- itch.io Comments — discuss gameplay directly on the game page
- GitHub Issues — bug reports and feature requests
