ローカリゼーション パート1

これは、 ローカリゼーションの記事の続きです 開始



銅管

だから、最初のゲームが転送され、お金が受け取られるだけでなく、行われた仕事からの満足も受けます。

その後何が変わりますか?



その後、ゲームをまったく異なる方法で見始めます。 家の美しさを十分に楽しむことができない建築家として、他の人とは違うポスターを見るデザイナーとして...そして貧しいローカライザーとして、彼はゲームをまったく別の方法で見て、すでに精神的にバラバラにしています。



個人的には、まだ習慣があります。 私が見るのが怖いと感じる新鮮なゲームをインストールしたので、私はそれを始めません。 いや 記録されているディレクトリに移動し、データがどのように整理されているか、ビデオが何に記録されているか、サウンドが何であるか、テクスチャがどこにあるか、テキストがどこにあるかを確認します...これは自動的に行われるので、それについては考えません。



そして、このすべての後、あなたは始めます...



次の観察は、彼らがディスクを販売する場所を訪れることに関連しています。 ここでは、初めて銅パイプがあなたに知らせます:

「Hostile Whirlwindsをプレイしましたか?」 (ウォーウィンド)

-いいえ...

-では、ロシア語で...クラスでプレイ!

そして、内側は行われたことに誇りを目覚めさせ、幸せな笑顔が彼女の顔に忍び寄る...

それから売り手はあなたにあなたの翻訳を売ろうとします...

これはあなたのモチベーションと将来のゲームでの仕事に深刻な影響を及ぼします。 そして、プラスとマイナスの両方の方向に。



私たちが働いた方法...

ただし、ゲームを分解する段階を見ていきましょう。

プログラマー向け:

-インストールし、カタログにアクセスして、どこにあるかを確認します

-ゲームを実行し、設定し、できれば「New Game」ではなく、テキストを覚えておいてください。ただし、ゲームプロセス自体、理想的にはブリーフィング、またはテキスト形式のダイアログから

-ざっと理解するために少し遊んでください:テクスチャにテキストがありますか、どんな音で、どれくらいですか

-ゲームを終了し、異なるDOS / WIN / UNICODEエンコーディングなどのテキストを探します。

-翻訳者にコメントを与えるためにテキストを切り取ります

-音を検索して切り取る

-持続時間を数分で数え、マネージャーに「それだけの価値があるか」と考えさせます。

-肯定的な応答を受け取った後、必要に応じてサウンドを復号化します

-翻訳者に音を与える

-写真のフォントを解読する

-フォントを写真に切り分けてアーティストに渡す

-フォントを使用してテクスチャに自分でいくつかの文字を描画し、テキストにロシア語の文字をいくつか描画します

-フォントバックでテクスチャを貼り付けてみてください

-サウンドをデコードする必要がある場合は、エンコーダーを記述してください:)

-ゲームにサウンドを挿入してみてください

-翻訳者から最初のテキストを入手する

-アーティストからテクスチャを取得する

-最初のバージョンを収集し、マネージャーに見せます

-不正確なことに気付いた場合は、紙に書き留めてください(これは重要です!手で紙に書き留めてください!それ以外の場合はスキップされます)

-既製のテクスチャからフォントを収集する

-すべてのサウンドとテキストを取得し、コンパイルします

-最初のバージョンを人々に見せます

「疲れてしまうまで、コメントや修正が尽きるまで、あるいは決定されるまで収集して表示するには、十分に送信してください...

...

ほぼそのような作業計画。 もちろん、少し面倒で、いつもそうとは限りませんが、基本的には似ています。



したがって、4つの主要な作業領域があります。

-分解-組立

-テキストの翻訳。 ビデオの翻訳と俳優のための「スクリプト」の作成

-描画

-サウンドエンジニアリングとサウンドカット





それから、 mikeSPは音について素晴らしい記事を書きました。

私からは、すべてが私たちのほうがずっと簡単だったと付け加えます。

保管室/トイレ、多くの卵トレイ、ぴんと張ったストッキングの銅線(spittoon、ts :))マイクが話すときに唾液粒子が落ちる音を録音しないようにするため。 そして最後に、狂ったお金のためのマイク。 音は、働く俳優とオペレーターのみの存在下で録音されました。 残りはすべて「庭に」行きました。 自宅で働きます。



今日は、ゲームをコンポーネント部分に分解する基本原則についてお話します。



ビルドしないブレーク

まず最初に分解するには、あらゆる種類のファイル形式と種類に関する非常に優れた知識が必要です。 グラフィック、オブジェクト、サウンド、テキスト、エンコーディング、基本的な暗号化方法。 どういう意味ですか?このファイルを理解するかどうかを知るには、主にマシンコードでどのように見えるかを知る必要があります。



開発者が怠zyで低賃金だった場合、彼はファイルをディレクトリに単純にスケッチしました。 これらのケースは最もリラックスできます。ここで何もする必要はありません。それを取り出してコピーするだけです。 しかし、それは異なって起こります。

データディレクトリに「textures.dat」、「sound.dat」、「music.dat」、「video.dat」などのようなファイルのみが含まれている場合

ここでは、そのようなファイルを解析/アセンブルできるユーティリティを作成する必要があります。 このようなユーティリティは、特定のゲーム用に作成されることがほとんどです。これは、同じ人でもまったく同じプログラムを作成しないためです。



ほとんどの場合、データは原則に従って編成されます

-タイトル

-配置テーブル

-データブロック



