CoOp:Anything
Search any game and see how much of it you can play with friends: every co-op mod, its stage, quality and community rating.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Paste a Factorio blueprint string, see it in 3D from Wube's official 3D-print models, get the parts to print
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Live site: https://windingduke77.github.io/Factorio2IRL/
Paste a Factorio blueprint string, see it rendered in 3D out of Wube Software's official 3D-printable models, and get the list of parts you need to print to build it for real.
npm install
npm run dev
Then open http://localhost:5173, paste a blueprint string (or load a sample) and press
Render. The print and view options, printer and scale are kept in the browser's local storage in every
mode; the blueprint and its book entry are kept too on the normal page, and the camera comes back
whenever the same blueprint (or the same dev scenario) is shown again, so a reload returns to the
same view (Clear forgets the blueprint, not the settings). npm run build writes a static site to dist/.
?gallery shows every converted piece laid out for inspection; ?gallery=belt/&view=top filters
by key prefix and picks a camera (iso, top, front, bottom). ?dev ("Model check" in the
top bar) cycles through every entity type and belt/wall configuration as a tiny blueprint on its
grid plate, through the normal pipeline: Prev/Next/Rotate, arrow keys and R, &i=<n>&d=<dir> to
deep-link, &view=top for a top-down camera. The three transport-belt: … ends entries switch the
belt-end option so each end style can be tuned. In ?dev a Tune parts panel lists every piece
in the current scene and lets you change its placement live and save it (see Tuning parts).
The models come from Wube's Printables profile: https://www.printables.com/@WubeSoftware/models
(CC BY-NC). The converted GLBs in public/models/ are committed so the app works straight after
cloning. To refresh them:
npm run models # = fetch-models + convert-models
scripts/build-catalog.mjs queries the Printables API and writes scripts/catalog.json,
mapping every one of the 247 STL files to a stable key (belt/straight-top, tile/inserter,
grid/4x6, …). Only pieces used for rendering are marked render: true.scripts/fetch-models.mjs downloads those STLs into models-raw/ (git-ignored, ~175 MB with both fit variants; the High Clearance files are only needed for the Pack download).scripts/convert-models.mjs converts STL → GLB (Y-up, 1 tile = 1 unit, simplified to
≤ 40k triangles, meshopt-compressed) and writes public/models/manifest.json.convert-models
and assembled by src/config/composites/*.json (positions and rotations per part, tunable in
?dev): the electric mining drill (frame, auger, drive rod, head, two leg housings with chain
struts, two hoses, hydraulic pistons, peg, bracket), the steel furnace (body plus three pipes, each
printed as two D-profile halves which the converter mirrors into a round pipe) and the small
electric pole (base plus two different half-shells, pole/profile and pole/profile-b, stood up
from their own crossarm ends so they meet at their flat faces). Wall pieces are modelled around
their tile, so they are placed by their raw offset rather than their bounding-box centre.foldArm in src/render/models.js). The stack inserter plate
also carries a second hand, which the converter stacks on the arm's own hand for the double claw.src/data/printers.json, add your own) and a Print scale.
Picking a printer caps the grid base plates to what fits its bed (25 mm per tile at 100%, 3 mm
margins; a 180 mm bed gets plates up to 6×6) and pre-fills the Pack dialog's bed size. The scale
applies to the parts list's mm sizes, the plate cap and the 3MF plates; STL copies stay at 100%.Every converted piece has a JSON file in src/config/parts/ (the key with / replaced by __,
so belt/underground-in-top is belt__underground-in-top.json). Units are tiles (1 = 25 mm)
and degrees:
| field | meaning |
|---|---|
rotation | 0/4/8/12 = 0/90/180/270° added to the entity direction so the model faces north |
tilt | degrees about the piece's own X/Y/Z, for pieces modelled in a printing pose (hoods, lids, the splitter base) |
offset | tiles, added after the piece is centred on its tile; y raises it, x/z slide it (z negative = towards the front of the tile) |
stackOn | key of the piece it sits on (belt top on belt bottom, lid on chest, arm on inserter base) |
inset | how far (tiles) it sinks into that piece; 0 rests on its top |
rawFrame | keep the STL's raw offset instead of centring (walls are modelled around their tile) |
notes | free text |
src/config/levels.json holds the stacking heights of the base-plate system (grid plate pocket
floor, tile thickness, shaped-tile pocket). src/config/composites/<entity>.json lists the parts
of the drill, the steel furnace and the pole with a position and rotation each (or an anchor line
for the drill legs and rails).
The quickest way to adjust them is the Tune parts panel in ?dev: pick a scenario with
Prev/Next, open a piece, change a number and the scene rebuilds at once; Save writes the
file through the dev server, Reset goes back to the saved values. Editing the JSON by hand
works too (the dev server reloads it). What to check for each piece, against Wube's assembly
photos:
stackOn) at the right height: no gap underneath and not sunk
into it (inset, or offset.y for a one-off nudge);rotation), and belts/hoods face their neighbours
once rotated (check in &d=4 too);tilt) and is centred on its tile (offset.x/offset.z).The Pack button next to the parts list opens a dialog (STL files and/or 3MF plates, plates
grouped by colour, strictly by colour, by part type or mixed, gap and margin; the bed size comes
from the printer chosen in Print options) and downloads a zip with one copy of every needed STL named with its quantity (a folder per
Printables set and fit variant), the parts list, and a folder per filament colour holding one 3MF per
print plate with the instances arranged on the bed. Parts larger than the
bed get a plate of their own. It is built in the browser from the original STLs, which the dev server serves from models-raw/ at /stl/… and
vite build copies into dist/stl (npm run fetch-models first, which gets both fit variants; set NO_STL=1 to skip the copy).
npm run pack -- --sample smelting (or --file my-blueprint.txt) writes the same pack to a folder
from the command line, with flags for bed size, gap, plate grouping and the print options (header of
scripts/pack.mjs). The shared code lives in src/export/.
docs/slicer-export.md has the remaining ideas (file links, print batches).
src/blueprint/ decode.js, normalize.js, entities.js, belts.js, walls.js, grid.js, placements.js
src/render/ scene.js, models.js, build.js, orientation.js (loads src/config), gallery.js
src/config/ parts/*.json (one per piece), composites/*.json, levels.json
src/dev/ cycler.js (model check), tune.js (tuning panel + save via vite.config.js)
src/bom/ bom.js (parts list + text/CSV export)
src/ui/ bomPanel.js
scripts/ Printables API, catalog, fetch and convert scripts, sample generator
test/ node --test unit tests (decode, directions, belt shapes, walls, grid tiling)
npm test runs the unit tests. node scripts/make-samples.mjs regenerates the sample strings in
src/data/samples.json.
.github/workflows/pages.yml builds and deploys the site on every push to main: it runs the
tests, fetches the original STLs from Printables (cached by the catalog's hash) so the Pack
download works, builds with BASE_PATH=/<repo>/, and publishes dist/ with GitHub Pages
(source: GitHub Actions). On a free account the repository has to be public for Pages. The dev
tooling (?dev, ?gallery, the tuning panel) is only part of dev builds (npm run dev), not of
the published site.
3D models © Wube Software, released on Printables under CC BY-NC. Factorio is a trademark of Wube Software. This is an unofficial fan tool. See ATTRIBUTION.md.
src/config/parts/.