まず、こちらの画像をご覧ください。
このように、ユーザーメイドのワールドで遊んでいると、ポップアップでワールドの名前が表示されなくなっています(専門職や自営業限定と思ってたから今まで回りくどい書き方してたのに、ウェザーストーンでもだったとは。おかげで記事タイトル短くできましたw)。
何年も前からなんでだろうと気になっていて、どうにかしたいとずっと思っていました。
この度ついに、これを表示させる方法が判ったので、ご紹介したいと思います!
ちょっとややこしいですが、私のように気になる方は是非お試しください!
目次
Q. どうしてポップアップで町の名前が表示されなかったか
A. STBL リソースが必要だった
町の名前が表示されないことに気づいてから、事あるごとにカスタムワールドとストア品ワールドで何が違うんだろうと見比べていました。そんな折、ストア品のワールドには STBL リソースが含まれていることに気づきました。この中にはワールド名やワールド説明も含まれていて、カスタムワールドにも付けたらいいんじゃない? と思った私。
それから色々試してみた結果、予想通りポップアップに表示される町の名前は、この STBL リソースから読み込もうとしていたことが判りました。カスタムワールド用の STBL がなかったために、空欄で表示されていたというわけですね!
そこでカスタムワールド用の STBL を用意。ポップアップに反映されることを確認しました!
[補足] そもそも STBL って何?
オブ制作経験者の方など STBL が何か知っている方は飛ばして大丈夫ですw
まず STBL って何かと言うと、ゲーム中に表示される文章が保管されているリソース名です。String Table の略で、String はプログラミング用語の文字列のことです。これのおかげでシムズ3はたくさんの言語をサポートできています。
テーブルって訳で、構造は以下のようになってると考えると判りやすいんですかね?
(キーは私が適当に付けただけなので、実際は違いますよ)
キー | 英語 | 日本語 | 台湾 |
---|---|---|---|
GameTitle | The Sims 3 | ザ・シムズ3 | 模擬市民3 |
FirstStoreWorldName | Barnacle Bay | バーナクル・ベイ | 藤壺灣 |
GothFamilyMortimer | Mortimer Goth | モティマー ゴス | 摩提梅爾 高斯 |
プログラム中では「GameTitle」としている部分を、英語環境では「The Sims 3」、日本語環境では「ザ・シムズ3」、繁体字では「模擬市民3」と置き換えて表示するように示しているのが、STBL みたいな? 余計判りにくかったらすみません
ここでは1つのテーブルにまとめましたが、STBL はシムズ3がサポートしている言語に付き1つずつ用意できます。Sims 3:Locales によると、23言語に対応しているらしい…!
だらだら書いてきましたが、package 形式のオブジェクト CC や Script Mod(NRaas 等 多言語に対応しているもの)を s3pe で開いてみると、どういったものか一目で解るかもしれませんw
で、この STBL リソース。
オブジェクトを作る場合はクローン時に制作ソフトが自動的に追加してくれるんですけど、ワールドの場合は自動で追加されませんでした。そのために、「ここにワールドの名前を表示せよ」って命令があっても、「んなもんねーよ」と空欄になってしまっていたわけですねw
それにしても台湾のモティマーめっちゃ強そうだなw(Mortimer Goth - The Sims Wiki より)
どうやって反映させたか
最初は CAW で作成中の .world ファイルに直接 STBL リソースをインポートしておいたんですけど、この方法では反映されませんでした。EA 製ストアワールドと違って、何か設定足りないのかな?
次に私が試した方法は、MOD 化です。
STBL リソースを含めた package を作り、Mods フォルダに入れました。
こうすると反映されました!
というわけで、2枚目の画像のように自作ワールドでなくても反映させることが出来たのでした♪
これはこれで良かったですよね!
それではいよいよ、STBL の作り方をご紹介していきます(いつも前置き長くてすみません)。
今回は基本の英語と日本語だけ作りますね。プレイしている言語の STBL がない場合は英語の STBL が読み込まれるので、最低でも英語用リソースを作っていれば十分ではあります(個人用なら、英語リソースに直に日本語入れてもいいかも…)。
STBL を用意すれば、ポップアップに表示される名前だけでなく、ワールド説明や区画名等の翻訳も可能となります。やってることは Script Mod のローカライズと同じですね。
Script Mod 制作に手を出したのが活きましたw
というわけで参考にしたのは Tutorial:Sims 3 Localized Coding (Script Mod のチュートリアル)です。STBL について正しく知りたい方はそちらをご覧ください!
必要ツール
- s3pe
- STBL Converter・・・ページ最下部にある STBL.zip をダウンロード
- UTF-8/Unicode で保存可能なテキストエディタ(Windows のメモ帳でも大丈夫そう)
STBL Converter の代わりに NRaas Packer (MOD 制作に特化した package editor)でも可能です。こちらは全言語の STBL を一気に用意できるので超便利! が、私が使いこなせてないので、説明できませんw
ワールド名とワールド説明の確認
自作ワールドの場合
簡単です。あなたが CAW で入力したやつですw
ASCII コードで構成しておかないと、適用できません。
一応下記の方法で確認しておいてもいいかもです。
ダウンロードしてきたカスタムワールドの場合
- sims3pack を package に変換して、s3pe で開く。
- インストールして、InstalledWorlds フォルダにある .world ファイルを s3pe で開く。
まずは上記のどちらかをやってください。
見るものは、_XML、WDNM、WDDT の3つです。
基本的に _XML で事足りると思いますが、本当に必要なのは WDNM と WDDT です。カスタムワールドの場合は大体すべて一致すると思います(例外あるかもしれませんけど)。
.manifest ファイル(_XML)をチェック
とりあえず _XML を見てみましょう。
たぶんないとは思いますが複数あった場合(公式ワールドがそう)、Type が 0x73E93EEB のものを選択します。
右側のプレビュー画面に中身が表示されます。
ワールド名とワールド説明は、この中に計3回書かれています。判りやすいように、以下はテキストエディタで開いたものをキャプチャーしました。
<packagetitle> と <packagedesc>
<localizedname> と <localizeddescription> の中にある <![CDATA[]]> の中身
(これが新規ゲームの「町を選択」で表示される内容じゃないかと)
<metatags> 内にある <name> と <description>
(この <metatags> の間にあるものは、たぶん Exchange にアップロードしたときに表示される内容じゃないかと思う)
これらの3箇所で全く同じ内容でしたら、これでほぼ確定です。
が、念のため WDNM と WDDT も確認しておいてください。
WDNM と WDDT をチェック
これらを見るときは、下のコントロールパネル(?)にある Preview: Hex にマークを入れてください。
すると右側のプレビュー画面に、なんか英数字が規則正しく並んで表示されると思います。
(Preview の表示方法変える代わりに、その右にある Hex ボタン押しても OK です)
WDNM にはワールド名が格納されています。
正直 見方はよく判りませんが、右端に狭苦しく書かれている文字列から「.」(ピリオド)を除外したものがワールド名になります。
たまにコンマとか % とかが混じっている場合もあるかもしれませんが、それも除外したら _XML で書かれているワールド名と一致すると思います。
ちなみにストア品ワールドだと、_XML と一致しません。でもこちらが STBL で参照するキーになっています。
もし _XML の3箇所で矛盾があったら、WDNM と同じ文字列を使いましょう。
もうひとつの WDDT は、ワールド説明が格納されています。
今更ですけど、ワールド説明は翻訳したい場合のみご確認くださいw
適用不可能なワールドもあるかも
ワールド名が ASCII コードで書かれていなかったら(日本語とか、ヨーロッパ言語で使われるアルファベット[é、ç、ü 等]が含まれてる場合とか)、ポップアップに町の名前を反映できないかもしれません。ワールド説明でも同様。
STBL のフォーマット
<?xml version="1.0" ?> <TEXT> <KEY></KEY> <STR></STR> <KEY></KEY> <STR></STR> <KEY></KEY> <STR></STR> </TEXT>
UTF-8/Unicode(UTF-16)で保存できるテキストエディタで作ります。上記をコピペして使ってください。
<KEY></KEY> の間に、先ほど確認したワールド名やワールド説明を入れます(厳密に言うと WDNM と WDDT の値)。
そしてゲーム中で <KEY> に入れた文字列を参照したときに、その下の <STR></STR> の中身が表示されるようになります。
私のテストワールドを当てはめると
英語版
<?xml version="1.0" ?> <TEXT> <KEY>Sandville</KEY> <STR>Sandville</STR> <KEY>Tiny desert islands located somewhere in the sea.</KEY> <STR>Tiny desert islands located somewhere in the sea.</STR> </TEXT>
日本語版
<?xml version="1.0" ?> <TEXT> <KEY>Sandville</KEY> <STR>砂の町</STR> <KEY>Tiny desert islands located somewhere in the sea.</KEY> <STR>どこかの海に浮かぶちっちゃい砂漠の島。</STR> </TEXT>
小さな砂漠の孤島じゃ町の名前というか説明っぽいので、テキトーに変えてみたw 今パッと思い浮かんだサンドリヨン(シンデレラじゃなくて Sandrion?)でも良かったかもーww うん、あとで変えようっと。
単純に町の名前をポップアップにも表示させたいだけなら、ワールド名だけでいいですよ!
個人で遊ぶだけなら英語ファイルに直接 日本語で書いても大丈夫だと思います。
それぞれ .txt ファイルで保存してください。文字コードは UTF-8 にしてください。(これで事足りるはず。私はいつも BON なしで保存してます) 全文アルファベットなら SHIFT-JIS とかでも問題ないですが、日本語使う場合はそうしないと文字化けします。
[補足] 文字コードの替え方
ご使用のテキストエディタによって方法が違うので、判らない場合は各ソフトのヘルプなどをご参照ください。
たいてい、名前を付けて保存するときに選べると思います。「文字コード」とか「エンコード」とか書かれてます。
Windows のメモ帳の場合
STBL ファイルに変換
作った .txt ファイルを1つずつ STBL.exe にドラッグ&ドロップします。
.stbl が作成されましたね!?
package を作成
s3pe を開き、File > New から新規ファイルを作成します。
Instance ID を作る
Tools > FNV Hash... を開きます。
現れたウィンドウの "Text to hash" に、絶対に他と被らない文字列を入力し、"Calculate" ボタンを押します。自身の名前やワールド作者名などを入れておくといいでしょう!
FNV64 の値をコピーします。
英語用 STBL をインポート
Resorce > Import > From file... から、先ほど作った .stbl ファイルをインポートしていきます。
まずは英語版から行いましょうか。
ファイル名右のセレクトボックスを "All files" に変更しないと現れません。
Resorce Details ウィンドウが出てきますので、Type を「STBL 0x220557DA」に変更し、Group は 0 のままで OK、Instance に先ほどコピーした文字列を貼り付けます。そして、Instance の 0x の後にある2つの英数字を 00 (ゼロ2つ)に置き換えます。
お好みで、Name に判りやすいよう説明を入れておくといいかもしれません。
"OK" ボタンを押します。
フォント設定とかやったことある方へ。今回は絶対にここで FNV64 ボタンを押さないでくださいね!!
日本語用 STBL をインポート
次に日本語版ですが、この英語用リソースを利用すると少し楽です。
英語版の STBL を選択し、右クリックメニューから "Copy" を選びます。その後また右クリックメニューを出し、"Paste" を選びます。
Resorce Details ウィンドウが出てきたら、Instance の 0x の後にある2つの英数字を 0C (ゼロC)に置き換えます。Name も ja-JP に変えました~。
"OK" ボタンをクリック。
これでゲームが日本語用のストリングテーブルだと認識するようになりました!
その他の言語については、Sims 3:Locales をご覧ください。例えばフランス語なら 07、ロシア語なら 12 です。
それから追加された日本語用 STBL を選択し、右クリックメニューから "Replace..." を選びます。
Japanese.stbl (私の場合)を開きます。
このように Replace は、リソースキーはそのままに中身だけ置き換えてくれるので、.stbl に変更を加えた場合にも使うと便利です!
プレビューで確認して、package を保存する
これで完了です! 名前を付けて保存しましょう!
package 内にはこのように3つのリソースが含まれていますか?(日本語ファイルを作らなかった場合は2つ)
くどいですが、Instance の 0x の後ろ2つの値の違いを間違えないようにしてください。
そして2つの STBL を選択して、それぞれ英語と日本語になってるかプレビューで確認してみましょう(これまでの作業で Preview: Hex にしてたら、右端の Preview にマーク入れなおしてください)。
日本語が文字化けていたら UTF-8(または UTF-16)で保存されていないので、.txt ファイル作成からやり直してください。.stbl に変換した後は、Replace を使ってインポートすれば OK です(わざわざ Resorce Details ウィンドウでなんやかんやする必要なし!)。
出来上がった package を Mods フォルダに入れると、反映されていると思います!
ちなみに、この package に他のワールド用の STBL を追加していっても大丈夫です。
そもそも、package 内でワールドごとに STBL を分ける必要もなかったりしますw 今作った STBL に追加しても OK。ただ、分けると管理しやすいというだけですね。
もしもワールド名などが全く同じものが2つ以上あった場合、一つ作っておけば、それでもう一つも勝手に置き換わります(今回の例の「Sandville」という名前で他の作者さんもワールド作っていたら、そちらをインストールしても「砂の町」になる。ただ、ワールドじゃなくても区画名やシム名などでも起こりますw)。
ワールド作る場合においても、ユニークな名前を付けることが重要ですねっ。
ゲームを起動して確認
町の選択画面はこうなりました!
でも名前のほうは不思議なことに、日本語に変換されるときとされないときがあるんですよねー。原因つかめていませんが、ここで変換されてなくても問題はありません!
プレイ開始したらポップアップ中には、日本語版のワールド名で表示されますので!
区画の名前と住所の多言語対応も試してみましたが、ここまでで長くなりすぎたので別記事にしますw
このエントリーへのコメント
Disqus のほかにも Twitter や Google、Facebook アカウントでもログイン出来ます。
ログインしないで投稿するにはメールアドレスが必要ですが、サイト上には表示されませんのでお気軽にどうぞ("アカウントを作成せず投稿する" にチェックを入れてください)
blog comments powered by Disqus