a spaceflight programming adventure
Phil Hagelberg 4dab6576ef Merge branch 'retina-display' into 'master' 1 year ago
.circleci Switch to debian stable; install luacheck manually. 1 year ago
assets saturn5 version 2.7. 1 year ago
bencode Test our own bencode lib. 2 years ago
data A few random things, including Nim sending you the passponder. 1 year ago
debian Replace md5 lib with simpler hashing function. 1 year ago
doc Remove life support upgrade and ability to have humans onboard. 1 year ago
globtopattern Add missing file. 3 years ago
jeejah luacheck. 2 years ago
lume Back to stock lume. 2 years ago
lunatest Tidy up CI setup; remove the need for luarocks. 1 year ago
os Brush up the test suite a bunch. 1 year ago
polywell Switch to debian stable; install luacheck manually. 1 year ago
serpent Hack serpent to print proxied tables. 2 years ago
ship Remove loans and fines. 1 year ago
spoilers A few random things, including Nim sending you the passponder. 1 year ago
tests Brush up the test suite a bunch. 1 year ago
.dir-locals.el Allow login to trainee rover. 1 year ago
.gitignore Some build things. 1 year ago
.gitlab-ci.yml Fix gitlab yml. 1 year ago
.luacheckrc Remove loans and fines. 1 year ago
Changelog.md Include glsl files in releases. 1 year ago
Contributing.md Avoid pinching at the poles when generating textures. 1 year ago
LICENSE Move all non-engine stuff into data/ dir. 2 years ago
Makefile A few random things, including Nim sending you the passponder. 1 year ago
asteroid.lua Tidy up CI setup; remove the need for luarocks. 1 year ago
atmosphere_glow.glsl saturn5 version 2.7. 1 year ago
body.lua Remove ability to deploy rovers. 1 year ago
bootstrap-deb.sh Switch to debian stable; install luacheck manually. 1 year ago
bussard.png Debian packaging. 2 years ago
conf.lua Pull in 2.6 of saturn5 rendering. 1 year ago
conics.lua Support replacing data directory. 2 years ago
corona.glsl Pull in 2.6 of saturn5 rendering. 1 year ago
credits.md Mucking about with textures mostly. 1 year ago
draw.lua Scale window for retina display 1 year ago
draw_planet.lua Mucking about with textures mostly. 1 year ago
host_fs_proxy.lua Make luacheck happy. 2 years ago
love-release.sh Build changes. 1 year ago
mail.lua Merge remote-tracking branch 'raskin/cargo-missions' 1 year ago
main.lua Switch to debian stable; install luacheck manually. 1 year ago
manual.md Documentation updates. 1 year ago
metatable_monkey.lua Remove table.length monkeypatch thingy. bad! 1 year ago
mission.lua Remove ability to deploy rovers. 1 year ago
pause.lua Enable cheats from within the pause screen. 1 year ago
planet_shader.glsl All the planets in the solar system use shaders now! 1 year ago
readme.md A few story changes. 1 year ago
rpcs.lua Remove loans and fines. 1 year ago
save.lua Remove loans and fines. 1 year ago
scroll_v.glsl Pull in 2.6 of saturn5 rendering. 1 year ago
spherize.glsl Pull in 2.6 of saturn5 rendering. 1 year ago
starfield.lua Messages where Nari helps you decrypt rot13 message. 2 years ago
texture.lua Attempt to reduce pinching when generating textures. 1 year ago
utils.lua Wrap server launches so that errors are logged. 1 year ago

readme.md

Bussard

screenshot

A spaceflight programming adventure.

Read the in-game manual for a taste of how the game works.

Read an interview on the motivation and background for the game (some spoilers, some outdated info).

Playing

The game starts in the console, where you can interact with the ship's computer, but it has several other modes. Start the game by pressing f3 to go to mail mode to read your messages.

The ship's computer console can be accessed using f2, and from the console you can read the quick start guide by running man("quickstart"). The full reference manual is available with man("manual"), but you won't need that right away.

Recommended soundtrack: Contingency by Big Giant Circles though Ben Prunty's FTL soundtrack is a great fit too.

Installation

Releases for each platform are on itch.io. Windows and Mac OS X releases are standalone, but .love file releases require having LÖVE version 0.10.2 or newer. Users of Debian or Debian-derived OSes can install liblove and love packages.

When running from source, type love . from a checkout.

repl screenshot

One problem when running from source is that when new features are added, key bindings for them are added to the default config, but existing saved games will continue on using the same config. You can replace your ship's config with the current default config ctrl-f1; your existing config source will be backed up.

Status

Currently most of the engine features are coded, some more polished than others. However, there are only a handful of missions, and the characters are not sketched out in much detail yet.

See the list of open issues to see upcoming features. The changelog lists when recent user-visible changes were added in which releases.

The contributing guide contains details about the structure of the codebase and how to submit good patches.

The game contains programming challenges you must solve in order to progress. Eventually the goal is that you will be able to learn it without any (or much) prior programming experience through in-game hints and tutorials.

edit screenshot

FAQ

Q: How do I change the controls?
A: Press ctrl-o then type "src.config" to open the main config file. The keys here are mostly for flight mode. At the bottom you can see where it loads other modes in files like "src.edit" or "src.mail". Open these other files with ctrl-o if you want to change keys for those modes. Find the key binding you want to change, and change the second argument to define_key to the keycode you want to use. For a complete list of keycodes, run man("keycodes"). Once you've made the changes, hit esc to go back to flight mode, and then press ctrl-r to load them. Note that after using the editor you may need to press ctrl-pagedown or ctrl-pageup a few times to get back to console, as console is just a buffer called *console* in the editor.

Q: But I just want Emacs keys.
A: Oh, well in that case add dofile("src.emacs") to the bottom of your config and press ctrl-r to reload.

Q: How do you match orbit with a station or planet?
A: Remember that newtonian motion means your controls affect your velocity rather than directly controlling your motion. Don't accelerate towards the station; instead accelerate so your trajectories cross at the same point. Once you're in range, hit f4 to toggle the orbital lock to prevent your craft from drifting away.

Influences

Licenses

Original code, prose, and images copyright © 2015-2017 Phil Hagelberg and contributors

Distributed under the GNU General Public License version 3 or later; see file COPYING.

See credits for licensing of other materials.