Earth is no longer the only one sending contracts. Write a coding puzzle of your own, publish it to the Steam Workshop, and solve the ones other players share, right in your colony. This update also adds seven new languages, lets Libraries live in folders, gives the debugger a window of its own, and fixes a lot in scripts, saving and the external editors.
Community Contracts
Turn them on in Settings > Workshop > Community contracts. The Contracts page then has three tabs: Earth Contracts, Community Contracts and Hall of Fame.
- Write a contract in the game's own code: make_input builds each puzzle and check decides whether an answer is right. Solve it yourself, run the publishing checks, and publish it to the Steam Workshop.
- Play another player's contract just like an Earth contract: in your colony, with your Libraries, the debugger and your external editor. Each contract checks your solution on several inputs, 8 unless its author chose another number.
- Every contract has two boards, Fewest steps and Shortest code, and your best on each goes up to Steam.
- Rate a contract you played from 1 to 10 twice: Rating for how good it is and Difficulty for how hard it is.
- Every contract shows how many players solved it out of those who tried.
- The Hall of Fame ranks players by how many contracts they have solved.
- Contract authors set how many inputs each Run checks with CHECKS at the top of contract.py, can describe their input's fields with docstrings, and any error they raise reaches the solver.
Longest Warm Streak and the first contracts from players are already waiting for you. If you write one, I would love to play it, and please tell me how writing and publishing went, in the Steam discussions or on the Discord.
Seven new languages
The game now also comes in Tiếng Việt, Bahasa Indonesia, Nederlands, Svenska, Norsk bokmål, Dansk and Suomi, for 25 languages in all. Choose yours in Settings > Language.
New in this version (0.1.39)
Libraries and errors
- Libraries can live in folders: a folder in the Library is a Python package, so import mining.routes, from mining import routes and relative imports such as from . import scan work as in Python. Moving a Library or a folder updates the scripts that import it.
- Renaming or moving a Library keeps its windows open, and tracebacks, the console and window titles name a Library by its file, such as mining/routes.py.
- An error that stops a script prints its whole traceback, every call from your script's top level down to the failing line, as Python does.
- When code fails inside a Library, the error names the Library's file and line.
- A large Library is now checked as fast as a script of the same size, so its errors, suggestions and hovers keep up with your typing.
- Applying a Library restarts the scripts that use it with their latest saved code, so a change to a Library and to its scripts together works after one Apply.
Debugger and editor
- The debugger can have a window of its own: Pop out ↗ in its header moves it into a window you can size freely, and Return to editor puts it back beside the code.
- Its Local variables section now comes last, so Watch, Call Stack and Breakpoints stay where they are while you step.
- Script windows snap to each other's edges and move together as a group. Hold Alt (Option on a Mac) while dragging to move one alone.
- Press or drag over the line numbers to select whole lines, as in VS Code.
- Inside a call, suggestions also include variables whose type the editor cannot tell, listed after the ones that certainly fit.
- After you edit a running script or an unapplied Library, the debugger stops at your breakpoints, shows its position on the code you see, and says the run still uses the code from before your edits.
- Typing __ after a dot suggests the class's special methods, such as super().__init__.
- A docstring under a class field or a self.x in __init__ shows as that field's description in hover and autocomplete.
- The script editor in its own window shows the script you are on in the taskbar and Alt+Tab.
Scripts
- Every Signal Bus message has .channel, the channel it is queued on. The Signal Bus tab shows all your channels, sorts by any column and opens a channel's queue right under its row.
- A Pioneer can empty a single Portable Storage Bin instead of its whole rack, with cargo.discard(rack_index, bin_index).
- Rover and Pioneer cargo have space_for(item_id), and drone cargo has stacks() to list each variant it carries.
- Research has all() and get(research_id): scripts can see every research, locked ones included.
- run_control works on automations as well as machines.
- Lightning Rods feed your grid before your batteries when power runs short, and a rod's script can keep energy back for emergencies with set_emergency().
- comms.queue_capacity(channel) returns how many messages a Signal Bus channel can queue.
- A Reactor at full heat always gets past 900 °C, so a script can reach the full 5,000 W in every 12-hour period.
Interface
- The Code Lab is on the main menu, and New Game starts the campaign straight away.
- Settings has separate Editor, Game windows and External editors tabs, with a short line of help under every option.
- Windows you close reopen where you left them after a restart, and Reset Window Layout puts every window back in its place.
- You can reorder your Automations and group them into categories, just like Storage cards, and a category can make a new automation straight into it.
- Computer > Scripts shows the names you gave your cards, automations and machines, and you can search for them by name.
- In a new game, the home base and new outposts are named in your language.
- The Recipe Book brightens an ingredient's ring when your blueprints let you make it from raw materials, and a product's ring when they cover every ingredient.
- Hovering a vehicle on the Planet Map opens its info card on the side away from its destination.
- A Refiner's card names the raw fluid actually in its feedstock port, in warning colour when it is the wrong one.
- The Supply Dock's Info explains how much cargo it takes.
Saves
- Big colonies keep saving, even with more than 64 drones, rovers and Pioneers near Nocturna Base.
- A value the save file cannot hold, left behind by a bug, no longer stops every save: the save repairs it and carries on.
- If your newest save ever fails to load, the game keeps that file untouched, opens the older copy and tells you, with a button that sends me the file.
- A separate editor window that stops answering no longer blocks saving.
External editors
- In VS Code, Zed and PyCharm, Open in Game shows the file you are editing in the game, an error you fix clears within a moment, and completions come in the game's order.
- The language server for VS Code, Zed and PyCharm loads only your language and uses far less memory.
- Ruff's checks run on game scripts in every editor, and Game Output follows the console unless you switch console mirroring off.
Fixes
- Feedback waits for the server's answer and tells you if a report did not get through, and sends it again the next time the game starts.
- On Windows, the music tracks Maré Serena and Tarde no Café play again.
- In Japanese, Chinese and Korean, the Biology Lab's vertical step labels are no longer upside down.
- A wrong contract answer now says the answer is incorrect, on Earth contracts too, instead of telling you to check a prerequisite.
- A script saved from a Windows editor with its saved cursor past its text opens again.
- Suggested notify levels and PlantRequirement kinds are inserted as strings in quotes.
- The Code Lab's Loop over results and Dictionaries lessons accept the two values printed with separate print calls.
Your saves, settings and scripts carry over.
Thank you for playing. I can't wait to see the puzzles you write for each other.