2026-08-31 20:54:53 +03:00
2026-08-31 20:54:53 +03:00
2026-08-31 21:03:22 +03:00
2026-08-31 21:03:22 +03:00
2026-08-31 20:54:53 +03:00
2026-08-31 20:54:53 +03:00
2026-08-31 20:54:53 +03:00
2026-08-31 20:54:53 +03:00
2026-08-31 20:54:53 +03:00

Граф ресурсов — тиковая симуляция (Vite + React + TypeScript)

Запуск

npm install
npm run dev

Откроется адрес вида http://localhost:5173.

Сборка

npm run build   # tsc -b && vite build -> dist/
npm run preview # локальный просмотр собранного dist/

Структура

  • src/engine.ts — ядро симуляции: типы (SimNode, SimEdge, Behavior, Topology, Buffers), функция tick() (один детерминированный тик) и resetBuffers(). Модуль не зависит от React/DOM — логика переносима на другой стек (Rust/C#/GDScript) по этой же спецификации.
  • src/storage.ts — чтение/запись localStorage (incsim.topology.v1, incsim.buffers.v1, incsim.tickcount.v1).
  • src/App.tsx — состояние приложения (topology/buffers/tickCount/selected), все обработчики мутаций, эффекты персистентности.
  • src/components/ — Topbar, WorldCanvas (холст с узлами и SVG-связями), NodeCard (перетаскиваемая карточка узла), EdgeLines (SVG-стрелки), Sidebar, NodeEditor, EdgeEditor, RecipeEditor.

Модель

  • Storage — пассивный буфер с ёмкостью.
  • Converter — единственный активный узел: раз в period тиков атомарно списывает inputs и начисляет outputs в собственном буфере. source/consumer — его частные случаи с пустым списком входов/выходов.
  • Edge — перенос ресурса между буферами узлов; конкуренция при fan-in/fan-out разрешается по priority (выше — раньше), порядок обработки узлов/рёбер фиксирован — тик полностью детерминирован.

Reset обнуляет буферы и таймеры конвертеров, настройки узлов/связей не трогает.

S
Description
No description provided
Readme
326 KiB
Languages
TypeScript 83.6%
CSS 15.1%
HTML 1.3%