たとえば、「sound.dat」という架空のファイルを取り、単純な(hehe)便利なプログラムhiew32.exeで開きます。 名前自体は、音がなければならないことを示唆しています。 あなたがそれで探すことができる最初のものは略語RIFF、すなわちです。 マルチメディアデータの標準見出し。見つかった場合は、ファイルをタイトルからタイトルに安全にカットできます。幸運です。 あなたはすぐにカッティングプログラムを振りかけ、何をどこで聞くことができます、そして音があれば-それを翻訳者に与えて、テーブルを探している間にソートして翻訳させます-それを挿入するためにこのファイルのこの/タイトルを。 ヘッダーがなければ、ファイルはほとんど見つかりません。 マージされるデータファイルを意味します。



私が言及しているのは、「dat」、「dta」などと呼ばれる大きなファイル内でファイルの先頭を見つけたことが確実な場合です。 -このファイルで、このピースの初期オフセットへのリンクを安全に検索できます。非常に高い確率で-これがテーブルになります。



だから、私たちの行動:

-大きなデータファイル内で使い慣れたヘッダー/ファイル開始識別子を探します

-初期オフセットを覚えておいてください

-「offset2」-「offset1」を計算して、ファイルサイズを考慮します

-このファイルで見つかった番号を探します

-見つかったテーブル構造を分析します。 値を4バイト、8mずつ揃えようとします

-テーブルに基づいてファイルを解析するプログラムを作成しています。



すべてが逆の順序で書かれていることを忘れないでください。 番号0x8FBD55は、ファイルに0x55BD8Fとして書き込まれます。 つまり 下位バイトから上位バイト(リトルエンディアンという言葉は、それに慣れていない人にとって賢くて恐ろしいことです:)。

テーブルに基づいて分解するだけでなく、すべてを収集するために、最初にそのようにする必要があります。

ゲームは、作成したデータを使用する必要があり、変更されたとは思わないでしょう?



自尊心のある開発者は、データの解析プロセスを複雑にするために最善を尽くしています。

時々、テーブルはすべての既知の方法によって暗号化されて隠されます。 しかし、このために、SoftICEと他の優れたプログラムを思いつきました。 これらのアプリケーションでの作業は、まったく異なる話です。 :)



最近、ゲームでデータを整理したい人で、実際に自分で何も書く必要がないことを付け加える必要があります。 多数のライブラリが作成されており、それらを作成して使用するだけで作成者に通知したり、通知を必要とせずに(gzipなど)



この方法で作成されたファイルは、メソッドの作成者自身のユーティリティ、またはファイルを断片に解析するウィザードによって既に作成されたユーティリティを使用して簡単に解析されます。

たとえば、BlizzardのMPQ形式。 バージョン、ローカライズ、その他すべてのヒープをサポートするだけで、同じファイルシステムを作成するのは素晴らしい仕事です。 間違っていなければ、gzipもコンポーネントとして使用されます。



これは、私が知っている一般的な分解の原則です。 私は結局翻訳者です...



そして、手始めに、 トゥームレイダーの物語。

これが次のゲームでした。

特にアトランティスの神々がヌットラを判断する箇所に重点が置かれていたため、テキストはほとんどなく、最も難しいことは耳でビデオを翻訳することでした。

パスポートにエンブレムが付いたアイデアはそれ自体で生まれました:)私はちょうどパスポートを持って家に帰り、テーブルの上に置いて、ゲームのために絵を描き直し始めました。 それらのいくつかはありませんでした、私自身は再描画されました、アーティストは雇われませんでした。 そして、私がパスポートの写真に出くわしたとき、私は抵抗できませんでした。



音は横から雇われた男たちによって作られた、彼らはまた声をかけられた。

彼らの表現は弱かった。 パッセージの1つにある「Kill​​ her」というフレーズは、Nutttleが「Bring me a beer ...」と言ったように、なんとなく普通に聞こえました。

しかし、それでも、彼らは試しました。 トレーニング中に、ララが水から出てきて「Oooh ... Ohhh ... Fresh air!」と言う瞬間があります。英語版では、ちょっと息切れのある喜びのように聞こえます。 フレッシュエア! みましょう....」。 しかし、ロシア語版では、貧しい少女は口を閉じて、「一度泳ぐ」ように割り当てられたゲームとほぼ同じ時間に息を吸わないようにし、テキストとマイクを持ち出してから放しました。 無私無欲でしょ?



テストは完全に実行されました。アセンブリユーティリティの準備が整う頃には、すべてをすでに翻訳し、2日間最終レベルに合格していたからです。



これは、すでに忘れられている理由のために、解析ユーティリティがアセンブラで書かれた唯一のゲームです。

たとえば、以下は、最初のトゥームレイダーのRPLファイルからドラフトサウンドデータを抽出するコードです。



最初の部分は、ファイルの読み取り/書き込みだけで、何も面白いものではなく、ネイティブの21番目の割り込みを使用します。

実際にデコードするコードのみを提供します。

;------------------------------------------------------------

proc ctoh



mov dword ptr cs:[string],'0000' ;

mov dword ptr cs:[string+4],'0000'

mov cx,0

ctoh1: cmp byte ptr [si],30h

jc ctoh2

cmp byte ptr [si],3ah

jnc ctoh2

inc si

inc cx

jmp ctoh1

ctoh2:

mov di,offset cs:string+7

push si

dec si

std

rep movsb

pop si

inc si

mov bx,offset cs:string+7

mov edx,1

mov cx,8

mov dword ptr cs:[len],0

ctoh_loop1:

mov eax,0

mov al,byte ptr cs:[bx]

sub al,30h

imul eax,edx

add dword ptr cs:[len],eax

imul edx,10

dec bx

loop ctoh_loop1

ret



ctoh endp









ご清聴ありがとうございました。



継続するには...



All Articles