No description
  • GDScript 97.9%
  • GDShader 1.3%
  • Shell 0.6%
  • Nix 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Daniel Flanagan 6de0a3186d refactor(menu): the main menu is a 3D scene with its UI on a layer
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>
2026-10-14 10:11:44 -05:00
addons test: vendor GUT 9.7.1 and add scripts/check.sh 2026-09-25 15:50:33 -05:00
assets docs(license): the game's own art and audio are CC BY-SA 4.0 2026-10-13 15:18:26 -05:00
dist build(harness): the smoke harness is no longer a shipped autoload 2026-10-13 23:23:52 -05:00
docs docs(license): the game's own art and audio are CC BY-SA 4.0 2026-10-13 15:18:26 -05:00
game refactor(menu): the main menu is a 3D scene with its UI on a layer 2026-10-14 10:11:44 -05:00
mods refactor(sound): a weapon's fire sound is an AudioStream a mod can ship 2026-10-13 23:23:52 -05:00
promo fix: promo art — rebuild the ship's wing the dock prompt was covering 2026-07-28 16:38:37 -05:00
scripts build(harness): the smoke harness is no longer a shipped autoload 2026-10-13 23:23:52 -05:00
test refactor(menu): the main menu is a 3D scene with its UI on a layer 2026-10-14 10:11:44 -05:00
.envrc build: add a flake dev shell; stop hand-managing export templates 2026-08-14 11:58:37 -05:00
.git-blame-ignore-revs test: vendor GUT 9.7.1 and add scripts/check.sh 2026-09-25 15:50:33 -05:00
.gitignore build(assets): keep Blender sources beside their exports, unimported 2026-10-10 20:04:25 -05:00
.gutconfig.json test: vendor GUT 9.7.1 and add scripts/check.sh 2026-09-25 15:50:33 -05:00
CHANGELOG.md feat!: the name is NO CRATERS ALLOWED 2026-07-20 08:55:38 -05:00
CONTRIBUTING.md docs(license): the game's own art and audio are CC BY-SA 4.0 2026-10-13 15:18:26 -05:00
default_bus_layout.tres balance: longer build phases — 90s before wave 1, 40-50s after 2026-07-18 16:28:10 -05:00
export_presets.cfg test: vendor GUT 9.7.1 and add scripts/check.sh 2026-09-25 15:50:33 -05:00
flake.lock build(flake): upgrade the engine to Godot 4.7.2; add gdtoolkit 2026-09-25 15:40:27 -05:00
flake.nix build(flake): upgrade the engine to Godot 4.7.2; add gdtoolkit 2026-09-25 15:40:27 -05:00
gdlintrc build(lint): lower the file-size ratchet to 1036 (lobby.gd today) 2026-09-29 10:20:19 -05:00
LICENSE chore: license the code under GPLv3 2026-07-20 01:09:36 -05:00
LICENSE-ASSETS docs(license): the game's own art and audio are CC BY-SA 4.0 2026-10-13 15:18:26 -05:00
MODDING.md refactor(rules): the match rules are a resource, not autoload constants 2026-10-13 23:23:52 -05:00
project.godot refactor(splash): the boot splash's look lives in boot_splash.tscn 2026-10-14 10:02:44 -05:00
readme.md feat(splash): debug builds skip the intro unless asked to show it 2026-10-14 10:11:25 -05:00

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 --nosteam or NO_CRATERS_ALLOWED_NOSTEAM=1. (Currently runs under Valve's test AppID 480 until the Steamworks account exists — see game/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.

  1. 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.
  2. Wave phase — asteroids drift in from the field's edge. Shoot them, split them, hoover up the scrap. Don't let the core shatter.
  3. 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.