進捗日記 / テキスト量見積もりとか作業手順とか考える。
セリフ数をざっくり数字にしてみて俯瞰してみる。
やらなくちゃやらなくちゃ、と思っていたスプレッドシートのメモ書きをまとめて表にしていく作業をやり出しました。やっとゲームのボリュームが見積れる。
まずはイベント共有セリフ数から見てみる事にしました。
Daysでジェネレートされる予定の繰り返し用セリフ数
現状で登場キャラが25名+8〜16名
そのうち状況でセリフが変わるシーンを持つ予定のキャラ13名+8〜16名
ざっくりのセリフバリエーション数4×3×4=48
Days用総セリフ数 1008〜1392個
基本は受け応えのセリフなんで行数はそんなに行かないはずです。
これに大きなストーリーに絡む13名×チェックポイント数×48のセリフが足されることになるのだけれど、まあこんなものではないかとは思います。ここがこのゲームの一番の売りになるはずなので。
その他にウィキ風ページでのテキストもいっぱい書くことになるし。こっちはDTをお手本にボリュームが必要だし、いつまでも手を入れているところになりそうです。
ただ、あとでこの数字の恐ろしさを思い知る事になるかもしれませんが。
DTの文章データ量はどんなものか
ざっくりDTの文章量を見てみると、ストーリーモードは当然文章で11章まであって、1章あたり1,000字オーバーくらいは優にある。
更にハイパーテキストメニューの中にヒストリーと呼ばれるテキスト群がある。
ヒストリーは1文章あたり3〜5画面分くらいの文章量で1ページざっくり100文字として平均400文字位。
DTのカード数全192枚。このうちDTセルと呼ばれるカード6枚以外のカードにはフレーバーテキストというにはボリューミーなテキストがヒストリーかそれ以下くらいの分量でそれぞれ付く。
あの読み応えなので流石の文章量です。逆に自分のゲームでもこの位の文章量があれば、読むゲームですと言ってもよさそう。
捕らぬ狸の皮算用だけれどセリフの翻訳対応とか
Ren'Pyはゲームを翻訳するための仕組みが非常に良く出来てます。普通にスクリプト上に書いたセリフについては、翻訳用のファイルを自動生成してくれて、自分は自動翻訳とかで英語版は用意しようと思っています。
ただ、繰り返し出てくるDaysの場面とCommentatorについては文字データをスクリプトっぽくではなく、独立したデータとして持たせようとしています。ただ翻訳用データを作った時にはこれらのデータを今のままでは拾ってくれません。
そこらへんの救済措置もちゃんとあって、翻訳したい文字列を
_(”翻訳したい文章”)
みたいな感じで囲っておくとちゃんと翻訳用ファイルを作ってくれます。
たとえばウィキ用辞書はこんな感じになりました。
##初期データ
define hypertext_dict = {
_("トップページ"):_("女神データベースのトップページにようこそ!\n\n左のメニューからお好きなデータにアクセスすることが出来ます。\nまた文中のハイパーリンクから、その用語のページにアクセすることも可能です。"),
_("用語"):_("用語のトップページです。"),
_("事件"):_("事件のトップページです。"),
_("キャラクター"):_("キャラクターのトップページです。"),
}
例えば英語の翻訳ファイルを作ると、gameディレクトリの下にtlディレクトリ>englishディレクトリの下に翻訳用のファイルが作られて、こんな感じになります。
# TODO: Translation updated at 2023-06-04 17:53
translate english strings:
# game/hypertext_data.rpy:4
old "トップページ"
new ""
# game/hypertext_data.rpy:4
old "女神データベースのトップページにようこそ!\n\n左のメニューからお好きなデータにアクセスすることが出来ます。\nまた文中のハイパーリンクから、その用語のページにアクセすることも可能です。"
new ""
# game/hypertext_data.rpy:4
old "用語"
new ""
# game/hypertext_data.rpy:4
old "用語のトップページです。"
new ""
# game/hypertext_data.rpy:4
old "事件"
new ""
# game/hypertext_data.rpy:4
old "事件のトップページです。"
new ""
# game/hypertext_data.rpy:4
old "キャラクター"
new ""
# game/hypertext_data.rpy:4
old "キャラクターのトップページです。"
new ""
# game/hypertext_data.rpy:12
old "テストその2です。赤恐竜さんのやり方で{a=exec:renpy.show_screen('hypertext', 'トップページ')}トップページ{/a}画面にリンクします。"
new ""
# game/hypertext_data.rpy:12
old "用語の変更後のページです。"
new ""
# game/hypertext_data.rpy:12
old "事件のトップページです"
new ""
# game/hypertext_data.rpy:12
old "キャラクター変更後のページです。"
new ""
あとはnew以降のところに英文テキストを足していく、これだけでメインメニューから選べば英語対応になります。詳しくはここに書いてあります。
キャラクターデータ再びとイベント
キャラクターのパラメータ追加
昨日考えたキャラクターデータの概要ですが、簡単な記憶を持たせておきたいのでそれを持っておく事にします。
内容としては、初めて会った日、最後に会った日、会った回数くらいで考えてますが、Tournamentで対戦するキャラは会った回数の代わりに何回勝ったか、何回負けたか、今何連勝(何連敗)中か、くらいのデータは持たせてあげたい。
それで大きくセリフが変わらなくても「おい、お前にはX連勝(負)中だな!」とか言ってくれたら、それだけでキャラが好きになっちゃう(自分は)。
この後は、GURPSのルールで2〜3人キャラを作ってみて、動かしてみて、となるかな。
Characterを成長システムとか含めて完成させてから次のEventとかWorldに着手しても良いのだけれど、上で書いたように「動かしてみる」にはEventをいくつか作っておかないといけないのと、数値の回復とかそこら辺の挙動を見るには日付が変わる仕組みとしてのWorldを作っておいた方が良さそうなので、並行して進めていく事になりそう。
汎用Eventのバリエーションを考える
まずは「抽象的な汎用Eventを作る」で良いと思うのですが、Eventは要はダイス判定とキャラクターポイントやお金の増減だけでまとめる方針なので、ある程度はプログラムが見えてます。
種類としては
1回のダイス判定で決まる
数回の判定が連続し何回か成功すれば良い(全部成功も含む)
回数は指定されていなくて続けるか降りるか選べる
2、3のパターンで途中でダイス判定があり別のEventにつながるもの
といったバリエーションがあれば取り敢えずはゲーム性は担保できるのではないかと。
この記事が気に入ったらサポートをしてみませんか?