Cloudwiki

Factory

브라우저에서 돌아가는 **탑뷰 공장 시뮬레이터** 게임. 격자 위에 컨베이어와 기계를 놓아, 흘러가는 원료 알갱이를 제품으로 바꾼다. [[Particle Sandbox]]와 나란한 프로젝트로, 스택과 인프라(문구 키 타입 시스템·UI 아이콘 파이프라인·테마 CSS)를 그 저장소에서 가져왔다 — **엔진은 가져오지 않고 새로 썼다.**

> 이 문서는 아직 **뼈대**다. 게임이 서는 대로 채운다. 세부 구현·설계 기록의 정본은 저장소 [`docs/` 폴더](https://github.com/eoeoe22/factory/tree/main/docs)이고, 유저용 설명의 정본은 인게임 툴팁이다.

- 저장소: [eoeoe22/factory](https://github.com/eoeoe22/factory)
- 배포: Cloudflare Workers Static Assets (`main` 푸시 시 `npm run build` → 자동 배포, 검사에 걸리면 배포도 안 나간다)
- PR 프리뷰: 열린 PR마다 프리뷰 URL이 자동 생성
- 우선순위: **① 재미 ② 편의성** — ③은 아직 안 정했다

## 무엇을 하는 게임인가

공급기에서 나온 원료가 컨베이어를 타고 기계를 지나며 다른 것이 된다. 녹은 것은 식기 전에 다음 기계에 닿아야 하므로 **배치가 곧 시간 예산**이다 — 녹은 유리는 5초(컨베이어 4칸), 용융 철은 2초(1칸)를 준다. 원재료는 파티클로, 제품은 오브젝트로 다룬다.

지금 서 있는 것(2026-08, 철 계통 PR [#11](https://github.com/eoeoe22/factory/pull/11) 기준):

- **기계 6종** — 컨베이어 · 공급기 · 가열기 · 성형기 · 도가니 · 냉각기
- **생산 계통 둘**

```
모래   → [가열기] → 녹은 유리 → [성형기] → 유리병
철광석 → [가열기] → 용융 철   → [도가니] → 뜨거운 철괴 → (8초 뒤, 또는 냉각기) → 철괴
```

- 식기 전에 못 거두면 유리가루는 가열기로 되돌아가지만 **슬래그는 안 돌아온다.** 라인 끝에 회색이 쌓이면 그것이 곧 «늦었다»다.
- «무엇이 무엇으로 바뀌는가»는 코드가 아니라 표다(`src/game/recipes.ts`) — 물질을 들이고 표를 안 채우면 빌드가 선다.

## 주요 기능

(채울 자리 — 살펴보기, 공급기 원료 선택, 종류별 생산량, 일시정지·감속 등)

## 기술 스택 (요약)

Astro(정적 산출) + TypeScript + Svelte 5 아일랜드 + nanostores + Canvas 2D(저해상도 픽셀 아트를 정수 배율로 확대) + Cloudflare Workers Static Assets. 백엔드가 한 줄도 없어서 PR 프리뷰가 산다.

## 상세 개발 기록

작업자용 문서는 전부 저장소 `docs/` 폴더에 분야별로 나눠 둔다:

- [ARCHITECTURE.md](https://github.com/eoeoe22/factory/blob/main/docs/ARCHITECTURE.md) — 구조·스택·배포
- [SIMULATION.md](https://github.com/eoeoe22/factory/blob/main/docs/SIMULATION.md) — 알갱이·기계가 도는 순서
- [MATERIALS.md](https://github.com/eoeoe22/factory/blob/main/docs/MATERIALS.md) — 레시피 표와 계통을 들이는 법
- [RENDERING.md](https://github.com/eoeoe22/factory/blob/main/docs/RENDERING.md) — 픽셀 아트·팔레트
- [UI.md](https://github.com/eoeoe22/factory/blob/main/docs/UI.md) — 팔레트·살펴보기·팝오버
- [TESTING.md](https://github.com/eoeoe22/factory/blob/main/docs/TESTING.md) — 하네스와 «무엇을 건드리면 무엇을 돌리나»
- [I18N.md](https://github.com/eoeoe22/factory/blob/main/docs/I18N.md) — 문구 키 타입 시스템

## 구상

아직 구현하지 않은 것들은 [[Factory/구상]]에 모아 둔다 — 공정·물질·기계 후보 브레인스토밍과 테크트리·설치 비용의 기초 설계.