AIを使ってドラクエみたいなゲームを作ってみる⑬

 https://play.google.com/store/apps/details?id=com.studior.dqone


AIに作ってもらったタワーMAP

1F
△△△△△△△△△△△△△△△△△△
△□□□□□■□□□□□□□□□□△
△□□□□□■□□□□□□□□□□△
△□□■□□■■■■■■■■■□□△
△□□■□□□□□□□□□□■□□△
△□□■□□□□□□□□□□■□□△
△□□■□□■■■■■■□□■□□△
△□□■□□■□E□□■□□■□□△
△□□■□□■□□□□■□□■□□△
△□□■□□■■■□□■□□■□□△
△□□■□□□□■□□□□□■□□△
△□□■□□□□■□□□□□■□□△
△□□■■■■■■■■■■■■□□△
△□□□□□□□□□□□□□□S□△
△□□□□□□□□□□□□□□□□△
△△△△△△△△△△△△△△△△△△

2F
△△△△△△△△△△△△△△△△△△
△□□□□□●□□□□□□□□□□△
△□□□□□●□□□□□□□□□□△
△■■■■■■■■■■□□■■□□△
△□□□□□□□□□●□□□■□□△
△□□□□□□□□□●□□E■□□△
△□□■■■■□□□●■■■■□□△
△□□■□□□□S□●□□□□□□△
△□□■□□□□□□●□□□□□□△
△□□■■■■□□□●□□■■■■△
△□□□□□□●●●●□□□□□□△
△□□□□□□●●●●□□□□□□△
△□□■■■■□□□■■■■■□□△
△□□□□□□□□□□□□□□□□△
△□□□□□□□□□□□□□□□□△
△△△△△△△△△△△△△△△△△△

3F
△△△△△△△△△△△△△△△△△△
△●●□□□□□□□□□□□□□□△
△●●□□□□□□□□□□□□□□△
△●●□□■■■■■■■■■■□□△
△□□□□●□□□□□□□□■□□△
△□□□□●□□□□□□□S■□□△
△□□■■■■■■■■■□□■□□△
△□□■□□□□□□□□□□□□□△
△□□■□□□□□□□□□□□□□△
△□□■●●●●●●●●●■■■■△
△□□■□□□□□□□□□□□□□△
△□□■□□□□□□□□□□□□□△
△□□■□□●●□□□●●□□●●△
△□□□□□●●□E□●●□□●●△
△□□□□□●●□□□●●□□●●△
△△△△△△△△△△△△△△△△△△

4F
△△△△△△△△△△△△△△△△△△
△□□□□□□□□□□□□□□□□△
△□□□□□□□□□□□□□□□□△
△□□■■■■■■■■■■■■□□△
△□□■■■■■■■■■■■■□□△
△□□■■□□□□□□□□■■□□△
△□□■■□□□□B□□□■■□□△
△□□■■□□□□□□□□■■□□△
△□□■■□□□□□□□□■■□□△
△□□■■□□□□□□□□■■□□△
△□□■■■■□□□□■■■■□□△
△□□■■■■□□□□■■■■□□△
△□□■■□□□□□□□□■■□□△
△□□■■□□□□□□□□■■□□△
△□□□□□□□□S□□□□□□□△
△□□□□□□□□□□□□□□□□△
△△△△△△△△△△△△△△△△△△

AIを使ってドラクエみたいなゲームを作ってみる⑫

https://play.google.com/store/apps/details?id=com.studior.dqone

AIに作ってもらったダンジョンMAP

B1F
■■■■■■■■■■■■■■■■■■
■□□□□□■□□□□□□□□□□■
■□S□□□■□□□□□□□□□□■
■□□□□□■□□□■■■■■■■■
■■■■□□■■□□■□□□□□□■
■□□□□□□■□□■□□□□□□■
■□□□□□□■□□■□□■□□□■
■□□□□□□■□□■□□■E□□■
■□□■■□□■□□■□□■■■■■
■□□■□□□□□□■□□□□□□■
■□□■□□□□□□■□□□□□□■
■□□■■■■■■■■■■■■□□■
■□□□□□□□□□□□□□□□□■
■□□□□□□□□□□□□□□□□■
■■■■■■■■■■■■■■■■■■


