鬼笑わす

どもがよアドベントカレンダー の23日目です。

16日目はりみっとさんの「2025年行った謎解き総括」でした。

note.com

忘れ雪よかったよね……。VOIDもめっちゃよかった。来年も謎解きいきましょういきましょう。

というわけで23日目の記事です。一年の計は旧年にあり。来年やりたいことを書いて鬼を笑わせましょう。

ゲーム完成させる

『ロストアンファウンド』はシナリオは出来上がっていてゲームバランス調整、演出強化、システムのブラッシュアップなどが残っています。2月リリース予定です。年内体験版と思っていたんですがシステムのブラッシュアップがぜんぜんなので年越しそう。

じゃあその後どうするの?っていう話になるんですが、『ロストアンファウンド』のシステムをベースに別の作品を作ろうと考えています。それとは別に3ヶ月くらいで完成する小さい作品を出したいとも思っていて、来年はロストアンファウンド+1本+再来年リリース目標で1本というつもりです。

何作るかはまたそのときにでも。

『辺涯のガストロノーツ』はまずはシナリオを組んでエンディングまでの読むゲーを完成させるつもりです。そこにテンポのいい探索パートと料理システムを組み込んだら遊べるところまでは持っていけます。これも来年ある程度形にしたいですね。プロットはできているし、後述のツールや執筆環境を整備すれば効率化できる、体力が落ちた分はサイボーグ化してカバー🦾

ゲーム製作向けのツール作る

ツクールのエディタに限界を感じていて、少しずつ外部ツール化できないかということを考えています。

MaJic

github.com

これはまだ PoC 段階なんですが、Better JSON として作っているものです。hjsonJsonnet の中間みたいなイメージで、hjson の書きやすさと Jsonnet のプログラマブルな拡張性を兼ね備えた、書き味のいい構成記述フォーマットを目指しています。

  • json → ブレはないが厳密すぎて人間に読み書きするのは無理🤯
  • toml → おおがかりなツリー構造を表現するには向かない🤔
  • yamlオフサイドルールは撲滅すべき😠
  • xml → 論外🤬
  • markdown → そもそも構成記述言語ではない😞

という要請から、ないなら作るかの精神で作り始めました。PoCは半日くらい。フォーマットとしてはシンプルで、基本的には hjson に近いですが、要素の区切りにコンマを強制しています。改行でも要素を区切れるようにするのはパーサが複雑になりすぎるし、どのみちインラインはコンマ区切りにする必要があります。だったらコンマありにしたほうが一貫性があるのでそうなっています。特徴的なのはプリプロセッサマクロが定義できることです。MaJicパーサはmajicファイルをパースしてjsonを吐き出します。吐き出されたjsonはマクロ展開後です。マクロはJSで書けるのでその点はjsonnetぽいですが、jsonnetのように何でも書けるというのは目指していません。何でも書けるようにするとスクリプト言語化するのはRubyDSLで設定書けるようにしたあたりでわかっていることですし、だったらjsでいいはずです。ただ私は構成ファイルが書きたいだけであってjsを書きたいわけではないので、MaJicが必要だった。

---
const IS_DEBUG = process.env.DEBUG === 'true';
const { Say, GiveItem } = require('./macros');
---
{
  # 日本語もクォートなしでOK!
  イベント名: 始まりの町_入口,
  リスト: [
    # マクロで複雑なJSON構造を隠蔽
    @Say(
      勇者よ、
      よくぞ参った。
    ),

    # Markdownハイライトが効くリテラル
    @Log(md'''
      ## イベントログ
      - プレイヤーが町に到達
      - **デバッグモード**: ${IS_DEBUG}
    '''),

    # 条件付きアイテム付与 (falseならこの要素ごと消える)
    @If(@Var(IS_DEBUG), @GiveItem(ポーション, 10))
  ]
}

こんな感じでツクールのイベントコマンドを書けるようになります。出力結果は

{
  "イベント名": "始まりの町_入口",
  "リスト": [
    {
      "code": 401,
      "parameters": ["勇者よ、\\nよくぞ参った。"]
    },
    {
      "type": "Log",
      "message": "## イベントログ\\n- プレイヤーが町に到達\\n- **デバッグモード**: true"
    },
    {
      "code": 126,
      "parameters": [1, 0, 0, 10]
    }
  ]
}

