リリース v1.0.0

Kimetron Isle
(キメトロン・アイル) — World-Coordinate Canvas

ワールド座標キャンバスエンジン。
位置は装飾ではなく、データ。

プレイグラウンドを開く

座標に、意味を。

Plesfeda も Sethera Piece も、React Flow の上に作りました。 その実戦で分かったのは、React Flow が面倒を見てくれるのは 「描画・ドラッグ・選択・ビューポート」までだということ—— レイアウトもドメインの意味づけも、全部こちら側で書いていました。 つまり、キャンバスライブラリへの結合部分は薄い。代替は作れます。

ただし「React Flow のクローン」を作る意味はありません。 見渡すと、既存のキャンバス・図形ライブラリはすべて スクリーン座標・ピクセル単位・Y下向きです。 CAD の世界では座標それ自体が設計データなのに、 それを第一級に扱うエンジンが存在しない—— この空白地帯が、Kimetron Isle の立ち位置です。

ワールド座標モデル

オブジェクトの位置・寸法はスクリーンピクセルではなく、 実寸の world 座標で保持されます。ズームは「倍率」ではなく「縮尺」。

  • 実寸単位 mm / m / inch / px を第一級の単位に。1 unit = 1mm の世界定義で、図面の読み取りと実測が一致する
  • 原点選択 左下原点・Y上向き(CAD/数学作法)と左上原点・Y下向き(スクリーン作法)の両方をサポート
  • スナップ内蔵 グリッド・頂点・辺中点・中心へのスナップをエンジンが提供。ドライバは snapExtra で独自スナップを注入できる
  • 衝突・占有 solid オブジェクト同士は重なれず、辺の突き合わせは合法。canOverlap でドライバがペア例外を宣言し、collisionMode(none / flag / reject)で挙動を選ぶ
  • 回転と多角形 オブジェクト回転は OBB(回転矩形)の SAT 判定にまで貫通。kind:'polygon' は凹形状も正しく hit・衝突する
  • プログラム移動 API objectsIn(範囲クエリ)・canPlace・tryMove — ジェスチャを介さない AI 移動も同じ衝突ポリシーを通る
  • undo / シリアライズ immutable なモデル操作とドキュメント単位の undo/redo、JSON シリアライズを内蔵

三層構造と「薄いドメイン層」

@kimetron/core(DOM に依存しない vanilla TS のモデル・幾何・ 選択・ドラッグ・ヒットテスト)、@kimetron/dom(SVG/CSS レンダラとポインタ入力)、@kimetron/react(薄いアダプタ)の 三層です。セマンティクスはユーザー側——Kimetron が意味づけるのは 幾何とインタラクションまで。「ドアは壁に乗れる」「岩は動かせない」 「ユニット同士は重なれない」といったルールは、すべてドライバの ポリシーとして書きます。

この線引きの実証が、リポジトリ内のドライバ群です。

  • plan — 建造物の見取り図 10mm グリッドで厚さ×長さの壁を「|-」接合。ルーラー・寸法線・壁芯・建築面積の導出(敷地/建築/壁芯/内法)はすべてドライバ側の薄い層で実装
  • game — 建物を徘徊する2ユニット 30cm 角のユニットが tryMove で徘徊。solid な壁と岩(ロック済み凹多角形)は通れず、開口部だけが出口。ユニット同士は重なれず、隣接すれば効果リンクが出る
  • plesfeda / sethera spike 稼働中の2つの自作アプリを載せ替えた移植実証。エッジの意味づけ・形状 kind・ロック・用紙枠・HUD がそのまま収まることを確認済み

名前の由来

Kimetron は、シュメール語の ki (場・地——an=天と対になる語)と、ギリシャ語の metron(尺度・測定)の融合語です。 「測る場」が字面に内蔵されています。

Isle は浮島。幾何学的に硬い Kimetron に、 柔らかい自然語を組み合わせる強弱の対比が狙いです。 aisle(通路)との同音で、技術用語すぎない響きにしています。

プレイグラウンドは公開中

GitHub Pages で公開中。ブラウザだけで動き、データはブラウザ内に 留まります——外部への送信は一切ありません。 demo / plan / game / plesfeda / sethera の各ドライバを切り替えて試せます。

Kimetron Isle を開く

正直な現状

v1.0.0 は「API 安定宣言」です——v0.6.0 以降、追加のみで 破壊的変更はありません。ただし機能には余地が残っています。

  • 寸法線の追従・名前付きレイヤ・ブロック参照 CAD 用途としてまだ構造的ギャップがあり、1.x の拡張領域です
  • Svelte/Vue アダプタは未実装 「構造上可能」までが v1.0 の約束。需要を見て実装します
  • 協調編集・クラウド保存はスコープ外 ローカルファースト。データは JSON と localStorage に留まります

ソースコード

MIT ライセンスで公開しています。TypeScript + React 19 + Vite 製。

github.com/cuculhart/kimetron