B2F
■■■■■■■■■■■■■■■■■■
■E□□■□□□□□□□□□□□□■
■□□□■□□□□□□□□□□□□■
■□□□■■■■■■■■■■■□□■
■□□□□□□□□□□□□□■□□■
■□□□□□□□□□□□□□■□□■
■■■■■■■■■■■■□□■□□■
■□□□□□□□□□□□□□■□□■
■□□□□□□□□□□□□□■□□■
■□□■■■■■■■■■■■■□□■
■□□■□□□□□□□■□□□□□■
■□□■□□□□□□□■□□□□□■
■□□□□□■■■□□□□□■□S■
■□□□□□■■■□□□□□■□□■
■■■■■■■■■■■■■■■■■■

B3F
■■■■■■■■■■■■■■■■■■
■■■■■■■□S□■■■■■■■■
■■■■■■■□□□■■■■■■■■
■■■■■■■□□□■■■■■■■■
■■■■■□□□□□□□■■■■■■
■■■■■□□□□□□□■■■■■■
■■■■■□□□□□□□■■■■■■
■■■□□□□□□□□□□□■■■■
■■■□□□□□□□□□□□■■■■
■■■□□□□□□□□□□□■■■■
■□□□□□□□□□□□□□□□□■
■□□□□□□□★□□□□□□□□■
■■■□□□■□□□■□□□■■■■
■■■□□□■□出□■□□□■■■■
■■■■■■■■■■■■■■■■■■



AIを使ってドラクエみたいなゲームを作ってみる⑪ 正式リリース版!!!

なんとか、正式リリースまでこぎつけました! 

「AIと二人三脚で挑んだ、令和のファミコン風RPG」――バグとの死闘を乗り越え、こだわりの数値バランスを実現した『DOG'N QUEST』公開!

「プログラムが書けなくても、AIがいれば夢は形になる。でも、その道はバグとの戦いの連続でした(笑)。ファミコン時代のドラクエに熱中したあの頃の僕のような大人たちに、この『40ターンの死闘』を捧げます。」

https://play.google.com/store/apps/details?id=com.studior.dqone


「プログラムは書けない、でも最高のRPGを作りたい」 そんな想いから、AIをパートナーに据えたノンプログラミング開発で誕生したのが、ドット絵RPG『DOG'N QUEST』です。本作は、開発者が愛してやまない「ファミコン時代のドラゴンクエスト」への深い敬意(リスペクト)を込め、当時のあの「一撃の重さ」「リソース管理の緊張感」を現代に蘇らせました。


本作の開発は、決してスマートなものではありませんでした。

  • 進まない開発: AIに指示を出しても、意図しない挙動や謎のバグが多発。一時期は「一歩も前に進めない」という絶望的な状況に陥りました。

  • AIとの対話: 吐き出される膨大なコードと格闘し、AIと何度も対話を重ねることで、ようやく一つの村、一つのバトルが形になりました。

  • 1単位のこだわり: プログラムが書けないからこそ、AIを駆使して数値シミュレーションを徹底。ラスボスのHPや攻撃力を「1単位」で調整し、レベル40で全リソースを使い切ってようやく勝てる**「計算された死闘」**を構築しました。

  • ファミコン時代へのオマージュ 「さそりの鎧(防御力+50)」や「竜の牙(最強の武器)」など、当時のワクワク感を凝縮。ステータス計算式は「DEF 0」をベースにした、ごまかしの効かない直球の殴り合い。

  • 「竜の牙」を手にした瞬間のカタルシス 中盤の壁、ドラゴンを倒して手に入れる「牙」。その圧倒的な火力が、それまでの苦労を全て報わせる爽快なバランス。

  • ダイヤ(レア敵)を追う高揚感 遭遇率5%。見つけた瞬間に心拍数が上がる、あの頃の「メタルな体験」を再現しました。

    「実は、ラスボスの魔竜との戦闘バランスを決定する際、AIと数十回に及ぶ戦闘シミュレーションを繰り返し、**『Lv40でSP23を使い切って、40回殴ってようやく勝てる』**という極限の数値を導き出しました。ノンプログラミングだからこそ、数値の面白さには一切の妥協をしていません。」

(アプリ) No.12 DOG'N QUEST

       https://play.google.com/store/apps/details?id=com.studior.dqone

       