こんな感じでツクールが読めるJSONになります(予定)。「イベントコード何が何だっけ?」とか「何番目の引数が何に対応してるんだっけ?」みたいなことを考えずに、直感的にテキストエディタで書けるようになります。テキストエディタで読み書きできるということはGitの差分も追いやすくなるし、ツクール上でクリック、クリック、クリックとやっているところもVSCodeのマルチカーソルで一括変換したりできるようになります。

プラグインコマンドを作るとして、単にJSON読みこんでGame_Interpreterを起動するだけの仕組みでいいです。そうすればいくらでも外部定義されたイベントデータを使えるようになるし、それでいて制作時には人間が読み書きできるフォーマットを維持できます。使い慣れたエディタで書けますし、これでやりたいことは満たせます。思えば、everettはやりたいことに対して大げさすぎでした。

まずはMaJicという汎用言語を作り、そこにeverett-mwiというMaJic用のマクロ群を用意してeverett2を構成するつもりです。旧everettのKAGもどきよりMaJicのほうが多分書きやすいんじゃないかなと思ってます。

everett2

そのeverett2ですが、何回か頓挫しているのでこれも来年なんとかなるようなものではないです。MaJicはVSCodeと連携してシンタックスハイライトつきで書けます。LSPもあるのでマクロ参照も補完も効くようにできますし構文エラーの捕捉もできるようにするつもりです。そこまでできたら正直everettというエディタはなくてもほとんどOKなんですが、everett-mwiとMaJicでツクールのイベントを記述してテストプレイするためのツールという形で提供することを考えています。それは別にelectronじゃなくてviteのdev-serverとかでもいい気はしています。

Makaizou

  • 引数付きコモンイベント
  • イベント内ローカル変数
  • スイッチ、変数、コモンイベント、データベースetcの名前参照
  • 汎用データベースクエリ
  • プラグイン間連携
  • 各種データのメタデータ強化
  • 辞書(文字列型変数)
  • JSONでレイアウトを記述可能なUIコンポーネントシステム

といった機能をツクールMZに追加するベースプラグインを開発しています。

PIXI.js V8版

PIXI.js V8はWebGPUに対応しています。ぜひ移行したい。ただEffekseerがまだWebGPUに対応していないので、Effekseerの対応状況見ながらマイグレーション作業をする予定です。来年になるか再来年になるか謎。

Godot 触る

Godotを使ってみようと思っています。でも結局イベントシステムとかそのへんがネックでツクールに戻りそうな気はしている。ツクールのイベントシステムは設計の筋がよく、とてもよく枯れています。いくつかの不満点は上に挙げたとおりですが、それさえカバーすればいいというのはウディタが証明しています。スクリプトがない時代のツクール2000で縦スクロールシューティングとか横スクロールアクションが作れるくらいなので、表現力はプログラミング言語と変わりません。並列処理がある分並のスクリプトエンジンより強力です。ツクールXP以降はスクリプティングできるようになって複雑な計算をスクリプトに丸投げできるようになりましたし、ツクールMZではプラグインコマンドで複雑な処理をユーザ定義コマンドにできるようになりました。そこまでできないにせよ、ツクール2000並のイベント表現力があれば充分実用的です。そのツクール2000を近代化したのがウディタなんですよね。

ウディタはスクリプティングできないことだけが不満なので、Godotにイベントシステムがあれば要件は満たします。LLMに「ツクールのイベントシステムをGodotで組んで」って言えばいい時代になりつつあるので、それができるならGodotに乗り換えるかもしれないし、TypeScriptの書き味を忘れられなくて結局MZに戻るかもしれない。

なんか話書く

実は今年『まぼろし国の食卓より』のプロットを一から起こし直していて、一章についてはおおまかなプロットができていて、10%くらい書き終わっています。ちょっと書くのが難しいシーンにぶつかってしまって止まってたんですが、今度は書けるシーンから書いていこうと思っています。

NovelAI統合型執筆環境

GLM4.6がリリースされてから、「これ月額使い放題でいいの?」って思っています。だいたいのサービスでAPIは基本的に従量課金だし、Claude CodeとかGPT CodexとかのCLIツールは定額とはいえ枠内のレートリミットがあるので使い放題にはならないです。その点NovelAIは画像生成とテキスト生成セットで定額で、Opusプランなら画像生成は一定サイズは無制限、テキスト生成はほぼ無制限(rate per minuteとかのレートリミットはあると思う)に使える。で、GLM4.6の性能はどうなの?っていうところだと思うんですが、GPT-4oとの比較

