インタラクティブな書き方の課題:『Esoteric Ebb』のような非リニアRPGの設計

エソテリック・エブ はSteamで人気急上昇中 - しかし、この分岐するナラティブのCRPGはどのようにして完成したのでしょうか?このゲストブログでは、クリストファー・ボデゴーが複雑なナラティブデザインの決定と、真にノンリニアでダイアログベースの物語の制作を管理する方法を学ぶ8年間の道のりを解説します。
2023年に最初の公開プレイテストが行われた Esoteric Ebb 以来、私は何度も同じ質問をされてきました:“すべてをどのように追跡していますか?”それは良い質問です - 難しい質問です。長年にわたって、私はこれをいくつかの異なる方法で回答してきましたが、本当に満足のいく回答は一度もありませんでした。 …それでは、やってみましょう。
(しかしまず、少し背景から始めましょう。 エソテリック・エブ)
エソテリック・エブ は、大規模でナラティブ重視のリニアでないCRPGです。従来の戦闘はなく、ほぼ完全にダイアログベースで、プレイ時間は45分から50時間に及び、選択肢は非常に多いです。 実際の選択肢で、クレジット表示までずっと、あなたの体験を根本的に変えるような種類です。はい、それは その ゲームの1つです。そして、完成するまでには時間がかかりました:開始から終了まで約8年かかりました。その半分は、部屋で一人で何もしないで座って、やり方を学んでいたのです。 インタラクティブなナラティブ.
インタラクティブな執筆の3つの制約
私はインタラクティブな執筆を3つのやや恣意的な制約/目標の中で定義しています。それは次の通りです:
- テキスト選択率が高い
- コンテンツの50%以上がダイナミックである
- オープンエンドのデザイン
好きに取捨選択していいが、この3つを満たせば、強烈な(潜在的な)ポジティブなプレイヤー代理店が手に入るだろう。でも、これを見ればすぐに数千の問題に直面するかもしれない。
それらを確認しましょう。
The pale man holds incredible power, if he is able to bypass the esoteric limitation. #int #DC10
"However, I suggest you speak with Lady Sageleaf about this, if you require answers. I am simply a middle-man in this." #Visken
-(riverHub)
+.Snell==1-"Snell." \(Look at him.\)
The goblin gives you a conflicted expression. #Snell
"I... didn't know, Cleric. I really didn't." #Snell
"He did not." #Visken
"Lady Sageleaf instructed me to not inform anyone. Even her own agents." #Visken
"No need to be paranoid." #Visken
++"How can I not be paranoid? Everyone's lying to me!"
"Correction: I was lying to you. Lady Sageleaf, potentially as well." #Visken
++"True. It's just some esoteric bullshit."
"...Indeed." #Visken
--
Snell scratches his chin. #Snell
"I'm not entirely sure how to feel about this." #Snell
"The Old Lady isn't one to spend money on resurrecting a city cleric." #Snell
"But I'm guessing she didn't want to wait for another one to appear?" #Snell
"Hm. We should go speak with her. But... remember that she paid for your resurrection, Cleric." #Snell
++"That is true. She seemed nice enough."
"...I wouldn't use 'nice'. But she's at least very, very competent." #Snell
++"I'll refrain from commenting until I hear her side of it."
"Smart." #Snell
++"I'm not sure I believe you."
"That's okay." #Snell
"But really, I'm not sure what I would gain by lying about this." #Snell
--
The goblin is telling the truth. You can read it in his eyes. #wis #DC14
It was a LIE. But it was a LIE for <b>expediency</b>... #con #DC9
+"What spell did you use to revive me?"
He is quiet for several seconds. #Visken
Considering if he should share this knowledge. #wis #DC13
A modification, then. #int #DC12
A <i>personal</i> resurrection spell. #reply #int
"<i>Raise Dead</i>." #Visken
"With changes. It is not the original spell, as I'm sure you understand." #Visken
<i>Visken's Raise Dead</i>. #int #DC12
"My spell requires a higher cost, while lowering the spell's complexity in return." #Visken
++"A higher cost? Like... a blood-cost?"
"No, Cleric." #Visken
++"What do I owe you?"
"Nothing. Lady Sageleaf offered to pay it in full." #Visken
++"A higher crown cost?"
"Yes, Cleric." #Visken
--
"The new cost is doubled. One thousand crowns." #Visken
"Which is not too bad." #Visken
++"My life is worth much more than that, yes."
++"Eh. Could be better."
++"Waste of money."
--
The pale man stares at you. #Visken
+"Is this why I lost my ability to cast higher level spells?"
"Potentially." #Visken
"Whatever issues your body and soul appeared to have had with my spell, it was not permanent." #Visken
++"Yeah, I've rebounded quickly."
"Yes indeed." #Visken
++"I'm just that awesome of a wizard, I guess." #.WIZARD+=1
"Of course." #Visken
++"My soul <i>and</i> body?"
"It's more common than you might think." #Visken
+"I felt really weird when I woke up. Like... different. Is that your dark magic also?"
"That can happen, yes." #Visken
"As it can with any resurrection magic when a soul is given sufficient time spent away from its body." #Visken
++"So my soul is ruined?"
"No." #Visken
++"I like this new me."
"Wonderful to hear." #Visken
++"I don't think the difference was that big, honestly."
"Good." #Visken
++"Can I go back to my old self?"
"No." #Visken
--
His cold voice shows no interest in your personal business. #wis #DC10
Eh. Whatever changed, it was probably for the best. #dex #DC16
Still got your wits about you. That's what matters. #reply #dex
At least you are still highly intelligent. #int #FC8
That is all that matters. #reply #int
Soul magic is complicated. Not even the greatest Arcanists were able to unlock all of the secrets of the <i>inner light</i>. #int #DC15
Perhaps one day, you will. #reply #int
+"Right. I'll... go speak with Lady Sageleaf."
"Good idea." #Visken
The pale man was simply an instrument. #int #DC11
But it is good to understand this game you've been entangled within. #reply #int
->questions
-
->riverHub選択肢とテキストの比率の最適化によるプレイヤーエンゲージメントの向上
選択肢とテキストの比率が高い理由
選択肢とテキストの比率が高いのは素晴らしいことです。まず、プレイヤーが目覚めて没頭し続けるのに最適なツールだからです。プレイヤーにテキストのブロックをたくさん読ませると、平均的なプレイヤーの目はすぐにぼんやりしてしまいます。しかし、プレイヤーに刺激を与え続ける - 彼らに興味深い質問に答えさせたり、難しい決断を迫ったり、失礼な非難に反応することを強制したりする - と、まるで彼らの血管にエナジードリンクを注入したような効果があります。彼らは目を覚まし、実際にテキストと関わるようになります。少なくとも、統計的にはそうなる可能性が高くなります。
問題は簡単です。あなたは、{b}必須{/b}です クレイジー ダイアログにそのレベルの分岐を追加したい場合。大変な作業量が必要で、より具体的には、非常に特殊なツールセットが必要だと思います。(もちろんスキルも必要ですが、分岐のプロセスが持久力テストにならないためには、ツールは柔軟で速くなければなりません)。

適切なツールの選択
私が使用するツールは、素晴らしい、信じられないほど素晴らしい インク スクリプト インクルスタジオが制作。Unityで完璧に動作するこのオープンソースツールを作ったことで、彼らは文字通り私のキャリアを作りました。私は彼らに多くの恩義があります。そしてインクは、他の素晴らしい機能とは別に、高速で機敏なブランチングに非常に適したツールです。
インクで対話を書いているとき、リニアなコンテンツと同じスピードで書きます。大まかなデザインのアウトラインさえ用意されていれば、あとは思いっきり自由に作れます。プレイヤーの表情の追加、ビジュアルの管理、サイコロチェックの処理など、すべて基本的な操作(ほとんどがカスタマイズ可能)で処理されるため、数秒で完了します。Ebb)タグとカスタムコード、そして通常の(そしてよく設計された)インク機能。
"Beyond that, I also focus a lot on my own unverified theories..." #Snurre
He slaps his knees and grins. #Snurre
"<b>The Folk Spirit</b>. Have you heard of it?" #Snurre
It's something he made up. Doesn't mean it's not correct though. #int #DC18
Sounds like a collective folk view on morality. #wis #DC13
+"No. I have not."
--(spiritNo)
"Understandable. It's not yet published." #Snurre
+DC13 wis-"Is that some kind of unified moral or ethical code of a people or culture?"
"No, it's-" #Snurre
He leans back and squints. #Snurre
"That's not actually that far off. You've got a head on you, Cleric." #Snurre
+"Yes."
"Oh!" #Snurre
"Then tell me, what is it?" #Snurre
++"I lied. I have no idea what you're talking about."
->spiritNo
++ROLL18 int-Figure it out.
+++S
Ah... #int
Just look at this halfling. #int
He's clearly walking in the footsteps of the study of unconscious mind melding. #int
Your best guess would then be... #int
++++"The Folk Spirit... is that based on the idea of universal folk myths?"
His bushy eyebrows reach for the ceiling. #Snurre
"Why, yes! Very good guess, Cleric." #Snurre
+++F
You stare at the halfling for about thirty seconds. #int
"You're a quiet one, Cleric." #Snurre
An idea pops into your empty, empty skull. #int
++++"The Folk Spirit is a communal ghost that haunts us every autumn."
++++"The Folk Spirit is a great Fordnippian wine."
++++"The Folk Spirit? That's a music genre."
----
"...Not a terrible guess, but no." #Snurre
++++"Yeah, I have no idea."
->spiritNo
-
"The Folk Spirit is the working title for my new thesis." #Snurre
"Most of it is, if you excuse my anuran, <i>fucking bullshit</i>." #Snurre #XPGain #Minor
"But in short, it is about how each folk share a number of core communal archetypes, or myths. I have traveled around the Coast to collect as many tales, writing down thousands of stories previously only passed down orally." #Snurre
"All to see how well my theory holds up, in the minds of so, so many folk." #Snurre
He clears his throat and leans back into his chair. #Snurre
"Apologies. I am ranting here, let us put a stop to it. What do <i>you</i> want, Cleric?" #Snurre
->hub可変性の計画:ダイナミック コンテンツとオープンエンド デザイン
では、制約リストの 2 番目の項目(「コンテンツの 50% 以上がダイナミックである」)はどうでしょうか?ダイナミック コンテンツとオープンエンド(またはリニアでない)デザインは、どちらもプレイヤーの入力に基づいて可変性を生み出すという同じ目標から生まれています。
とにかく、やりたいことを自由にやらせてあげましょう!思いっきり楽しもう!どこへでも行けるオープンワールドだ!まあ、そのやり方もあるね。でも、ここで重要なのは、インタラクティブなライティングは常に著者の意図に基づいたデザインに焦点を当てるということだ。つまり、すべてがライターによってコントロールされる。
体系的な設計は可能であり、大きな重複も存在しますが、 実践的なアート インタラクティブなライティングのナラティブは、特にあなたが 放っておかないで エマージェント・ナラティブは、その役割を果たす。
ここで私が言いたいのは、以下のことです。変数が必要です。そして、それらを追跡し続けなければなりません。プレイヤーが行うすべての選択について、キャラクター作成時に選択された統計値であれ、ゴブリン族の族長に対してどれほど意地悪だったかであれ、代理店の現象を引き起こすためには、すべてに何らかのフィードバックが必要です。ゲームの終了間際にダイナミックな言葉が飛び交うか、あるいは完全に分岐するプロットラインであれ、フィードバックの瞬間は、選択そのものと同じくらい、あるいはそれ以上に重要です。

