見出し画像

【Stardew Valley】MODを翻訳するための手引き 会話文編

はじめに

「StardewValleyで気になるMODがあるけど、これってどうやって翻訳するの?そもそもどうやって読めばいいの?」という疑問にお答えするための個人的解説記事です。これを書いている人はスタバレが初MODゲーだったこともあり、理解が拙い部分もあると思うので何卒ご容赦ください。というか教えてください。


よく出てくるReplacer commands(置換コマンド)を覚えよう

まず実際にファイルを見てみると、英数字に交じって%や@の記号が文章に交じっていることに気がつくと思います。これはReplacer commands(以下、置換コマンド)というものでプレイヤーの名前や牧場名などを表示させるコマンドです。人によって名前が変わる部分はこうやって処理されているわけです。ではよく出てくるものを3つ紹介します。

@   :プレイヤーの名前
%pet :飼っているペットの名前
%farm:牧場名

まずはこれだけ覚えておけば大体は大丈夫だと思います。ちなみに%farmFarmと書かれている場合、(任意の牧場名)牧場になるので後ろのFarmは消さないでください。ほかにも%kid1は配偶者との一人目の子ども、%kid2は二人目の子ども…など、多くの置換コマンドがありますので、詳しく知りたい場合は本家wikiのmoddingページを読んでみてください。以下にリンクを貼っておきますね。


文章を読み解いてみよう

スタバレの会話は以下のように書かれています。

"Mon2":"これはテストです。"


まず、"Mon2"で曜日とこの台詞を見るために必要な好感度を指定しています。この場合は月曜日(Monday)、好感度2以上で見れるよっていう指示になってます。ほかの曜日も最初の三文字をとってTue、Wed、Thu、Fri、Sat、Sun~という感じで書かれています。
そして実際に表示される台詞は"これはテストです。"の中にある「これはテストです。」だけです。なので、翻訳するときはこの二回目の "" の中にあるものだけを抜き出して進めましょう。


"summer_Mon2":"これはテストです。#$e#ここもテストですよ。"

新しい記号が増えました。まず最初の"summer_Mon2"夏の月曜日、好感度が2以上という指示になっています。季節が書いていない場合は一年中見れる汎用台詞で、spring、summer、fall、winter~から始まる場合は季節に沿った台詞という使い分けができるようになってます。冬に「今日は暑いわね」なんて台詞が出ると変ですもんね。
次に#$e#。これはここで一回会話ウィンドウを閉じる、という指示です。まず話しかけると「これはテストです」と表示されてウィンドウが閉じる、ここでもう一度話しかけると「ここもテストですよ」と再びウィンドウが表示されるという仕組みです。


"summer_Mon2":"これはテストです。#$b#ここもテストですよ。"

先ほどと全く同じ文章ですね。ただ#$e#ではなく、#$b#になっています。
この場合は会話ウィンドウは一度ここで閉じるけど、続けて新しい会話ウィンドウを出すよ、という指示です。先ほどの内容とは異なり、キャラクターに一度話しかけたら終わりまで続くみたいな感じですね。ちょっと言語化しづらいので実際にゲーム内で確認するのが早いかも。


"summer_Mon2":"%牧場主はこちらに気づいてないようだ"

またまた新しい記号です。ゲーム内ではふつう会話ウィンドウにキャラクターの表情差分が載っていると思いますが、%から始まる場合は台詞部分のみ表示になります。
分かる人には分かるたとえで言うと「ハーレイは撮影に夢中だ」みたいな表示になるってことです。
(※ゲーム内で実際にある誤植です、念のため!)


"fall_1":"これはテストです。$h"

続けていきましょう。まず最初の好感度・曜日とは違う指示の内容から始めます。これは秋の一日目に見れるよという感じです。これはお祭りの前日や冬の最終日、春の初日などイベントの絡んだ台詞に多い書き方です。
次に文末の$hですが、これは表情差分の指定になります。今回だと笑顔の指示(happyのh)になります。$aは怒り(angry)$s(sad)は悲しいなどもあります。また、$(任意の数字)の場合ですが、これはキャラクターの表情差分が左から右、上から下の順に0から始まる番号が振られていることに由来しています。例えばアビゲイルの$1だと笑顔の指示になります。

余談1:表情差分の簡単な探し方

ポートレートの表情順は大体決まっていますが、住人によってその差分数は異なります。なので表情を知りたいときはバニラのファイルを参照するか、最新のアップデートに対応したお使いのポートレートmodを見てみるのが早いでしょう。
カスタムNPCやSVE、RSVなど大型modの場合は[CP]~で始まるファイルの中のportraitフォルダに入っているものを参考にしましょう。ちなみに表情差分の指定がない場合はデフォルトの表情(ポートレートの一番左上)が表示されます。


翻訳してみよう

実際に翻訳してみましょう。今回はバニラデータから文章を引用しています。

"Tue": "Ugh... I'm not in a good mood right now.$s#$e#I said I'm not in a good mood... what do you want?$a"

これはアビゲイルの火曜日、好感度が0~2の間で見ることができる台詞の原文です。しれっと書きましたが、台詞の多くは好感度が2刻みで変化します。好感度が4の場合は2・4の台詞が読めて~っていう感じです。

