【備忘録】ココフォリアに貼れるCoCとエモクロアのコマのコードフォーマットを作った話

こんにちは、カセダです。
卒業祝いで始発までカラオケで飲んだ翌日にこんなことをしています。

というのも、シナリオを作っているとNPCの頒布方法に手間取るんですよね。オフセが前提の公式シナリオと違って、オンラインでのセッションが主流となってきた現代ではシナリオからいかに早く卓の準備ができるかも重要になってきます。
ココフォリアはJavaで動作しているので、外部サイト(いあきゃら等)からJSONコードをコピー&ペーストすることで外部のデータを簡単に持ってくることができます。すごいね。

僕も詳しいことはわからないので、chatGPTに聞いてみました。

JSON(JavaScript Object Notation)は、データを表現するための軽量でテキストベースのフォーマットです。JavaScriptのオブジェクト表記法を基にしており、多くのプログラミング言語でサポートされています。

JSONフォーマットは、キーと値のペアでデータを表現します。値は、文字列、数値、真偽値、オブジェクト、配列、nullのいずれかです。データは、階層的な構造を持ち、オブジェクト内に別のオブジェクトや配列を含めることができます。

JSONは、Webアプリケーションなどでよく使われており、APIのレスポンスデータなどに使用されます。また、多くのプログラミング言語には、JSONのエンコード(オブジェクトをJSON形式に変換する)およびデコード(JSON形式のデータをオブジェクトに変換する)を行う標準ライブラリが用意されています。

chatGPTの回答

……?

頑張って解読した結果、
「文字と数値をセットで記憶できる」
「Java上で動作する」
ということがわかりました。

ステータスなどを持ってくることができる、なるほどTRPGのオンラインセッションに適してますね。

そこで僕は考えました。

「これ、フォーマット作ってNPCごとにコードをシナリオに貼ればめっちゃ便利なんじゃない?」

というのも、友人はNPCをそれぞれいあきゃらで作っていました。そのせいでマイページは大混雑。あーあ。
そこで心優しい僕が、ココフォリアに貼れるフォーマットコードを制作してやろうと思い立ったわけです。

早速、いあきゃらでサンプルのキャラを制作し、コードを書き出して数値を解析……ここでとんでもないことに気づきました。

{"kind":"character","data":{"name":"new char","initiative":50,"externalUrl":"https://iachara.com/char/5623792/view","iconUrl":null,"commands":"CC<={SAN} 【SAN値チェック】\nCC<=50 【アイデア】\nCC<=0 【幸運】\nCC<=50 【知識】\nCC<=25 【目星】\nCC<=20 【聞き耳】\nCC<=20 【図書館】\nCC<=25 【回避】\n1d3なし 【ダメージ判定】\n1d4なし 【ダメージ判定】\n1d6なし 【ダメージ判定】\nCC<=50 【STR】\nCC<=50 【CON】\nCC<=50 【POW】\nCC<=50 【DEX】\nCC<=50 【APP】\nCC<=50 【SIZ】\nCC<=50 【INT】\nCC<=50 【EDU】\n","status":[{"label":"HP","value":10,"max":10},{"label":"MP","value":10,"max":10},{"label":"SAN","value":0,"max":0}]}}

読みづれっ

そりゃそうです。そもそもこれは人が読むことは想定されておらず、ペーストしたココフォリアが読めればいいのだから。
しかし、僕が今やろうとしているのはそんなコードを人に読ませ、書き換えさせる作業。これではいけません。

早速改行でわかりやすくしてペーストしたら……エラー。
なんでだ!!!!助けてAI!!

「改行をエスケープさせな」

何???何それ?????

試行錯誤してやってみましたが、ここが限界でした。

{
  "kind": "character",
  "data": {
    "name": "名前",
    "initiative": 50,
    "commands": "\nCC<=50 【近接戦闘:格闘】\nCC<=25 【回避】\nCC<=50 【STR】\nCC<=50 【CON】\nCC<=50 【POW】\nCC<=50 【DEX】\nCC<=65 【APP】\nCC<=70【SIZ】\nCC<=50 【INT】\nCC<=50 【EDU】\n",
    "status": [
      {"label": "HP", "value": 0, "max": 0},
      {"label": "MP", "value": 0, "max": 0},
      {"label": "SAN", "value": 0, "max": 0}
    ]
  }
}

"commands"の欄に技能値が入るのですが、どうやらここを改行するとどうやってもココフォリア側との競合が発生するらしいです。
あとはこの数字を編集して、コピーしてココフォリアに貼るだけ。

そして、全く同じ容量でエモクロアも作りました。

{"kind":"character","data":{"params":[
{"label":"身体","value":"0"},
{"label":"器用","value":"0"},
{"label":"精神","value":"0"},
{"label":"五感","value":"0"},
{"label":"知力","value":"0"},
{"label":"魅力","value":"0"},
{"label":"社会","value":"0"},
{"label":"運勢","value":"0"}],
"status":[
{"label":"HP","value":10,"max":10},
{"label":"MP","value":10,"max":10},
{"label":"共鳴","value":10,"max":10}
],
"name":"名前",
"initiative":0,
"commands":"{共鳴}DM<= 〈∞共鳴〉\n({共鳴}+1)DM<= 共鳴判定(ルーツ属性一致)\n1DM<=3 〈*調査〉\n1DM<=3 〈*知覚〉\n1DM<=3 〈*交渉〉\n1DM<=3 〈*知識〉\n1DM<=3 〈*ニュース〉\n1DM<=3 〈*運動〉\n1DM<=3 〈*格闘〉\n1DM<=3 〈*投擲〉\n1DM<=3 〈*生存〉\n1DM<=3 〈*自我〉\n1DM<=3 〈*手当て〉\n1DM<=3 〈*細工〉\n1DM<=3 〈*幸運〉"}}

こっちもステータスは見やすいけど、技能の改行ができないのはめんどくさいですね。

最後にこのコードをチェックしてもらおうとchatGPTに送りつけたところ、

"status"フィールドには、共鳴という値が含まれていますが、これは一般的なRPGにおけるステータスとしては一般的ではありません。詳細については、ゲームデザイナーに相談する必要があります。

そんなところまで指摘してくる!?!?!?

いいなと思ったら応援しよう!