Skip to content

Repository files navigation

Machine Customizer

An unofficial, open-source, noncommercial browser tool for exploring visual concepts on Valve's official Steam Machine exterior geometry.

No account. No uploads. No backend.

This project is not affiliated with, sponsored by, or endorsed by Valve Corporation.

What it does

  • renders a verified, web-optimized derivative of Valve's external-shell CAD;
  • places the model in an original, brightly lit living-room gaming scene;
  • switches the editor, save/export flows, About page, and license page between English and Simplified Chinese;
  • applies thirteen complete visual themes and constrained body, faceplate, light, graphic, text, and scene presets;
  • auto-saves drafts and named versions in the current browser;
  • imports and exports schema-validated design files;
  • shares compressed configurations through a URL Fragment;
  • exports attributed PNG renders.

The editor is a visual configurator. It is not mechanical CAD and does not produce printable or manufacturing-ready parts.

Submit a community theme

Community-made themes are welcome. You can propose a theme without writing code:

  1. Open the deployed customizer.
  2. Build a complete theme using the existing material, faceplate, lighting, graphic, text, and scene controls.
  3. Use Save → Download design file to export the .machine-design.json, then use Export to create an attributed PNG preview.
  4. Open the Community theme proposal form.
  5. Attach both files, describe the concept, and identify the source and license of anything that is not built into the customizer.

Theme names, short labels, and visual concepts must be original. Do not submit third-party game artwork, characters, franchise names, logos, Valve/Steam branding, advertising, affiliate content, or material that implies official endorsement. Submissions must remain noncommercial.

To implement a theme in code:

  1. Fork the repository and create a focused branch.

  2. Add a stable lower-case ThemeId in app/customizer/types.ts and the matching schema value in app/customizer/schema.ts.

  3. Add one complete entry to THEMES in app/customizer/presets.ts. Include English and Chinese labels, three swatches, and explicit body, faceplate, accent, lighting, graphic, text, and scene values.

  4. Update the preset count and behavior tests. Add localization entries if the theme introduces new interface copy.

  5. Run:

    npm test
    npm run lint
    npm run build:static
  6. Open a pull request with a PNG preview, the design file, a short rationale, and an asset/license declaration.

Accepted application code and preset definitions are distributed under MIT. Any contribution derived from Valve CAD remains separately subject to CC BY-NC-SA 4.0. Maintainers may request changes or decline a proposal to keep the collection distinct, readable, lawful, and technically stable.

Run locally

Requires Node.js 22.13 or newer.

npm install
npm run dev

Validation:

npm run cad:build
npm test
npm run lint
npm run build

Model provenance

The evaluated source is Valve's steam_machine_3d.stp at commit e6d83115e43fb2cc9421e1773e2b70331b74f519.

The conversion script verifies this source SHA-256 before producing the GLB:

7e75bb858a58f050bf744a5717e1b803d8f9269c2322063206ff43b3797cd2b3

See:

License boundaries

This repository uses mixed licenses:

Material License
Application source code MIT
Valve source CAD CC BY-NC-SA 4.0
Derived GLB and inseparable model modifications CC BY-NC-SA 4.0
Third-party libraries and fonts Their respective upstream licenses
Valve/Steam trademarks Not licensed by the Creative Commons license

The CAD and derived model are for noncommercial use. Do not relicense them under MIT, add DRM, imply Valve endorsement, or use them for sales, advertising, affiliate activity, paid access, or other primarily commercial purposes.

Privacy

Design state is processed on-device. This version has no account system, analytics profile, uploads, database, or application API. Shared designs live inside the URL after #d=, which is not sent as part of normal HTTP requests.

Contributing

Read CONTRIBUTING.md before submitting code, presets, or model changes. Model-derived contributions use a different license from application code.

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages