spacechem-community-developers / SpaceChem-Community-Edition

Release repository of the SpaceChem Community Edition
39 stars 1 forks source link

SpaceChem Community Edition

This project will replace your SpaceChem game executable to add new features to the game.

This project is the Zachtronics-approved continuation of the SpaceChem Community update (v1013), with more features added that are not either ready or polished enough to land in the official release of SpaceChem.

Supported game versions

The only supported version is the Steam version of the game. This is unlikely to change in the future, for legal reasons related to the game distribution.

Installing the update

Since version 6.0, Community Edition is distributed on Steam, just like the base game. To start using it, you need to opt in using the Steam "betas" feature. In your Library, right-click on SpaceChem, then select "Properties..." from the pop-up menu. In the window that pops up, select the Betas tab and select the "community-edition" option from the dropdown:

Illustration of the beta selector dropdown

To return to the vanilla experience, follow the same steps, but select "NONE - Opt out of all beta programs" from the dropdown. This will make Steam download the original game files.

You will need Internet access both for opting in to the Community Edition and for opting out of it.

Always-on improvements

There are some small general improvements, mostly small QoL stuff, and then some bigger things:

Multiple solution support

SpaceChem is the only Zachtronics puzzle game that doesn't allow you to keep multiple solutions for the same puzzle. If you want to try optimizing the same puzzle for multiple goals, you need to throw your old solutions away, bury them deep in the undo stack, or use tools like SaveChem to export and import them and maintain them outside the game. This improvement lets you maintain an unlimited number of additional solutions per puzzle and freely switch between them while the game is running.

The UI follows the example set by Exapunks: you first need to load the level you want to play, then you can open a solution picker window by clicking on the new button added below the Undo and Redo buttons on the toolbar. This window lets you create blank new solutions or copy one of the existing ones. For technical reasons, your original solution is listed as "(Default solution)". This solution cannot be deleted or renamed. This is the only solution visible to the original game, so if you intend to switch back and forth between the original and the Community Edition, this is the one you need to keep up to date.

Support for the import/export used in tournaments

The SpaceChemTool (SCT for friends), used for the tournaments, can export and import solutions to custom puzzles.

This ability is replicated here and is extended to all puzzles and all solutions (see above). To use it, open the solution picker window, then:

Importing a solution into a puzzle it wasn't created in may work if the puzzle available tools are fully compatible, but will usually fail.

Keyboard accessibility

Return to assignment after completing it

After completing an assignment, you can click on the (now enabled) Back button or press Escape to return to the assignment. This lets you iterate on your solution a bit more quickly when optimizing.

Enhanced ResearchNet research puzzles

You can have up to 4 sensors, fusion lasers, fission lasers and quantum tunnels in a puzzle now. A Split instruction triggers all fission lasers in a reactor and a Fuse instruction triggers all fusion lasers. Sensing instructions will activate if any of the sensors detects the specified element. Quantum tunnels work in a "round-robin" fashion: tunnel #1 will teleport atoms to tunnel #2, tunnel #2 will teleport to tunnel #3 and so on, except for the highest-numbered tunnel, which will teleport to tunnel #1.
Please read the "Compatibility Notes" section below if you also want to run the original game alongside the modified version.

"Free-form" ResearchNet production puzzles

This is a highly experimental addition to the ResearchNet puzzle editing functionality. When creating a free-form production puzzle, you can place items like inputs (both random and programmable), outputs, recyclers and fixed reactors (like on planet Flidais) on the terrain freely, instead of being limited to a fixed number of inputs and outputs. If you move any pipes from their default state, those pipes also become locked and not editable while playing.

Once placed, inputs and outputs are editable via double-click or by using the context menu. Input rates can be changed from the default 10 cycles, and in the case of random inputs, the random seed can be changed to get a different molecule order. Outputs can have a different target count than the default 40.

In addition to the free-form placement features, you can also define four custom reactor types that are unique to your puzzle. You can then enable them to be used freely by the player, or place them as fixed parts of the level and force the player to work around the forced placement. The custom reactor types can have their own names, have a custom amount of any supported feature, and can look like any of the existing reactors. Finally, you can disable the second input and second output pipe, getting a result similar to assembly and disassembly reactors, but without forcing the set of available features. (The input pipes are a fixed part of the reactor artwork, so a disabled bottom input pipe can't be visually hidden. To avoid confusion, you should pick the disassembly reactor artwork if and only if you disable the bottom input pipe, so the appearance agrees with the behavior.)

Free-form puzzles can only be played in the Community Edition v4.3 or later. The vanilla game will treat them as if they were created by a future version of SpaceChem. This is necessary in order not to confuse the vanilla game and to make sure it doesn't corrupt the puzzle while trying to load it.

This is a very experimental feature at the moment, so we may have to break backwards compatibility to fix issues or to add missing features.

Allow direct adjustment of feature priorities

Using the mouse wheel on a feature that has a priority (bonders, tunnels, fusers and splitters) will adjust that priority up or down. This also allows you to give regular bonders a larger priority than plus-only or minus-only bonders, something you can't do by manually swapping them.

Togglable improvements

Most of the changes are individually selectable using the new tab in the Options menu in the Main Screen. Once the game has been launched once, a new file storing the new settings will be created in the main SC saves directory, called mod_config.ini, there it's possible to set all the new settings without the game and change some more experimental settings which do not have a corresponding entry in the in-game menu.

Default settings directory location:

GUI settings

Experimental settings

The following settings do not have a corresponding entry in the in-game menu, modify at your risk:

Compatibility Notes

While the Community Edition allows extending the normal limits of ResearchNet research puzzles, it can't make the vanilla game load those "extended" puzzles properly. In order not to confuse the vanilla game, and to prevent it from "fixing" the puzzle definition, these puzzles are saved with a custom type. The vanilla game will assume they were created by a future version of SpaceChem, and won't let you edit or play them. While editing a research puzzle, the Community Edition will warn you if your choices result in a puzzle not compatible with the vanilla game. These puzzles are still safe to create and share even if you switch back to the vanilla version, they will just not be playable in that version.

Versioning

The goal of this edition is to keep up with the latest official version of the game while incorporating some new features. This is reflected in the version number as well. The format is major.minor.patch.

Authors

This project is developed by two authors:

Because of legal limitations, we can't accept help from other contributors. Feature requests and bug reports are welcome, however, using the Issues feature of Github.

Acknowledgments

The authors would like to thank Zach Barth, the head of Zachtronics, for allowing access to the source of the game to make this Community Edition possible.