automatik (a8k) / socia
自作ソーシャルゲーム。「アウトゲーム部分を作りたい」という野望のもと、何度も書き直されており「永遠に完成しない」プロジェクト。ゲーム本体と、その基盤プロトコル socia からなる。
学びの場としての価値
このプロジェクトを通じて Vue.js / TypeScript / Firebase / GraphQL / Semantic UI などを習得。技術検証の母体になっている。
設計トピック
- 凸包/凹包: 点群の凸包・凹包アルゴリズムを実装(格子点群なら厳密な凹包は不要と判明し疑似アルゴリズムへ)。
- fp-ts / Monoid: リソース計算をモノイドで表現 → game-resource-monoid-haskell と同系統の発想。「リソースの演算は加群の直和で表される」という主張。
- Fluct / Effecter: 変動する値
Fluct<T>(ガチャ・ドロップ=確率変数)、装備等の補正を表すEffecter。リソースに対するeffector列を適用。 - socia プロトコル: LSPのようにcapabilityで機能を絞る構想、ゲーム間のfluct変換、CLIとWeb UIの共通化。
- インフラ: Firestore/GraphQL/Hasura/Prismaの選定、emulator運用、pnpm移行、monorepo(yarn workspaces)でのProject references課題。
- マイクロサービス化構想: User/Mail/Content/InGame/GachaサービスをGo/Rust/Elixir/Railsで分割したい野望。