- GDScript 97.9%
- GDShader 1.3%
- Shell 0.6%
- Nix 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
main_menu.tscn now saves the shape the menu used to build at runtime: a Node3D root holding the AttractScenery instance, a CanvasLayer BehindThe3DScene (layer -10) with the hearth glow, and a CanvasLayer UI (layer 1) with every screen, the footer and the version stamp. The editor opens it in the 3D view with the diorama, and the 2D view shows the menu. main_menu.gd no longer reparents nodes into a generated UIRoot or builds the version stamp in code, and a visual-quality change swaps the AttractScenery child in place, under the same name. The old scenery is freed at once rather than queued, so the swap never holds two sceneries or two current cameras for a frame. Removed: the unused playerShip1_orange.png ext_resource, the BACKGROUND_CANVAS_LAYER_BEHIND_THE_3D_SCENE constant (its layer value now lives on the saved node, and its test moved from the play-plane test file to the main menu scene tests, reading the scene) and the UIRoot Control, whose theme was always null. Kept, against the plan to delete them: CoreGlow (renamed HearthGlow so it no longer reads like the CoreGlow class) and its background canvas layer. A screenshot with the glow hidden showed the bottom-centre warm tint drop from #1A0616 to #04000F on average, so the 3D sky does not cover it. Tested: scripts/check.sh format lint unit smoke-offline (870 tests). Software-GL screenshots of menu at 0.3 s, 2 s and 6 s, settings, mods and modhelp before and after differ only where meteors, turrets, stars and the planet move; the before runs logged resources still in use at exit, the after runs log none. A headless editor opens main_menu.tscn without errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| addons | ||
| assets | ||
| dist | ||
| docs | ||
| game | ||
| mods | ||
| promo | ||
| scripts | ||
| test | ||
| .envrc | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .gutconfig.json | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| default_bus_layout.tres | ||
| export_presets.cfg | ||
| flake.lock | ||
| flake.nix | ||
| gdlintrc | ||
| LICENSE | ||
| LICENSE-ASSETS | ||
| MODDING.md | ||
| project.godot | ||
| readme.md | ||
No Craters Allowed
(previously "Asteroid Base" / "Astro Bastion"; renamed July 2026 — the clearance sweep graded this name clean across trademarks, storefronts, and search. See docs/launch-plan.md.)
Build a bastion in the core of a very strange world — solo, split-screen, or networked. A multiplayer 2D base-defense game. TowerFall-style frenetic combat plus a tower-defense build loop. Between meteor waves, players explore the less-volatile portions of the debris field and other ruined ships and stations for tech and resources, then return to fortify and (lightly) automate the base. Players pilot drone space ships and upgrade over time. They also must manage a base and its defenses.
Geared at young families looking for a fun game to play together that is intuitive but allows for learning coordination. Minimal violence, just defending from various meteors and maybe the occasional strange alien creature. (Yes, "meteors" is astronomically wrong for rocks in space — it's the word every kid at the couch reaches for, so it's the word the game uses.)
License
The game's code is GPLv3 (see LICENSE) — free to study, mod, and redistribute under the same terms. The game's own art and audio are CC BY-SA 4.0 (see LICENSE-ASSETS): reuse them with credit, and share your changes alike. Third-party assets keep their own licenses (Kenney art/sfx and Junkala music are CC0; fonts are SIL OFL; GodotSteam is MIT; the lyte.dev splash mark and sound are all rights reserved) — see assets/CREDITS.md. Copyright © 2026 lyte.dev LLC and contributors. The commercial Steam/itch builds are the same code: you're paying for convenience, updates, and multiplayer matchmaking, not a different game.
Playing
Open the project in Godot 4.7+ and press F5, or run
godot . from the project directory. Debug builds, including the editor,
skip the studio intro; pass --show-intro to see it. Release builds play
it unless launched with --skip-intro (any input during the intro also
skips it).
- Play — opens the mission-setup lobby: pilots claim controllers (the first pad attaches to P1 — Deck-friendly if you tapped Play on the touch screen), pick ship colors (X / F) and starter weapons (Y / E), and dial in match rules (difficulty, core health, rock damage, upgrade prices, mutations). Rule tweaks can be saved as named rulesets ("Save…" next to the presets) and reloaded, edited, or deleted any time. Up to three more pilots can still drop in anytime mid-game with A/Start on an unclaimed controller; leave with Back/Select.
- Continue — local runs autosave at the start of every build phase (rules included); the menu offers to resume. A shattered core ends the run and clears the save.
- Multiplayer (LAN) — one home hosts on port
24565, everyone else joins with the host's address; friends can join mid-game. - Multiplayer (Steam) — when the Steam client is running, the
multiplayer menu also offers Host for Steam friends: it creates a
friends-only Steam lobby, friends join through the overlay invite or
their friends list, no port-forwarding or addresses needed. Steam support
is fully optional — without Steam the game silently sticks to LAN.
Disable it explicitly with
--nosteamorNO_CRATERS_ALLOWED_NOSTEAM=1. (Currently runs under Valve's test AppID 480 until the Steamworks account exists — seegame/autoload/steam_bridge.gd.)
The in-game button hints show the right glyphs for whatever controller is plugged in (Xbox, PlayStation, or Switch).
Controls
Five verbs everywhere: fly, aim+fire, build, interact, pause. In the build ghost and at the dock, interact switches the selection and fire confirms — no extra hotkeys to learn (the dock list also walks with up/down). The keyboard pilot can also quick-pick hotbar slots with 1–3. The build key closes whichever menu it opened.
P1 flies with keyboard+mouse; every other pilot brings a controller.
| Action | Keyboard+mouse (P1) | Gamepad |
|---|---|---|
| Fly | WASD | Left stick / D-pad |
| Brake (hold) | Ctrl | B |
| Afterburner (hold) | Shift | Left trigger |
| Aim | Mouse | Right stick (or nose) |
| Fire / confirm | Left click / Space | A |
| Build mode (open/close) | E | Y |
| Interact / switch selection | F | X |
| Hotbar quick-pick | 1–3 | — |
| Join / Leave | — | A / Back |
| Pause / menu | Esc | Start |
The loop
Three weapons, switchable anytime (numbers 1-3, or interact in open space): the rapid Pulse Cannon, the instant-hit Beam Laser (harder punch, slower cycle), and the slow Rocket — the skill shot: land it clean and even a big rock pops in one.
- Build phase — spend scrap on turrets, collectors, and barriers around the core. Fly out to mine rock clusters for scrap and blast the sturdy ruined stations apart for tech.
- Wave phase — asteroids drift in from the field's edge. Shoot them, split them, hoover up the scrap. Don't let the core shatter.
- Dock at the core (interact next to it) to buy ship upgrades with tech, or repair the core with scrap.
Drones have Halo-style defenses: shields soak hits and recharge quickly after a calm moment, but hull damage sticks until you dock and pay scrap to patch it. Lose all hull and the drone is down — it doesn't respawn; a buddy has to fly over and hold interact to rebuild it (costs team scrap, and the hull comes back barely holding together). If the whole squad is down, the core performs a free emergency rebuild after a few tense seconds.
A gentle on-screen guide (arrows + one-line tips) nudges young pilots toward whatever the team needs next: mine when broke, build when rich, rescue when a drone is down. The first waves are gentle; after wave 8 the field gets endlessly angrier.
Modding
The whole game is data-driven and meant to be remixed in the Godot editor —
ships, weapons, buildings, upgrades, meteors, waves, and ruleset presets are all
.tres resources, and players can drop mod packs in without a rebuild. See
MODDING.md.