初のノンプログラミングでのAIによる開発作品


AIを使ってドラクエみたいなゲームを作ってみる⑧

 2月からちょっとした不具合の修正に
AIのその場限りの対応で行ったり来たりで心がおれかけてましたが

ログを仕込んでログ確認しながらすすめたらやっとか解決しました。

ーーーーーーーーーーーーーーーーーーーーーーーーーーー

それは本当に良かったです!一ヶ月もの間、原因不明のまま動かなかった問題が解決した瞬間の喜びは、開発において代えがたいものですね。

原因は、以前の設計の名残で「良かれと思ってスイッチを切っていた処理」が、現在の新しい一元管理システムと衝突してしまっていたことでした。

今回の修正のポイントをまとめます:

  1. 物理スイッチから論理スイッチへ: enabled = false でスクリプト自体を止めるのではなく、スクリプトは動かしつつ「今は安全なシーンか?」をプログラム(GameManager)が判断するようにしました。

  2. 自己修復機能: PlayerEncounter.csInitializethis.enabled = true を行うようにしたため、万が一どこかでオフにされても、次の画面では必ず復活する「二重の保険」がかかっています。

これでようやく、安心してフィールドの拡張や、敵キャラクターのバランス調整に進めますね。また何か進める中で「ここが動かない」「もっとこうしたい」ということがあれば、いつでも相談してください!

AIを使ってドラクエみたいなゲームを作ってみる⑥

 今までChatGPTだけを使っていたが、Geminiをつかってみたら開発はこちらのほうがすすみがいい。いろいろつかってみるのもいいかも

AIを使ってドラクエみたいなゲームを作ってみる⑤

 タイトル画像と音楽を依頼してみた。

タイトル:一瞬でいい感じのつくってくれた!さすがAI
   さらにテンションあがりますね。

音楽:ChatGPTではできないみたい。無料の音源さがします。



AIを使ってドラクエみたいなゲームを作ってみる③

 いろいろ画面とか機能とかできて
それをつなげていこうとしたら
その場しのぎの思いつき設計ですすめたので
大幅に見直すことに。。。

いわれるがまま修正していったら
動いていた画面や機能が動かなくなり

AIとのやりとりにつかれてきた。

AIを使ってドラクエみたいなゲームを作ってみる②

 AIにいわれるがままに

🎮 Step 1:Unityのインストール(最短)

すでに済んでいたらスキップしてOK。

