{"id":50791824,"url":"https://github.com/cryptojones/xspacewar-ai","last_synced_at":"2026-06-12T12:00:14.030Z","repository":{"id":364085441,"uuid":"1266329372","full_name":"CryptoJones/XSpaceWar-AI","owner":"CryptoJones","description":"A modern, AI-driven networked space-fighter — a 2026 reimagining of the classic networked Spacewar! ","archived":false,"fork":false,"pushed_at":"2026-06-11T16:16:58.000Z","size":87,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T16:18:12.287Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CryptoJones.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-11T14:15:56.000Z","updated_at":"2026-06-11T16:13:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CryptoJones/XSpaceWar-AI","commit_stats":null,"previous_names":["cryptojones/xspacewar-ai"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/CryptoJones/XSpaceWar-AI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FXSpaceWar-AI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FXSpaceWar-AI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FXSpaceWar-AI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FXSpaceWar-AI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CryptoJones","download_url":"https://codeload.github.com/CryptoJones/XSpaceWar-AI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FXSpaceWar-AI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34243053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-12T12:00:12.035Z","updated_at":"2026-06-12T12:00:13.905Z","avatar_url":"https://github.com/CryptoJones.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XSpaceWar-AI\n\n[![CI](https://github.com/CryptoJones/XSpaceWar-AI/actions/workflows/ci.yml/badge.svg)](https://github.com/CryptoJones/XSpaceWar-AI/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/CryptoJones/XSpaceWar-AI?label=release\u0026color=00b4d8)](https://github.com/CryptoJones/XSpaceWar-AI/releases/latest)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)\n[![Godot 4.6](https://img.shields.io/badge/Godot-4.6-478cbf?logo=godotengine\u0026logoColor=white)](https://godotengine.org)\n[![Platforms](https://img.shields.io/badge/platforms-linux%20%C2%B7%20windows%20%C2%B7%20macos-555)](https://github.com/CryptoJones/XSpaceWar-AI/releases/latest)\n[![Mirror: Codeberg](https://img.shields.io/badge/mirror-Codeberg-2185D0?logo=codeberg)](https://codeberg.org/CryptoJones/XSpaceWar-AI)\n\nA modern, AAA-styled networked **space-fighter** with a strong AI focus — a\n2026 reimagining of the classic networked *Spacewar!* / `xspacewar`. Bird's-eye\nview like the original, but with\n**space-accurate Newtonian physics**, **100% procedurally-generated graphics**\n(no hand-drawn art assets), and **LAN + internet multiplayer for up to 16\nships**.\n\nBuilt with **Godot 4** for **Windows, Linux, and macOS**. Licensed under\n**Apache 2.0**.\n\n## Screenshots\n\nA free-for-all dogfight — sixteen distinct ship colors, kill feed, live\nscoreboard, and the minimap:\n\n![Free-for-all combat](docs/screenshot-combat.png)\n\nThe gravity well takes another victim:\n\n![The star claims a ship](docs/screenshot-star.png)\n\n---\n\n## Heritage\n\nXSpaceWar-AI stands on the shoulders of one of gaming's oldest lineages:\n\n- **Spacewar!** — MIT, 1962, on the DEC **PDP-1** (Steve Russell et al.).\n- **PDP-11 port** — Bill Seiler \u0026 Larry Bryant, 1974. The networked\n  space-fighter spirit this project carries forward.\n- **xspacewar 1.2** — an **X11/C** version written by **Ron Frederick** in\n  **1992**, an early *serverless* networked multiplayer game where peers shared\n  state directly (IP unicast/multicast) and each client simulated independently.\n\nThis is an **original clean-room implementation** — see [`NOTICE`](NOTICE) for\nfull attribution. Huge thanks to **Ron Frederick**\n([github.com/ronf](https://github.com/ronf) ·\n[webrtc-spacewar](https://github.com/ronf/webrtc-spacewar) ·\n[timeheart.net/spacewar](https://www.timeheart.net/spacewar)) whose 1992\nnetworked Spacewar is this game's direct ancestor.\n\n## Features\n\n- Top-down arena dogfights around a gravity well, up to **16 ships**.\n- Modern **Newtonian** flight — conserved momentum, inverse-square gravity on\n  ships *and* torpedoes, gravity-assist slingshots, hyperspace.\n- **Procedurally generated everything** — stars, planets, moons, asteroid\n  fields, nebulae, ships, VFX, *and audio* (every sound is synthesized from\n  math at load) — every match a new seeded arena.\n- **Game modes:** Free-for-all, Team battle, AI bots (Rookie → Insane), and\n  **Movie Mode** — an all-AI spectator attract that regenerates a fresh\n  arena, roster, and teams every 30 minutes.\n- **Multiplayer (working today):** host-authoritative netcode with\n  client-side prediction + reconciliation, automatic **LAN discovery**,\n  **direct IP**, and platform-agnostic **internet play** via this repo's own\n  relay/master server — room codes, an online server browser, and no port\n  forwarding or platform services required.\n\n## Multiplayer quick start\n\n- **LAN:** one player clicks *HOST — LAN skirmish*; everyone else sees the\n  game in the menu's server list (or uses *JOIN IP*).\n- **Internet:** run the relay on any mutually reachable box (a $5 VPS works):\n\n  ```bash\n  godot --headless --path . --script res://server/relay_main.gd -- --port 24645\n  ```\n\n  Players put `that-box:24645` in the relay field (or set `XSW_RELAY`), the\n  host clicks *HOST ONLINE* and shares the 4-letter room code, friends use\n  *JOIN CODE* or *BROWSE* (tick *Spectate* to watch without taking a ship).\n  Full deployment guide (firewall, systemd): [`server/README.md`](server/README.md).\n\n- **Ports** (all UDP): `24642` game host (open this inbound to host\n  direct-internet games; LAN needs nothing) · `24643` LAN discovery\n  broadcast (never leaves your subnet) · `24645` relay server (open on\n  the VPS; relay *players* need no port forwarding at all).\n\n## Project layout\n\n```\nsrc/sim/        Deterministic, render-free game simulation (fixed timestep)\nsrc/net/        Host/join, LAN discovery, matchmaking, platform services\nsrc/gameplay/   Game modes, AI bots, scoring, spawning\nsrc/render/     Procedural shaders, particles, ship/starfield visuals\nsrc/ui/         Menus, server browser, HUD, settings\nserver/         Standalone relay/master service\ntests/          Headless simulation tests\nbuild/          Export presets + CI scripts (Win/Linux/macOS)\n```\n\nThe simulation in `src/sim/` is **deterministic and headless** (no rendering\ndeps, fixed timestep) so the authoritative host sim, client-side prediction,\nAI, and replay all share one codebase.\n\n## Getting the game\n\n**Prebuilt binaries (no engine needed):** grab the zip for your platform from\nthe [Releases page](https://github.com/CryptoJones/XSpaceWar-AI/releases).\nEvery push to `main` also uploads fresh builds as artifacts on the\n[Actions tab](https://github.com/CryptoJones/XSpaceWar-AI/actions) (sign-in\nrequired), e.g.:\n\n```bash\ngh run download --repo CryptoJones/XSpaceWar-AI -n xspacewar-ai-linux-x86_64\nchmod +x xspacewar-ai.x86_64 \u0026\u0026 ./xspacewar-ai.x86_64\n```\n\n## Running from source\n\n**Easiest:** the install script downloads Godot 4.6.3 (SHA-512 verified\nagainst the official release sums), puts it on your PATH, and builds the\nproject's import cache:\n\n```bash\n./install.sh          # Linux (x86_64/arm64) + macOS; safe to re-run\n./install.sh --test   # same, then prove it with the headless test suites\ngodot --path .        # play\n```\n\n**Manual route** — the repo ships no engine binary; install **Godot 4.6.x**\n(standard build, not .NET) from the\n[official releases](https://github.com/godotengine/godot/releases/tag/4.6.3-stable):\n\n```bash\n# Linux example\nmkdir -p ~/tools/godot ~/.local/bin \u0026\u0026 cd ~/tools/godot\ncurl -LO https://github.com/godotengine/godot/releases/download/4.6.3-stable/Godot_v4.6.3-stable_linux.x86_64.zip\nunzip Godot_v4.6.3-stable_linux.x86_64.zip \u0026\u0026 mv Godot_v4.6.3-stable_linux.x86_64 godot\n\n# Put `godot` on your PATH (most distros include ~/.local/bin already):\nln -sf ~/tools/godot/godot ~/.local/bin/godot\ngodot --version   # if \"command not found\", open a new shell or use the\n                  # full path ~/tools/godot/godot in the commands below\n```\n\n(Windows: `Godot_v4.6.3-stable_win64.exe.zip` · macOS:\n`Godot_v4.6.3-stable_macos.universal.zip` — same page.)\n\n```bash\n# One-time after cloning (or pulling big changes): build the import cache.\n# Skipping this can give you a black screen / missing resources on launch.\ngodot --headless --path . --import\n\n# Run the game\ngodot --path .\n\n# Run the headless test suites\ngodot --headless --path . --script res://tests/run_tests.gd     # sim\ngodot --headless --path . --script res://tests/net_tests.gd     # LAN netcode\ngodot --headless --path . --script res://tests/relay_tests.gd   # online relay\ngodot --headless --path . --script res://tests/audio_tests.gd   # synthesis\ngodot --headless --path . --script res://tests/scene_smoke.gd   # scene boot\n\n# Export release builds locally (needs export templates installed)\nbuild/export_all.sh\n```\n\n## Performance on weak GPUs\n\nOn bottom-tier integrated graphics (e.g. Intel UHD GT1) the default\nVulkan renderer can stall — the window freezes while the process lives.\nThe game auto-disables its HDR glow on such adapters, but the robust fix\nis the lightweight OpenGL renderer:\n\n```bash\ngodot --path . --rendering-method gl_compatibility\n```\n\nKeeping the OPTIONS → Nebula slider at 0 also helps — the nebula is the\nmost expensive pixel work in the game.\n\n## Thanks\n\nTo our play testers, who flew the rough builds and filed the truth:\n**Claude Fable 5**, **Trevor Flurry**, **Patrick Hannah**, and\n**Adam Testagrossa**.\n\n## Dedication\n\nTo \"JVL / Boxest\" for all the nights we stayed up playing Ron Fredrick's game\nin 90s-era Dickinson, Texas. \nHTMFPWGCBNOTDOD!\n\n## Mirrors\n\n- GitHub: https://github.com/CryptoJones/XSpaceWar-AI\n- Codeberg: https://codeberg.org/CryptoJones/XSpaceWar-AI (auto-synced)\n\n## License\n\nApache License 2.0 — see [`LICENSE`](LICENSE) and [`NOTICE`](NOTICE).\n\nProudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptojones%2Fxspacewar-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptojones%2Fxspacewar-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptojones%2Fxspacewar-ai/lists"}