automatik

- ゲーム本体とそのプロトコル socia からなる
概要
自作ソシャゲのアウトゲーム部分を作りたいという野望があった.
幾度となく書き直しているので永遠に完成していません.
しかし, これのおけげで Vue.js, TypeScript, Firebase, GraphQL, Semantic UI などを学べた.
- 点群の凸包(convex hull) と凹包(concave hull) を求めるアルゴリズムを実装しようとし
- https://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain#C.2B.2B
- けど、JavaScriptからKotlinへの移植がつらすぎて断念
- [concaveman](https://github.com/mapbox/concaveman/blob/master/index.js
- rbush
- 格子平面上の格子点群なら凹包を厳密に求める必要がなさそうなことが分かったので疑似的な凹包のアルゴリズム実装した
fp-ts:Monoidでリソースの計算- 経験値グラフの調整
- automaticなlevel designどうやってするのか調査
2022-01-14
2022-01-15
2022-01-16
2022-01-17 - 開発時emulatorを使うように
GCP cloud bucketからデータをダウンロードする
gsutil cp -r gs://minimal-socia-firestore-export/2022-01-17T12:52:55_11496 firestore-data/- 対数の数字セレクタ
- アイテム譲渡
- バトルは薄く
- クエストの難易度関数
- core の完全な分離作業完了
- a8k: キャラの固定化防ぐ方法
- 期間で禁止カード作る?
- ソーシャルゲーム開発における「報酬」「消費」「条件」のテーブル設計と機能 - Qiita
- ソシャゲのテーブル設計例
- クエストスキーマ変更
- うとうとしながらTypeScript書いていた
- イロレーティング導入してレーティングからCPU作り出して対人戦やりたい
Fluct<T extends { value: number }>: 変動する値を表す
type Fluct<T> = T & {
fluctType: 'step' | 'smooth';
key: number;
}変動する値を確定させる ex. ガチャ, ドロップ
gaze(fluct: Fluct<T>) => Maybe<T>
重み付き乱数
gaze(flucts: WeightedFluct<T>[]) => T[]
キーを元にランダム
2022-02-09 追記: それって確率変数では?
Effecter<Fluct<T>>: 定数倍とかの作用が出来る
リソースに対してeffector列をかけられる
装備とかは Effector で定義する => 補正後のパラメータとか出来る
ランクとかは Resource に対してのviewでしかないをしたい
ItemResource: Record<string, ItemStack> にした方が自然
=> Resource[] に対して, 群, ordが出来るので
jest
順不同な配列のマッチ
test('', () => {
expect([1, 2]).toEqual(
expect.arrayContaining([2, 1])
)
})
- v0.13.0 リリース
- swc 使うのあり
ts-nodeと違い型チェックをしないのと Rust製なので早いらしい
- そろそろソーシャル要素入れたい
- 対人戦実装
- coreパッケージあるのでbot簡単に作れる
- faker
- マルチ募集したら適当に入ってきてほしい
- ランダムな行動をn回とる
- 全員で共通の的倒すクエスト
- スイッチみたいのしたい
- クエストをクリアすると係数が少し上がって段々難しくなる, 負けたら下がる
- ローカルデータ差し替え
- Firestore > データをローカルにimport
- 寝ながら, フレンド部分improveしていた
- for: フレンド対戦機能
- やはりフロントエンドのUIいじっている時間虚無になりがちだからミニマムなUIで行きたいところ
- developper 向けの機能的なUIにしたい
- キャラクターにランダムな(総和は一定)特徴ベクトル持たせて, クライアント側でパラメータとして表現する.
- fluct の
seedから変換?
- fluct の
- sociaプロトコル, LSPみたいにcapabilityで機能を絞るみたいな機能欲しい.
- fluct, activity にプロトコル化してリソース付与とか定型化したい
- ゲーム間fluct conversionしたい
- CLIとWeb UIで共通化したいけど難しそう
2022-02-21
-DB選定
- やはりSQLbaseにするか?
- Firestore の弱点
- GraphQL に浸かる?
- 認証: Firebase Authentication
- DB, Backend: Hasura with prisma
- リアルタイムDB: Firestore
2022-02-24
yarn workspacesでmonorepo管理しているときにpath alias使っているパッケージにreferencesで参照させるとtsc-aliasが上手くpath aliasが解決しなくてtscがpath resolveしないのはやっぱり悪手じゃないかって思っている
CIも落ちるし, TypeScriptのProject references上手く行かないし発狂しそうになる
firestore型が違う問題, 先人がいた
TypeScriptで型をDIしてFirestore周りの型チェックをnode/browser向け環境にそれぞれ解決する - Qiita
- pnpm に移行した
ゲームシステムに関わる部分(domain)を切り離すことは可能だろうか
-> fluctとactivityの話
- claim リソースの演算は 加群の直和 で表される?
-
とりあえず, a8k の機能仕様書を書く
- 良いER図ツール無さ気なので,
marmaid.jsで書いてzenn bookにするのはあり
- 良いER図ツール無さ気なので,
-
wish a8k SQL x microserviceに移行したい
- ユーザーAPI(
User) - 通知基盤(
Mail) - コンテンツサービス(
MasterCharacter,Character,Item) - インゲームサービス(
Quest,World,Room) - ガチャサービス(
Gacha)
- ユーザーAPI(
-
あたりを分けて違う言語(
Golang,Rust,Elixiir,Rails) あたりで書きたい
- GitHub - makspll/bevy_mod_scripting: Bevy Scripting Plugin
- bevy のscripting plugin があった