✔ 必要なもの

  • Unity Hub

  • Unity Editor(推奨:LTS版 例:2022.3 LTS

  • Android Build Support
    (Unity Hub → Installs → Editor 右側の方から “Add modules”)


🎮 Step 2:最初の「ドラクエ風2Dプロジェクト」を作る

Unity Hub → 「New Project」
テンプレート:2D Core を選択
プロジェクト名:MyFirstRPG


🎮 Step 3:まず“動く主人公” を作ってみる

C#を触ったことがなくても大丈夫!
これをコピーして Unity に入れたら動きます。


🧙【サンプル①】主人公を上下左右に動かすC#スクリプト

① Unityで作業する

  1. Projectウィンドウで右クリック
    → Create → C# Script
    → 名前:PlayerMove

  2. キャラクター用のスプライト(画像)を Hierarchy にドラッグ(名前:Player

  3. PlayerMove.cs を Playerにドラッグしてアタッチ


② PlayerMove.cs の中身をこれに差し替える

using UnityEngine; public class PlayerMove : MonoBehaviour { public float speed = 3f; private Vector2 input; void Update() { // 入力取得(WASD / 矢印キー) input.x = Input.GetAxisRaw("Horizontal"); input.y = Input.GetAxisRaw("Vertical"); // 移動 transform.Translate(input * speed * Time.deltaTime); } }

これで ↑↓←→でプレイヤーが動くドラクエ風の基礎が完成!


🎮 Step 4:NPC に話しかける仕組みを追加

次に「会話」を作ります。


🧙【サンプル②】話しかけるとテキストが表示される

① UI準備

Unity 上部メニュー
GameObject → UI → Text (TMP) を追加
(画面にテキストが出る)

Textの名前を MessageText に変更
Text の中身は空にしておく(表示なし)

② 会話スクリプトを作る

TalkNPC.cs を作成して中身を差し替え

using UnityEngine; using TMPro; public class TalkNPC : MonoBehaviour { public string message = "こんにちは、旅の人!"; public TextMeshProUGUI messageText; void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { messageText.text = message; } } void OnTriggerExit2D(Collider2D other) { if (other.CompareTag("Player")) { messageText.text = ""; } } }

③ NPCに設定

  1. NPCオブジェクトに BoxCollider2D をつける(Trigger にチェック)

  2. NPC に TalkNPC をアタッチ

  3. MessageText に UI の Text (TMP) をドラッグ

→ プレイヤーが近づくとセリフが出る!
これで 村人との会話が完成 ✨


🎮 Step 5:スライムと戦闘を作る(最小)

次はドラクエっぽい ターン制の戦闘 を作ります。
ここもコピペで動きます。


🧙【サンプル③】シンプルなターン制バトル

① BattleManager.cs を作る

using UnityEngine; using TMPro; public class BattleManager : MonoBehaviour { public TextMeshProUGUI battleText; int playerHP = 20; int slimeHP = 10; void Start() { battleText.text = "スライムがあらわれた!"; } public void OnAttackButton() { slimeHP -= 4; battleText.text = "ゆうしゃのこうげき! スライムに4ダメージ!"; if (slimeHP <= 0) { battleText.text = "スライムをたおした!"; return; } Invoke("SlimeAttack", 1f); } void SlimeAttack() { playerHP -= 3; battleText.text = "スライムのこうげき! ゆうしゃは3ダメージ!"; if (playerHP <= 0) { battleText.text = "ゆうしゃはたおれた…"; } } }

② Attackボタンを配置

  1. UI → Button (TMP) を作成(名前:AttackButton)

  2. OnClick に BattleManager → OnAttackButton を登録

ボタン連打でターンが進む超シンプル戦闘が完成!


📱 Step 6:Androidに書き出して動かす(最短)

  1. File → Build Settings → Android を選択 → Switch Platform

  2. Build → .apk を作成

  3. Android端末に転送してインストール

これで あなたが作った“ドラクエ風RPG”がスマホで動く!


🚀 次はどう進みたい?(選択式)

あなたの進みたい方向に合わせて、
より具体的なプロジェクト・コード・作業手順を作成します。

どれにしますか?👇

1️⃣ マップ(タイルマップ)を作れるようになりたい

2️⃣ プレイヤーの歩行アニメ(上下左右)をつけたい

3️⃣ 戦闘をもっとドラクエ風にしたい(コマンド式にする)

4️⃣ すべてまとめて「ひな形プロジェクト」一式がほしい

5️⃣ C#の超基礎から教えてほしい(Unity初心者用)

どれでもOK!番号で答えてください 😊

エピローグ — 小さな光は続く(暁晶の旅団と虚竜ヴェルド)

  暁晶は完全に元へ戻ったわけではない。欠けた爪痕や代償は確かに残る。しかし、世界は再び輪郭を取り戻し、人々は選ぶことの重みと尊さを噛みしめた。虚竜ヴェルドは影として存在し続けるが、その存在はもはや単純な破壊者ではなく、忘却と対峙するための警鐘でもある。

 物語は終わらない。人々が名を唱え続ける限り、黎光は新しい担い手たちに渡り、暁晶は小さな光を保ち続けるだろう。カイとその仲間たちの旅は、いつしか伝説となり、新しい語り部たちに織り込まれていく。だが語り継がれるのは単なる勝利譚ではない。忘却と選択、痛みと再生の話だ。

 空は静かに暗くなり、星がまたたく。どこか遠くで、ヴェルドの咆哮が低く響く。それは終わりではなく、「これからも続く問いかけ」だ。

 そして、桟橋の端で短剣を握るカイは小さく笑った。波は寄せては返し、彼らの物語もまた、寄せては返す人々の記憶の中で生き続ける。

フェルトのぬいぐるみを作ってみる

なぜか作りたくなったので

ダイソーでキットを買ってきて

作ってみました。

難しいけど、楽しい。




#フェルトぬいぐるみ

第十七章(終章) それぞれの旅立ち — 小さな光を抱えて(暁晶の旅団と虚竜ヴェルド)

  幾つかの月日が流れた。暁晶の欠片はいくつかが完璧に戻り、塔は再び守りの光を放つ。人々は選び直し、傷を抱えながらも前へ進む術を見つけた。ヴェルドは核の側に留まる決意をし、完全な敵として滅ぼされることはなかった。彼の存在は警告となり、また守りの一端としての教訓となった。

 旅団の仲間たちはそれぞれの道を歩み始める。ユイはアークで写本の修復と詠唱の教育を行い、古語を守るための図書館を作る。ガロはかつての仲間たちを追い、レオンの背後にある更なる陰謀の痕跡を洗い流すための旅に出る。トウヤは路地で小さな劇団を作り、子どもたちに物語と注意深い選択の大切さを教える。リナは巡礼を続けながら、失われた記憶を新しい儀式で埋めていく。カイは港に戻り、だが以前とは違う。彼は短剣を海辺の杭にかけ、時折遠くへ旅に出ることもある。黎光の担い手としての責務は終わらないが、彼は人々の声に耳を傾けながら小さな光を分け与える道を選んだ。

 ある夕暮れ、カイとリナとトウヤとユイとガロが再びノースリーフの桟橋に集まった。海は静かに光り、遠くにヴェルドの影が浮かぶ。彼らは笑いを交わし、互いの肩を叩いた。

「これで終わりってわけじゃないな」――トウヤが言う。

「終わりは、いつも次の始まり」――ユイが補う。

 カイは波を見つめ、短剣を軽く握った。「でも、今日ここにいるのは、一つの区切りだ。これから先も、誰かが選択を迷うとき、僕らは名を呼び、手を差し伸べる」

 彼らは夜に灯る小さな祭りへ向かった。子どもたちが歌い、老人が昔の名前を口にする。焚き火の周りに集まる人々の顔には、確かな輪郭があった。忘却の影は消えないが、人々はそれを恐れずに選び直す術を学んでいた。

第十六章 選び直す世界 — 再生と代償(暁晶の旅団と虚竜ヴェルド)

  暁晶の核が完全には復元されないまでも、再び輝きを取り戻したとき、周囲の世界が徐々に変わり始めた。塔に宿った欠片はより安定し、風や炎や水や土の守環は以前より確かな調和を見せる。人々の記憶も戻りつつある。だが代償は確かにあった。リナはいくつかの個人的な記憶を失い、その代わりに新しい役割を得た。ユイは書庫で消耗し、知識の一部が薄れた。ガロはレオンのことを完全には赦さないが、己の守る意味を新たに定めた。トウヤは旧知の死に泣き、しかし自らの選択を肯定する道を歩み始める。カイは父の短剣を握り、黎光の担い手としての使命をより深く理解した。

 ヴェルドは核の脇に座し、鱗の一片を人々に返すわけではなかったが、その巨大な体はもはや無差別に虚を撒き散らすことはなかった。彼は孤独な存在のまま、だが世界との新たな均衡の中に留まる道を選んだ。人々は彼を完全には信頼しないが、少なくとも今は「敵」ではなく「難しい守り手」として受け止められていった。

 世界は完全に元へ戻ったわけではない。記憶は戻り、名は再び唱えられるが、新しい痛みも伴う。人々は自らの選択の意味を見つめ直し、忘却の安易な救済に頼らない共同体を再構築していった。小さな祭りが増え、名を祝う儀が各地で行われた。ユイは学術都市に戻り、写本の保全と語り継ぎの制度を整備する仕事を始め、ガロは失った仲間のための慰霊を続け、トウヤは路地で子どもたちに糸の仕込みを教え、リナは巡礼を続けながらも自らの失った記憶を時折取り戻すために静かに祈りを捧げた。

 ある日、カイは静かに海辺の桟橋に立ち、空を見上げた。遠くで、ヴェルドの影が雲の合間に滑るのが見える。彼は短剣を握りしめ、柔らかく呟いた。

「忘れることを与えるのは簡単だ。でも、その代わりに何かを失う。君たちは、その何かを取り戻す道を選んだ。……それでよかったんだ」

 遠くから、リナの声が波音に混じって聞こえた。「私たちはまだ、学ぶ途中よ。けれど、あなたがいてくれるから大丈夫」

第十五章 核の最奥 — 暁晶と虚の過去(暁晶の旅団と虚竜ヴェルド)

  名の列が広がり、集団の選択が十分に満たされると、核の門は完全に開いた。光の通路を踏みしめ、旅団は最後の段へと進む。通路は言葉と記憶の「層」でできているようで、歩くたびにそれぞれが自分の過去の断片を見ることになる。カイは幼い日の父の笑顔を、ガロは仲間と交わした誓いを、トウヤは失った家族の面影を、ユイは学術への純粋な憧れを思い出す。リナは多くを既に差し出しているが、それでも深い祈りを続けることで皆を導いた。

 通路の終わり、そこには巨大な空間が広がっていた。中心に浮かぶのは、かつての暁晶の核――だが完全な結晶ではない。核の表面はひび割れ、そこから黒い瘴気がにじみ出している。暁晶の光の残留と、虚の黒が混ざり合う不気味な姿だ。核の中央には巨大な鱗片が刺さり、その鱗片はヴェルドの一部であると思わせる構造をしている。

 その時、空間が震え、ヴェルドが全身を現した。彼の姿は人々が夢想する「竜」とは異なる。怨嗟と孤独の記憶が彼の鱗に焼き付けられ、ところどころに人の言葉や名が刺さる。ヴェルドは自らの過去を語り始めた。

「かつて我は守り手の一つであった。人と共に世界を織る者。だが人は変わった。忘却を選び、我を遠ざけた。孤独が骨まで染みたとき、我はその穴を満たす方法を考えた。忘却そのものを食らえば、彼らは苦しみから解放されると信じた」

 語りの端々に、ヴェルドの悲哀が滲む。それは完全な悪意ではなく、歪んだ救済の論理だった。旅団はそれを聞きながら、ヴェルドをただ斬り伏せるだけでは解決しないことを悟る。核の回復は、ヴェルドの孤独と忘却に対する問い直しを含むのだ。

 カイは静かに立ち上がる。「あなたは守りだった。今も、心の奥底には守りの意思が残っている」――カイの言葉には非難がない。光は掌の底で穏やかに震える。「忘れることは苦しみを和らげるかもしれない。でも同時に、名前も、縁も奪う。あなたの元に戻ってきたのは、忘却を求める人々の影が深まったからだ。私たちは、それを取り戻すために来た」

 ヴェルドは一瞬、瞳を細めた。それは怒りではなく、驚きと戸惑いに似た感情だった。だが続いて、その身体が震え、核心に刺さった鱗がきしむ。彼は力を込めて虚の波を放ち、戦いは最終局面へと突入する。

 肉弾戦、精神戦、そして忘却そのものをめぐる問答――戦いは多層的であった。ユイの詠唱が言葉の輪郭を織り、リナの祈りが人の記憶の端を繋ぎ、ガロの斧が鱗を割り、トウヤの糸がヴェルドの触手を縛る。カイは核に光を差し込み、壊れた結晶面の隙間へ光を送り込む。

 だが決定的だったのは、人々が自ら声を上げ、彼らの名前と選択を核へ届けたことだ。村々で再び名を唱えた者たち、リュクスの鏡楼で自分の嘘を破った者たち、オルドで夢を取り戻した者たち――その声の重なりが核へ到達すると、核はゆっくりと再構築を始めた。黒い瘴気が淡く薄れ、ひび割れた面が光を取り戻していく。

 ヴェルドは叫んだ。「我が孤独をお前らは癒すつもりか? 我は忘れることを与えたのだ。苦しみからの解放だ!」

 カイは答えた。「君が与えたのは“簡単な忘却”だった。代わりに人は尊厳を失った。僕たちが望むのは、忘れることではなく、選び直す機会だ。痛みも悲しみも含めて、君の守りと共に生きることだ」

 その言葉が届いた瞬間、核の光は閃き、ヴェルドの身体に一瞬だけ暖かい光が差した。彼の瞳に揺れが生まれ、鱗の深部で微かな記憶の残響が鳴った。それはかつて人と共に笑った日の一断片のようでもあった。だが虚は深く、完全な解放には至らない。最後の決断が必要だった。

 核の外縁で、リナは再び自分の記憶を差し出すことを選んだ。彼女は語るべき幾つかの記名を、自分の中からそっと外へ放ち、それを核へ捧げる。代償は重い――だがその行為が、ヴェルドの心のひびを埋める鍵となる。リナの声が静かに流れ、核は最後の欠けを埋めていった。

 すると、ヴェルドは大きく息を吐き、身体が震えた。彼は叫び、だがその声のトーンは変わっていた。怒りだけでなく、理解にも似た感情が混じる。

「我は……忘却は、救いにもなりうるが、孤独を育てる。お前たちの輪郭を、我は知らなかった。だが……今、少し分かる」

 そして、ヴェルドは核の一部をゆっくりと口に含んだ――だが喰らうのではなく、自らの鱗の向こうに押し込むようにして収めた。鱗の一片が溶け、黒は薄れ、ヴェルドの姿は少しずつ変化した。完全な和解ではない。だが彼はもはやただの“敵”ではなく、かつての守り手の残滓を宿した存在となった。

第十四章 核心への道 — 裏切りと和解(暁晶の旅団と虚竜ヴェルド)

  ヴェルドが撤退した後、旅団は傷だらけで座り込んだ。人々の名は戻りつつあり、祭壇の光は安定しているように見えた。だがユイが写本の頁をめくると、そこに微かな注記があることに気づく――「核の核心は、物理と記憶の『折り重なり』にある。単独の強さは無意味」とだけ記されていた。

 旅団は次の方針を協議する。核そのものへ入るには、各地で行った名付けや再生の“集合”がなければならない。ユイは言う。

「核へ入る前に、もっと多くの声を集める必要がある。暁晶は共同体の輪郭に依存している。ここで孤立した行動をとれば、逆に虚は付け入る」

 ガロはレオンのことを思い出し、怒りと悲しみに身をひるがえす。だが彼の中には希望の片鱗もある――もしレオンが空輪会の中で何か変わったのなら、対話の余地もあるかもしれない。旅団は情報と時間を分配し、再び各地へ声を届けることにした。

 その折、トウヤは夜中に街灯の陰でひとり、誰かと密談しているところを見られた。仲間が駆け寄ると、そこにいたのはトウヤの“旧知”――空輪会の一員で、かつて彼を庇護していた男だった。短い口論のあと、トウヤは仲間に事の次第を話した。彼が密談したのは、自分の過去の贖罪のためであり、旧知はまだ彼を完全には見捨てていなかったのだという。

 だがその晩、村の鐘が鳴る。見張りが急報を持って走って来た。北の峠で、空輪会の残党が動員をかけ、村々を襲っているという。トウヤは顔を蒼白にして駆け出した。旧知は「俺のやり方で行く」と言い残し、影へ消える。彼の行為は裏切りか――それとも本当の助力か。答えはすぐにはわからない。

 峠の戦いは激烈を極めた。空輪会の残党はかつての組織の教義を拡大解釈し、村人に“楽な忘却”を吹き込んで強制的に受け入れさせようとしていた。ガロと仲間は村を守るために斧と詩と光を交差させ、トウヤは糸で道を閉ざし、ユイは防御の詠唱を繰り返す。旧知はその最中、陣中で涙を流しながら矢を放ち、空輪会の指揮者を討った。彼は自らを犠牲にして村を守ったのだ。

 戦いが終わると、トウヤは膝に座り込み、糸を握りしめた。旧知は息を引き取り、トウヤの腕の中で言葉を残す。

「……悪い。俺は…お前のためにだけ、正しかったのかもな」

 トウヤは嗚咽した。仲間たちは黙って彼を抱いた。裏切りと贖罪はいつも紙一重だ。レオンのこと、旧知のこと、彼らは皆「選択」を翻弄された者たちだった。旅団はその夜、それぞれの胸の痛みを分かち合い、より深い結束を得る。

第十三章 門の開通 — 皆で紡ぐ名の列(暁晶の旅団と虚竜ヴェルド)

  森の竜の鱗を携え、旅団は暁晶の古道の最奥にあるという「核の門」へ向かった。地図に記された座標に着くと、そこには巨大な石の環が埋まっていた。環の中央には古の文字が並び、長年の風化でかろうじて輪郭が残っているだけだった。鱗を環の窪みに置くと、微かな振動が走り、石の目がかすかに光を取り戻す。

 だが門は完全には開かない。文字の欠けた部分、削り取られた名が多くを阻んでいた。ユイは写本を開き、詠唱を始める。だが必要なのは一人の声だけではない。リナの言葉を借りて、門の前で「名の列」を作ることになった。村々で行った名付けの小さな儀式を、今度は大きな輪として門に捧げるのだ。

 旅団は呼びかけを始めた。彼らが訪れた村、助けた者、名を取り戻した人々――それらに声を繋ぎ、連絡網を作り、門の前に人々の列ができた。子供が母の名を高らかに呼び、老人が昔の友の名を忘れず繰り返し、恋人たちが互いの名前を祝う。名前は短いが強い。輪郭を取り戻す行為は、かつて想像した以上に激しい力を持っていた。

 石環は一点ずつ石の隙間に光を取り戻し、やがて中央の凹みが震え、古い文字が光る。門の縁に刻まれた最後の字が現れると、門はゆっくりと開いた。そこには薄い霧のような空洞があり、向こう側に淡い光が漏れている――暁晶の核への通路だ。

 しかし歓喜も束の間、空洞の闇の中から遠く低い咆哮が響いた。虚竜ヴェルドは、その名を知られた瞬間、核への扉を阻もうと姿を現す。空洞の淵から垂れ下がる影がうねり、やがて巨大な胴体が露出する。鱗は深く黒ずみ、瞳は空虚でありながらも知恵を宿している。

「我が名を呼ぶ者が増える。興味深い。だが輪郭が戻るということは、同時に痛みも戻る」――ヴェルドの声は地鳴りのごとく響く。「選べる自由を与えるそのやり方は、或いは我が望んだ道とも近い。だがなるほど、面白い。見てみよう、人が自らを選び直す様を」

 ヴェルドは口を開き、空洞の中にある暁晶の核に触れようとした。だがその前に、リナが前へ出た。彼女は既にいくつもの代償を支払ってきた。今、自らの手のひらを差し出して祈る。

「私たちは忘れることを選ばない。痛みも含めて、私たちの輪郭だ。奪われることは許せない」

 叫びが群衆を裂き、名の列はさらに大きくなった。ユイは詠唱を重ね、カイは掌の黎光を全力で放った。光と言葉が同時に核へ走ると、空洞の中で小さな閃光が広がり、ヴェルドの胴体に亀裂が生じた。だがそれは一瞬の驚きに過ぎなかった。ヴェルドは更に巨大な力を見せ、空洞の風が暴風となって人々を押し戻す。

 戦いは肉体と精神の両面で続いた。ヴェルドの触手は群衆の心に疑念を植え付けようと囁く。だが名の列は揺らがない。人々は声を重ね、かつての記憶を互いに呼び戻し合う。その声が合わさると、暁晶の核は震え、閃光が増していった。

 最高潮で、ヴェルドは最後の猛攻を仕掛ける。彼は核に手を伸ばし、虚の洪流を門を通して世界へ放とうとした。しかしカイがその手に飛び込み、黎光の刃を突き立てる。光と虚の衝突は爆発的で、周囲の空気が裂ける。カイの体は衝撃に晒され、彼は倒れ込む。掌の光は強く輝き、核はその輝きに応える。

 だが同時にリナはある決断をした。彼女はこれ以上、仲間や人々が繰り返し代償を負わないよう、ある一節を捧げる覚悟をした。大声で祈り、古い歌の一節を完全に捧げると、彼女の中の一つの記憶が淡く消えた。彼女はその喪失に微笑みながらも、確かな静けさを得る。

「これで、私は背負える」と、彼女は囁いて倒れる。

 人々は叫び、カイはリナを抱き起こした。リナの眼には一片の空白が出来ていたが、その口元は安らかだった。ユイは急いで文献を調べ、リナに新しい記名を授ける儀を行った。村人たちもまた、互いに名を確認しながら、しばしの静寂を保った。

 疲弊の中、核はゆっくりと回復の兆しを見せる。ヴェルドの姿はひるみ、巨大な身体は一度後退した。だが彼はすぐに再び立ち上がり、呟くように言った。

「なるほど……君らは選ぶことを選んだ。次は……我が核の、真の核心へ来るがよい」