変数の管理
変数を管理する方法はシンプルで柔軟です。ストーリー変数(SV)システムと呼んでいます。タグシステムを使用すると、タグが句読点で始まる場合は、変数が使用されていることを示します。その変数が以前に遭遇したことがない場合、SVは1つの巨大なリストに作成されます。それ以外の場合は、既に存在するSVにアクセスし、コマンドに従って設定またはチェックします。
++DC20 wis-\(Look for the source of the breeze.\)
Your eyes glance upwards. #wis
The wall. The wall is not a wall. #wis #.TE_SecretDoorRevealed=1 #UpdateEntities
Look at the wall. #wis
+++E-Oh?
->END文字列と整数 - 通常はブーリアンとして使用されますが、必要に応じて拡大または縮小されます。私がEbb用に実装したコマンドは、「==」、「=」、「>=」、「<=」、「+=」、「-=」でした。
その場合の問題は組織の問題です。進行するにつれて私はこの点で上達しましたが、各SVは場所やクエストに基づいたプレフィックスを使用します。この場合の「TE」はティーショップエリアを指します。「Q」プレフィックスのSVはクエストを指し、「QP」はクエストポイントを指します。クエストツリーのログエントリー、クエストジャーナルのようなものです。
Yes. #wis
A symbol. #wis #XPGain #Minor
A symbol of a sun. Definitely. #OBJ
If this is what Akzel wanted you to find, you've found it. #wis #.QP3_Mine=1 #.Q_Mine=2
+Huh. So what do I do now?
-
Get back to your dwarf buddy, of course! #dexナラティブ設計の利点
このシステムは未完成ですが、生産性が大幅に向上します。書き続けられるのです。ダイナミックなダイアログ選択肢に新しい変数が必要ですか?必要な場所に設定するファイルにコピーして貼り付けます。プロジェクト全体でCTRL+Fを使用して変数の使用状況を簡単に確認したり、基本的なテキスト管理で大幅な変更を管理できます。管理するデータベースはありません。リスト自体は単に年代順に並んでいます。変数名を忘れてしまった?関連するエリアやクエストのプレフィックスを検索し、リストを確認してください。
最初はうまくいくとは思っていませんでした。平均的なプレイでは、ゲーム終了までにそのリストに3,000以上のストーリー変数が含まれることがあります。でも、僕がやったほとんどのことと同じように、 エソテリック・エブ – Unityはただそれを使って作業しただけ。そして、インクのUnityインテグレーションは、ほぼ10年間使用してきて、一度たりとも私を失望させたことがありません。インクファイルの再コンパイルは数秒で完了します。機能のカスタマイズ エソテリック・エブの好みにいつも非常に効率的だった。そして、どんなに奇妙に聞こえても、私は何年も経った今でもまだ驚いています。 ただ流れ出るだけ.できれば、このパイプラインの開発を何年も続けたいと思っています。
それ以外にも、私はすべての文章作成にNotepad++を使用しています。 エソテリック・エブ.もちろん、好みのテキストエディタであれば何でも使うことができますが、軽量でスピーディーに作業できるようになると、作業がずっとスムーズになります。一瞬にして100万語を検索できるからこそ、こんな大規模なゲームを開発できたのです(バグ修正も!)。
The croco-beast rushes forward and grabs you by the neck. #Kraaid #HPLoss #1d4
++\(Struggle to breathe.\) "I'm actually..."
He tightens the grip as you mutter out a faint response. #Kraaid
+++"...a rogue." #.ROGUE+=1
+++"...a wizard." #.WIZARD+=1
+++"...no, no okay, I'm a cleric. I'm <b>The Cleric</b>, even." #.CLERIC+=1
+++.BARD==1-"...I think I'm a Bard? You know what that is?" #.BARD_Choice+=1
+++.DRUID==1-"...a Druid. I guess?" #.DRUID_Choice+=1
+++DC17 con-"...<i>I'm Agrarian</i>...! No wait, shit. That's politics. I mean, uh..." #.AGRARIAN+=1
+++"...I'm whatever you want me to be. <i>Please don't kill me</i>."
"Whatever <wiggle>Kraaid</wiggle> wants?" #Kraaid
++++"Yes...! I'll even be apolitical!" #.APOLITICAL+=1
++++"Yes! I'm... I'm a rabbit!"
++"No! I am! I'm Cleric! That's me!"最終的な考察:バグ修正とブランチの活用方法を学ぶ
しかし、これもこのシステムの最大の欠点です:バグ修正。壊れた論理や構文の技術的な解決策にもっと時間をかけるべきでしたが、実際にはプレイテストを通じて無理やりやり過ごしました。
同 エソテリック・エブ 1.1 パッチを受け取り、スペルミスやコード関連のものも含め、約 704 の「テキストエラー」を 4 日足らずで修正することができました(とてもリラックスした日々でした)。これもまた、システムが非常に機敏だからです。それでも、それらのバグはローンチ時に存在していました エソテリック・エブ ここでの設定もその理由の1つです。テキストの量は膨大で、分岐の数もばかげている。でも、インクがなかったら、最終的なワード数でさえも4分の1も書けなかったと思う。

あとがき:ナラティブデザイナーに推奨されるツール
インクは、インタラクティブなライティングの実用的なアートを高速化します。 私.ビジュアルスクリプティングにはいつも苦労していましたが、多くのライターが正反対の問題を抱えていることを知っています。そのため、私は常に、あなたとあなたのチームに最適なソリューションを見つけるために、他のソリューションも検討することをお勧めします。その一例として、 articy:draft, Arcweave、そして Yarn Spinner.
エソテリック・エブ は現在Steamで入手可能。Unityで制作されたゲームをもっと探す SteamキュレーターページUnity開発者によるその他のナラティブもご覧ください Unityブログ そして リソースハブ.