"Tue": "うーん…今は 気分が 良くないの。$s#$e#ええ、 気分は サイアク だけど… 何か用?$a"

これが日本語に翻訳された台詞です。小さな変化ですが半角の⁉が全角になっていて...(ピリオドが3つ)が三点リーダー(…)になってます。あっちだと半角オンリーでいいですもんね。
(半角英数は1バイト文字、全角や日本語は2バイト文字)
一回目の台詞ではアビゲイルは$s、つまり悲し気な表情差分が指定されています。そして一度ここで会話が終わり、もう一度話しかけると$a、つまり「気分がよくない」と言ったのに果敢にも話しかけてくる牧場主に怒っていることを示しています。


余談2:特殊な会話パターンを見分けよう

ここまではすべて日常会話について取り上げてきましたが、ほかにもイベントでの会話や場所に紐づいた会話など結構な種類があります。今回は日常会話でも出てくるちょっと特殊なものについて紹介していきます。

"Introduction": "あら、お前が 引っ越した ばかりの 新人か。いい感じだな。^お前が 引っ越した ばかりの 新しい子か。仲良く やっていけると 思ってるぜ。オレは アレックスだ。#$e#またな。

こちらはアレックスと初めて会話した時に見れる文章です。なので文頭が日付や季節ではなく"Introduction"になっていますが今回は割愛します。
本命はです。この^を使うことで牧場主の性別に基づいた会話パターンを用意できるのです。 ^の前後、それぞれ前が男性、後側が女性の場合の台詞になります。

"fall_Sun": "うーん… 今夜は 何をしようかな?#$q 27/28 fall_Sun_old#また髪を 染めようと 思うんだけど… どう思う?#$r 27 10 Sun_27#黒く染めよう。#$r 27 10 Sun_27#金髪はどう?#$r 27 20 Sun_WildColor#明るい ピンク色は?#$r 28 0 Sun_28#今のままで いいかな!",

つづきまして今度は質問形式の会話パターンです。これは秋の日曜日、アビゲイルに話しかけると問いかけられます。そうすると

「黒く染めよう」
「金髪はどう?」
「明るいピンク色は?」
「今のままで いいかな!」

という選択肢が出てきます。その答えに対するアビゲイルの反応は以下の通りになります。

"Sun_27": "そりゃ けっこう無難な 選択ね。#$e#考えておくわ。",
"Sun_28": "やっぱり、 そういうと思った。$u",
"Sun_WildColor": "いつも面白いこと 言うんだから。$h",

さて、どのように質問に対する答えとその反応が紐づいているのかですが、「明るい ピンク色は?」の前に$r 27 20 Sun_WildColorと書いてありますね。そしてアビゲイルの反応の中に同じく"Sun_WildColor"とついているものがありますね。
ここを見分けることでどの質問がどの答えに紐づいているかが分かり、翻訳がやりやすくなります。


content.jsonとDialogueファイルはどう違う?

StardewValleyExpantedはcontent.jsonとDialogueファイルそれぞれに翻訳するための文章が入っています。前者(content.json)の中にはイベントにちなんだ会話や映画館の反応などこまごまとした特殊なものが含まれていて、後者(Dialogue)には季節ごとの会話差分が入っています。
で、厄介なのがcontent.jsonの中身。なんと会話文のみならず、各イベントでのキャラクターの座標やエモート、どのロケーションなのか~といった重要な情報も一緒に書かれているのです。


こんな感じ

¥"~~~~~¥"の中身が台詞で、その前にあるspeak ○○が喋っている住民の指定になります。それ以外の表情差分の指定や応答形式は変わっていません。
イベントの進行指示が含まれてる分、データは慎重に打ち込みましょう。記号がひとつでもなかったり、あるいは多いだけでも読み込まれなかったり、イベントが途中で止まるなどの問題が発生します。


オススメのツール

実際に筆者が使っているツールです。

サクラエディタ
メモ帳を二回りほど進化させたテキストエディター。自分でcontentを直す必要がある場合、行数や文字位置が可視化できて便利。最近はもっぱらGrep目当てで使ってます。


Notepad++
シンプルで使い勝手がよく、複数のタブを見比べながらの作業も可能。こちらも行数や文字位置の可視化もありますし、閉じカッコの欠落などの文法ミスに気づきやすい設計です。
どちらかというとmodを作る人向き?

Json validator
実際にゲームを起動してエラーログを確認して……と泥縄式でバグ取していた私の救世主です。ここにjsonファイルを読み込ませることで具体的にどこがエラーの原因になっているのかを教えてくれます。エラーログの格納場所についても書いてあったはず。



今後も加筆・修正を加えますが、基本的な内容としては以上になります。ほかにも様々な代替文字や条件の指定がありますので、また別個に記事を書く予定です。あと、もっとうまい人が書いてくれることを祈ってます。たすけてくれー!!!!

2022.09.11 公開
2022.09.12 代替文字、ポートレート、男女での会話差分、質問形式の会話パターンについてを追加。一部加筆。



この記事が気に入ったらサポートをしてみませんか?