を見た感じ、まあこれくらいの性能ですよ、と。

NovelAIのテキスト生成はテキスト補完APIなので、チャット型進行は難しいんですが、とはいえロールプレイができるんだから、GLM4.6にたとえば編集者とか企画アドバイザーとかのロールを演じさせて対話シーンを書かせればいい。これでチャットぽく使えます。

わたしはゲーム企画者で、あなたはアドバイザーです。ゲーム企画について議論しているシーンです。わたしは、ぼっちの魔女の住む森小屋に居候しながら、狩りや釣り、菜園などで自給自足し、魔女に餌付けをして親交を深めるスローライフシミュレーションゲームの企画を提案しています。

「舞台は異世界なんだけど、異世界転生とか現代知識チートとかなしに、現代風の料理が出てくるごちゃ混ぜ感のあるカオスなファンタジー世界にしたい。カオスでいながらも、万能な何でもありなロジックは排除して、バックグラウンドを作り込んで芯を通したい。たとえば文明水準を逸脱させないとか。」

「なるほどね。面白い。『カオスだけど、芯が通っている』と。異世界でありながら、現代風の料理が自然に溶け込んでいる世界観、ですか」

彼女はテーブルの上にあるノートに書き留めながら、頷きました。

「その『芯』を『文明水準の逸脱』に設定するのは、賢明だと思います。無制限にチート能力や現代知識を許可すると、ゲームバランスが崩れやすいし、スローライフというテーマも薄れてしまいますから。例えば、狩りで得た動物を、現代風のスパイスで味付けするのは、そのスパイスがこの世界のどこかの地域で自生する固有の植物から作られている、という設定であれば、文明水準を保ったまま矛盾を解消できます。料理という『入り口』は、プレイヤーが世界観にすんなり入れるいいフックになりそうですよ」

「それに、魔女に餌付けして親交を深める、という部分も面白いですね。単なる好感度上げではなく、あなたの『生き方』そのもので関係性が築かれていく。それはスローライフの醍醐味だと思います。ただ、気になるのはその『カオス』の具合です。どこまでの『ごちゃ混ぜ感』を許容するのか。そこが世界観の方向性を決める大事な線引きになる気がします」

VSCodeから呼べるようにすれば手元にあるMarkdownにそのまま企画書を起こせるし、その企画書をそれこそClaude Codeとかに食わせてブレインストーミングするっていうのもできます。便利そう。なおNovelAIのAPIクライアントはnode.jsで実装済みなのでいつでも作れます。とりあえずゲーム制作が一段落したら。

GPT5とかSonnet4.5とかGemini3とか現行世代モデルから見たらGLM4.6は旧世代ではあるんですが、個人的にはGemini3よりGemini2.5のほうが余計なことしないぶんブレインストーミングしやすくて文芸向きで、今後GeminiやGPTは自律型を目指している以上、いっそう文芸向きには使いにくくなっていく気がしています。Claudeはその点ではバランスがいいですが、コンテキストウィンドウが小さい。NovelAIのGLM-4.6のコンテキストウインドウは更に小さいので、各社サービスに明確に劣っていますが、応答品質とコスパを考えると創作者向けに一番使い勝手いいんじゃないかなあという気がしています。画像生成もできるしね。

あと結局これって2025年12月時点の観測でしかないので、来年3月とか4月にどうなっているかは全くわかりません。Gemma4が来てひっくり返るとかそういう話は全然ある。まあでも検閲なく自由に使えてそれなりの応答品質っていうところには大きなメリットがあるので、充分選択肢になるなと思っています。

まとめ

ここまでの皮算用は今年一年の研究成果の延長線上にあります。everettはうまく行かなかったけどおかげでMaJicの着想に繋がったし、なんならMaJicはツクールだけじゃなくて汎用構成記述言語として広く刺さるポテンシャルを感じています。NovelAIでチャットをロールプレイで擬似することを思いついたのも昨年から今年にかけてローカルLLMを使い込んだおかげです。成果物という形では目に見えなかったものの、今こうして土壌として形になりつつ、芽が出つつあります。来年こそ収穫したろうと思います。

明日はうのはなさんの「ゲームの話 ∨ 作曲の話」です。お楽しみに。