{"id":51592883,"url":"https://github.com/pinguy/voidrunner","last_synced_at":"2026-07-11T16:01:04.854Z","repository":{"id":365614805,"uuid":"1271511837","full_name":"pinguy/VOIDRUNNER","owner":"pinguy","description":"A native Linux procedural space-trader / combat game squeezed into a 32 KiB runnable.","archived":false,"fork":false,"pushed_at":"2026-06-18T04:42:55.000Z","size":911,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T06:25:00.301Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/pinguy.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-16T18:30:03.000Z","updated_at":"2026-06-18T04:42:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pinguy/VOIDRUNNER","commit_stats":null,"previous_names":["pinguy/voidrunner"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pinguy/VOIDRUNNER","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinguy%2FVOIDRUNNER","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinguy%2FVOIDRUNNER/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinguy%2FVOIDRUNNER/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinguy%2FVOIDRUNNER/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pinguy","download_url":"https://codeload.github.com/pinguy/VOIDRUNNER/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinguy%2FVOIDRUNNER/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35367446,"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-07-11T02:00:05.354Z","response_time":104,"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-07-11T16:01:03.835Z","updated_at":"2026-07-11T16:01:04.814Z","avatar_url":"https://github.com/pinguy.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VOIDRUNNER\n\n**VOIDRUNNER** is a native Linux procedural space-trader / combat game squeezed into a **32 KiB runnable**.\n\nIt is an Elite-flavoured tiny game experiment: dock, trade, equip your ship, launch into a generated solar system, survive the run, fight or avoid contacts, dock again, and keep pushing your commander forward.\n\nThe point is not just that it is small.\n\nThe point is that it is still recognisably a game.\n\n\u003e Current release artefact: **32 KiB class**.\n\u003e The fullscreen BCJ+tight-stub build measured **32,760 bytes**, leaving **8 bytes** under the 32 KiB line.\n\u003e Earlier builds lived in the 40K class; this is now a proper 32K-class release.\n\n## Screenshots\n\n| Title | Command Slate |\n| --- | --- |\n| ![VOIDRUNNER title screen](screenshots/title.png) | ![VOIDRUNNER command slate](screenshots/station-command.png) |\n\n| Market | Galaxy Map |\n| --- | --- |\n| ![VOIDRUNNER market screen](screenshots/market.png) | ![VOIDRUNNER galaxy map](screenshots/galaxy-map.png) |\n\n| Launch Run | Hostile Route |\n| --- | --- |\n| ![VOIDRUNNER launch flight](screenshots/flight-launch.png) | ![VOIDRUNNER hostile route combat](screenshots/hostile-route.png) |\n\n| Void Transit |\n| --- |\n| ![VOIDRUNNER jump tunnel](screenshots/jump.png) |\n\n---\n\n## What it is\n\nVOIDRUNNER is a single-C-file native Linux game with no asset files.\n\nEverything is generated or embedded in code:\n\n* procedural star systems\n* generated planet / station placement\n* procedural station forms\n* procedural ship contacts\n* trading economy\n* persistent commander state\n* combat loop\n* shield / energy survival model\n* radar / scanner\n* docked station menus\n* title screen with seed / commander entry\n* fullscreen launch\n* tiny HUD / text renderer\n* self-extracting compressed runner\n\nThe final runnable is a tiny shell self-extractor containing a compressed native ELF payload.\n\n---\n\n## Size claim\n\nThe current release build is a **32 KiB runnable**.\n\nThe size budget refers to the generated runner file, not the system libraries already present on Linux.\n\nExpected direct ELF dependency for the checked GCC 9 build:\n\n```text\nNEEDED: libdl.so.2\n```\n\nThe game still expects the usual Linux runtime pieces to exist on the target system, especially SDL2, OpenGL, and `xz` for the self-extracting runner.\n\nExact byte count can vary if rebuilt with different compiler, linker, binutils, shell, or xz versions. The release artefact is the measured target.\n\n---\n\n## Running\n\n```sh\nchmod +x ./VOIDRUNNER\n./VOIDRUNNER\n```\n\nThe game starts fullscreen.\n\nPress `ESC` to quit from any screen.\n\n---\n\n## Building\n\nA typical package contains:\n\n```text\nVOIDRUNNER\nVOIDRUNNER.c\nstart_syscall.S\nbuild_asm_syscall.sh\nbuild_gcc9_bullseye.sh\ntiny_tools/sstrip64.py\ntiny_tools/source_prepass.py\ntoolchains/gcc9-bullseye/Containerfile\ncompat/\nRUN_ME.sh\nREBUILD_ME.sh\n```\n\nFor the size-targeted rebuild:\n\n```sh\nsh ./REBUILD_ME.sh\n```\n\nThat uses the bundled GCC 9 Bullseye wrapper, writes `./VOIDRUNNER`, and reproduces the checked runner on the reference setup.\n\nThe wrapper uses Podman and `toolchains/gcc9-bullseye/Containerfile`. Bullseye keeps `dlopen` / `dlsym` in `libdl`, so the checked build uses `-ldl`.\n\nFor host-toolchain experiments without the GCC 9 container:\n\n```sh\nOUT=/tmp/voidrunner-host sh ./build_asm_syscall.sh VOIDRUNNER.c\n```\n\nOn newer glibc this can produce a `libc.so.6`-only raw ELF, but it is not the measured 32 KiB release artefact.\n\n---\n\n## Controls\n\n### Title screen\n\n```text\nENTER       start / launch commander\nTAB         switch name / seed field\nBACKSPACE   delete character\nESC         quit\n```\n\n### Docked station menus\n\n```text\n0           command slate\n1           market\n2           equip ship\n3           data on current system\n4           manifest\nJ           chart / route map\nF           launch\nBACKSPACE   back / command\nARROWS      menu navigation / buy / sell where applicable\nENTER       confirm where applicable\nESC         quit\n```\n\n### Flight\n\n```text\nWASD        thrust / strafe\nMouse       look\nQ / E       roll\nSHIFT       boost\nLMB         fire laser\nSPACE       fire laser fallback\nRMB         fire missile\nTAB         target nearest contact\nJ           chart / jump route\nF           dock when cleared\nESC         quit\n```\n\n---\n\n## Survival model\n\nVOIDRUNNER uses a simple shield / energy model.\n\nYour shield absorbs incoming hits first.\n\nOnce the shield is gone, hits chew directly into ship energy. When energy reaches zero, the run ends.\n\nThat is the only death condition. No fake hidden hull bar, no decorative damage number pretending to matter.\n\n---\n\n## Why it got small\n\n```text\ncustom _start             removes CRT startup baggage\nstrip                     removes symbol/debug baggage\nsstrip                    removes ELF section headers\nx86 BCJ filter            makes call/jump targets compress better\nLZMA/XZ tuning            improves payload compression\ntight shell stub          trims wrapper bytes\nsingle C file             gives the compressor one dense code corpus\nfeature discipline        keeps only what earns its bytes\n```\n\nThe x86 BCJ filter was a major free win: it rewrites relative call/jump targets into a form that LZMA can compress more effectively.\n\nAssembly was only useful where it proved smaller.\n\nCargo-cult assembly was rejected.\n\n---\n\n## Status\n\nVOIDRUNNER is playable, experimental, and deliberately ridiculous.\n\nIt is small enough that an ordinary screenshot can be larger than the game itself.\n\nThat is the joke.\n\nThat is also the achievement.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinguy%2Fvoidrunner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpinguy%2Fvoidrunner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinguy%2Fvoidrunner/lists"}