1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-12-09 16:21:51 +00:00
Go to file
Даниїл Григор'єв 6c3f91e587
Basic FS watcher for --load-mod mods
Add a --watch command line flag to be used in tandem with --load-mod.
Chokidar is used to detect file updates, and a page reload is triggered
when there are any changes to watched mod files. Only mods loaded via
--load-mod are affected.

This implementation has a minor issue with how cache is cleared -
removing disk cache is a bit too aggressive - but the only alternative I
could find is to use a non-persistent Electron session, which would get
rid of disk cache entirely (this is not a concern).
2025-06-12 15:22:15 +03:00
.github/workflows Clean up and update workspace files 2023-10-25 08:05:56 +03:00
.vscode Clean up and update workspace files 2023-10-25 08:05:56 +03:00
electron Basic FS watcher for --load-mod mods 2025-06-12 15:22:15 +03:00
gulp Migrate from Yarn Classic to npm (#65) 2025-04-10 23:22:03 +03:00
res Remove some unused resources 2025-04-08 14:17:16 +03:00
res_raw Remove theme-short.mp3 2025-04-05 22:52:25 +03:00
src Compression: Terminate workers after use 2025-06-10 16:53:14 +03:00
translations Remove some unused translation strings 2025-04-10 03:10:47 +03:00
.editorconfig Update formatting configurations 2024-06-20 12:43:30 +03:00
.gitignore Migrate from Yarn Classic to npm (#65) 2025-04-10 23:22:03 +03:00
.prettierignore Update prettier-all script 2024-06-20 13:29:06 +03:00
.prettierrc Update formatting configurations 2024-06-20 12:43:30 +03:00
.yamllint Fix yaml errors in CI (#757) 2020-10-04 10:38:02 +02:00
Dockerfile Slight improvements for the build process (#19) 2024-04-14 19:03:27 +03:00
eslint.config.js Migrate from Yarn Classic to npm (#65) 2025-04-10 23:22:03 +03:00
LICENSE Update license 2020-05-21 15:08:30 +02:00
package-lock.json Re-implement compression workers and abstraction 2025-06-10 16:46:28 +03:00
package.json Re-implement compression workers and abstraction 2025-06-10 16:46:28 +03:00
README.md Migrate from Yarn Classic to npm (#65) 2025-04-10 23:22:03 +03:00
sync-translations.js Apply formatting to the rest of files 2024-06-20 13:02:02 +03:00
tsconfig.json Remove most of "preloader" code (#60) 2025-04-06 23:13:13 +03:00

shapez Community Edition shapez Logo

shapez Community Edition (abbreviated as CE) is a community-maintained version of shapez!

CE was created as the tobspr Games team moved away from shapez to work full-time on the upcoming Shapez 2. CE aims to:

  • Continue the development of shapez as guided by the community.
  • Allow contributors to continue submitting new features and improvements to the game.
  • Provide an experimental and forgiving environment for faster development.

Important

CE is different from the official game published on Steam and other platforms. CE was forked off of the official shapez, which has its own repository. No plans exist to merge the two versions of shapez.

As of now, CE must be built from source and supports only a standalone build, with no plans for re-supporting a web version. In the future, builds of CE may provided for owners of the full version of shapez.

Contributing

We communicate on the official shapez Discord server. For historical reasons, we have communicated in a private channel, but we are moving to the public #contributing channel. If you would like to contribute to CE, feel free to share your ideas, plans, etc. there.

In our current workflow, we (the "collaborators" of the repository) create internal branches and corresponding pull requests to work on a feature, refactor, etc. We discuss changes in the Discord, and when 2 collaborators (including the PR creator) approve of a change, it can be merged. See our existing pull requests for examples.

If you are not a collaborator and want to submit a change, you can fork our repo and make a pull request. Note that because of plans to overhaul many parts of the game, unless you are improving translations, you should probably communicate with us on Discord!

Tip

Be aware that pull requests to the official shapez repository are unlikely to get merged in the near future. Instead, submit them to CE! In fact, because the game is licensed under the GNU GPL v3.0, existing pull requests can be resubmitted to CE even if you aren't the author! This is not legal advice.

Code

The game uses a custom engine originally based on the YORG.io 3 game engine. The code within the engine is relatively clean with some code for the actual game on top being hacky.

We are in the process of migrating to TypeScript and JSX/TSX. New changes should be implemented in TypeScript if possible, but because we are planning on overhauling many parts of the game, there is no need to convert existing code to TypeScript.

This project is fine with using cutting-edge and bleeding-edge features and does not intend to provide compatibility for older clients.

Building

Prerequisites

Development

  • Run npm i in the root folder and in electron/.
  • Run npm run gulp in the root folder to build and serve files. If a new browser tab opens, ignore it.
  • Open a new terminal and run npm run start in electron/ to open an Electron window.
    • Use npm run start -- --dev to run in development mode.
    • Tip: If you open the Electron window too early, you can reload it when focused on DevTools.

Release

  • Run npm i in the root folder and in electron/.
  • In the root folder, run npm run package-$PLATFORM-$ARCH where:
    • $PLATFORM is win32, linux or darwin depending on your system.
    • $ARCH is the target system architecture (x64 or arm64)
  • The build will be found under build_output/standalone as shapez-....

Credits

Thanks to tobspr for creating this project!

tobspr Games


  1. cURL is already installed on most Windows, Linux and macOS systems. ↩︎