GearHead-1
の
しみてい版 日本語化(v0.835)
と
らふ版 日本語化(v1.010+J0.01alpha4)
と
スポイラー公開版 日本語化(v1.100+JP008)
の成果の集大成として、
原作最新版(執筆時点で GearHead v1.100)への対応、
「CUI」(原作では「ASCII モード」と呼ばれる)と
「SDL」と
「422氏&らふ(l0ugh)氏によって追加された表示モード(MS-Windows専用)」の
表示3モード対応、
多OS対応、
多言語対応、
GearHeadスレ勇士達の助力の元にバグ修正、
各種ちょっと便利かもしれない機能を大量に追加、
任意のスクリーンサイズに対応、
各種チート機能を追加、
GearHead-2 から口径機能のバックポート、
不正なメモリアクセスを行うバグの治療、
を行いました。
I18N GearHead-1 is developped based on the achievement of
the Original GearHead-1,
the shimitei's branch,
l0ugh's branch
and a Group of Jpananese Spoilers branch.
I18N GearHead-1 can be used with a lot of languages and a many OS.
"Combining Character" (Devanagri, Thai, Japanese, et al.)
are not completely supported.
But "Precomposed Character" are supported.
Please use "Precomposed Character"
instead of "Combining Character",
when "Combining Character" cause something incorrects.
And,
"Languages written from the right to the left (bidi RTL)"
(Arabic, Hebrew, Near Ancient Japanese, et al.)
are supported, but not tested enough.
"Languages written from the up to the down"
(Mongolian, Another style of Chinese/Japanese/Korean, et al.)
are not supported.
CUIモード(ASCIIモード)とSDLモードが、
FreeBSD でも GNU/Linux系でも MS-Windows でも動作する様になりました。
Macintosh や Mac OS X や Solaris や OS/2 等は、
私が所有しておらず、
また開発協力者あるいは動作確認報告も登場していないので、
確認できていません。
GLモードは、やる気が無いので対応しません。
また、従来の日本語版にあったバグを、発見された物は全て修正しました。
I18N GearHead was tested on FreeBSD, GNU/Linux and MS-Windows 2k/XP.
But, I18N GearHead was not tested on Mac OS X, Solaris and OS/2,
because of I have no such OS or computers.
誤解しない様に長ったらしい注釈:(Features of each branches of GearHead-1)
- 総本山(英語版)にある
オリジナル版の GearHead 1.100(1系列現行最新、最終?) は、
CUIモード(ASCIIモード)と SDLモード共に、
Unix系でも MS-Windowsでも、
英語メッセージで、
動作します。
プロット機能も動きます。
- 日本語化の現総本山にある
GearHead 1.100用(1系列現行最新、最終?) 日本語化 008版
(通称「SDL版」もしくは「スポイラー公開版」)は、
らふ版を元に作られ、
SDLモードが、
MS-Windows上で、
CP932による日本語メッセージで、
動作します。
プロット機能は動きません。
- 日本語化の旧総本山にある
GearHead 1.010用(ちょっと古い) 日本語化 0.01alpha4版
(通称「らふ版」もしくは「CUI版」もしくは「旧日本語化版」)は、
GUIによる CUI(ASCII)表示のエミュレーションが、
しみてい版を元に作られ、
MS-Windows上で、
CP932による日本語メッセージで、
動作します。
プロット機能は動きません。
- さらに古い しみてい版は、
……すみません、ソースは読みましたが動作確認は行っていません。
ざっと見た感じ、
CUIモード(ASCIIモード)が、
Unix系でも MS-Windowsでも、
動くみたいです。
プロット機能も動いているはずです。
- 拙作の I18N版だと、
GearHead 1.100(1系列現行最新、最終?)が、
CUIモード(ASCIIモード)とSDLモードともに、
Unix系でも MS-Windowsでも、
メッセージデータさえ翻訳すればほぼ世界中どの言語でも
(日本語と英語以外では動作確認していないので、バグはあるかもしれません。
あとモンゴル語は縦書き専用の言語なので対応できません)、
動作します。
FreeBSD/i386 6.3-RELEASE では、ビルドして、
CUI, SDL 共に起動する事まで確認済。
FreeBSD/amd64 6.3-RELEASE では、
32ビット互換モードでビルドするか FreeBSD/i386 上でビルドした物が、
CUI, SDL 共に起動する事まで確認済。
MS-Windows(32bit系)では、ビルドして、
CUI, SDL 共に起動する事まで確認済。
GNU/Linux/i386 では、ビルドして、
CUI, SDL 共に起動する事まで確認済。
それ以降、プレイ中の挙動等は動作確認中……、
移植作業で力尽きました。
ロケールは EUC-JP と UTF-8 と CP932 を確認済。
Mac とか GNU/Linux/x86_64 とか SunOS とか Solaris とか MS-DOS は、
試験できる環境が無いため未確認。
メックのデータや、シナリオのメッセージを自作する時の注意。
GearHead は、様々な計算機や色々なOSで動作する様に作られているので、
互換性の確保の為、注意が必要です。
- ファイル名には いわゆる半角のアルファベットと数字と ()-=_. のみが
使用できます。
いわゆる日本語とかいわゆる半角カナは、ファイル名に使用できません。
これは、
CD や DVD 等にデータを保存した時に問題が起きない様にする為と、
MS-Windows で読み書きができなくなるトラブルが発生しない様にする為と、
Solaris や SunOS 等で扱いにくくならない様にする為と、
原作の英語版との互換性を(一応)確保する為、
です。
- ファイル内の1行の長さは 255バイトまでに制限されています。
はみ出した部分は切り捨てられます。
全て英語(ANK)だと 255文字、
全て日本語(UTF-8除く)だと約127文字、
全て日本語(UTF-8の場合)だと85文字ぐらい、
になります。
UTF-8 と EUC-JP では、
いわゆる半角カナを使っても消費バイト数を節約する事はできません。
これは Pascal の仕様です。
%JF %JS %JG %JA %a %n %t \タグ 等の置換を使用した場合、
置換後のメッセージ本体の長さも 255バイト以内に収まっていないといけません。
はみ出した部分は切り捨てられます。
PROMPT タグの中身は、
CUIモード(ASCIIモード)だとANK45文字ぶんの幅までしか表示できません。
はみ出した部分は切り捨てられます。
- いわゆる半角カナを使うと、互換性に問題が発生する可能性があります。
具体的には、CUIモード(ASCIIモード)を、
標準設定の Fedora GNU/Linux や Ubuntu GNU/Linux で動かすと、
表示できない可能性があります。
SDLモードや Mac OS X は不明。
nkf 等の
変換ツールを使うと、
「いわゆる半角カナ」から「いわゆる全角カナ」への自動変換ができます。
自分しか使わないデータとか、
MS-Windows以外の OSを使っている人には文字化けさせたい、とかで、
わざとやるなら止めはしませんが。
あと、「いわゆる半角カナ」を使っても、
画面表示の幅が半分になることは保障されません
(文字コードの規格では、
「いわゆる半角カナ」のコードに関して文字の表示幅を定義していないので、
「いわゆる全角」と同じ大きさで表示しても規格違反ではない)。
同様に、「いわゆる全角文字」を使っても、
画面表示の幅が「いわゆる半角」の倍になることは保障されません
(例えば、
MS-Windowsで「いわゆる全角」のマイナス「−」を表示すると、
「いわゆる半角」の幅で表示される場合があります)。
- いわゆる機種依存文字は使えません。
多言語対応の為の処理の都合、多分、文字化けします。
丸数字とかギリシャ数字とか数学記号辺りでは、
規格で定められた正当な文字と、
機種依存文字で作られた不正な文字の、
2種類がある為、注意が必要です。
- ディレクトリ(フォルダ)を表す文字は OS によって異なります。
なので、ファイル中でディレクトリ(フォルダ)を指定すると、
異なる OS で扱う事ができなくなる場合があります。
- 拙作の I18N版の日本語用データでは、
文字コードは EUC-JP (JIS X 0212) もしくは eucJP-MS に統一しています。
建前は、
様々な OSを使っている人同士の間で
データの交換を簡単に行える様にする為と、
色々なコンパイラでコンパイルできる様にする為、
です。
本音は、
OS毎にいちいち文字コードを変えていたら
動作確認やデバッグが非常に面倒になるからと、
ShiftJIS(CP932) だとコンパイルできないコンパイラが実在するから。
ISO-2022-JP はロッキングシフトの扱いが面倒なので除外。
UTF-8 では文字数制限が厳しくなるのと
日本語のマッピングに問題があるから駄目。
ShiftJIS では特定の文字を使うと必ずコンパイルエラーになるのと
一部のよく使われる文字が未定義だから駄目。
CP932 は特定の文字を使うと必ずコンパイルエラーになるのと
文字コードの定義に問題があるから駄目。
- 改行コードは FreePascal が適当に処理してくれているので、
よくわかりません。
ブラウザやファイヤーウォール等で、
リファラーやユーザーエージェントを遮断もしくは偽装する設定にしていると、
ダウンロードできません。
今後の予定:
α0版(Alpha-Zero) : バグに対する仮処置が済んだ : Sun,03 Aug,2008 版
α1版(Alpha-One) : 取り敢えず安全(普通にプレイしている間はデータが壊れない、強制終了は特定の限られた場面のみ)にゲームができる様になった : Wed,06 Aug,2008の1 版
α2破棄版(Alpha-Two): プログラム側の GG_AbsolutelyNothing の件の点検・修正が全部終わった : Sat,27 Sep,2008 版
α2版(Alpha-Two) : GG_DisposeGear 作業が全部終わった時 : Sat,04 Oct,2008 版
β版(Beta) : α2版 のバグ出しおよび修正が終わった時:実行ファイル Sat,08 Nov,2008 版 + メッセージデータ Fri,28 Nov,2008 版
β2版(Beta) : β版に見つかった痛いバグを治した辺り:Thu,08 Jan,2009 の2 版 ?
最新β版(Current) : β2版に見つかったバグの修正を行なって安定動作の再確認を行っている版:Thu,29 Oct,2009 版。
直前版 : ロスタイム。
現在→ 正式公開版(Stable) : 最新β版で4週間経ってもバグが見つからなかった時:Sun,06 Dec,2009。
プログラム自体は多国語対応ですが、
メッセージデータは英語版と日本語版しかありません。
また、プレイ開始後の言語切り替えは無理です。
セーブデータに直接メッセージが記録されているのだもの。
The binary programs of I18N GearHead-1 support all languages,
but we have only two data sets, for English and for Japanese.
If you want other languages,
please translate message & series data set by yourselves.
使用したい言語を1つ選んでください。
- GearHead1100i18n.txt.jp.lzh
Thu,13 May,2010 版 (1438KiB)
多言語版 CUI(ASCII),SDL両モード共通の、日本語 用 シナリオ・メッセージ データ。
Japanized message & series data on SDL & CUI(ASCII) for I18N GearHead-1.
- GearHead1100i18n.txt.eng.lzh
Release: Tue,11 May,2010 Size: 901KiB
English message & series data on SDL & CUI(ASCII) for I18N GearHead-1.
多言語版 CUI(ASCII),SDL両モード共通の、英語 用 シナリオ・メッセージ データ。
SDLで動かしたい時のみ、画像データを選んでください。
- GearHead1100.image.lzh
原作版、Thu,13 Mar,2008 更新 (3143KiB)
多言語版 SDLモード専用の全言語共通の画像データ。
Image data on SDL for I18N GearHead-1 for all languages.
- GearHead1100i18n.image.color_barrier_free_test.lzh
Mon,12 May,2008 更新 (9KiB)
試験的にカラーバリアフリー対応にしてみた追加画像データ。
GearHead1100.image.lzh も必要です。
Additional image data, testing to suit color barrier free, on SDL for I18N GearHead-1 for all languages.
This data need GearHead1100.image.lzh too.
OSを選んでください。
- GearHead1100i18n.bin.FreeBSD.tar.bz2
Thu,29 Oct,2009 版、Thu,29 Oct,2009 更新 (3335KiB)
多言語版 FreeBSD/(i386|amd64) 6.x-RELEASE 用の全言語共通の実行ファイル(CUI(ASCII),SDL両モード)。
I18N GearHead-1 binary programs on SDL & CUI(ASCII) for FreeBSD 6.x-RELEASE/(i386|amd64-WITH_LIB32) for all languages.
- GearHead1100i18n.bin.MSWin32.zip
Thu,29 Oct,2009 版、Thu,29 Oct,2009 更新 (2207KiB)
多言語版 MS-Windows(WIN32系)用の全言語共通の実行ファイル(CUI(ASCII),SDL両モード)。
I18N GearHead-1 binary programs on SDL & CUI(ASCII) for MS-Windows(WIN32) for all languages.
- GearHead1100i18n.bin.Linux.tar.bz2
Thu,29 Oct,2009 版、Thu,29 Oct,2009 更新 (2151KiB)
多言語版 GNU/Linux/i686用の全言語共通の実行ファイル(CUI(ASCII),SDL両モード)。
I18N GearHead-1 binary programs on SDL & CUI(ASCII) for GNU/Linux/i686 for all languages.
- 高速化版とか開発者専用版とかは、サーバの容量の都合で
「SourceForge.JP - プロジェクト - Internationalization GearHead-1 - ダウンロード」
に置いてあります。
各ファイルの説明は
「ここは sourceforge.jp での作業用の wiki です。」
を参照。
動かし方:How to Play It
- 必要なアーカイブをダウンロードして、
全部を同じディレクトリに解凍します。
- SDLモードでプレイする場合は、
使用したい OS用の実行ファイル GearHead1100i18n.bin.* と、
CUI(ASCII),SDL両モード共通のデータのうち
使用したい言語の物 GearHead1100i18n.txt.*.lzh と、
SDLモード専用のデータ GearHead1100.image.lzh の、
3つが必要です。
カラーバリアフリー対応(あまり出来はよくないですが)で使いたい場合は、
GearHead1100.image.lzh を展開した後に、
GearHead1100i18n.image.color_barrier_free_test.lzh の内容を
上書きで展開して下さい。
- CUIモード(ASCIIモード)/GUIモード(422氏+らふ氏の表示モード)で
プレイする場合は、
使用したい OS用の実行ファイル GearHead1100i18n.bin.* と、
CUI(ASCII),SDL両モード共通のデータのうち
使用したい言語の物 GearHead1100i18n.txt.*.lzh の、
2つが必要です。
- 他の言語に変える場合、
インストール済みの言語版を消すか、
別のディレクトリにインストールする必要があります。
切り替えはできません。
- 環境設定ファイル arena.cfg にて、
好みに合わせて環境設定やキーカスタマイズを行います。
- arena.cfg に記述する各設定の説明は、
doc の下の j_Config.txt を見て下さい。
サンプルとして arena.cfg.* を同梱してあります。
arena.cfg と言う空のファイルを作り、
サンプルから必要なものを arena.cfg の中に混ぜて下さい。
日本語版メッセージデータを使う場合は、文字コードには eucJP を使って下さい。
英語版メッセージデータを使う場合は、文字コードには ISO8859-1 を使って下さい。
- カラーバリアフリー対応で使いたい場合や
SDLモードで色の設定を行いたい場合は、
arena.cfg.color_barrier_free_test を参考にして下さい。
CUI(ASCII)モードでカラーバリアフリー対応で使いたい場合や
色の設定を行いたい場合は、
ターミナルソフトや OS の環境設定で設定して下さい。
- MS-Windows で GUIモード(422氏+らふ氏のモード)を使用する場合は、
追加の環境設定ファイル win.cfg が必要です。
サンプルとして win.cfg.* を同梱してあります。
自分の環境に合ったサンプルを win.cfg と言う名前でコピーして下さい。
カラーバリアフリー対応で使いたい場合や
色の設定を行いたい場合は、
win.cfg.*_color_barrier_free_test を
win.cfg と言う名前でコピーして下さい。
フォントや色が好みに合わない場合、
win.cfg と言うファイルを作り、
サンプルから必要なものを win.cfg の中に混ぜて下さい。
この時、MS-Windows日本語版を使っている場合は、
文字コードには cp932 を使って下さい。
その他の言語版の MS-Windowsを使っている場合は、
それに合わせた文字コードを使って下さい。
- 文字コードの設定を行います。
- あとは、解凍した先にある
.\arena.sdl.exe もしくは ./arena.sdl (SDLモードの場合)、
.\arena.cui.exe もしくは ./arena.cui (CUI(ASCII)モードの場合)、
.\arena.gui.exe
(MS-Windows専用GUIによるCUIエミュレートモード(422氏+らふ氏の表示モード)の場合)、
を実行するだけです。
- SDLモードで、
英語だけしか表示されなかったり(英語以外が□になったり)
文字が全く表示されなかったり(全部□になったり)する場合、
環境設定ファイル arena.cfg の FontFileBig と FontFileSmall に、
使用したいフォントを「フォントファイル名」で指定して下さい。
- GUIモード(422氏+らふ氏のモード)で、
英語だけしか表示されなかったり(英語以外が文字化けしたり)
文字が表示されなかったり(文字化けしたり)する場合、
win.cfg の FontName に、
使用したいフォントを「フォント名」で指定して下さい。
- 画面表示が遅いとか、節電したいとか言う場合。
SDLモードの場合は、j_Config.txt の
「ノートPCの電池を長持ちさせたい場合や、節電したい場合」
の項目と言及しているオプションの項目を読んでください。
CUI(ASCII)モードで MS-Windows で読み上げソフト非対応で良いならば、
GUIモード(422氏+らふ氏のモード)を使って下さい。
CUI(ASCII)モードで MS-Windows で読み上げソフト対応が良いならば、
Microsoft製以外の高速コンソールソフトを探して下さい。
CUI(ASCII)モードで BSD系や Mac や GNU/Linux 等の場合は、
高速ターミナルソフトを使って下さい。
rxvt 辺りならば、GUIモード(422氏+らふ氏のモード)並に速いです。
注意や備考:Notes And Notices
- 日本語用の
シナリオ・メッセージデータ、メックデータ、セーブデータの文字コードは、
全て eucJP になります。
但し win.cfg だけは CP932 です。
また、ファイル名には いわゆる半角のアルファベットと数字と ()-=_. のみが
使用できます。
いわゆる日本語とかいわゆる半角カナは、ファイル名に使用できません。
- FreeBSD版の実行には、
FreeBSD/i386 6.x のライブラリ(FreeBSD/amd64 6.x WITH_LIB32 でも可)か
compat6x-i386 が必要です。
特に OS依存やバージョン依存の事はしていませんので、
NetBSD, OpenBSD, MacOS X の FreeBSD エミュレーションで
動くかもしれませんし、動かないかもしれません。
……、OpenBSD の FreeBSD-4 エミュレーションでは動かなかった。
- GNU/Linux版は何か色々ライブラリが必要な筈ですが、
やっつけ仕事でてきとーにコンパイルしてみただけなので、
どのディストリビューションで使えるかとか、どんなパッケージが必要だとか、
判りません。
取り敢えず、X が動いているならば、問題無い様にした筈ですが。
動かなかったら ldd か objdump -p で
何のライブラリが足りないか見て下さい。
取り敢えず
FedoraCore4系 BSD/Linux 2.4.2,
Debian 3.1(sarge) GNU/Linux 2.6.20.x,
Vine 3.2 GNU/Linux 2.4.xx
で動作確認済。
……って sarge のサポート終了してるし、どうしよう。
- β試験版: Pre-stable Releases:
最終の動作試験中です。
I18N version is now completed,
but not tested enough,
and testing now by the members of Japanese SHI-TA-RA-BA BBS.
- プログラム自体は多国語対応ですが、
メッセージデータは英語版と日本語版しかありません。
また、プレイ開始後の言語切り替えは無理です。
セーブデータに直接メッセージが記録されているんだもの。
The binary programs of I18N GearHead-1 support almost all languages,
but we have only two data sets, for English and for Japanese.
If you want other languages,
please translate message & series data set by yourselves.
"Memorandum of How to Make Your Language Edition"
is wrote in doc/I18N_howto.txt
in a archive file GearHead1100i18n.txt.* .
- gearhead1-i18n.sourceforge.jp
I18N版のソース・データの保管庫。
A repository for sources and data of I18N GearHead-1.
- 更新履歴、あるいは既知の問題点
Update histories and current jobs (Japanese only).
- 日本語版008 からの変更点一覧
A list of changed from the origianl (Japanese only).
コンパイル時に、よくあるかもしれないトラブル集:FAQ
- SDLモードで英語だけ表示されそれ以外は □ になる場合、
フォントファイルとして英語専用のフォントが指定されています。
arena.cfg ファイルにて使用する言語にあったフォントを指定してください。
- SDLモードでの日本語入力ができるのは、
UNIX系の場合は、
SDLにalissa-sabre氏のパッチ適用済の場合、
もしくは SDL-1.2.12以降(alissa-sabre氏のパッチが本家にマージされている)、
です。
MS-Windows系の場合は、
SDL では IME からの日本語入力はできませんので、
コンパイルオプションに -dWITHOUT_SDLIM を付けて、
スポイラー公開版作者氏による代替の入力ダイアログを使う必要があります、
その際、コンパイラオプションで -O2 や -O3 を付けると、
入力ダイアログが開いた瞬間にクラッシュしますので
(FreePascalはMS-Windows側がレジスタ保存をする事を想定しているのに、
MS-WindowsはFreePascal側がレジスタ保存をする事を想定している為、
結局誰もレジスタを保存せずに壊れるらしい)、
-O1 もしくは最適化無しにして下さい。
それ以外の言語の場合は不明です。
- UNIX系の場合、
SDLモードで日本語入力時に、
変換中の内容が画面外にはみ出して見えないことがある。
……、これはアプリケーション側ではどうしようもない。
- SDLモードを MS-Windows にて、非iconv でビルドした場合、
ヘルプメッセージの一部が文字化けします(日本語008版からの仕様)。
iconv付きでビルドすれば、文字化けしませんが、
別途 iconv.dll が必要になります。
- 文字列入力時に行編集が、バックスペースか全消去しかできない。
そんな頻繁に使わない部分を多機能にするのは面倒なので。
- 会話でメッセージが長い時に途中で切られて最後まで表示されないのは、
Pascal の仕様です。
- 選択メニュー(会話の選択肢とか、アイテム・商品一覧とか)で
1項目の表示内容が長いときに、
途中で切られて最後まで表示されないのは、
オリジナル(英語版)からある仕様です。
- 漢字圏の言語を使用する場合に
内部処理用の文字コードを UTF-8 に設定した場合、
メッセージが途中で切れている事があります。
これは、Pascal の仕様です
(Pascal文字列は255バイトまでしか扱えず、
UTF-8 で漢字系の言語を使う場合だと1文字で約3バイト必要な為、
約85文字で途切れてしまう)。
UTF-8 で表示したい場合は、
内部処理用の文字コードには EUC系を選択し、
表示文字コードで UTF-8 を選択して下さい。
- ISO-2022 は非対応です。
- CUIモード(ASCIIモード)では、
画面サイズが 80x25 よりも小さいと、正しく表示されません。
必ず 80x25 か、それよりも大きくして下さい。
オリジナル(英語版)からある仕様です。
- FreeBSD とか一部の OS にて、CUIモード(ASCIIモード)を
WideChar設定で動かすと、
日本語が全く表示されません。
これは、その OS用の FreePascal が WideChar, WideString 非対応な為です。
- CUIモード(ASCIIモード)を非WideChar設定で動かすと、
画面表示を script とかでログに記録しようとした時に
ログが悲惨な事になります。
これは非WideCharの時に、
Pascalが多バイト文字の連続表示を正しく実行できなかった為、
1文字毎に表示している為です。
- CUIモード(ASCIIモード)で表示内容のスクロールが遅いですが、
これは FreeBSD版 FreePascalが多バイト文字のスクロールを
正しく実行できなかった為(スクロールエリアが文字化けする)、
1行スクロールする毎にスクロールエリアを丸ごと書き直している為です。
- GUIモード(422氏+らふ氏の表示モード)は、MS-Windwos 専用です。
Unix系の CUIモード(ASCIIモード)の表示速度は、
rxvt辺りの高速表示ターミナルを使えば MS-Windows の GUIモード並になるので、
GUIモードいらないし。
- SDLモードで動かす場合、SDL の loadso と thread を有効にしてあると、
動作が不安定になったりクラッシュして落ちたりします。
loadso の方は、単なる構造上の問題。
スレッドの方は、理由は不明、私も知りたい。
- 香り屋版 iconv.dll を使うと、Runtime error が出て
強制終了してしまう事があります。
これは香り屋版 iconv.dll の仕様です。
Runtime error を出さない設定になっている
Sylpheed版 iconv.dll 等に交換して下さい。
- patch を実行する時は、改行コードを、
使用しているOS の改行コードに合わせてから実行して下さい。
コンパイルに必要な物:Required Softwares to Compile It
- unzip (zip が解凍できれば、別の物でも良い)(Uncompresser for zip. Another software is acceptable.)
- bzip2 (bz2 が解凍できれば、別の物でも良い)(Uncompresser for bz2. Another software is acceptable.)
- nkf (改行コードが変換できるソフトであれば、別の物でも良い)(End-of-Line Character Converter. Another software is acceptable.)
- iconv (内部文字コードを CP932 に変更する場合のみ)(Japanese Edition only)
- patch
- fpc : Free Pascal Compiler
- fpc-pthreads (Unix系のみ)(Unix-like OS only)
- fpc-x11 (CUI(ASCII)モードと MS-Windows では不要)(SDL-mode on Unix-like OS only)
- libiconv
- SDL (SDLモードのみ)(SDL-mode only)
- SDL_image (SDLモードのみ)(SDL-mode only)
- SDL_ttf (SDLモードのみ)(SDL-mode only)
- JEDI-SDL (SDLモードのみ)(SDL-mode only)
- xorg か xf86 (CUI(ASCII)モードと MS-Windows では不要)(SDL-mode on Unix-like OS only)
実行に必要なライブラリ: Required Libraries When Running GearHead
- libiconv
- SDL (SDLモードのみ)(SDL-mode only)
- SDL_image (SDLモードのみ)(SDL-mode only)
- SDL_ttf (SDLモードのみ)(SDL-mode only)
- png (SDLモードのみ)(SDL-mode only)
- xorg か xf86 (CUI(ASCII)モードと MS-Windows では不要)(SDL-mode on Unix-like OS only)
コンパイルの仕方: How to Compile
- オリジナル版総本山から
- GearHead-1 のソースコード(gh-1100-src.zip)
- GearHead-1 のSDL用画像データ(gh-1100-sdlimage.zip)(CUI(ASCII)モードでは不要)
を、
web cache 等から
- JEDI-SDLv1.zip
(Sun,24 Feb,2008 時点では、
JEDI-SDL 総本山にある v1.0 はバグがあって使えない。
現時点で修正されたか否かは未確認)
(Fri,18 Jul,2008 時点で、
未だにバグ修正されていないので、
必要なファイルをGearHeadのソースコードに同梱しました。
別途 JEDI-SDL を入手する必要はありません。)
を、
ここのサイトから、
- ソースコードのオリジナル版からの差分
(gearhead1100i18n.src.diff.bz2)
もしくはソースコード丸ごとパッケージ
(GearHead1100i18n.src.zip)
- データのオリジナル版からの差分のうち、使用したい言語の物
(gearhead1100i18n.txt.*.diff.bz2)
もしくはデータの丸ごとパッケージ
(GearHead1100i18n.txt.*.lzh)
を、
入手します。
- 適当な作業領域に展開します。
- 差分ファイルから必要なファイルを作ります。
丸ごとパッケージを利用する場合は、この段落の作業は不要です。
- GearHead-1 のソースとデータの文字コードと改行コードを、
内部処理用の物に変換します。
内部処理用の文字コードには、
UTF-8(漢字圏の言語を使用する場合)や
ShiftJIS や CP932 を使用しない事をお薦めします
(MS-Windows や、ロケールが UTF-8 の GNU/Linux でも)。
UTF-8 の場合は表示メッセージが途中で途切れたり(Pascalの仕様)、
ShiftJIS や CP932 の場合はコンパイルができなくなったり
(使用するコンパイラによって違う)、
する場合があります。
Unix系OSの場合、まず、オリジナル版の改行コードを変更します。
改行コードを LF にするならば、
Bourne Shell系のシェルからなら、
$ cd GearHead
$ for FOO in *.pas *.inc *.pp */*.txt
> do
> mv $FOO $FOO.org
> nkf -Lu < $FOO.org > $FOO
> touch -r $FOO.org $FOO
> done
を、csh系のシェルからなら、
% cd GearHead
% foreach FOO (*.pas *.inc *.pp */*.txt)
foreach? mv $FOO $FOO.org
foreach? nkf -Lu < $FOO.org > $FOO
foreach? touch -r $FOO.org $FOO
foreach? end
します。
- パッチを当てる。
内部処理用の文字コードを EUC-JP にする場合は、
% bzip2 -dc gearhead1100i18n.src.diff.bz2 | patch -p1 -N
% bzip2 -dc gearhead1100i18n.txt.*.diff.bz2 | patch -p1 -N
とします。
内部処理用の文字コードを UTF-8 にする場合は、
% bzip2 -dc gearhead1100i18n.src.diff.bz2 | patch -p1 -N
% bzip2 -dc gearhead1100i18n.txt.*.diff.bz2 | iconv -f eucjp -t utf-8 | patch -p1 -N
内部処理用の文字コードを ShiftJIS にする場合は、
% bzip2 -dc gearhead1100i18n.src.diff.bz2 | patch -p1 -N
% bzip2 -dc gearhead1100i18n.txt.*.diff.bz2 | nkf -Lw | iconv -f eucjp -t sjis | patch -p1 -N
内部処理用の文字コードを CP932 にする場合は、
% bzip2 -dc gearhead1100i18n.src.diff.bz2 | patch -p1 -N
% bzip2 -dc gearhead1100i18n.txt.*.diff.bz2 | nkf -Lw | iconv -f eucjp-ms -t cp932 | patch -p1 -N
とします。
I18N版では、
ソースコード内でのメッセージデータの直接記述を完全に排除した為
(ISO8859-1 での記述は一部残留)、
ソースの文字コードを変換する必要はありません。
- コンパイルする。
UNIX系のOS では、設定の自動判定スクリプトを用意してあります。
多言語版 SDLモードならば、
% /bin/sh ./build.sh sdl clean build
とします。
標準設定では内部処理用の文字コードは可変になっています。
内部処理用の文字コードを固定したい場合、
1文字1バイトの文字コード固定に変更した場合は encoding_singlebyte を、
EUC-JP 固定に変更した場合は encoding_eucjp を、
EUC-KR 固定に変更した場合は encoding_euckr を、
EUC-CN 固定に変更した場合は encoding_euccn を、
EUC-TW 固定に変更した場合は encoding_euctw を、
UTF-8 固定に変更した場合は encoding_utf8 を、
ShiftJIS 固定に変更した場合は encoding_sjis を、
CP932 固定に変更した場合は encoding_cp932 を、
指定して下さい。
多言語版 CUIモード(ASCIIモード)ならば、
% /bin/sh ./build.sh cui clean build
とします。
GNU/Linux や Solaris 等で、
OS標準添付の gconv等の iconv互換モードを使わず、
別途インストールした libiconv1 を使う場合は、
SDLモード、CUIモード(ASCIIモード)共に、
nolibiconv_plug nolibc_iconv オプションを追加して下さい。
MS-Windows方面の場合、一般的な環境では
コンパイラオプションの自動判定スクリプトの実行に
必要なソフトがインストールされておらず使えませんので、
./build.sh の初めの方に書いてある能書きを見て、
必要なものをコンパイラオプションとして指定して下さい。
概ね、
多言語版 SDLモードならば、
> C:\FPC\2.2.0\bin\i386-win32\ppc386.exe -Mobjfpc -g -dENABLE_ADDRESSBOOK -dPATCH_GH -dPATCH_GH_PARANOID_SAFER -dPATCH_JPSSDL -dPATCH_l0ugh -dPATCH -dPATCH_I18N -dSDLMODE -dCONV_UNICODE -dICONV -dWITHOUT_TERMINAL -dWITHOUT_SDLIM -dWITH_TENC -FiJEDI-SDLv1.0_extract -FuJEDI-SDLv1.0_extract -dPATCH_CHEAT -dPATCH_BACKPORT arena.pas
> copy arena.exe arena.g3.exe
> C:\FPC\2.2.0\bin\i386-win32\strip.exe arena.exe
あたりです。
最適化オプションを付けると、
実行して入力ダイアログを開いた時に落ちます。
多言語版「422氏&らふ(l0ugh)氏の表示モード」の表示モードならば、
> C:\FPC\2.2.0\bin\i386-win32\ppc386.exe -Mobjfpc -g -dENABLE_ADDRESSBOOK -dPATCH_GH -dPATCH_GH_PARANOID_SAFER -dPATCH_JPSSDL -dPATCH_l0ugh -dPATCH -dPATCH_I18N -dPATCH_CHEAT -dPATCH_BACKPORT -dGUIMSWINMODE -dWITH_TENC -dICONV -dHAVE_NO_TERMINAL arena.pas
> copy arena.exe arena.g3.exe
> C:\FPC\2.2.0\bin\i386-win32\strip.exe arena.exe
あたりです。
多言語版 CUIモード(ASCIIモード)ならば、
> C:\FPC\2.2.0\bin\i386-win32\ppc386.exe -Mobjfpc -g -dENABLE_ADDRESSBOOK -dPATCH_GH -dPATCH_GH_PARANOID_SAFER -dPATCH_JPSSDL -dPATCH_l0ugh -dPATCH -dPATCH_I18N -dWITH_TENC -dICONV -dPATCH_CHEAT -dPATCH_BACKPORT arena.pas
> copy arena.exe arena.g3.exe
> C:\FPC\2.2.0\bin\i386-win32\strip.exe arena.exe
あたりです。
MS-Windows版 FreePascal が WideChar, WideString に対応している場合は、
多言語版 CUIモード(ASCIIモード)にて、
> C:\FPC\2.2.0\bin\i386-win32\ppc386.exe -Mobjfpc -g -dENABLE_ADDRESSBOOK -dPATCH_GH -dPATCH_GH_PARANOID_SAFER -dPATCH_JPSSDL -dPATCH_l0ugh -dPATCH -dPATCH_I18N -dWITH_TENC -dICONV -dWITH_WIDECHAR -dCONV_UNICODE -dPATCH_CHEAT -dPATCH_BACKPORT arena.pas
> copy arena.exe arena.g3.exe
> C:\FPC\2.2.0\bin\i386-win32\strip.exe arena.exe
とする事もできます。
-dWITH_WIDECHAR を付けた方が、
表示が速くなる場合もあれば遅くなる場合もあります。
環境や OS によって変わるので、一概には言えません。
FreeBSD/amd64 で動かしたい場合、
FreePascal は FreeBSD/amd64 に未対応なので、
i386互換モードで作成しなければなりません。
多言語版 SDLモードならば、
% export LD_32_LIBRARY_PATH='/usr/lib32:/usr/local32/lib'
% export PC='/usr/local32/lib/fpc/2.2.0/ppc386'
% sh ./build.sh sdl clean build
多言語版 CUIモード(ASCIIモード)ならば、
% export LD_32_LIBRARY_PATH='/usr/lib32:/usr/local32/lib'
% export PC='/usr/local32/lib/fpc/2.2.0/ppc386'
% sh ./build.sh cui clean build
とかします。
環境変数 PC の中身や fpc.cfg や build.link.sdlmode.32.static.res の中身や
ld のアーキテクチャ指定は、
FreePascal をインストールしたディレクトリとか、
利用するOSとかに合わせて作って下さい。
- ./arena や ./arena.static や .\arena.exe が出来上がったら、
*.pas と *.inc と *.pp と xterm-boxdrawing/* と build.* と
*.ppu と *.o は消しても構いません。
- SDLモードの場合、
arena.cfg の FontFileBig と FontFileSmall を
使用したいフォントに変更します。
フォントを間違えると、
英語だけしか表示されなかったり(英語以外が□になったり)、
文字が表示されなかったり(□になったり)します。
- 実行する。
環境変数 GEARHEAD_LANG か環境変数 LANG に、
画面表示と文字入力に使う文字コード(ロケール)を設定して下さい。
EUC-JP ならば ja_JP.eucJP、
EUC-KR ならば ko_KR.eucKR、
EUC-CN ならば zh_CN.eucCN、
UTF-8 ならば ja_JP.UTF-8、
ShiftJIS ならば ja_JP.SJIS、
ISO8859系ならば ??_??.ISO8859-?、
です。
EUC-TW を使いたい場合は環境変数 GEARHEAD_LANG に zh_TW.eucTW、
CP932 を使いたい場合は環境変数 GEARHEAD_LANG に ja_JP.CP932、
と設定して下さい
(環境変数 LANG で指定すると、他のソフトに悪影響が出る恐れがあります)。
ロケール指定を省略した場合、
メッセージデータ内で指定した標準設定が使われます
(日本語用メッセージの場合は UNIX系では EUC-JP、MS-Windows系では CP932)。
あとはプレイするだけ。
% ./arena
もしくは
> arena.exe
Let's enjoy.
FreeBSD/amd64上でビルドする時の注意事項:Notes for FreeBSD/amd64 Users
FreeBSD/amd64 では、amd64ネイティブ対応の FreePascal が無い。
その為、
FreeBSD/amd64上で i386互換モードを使ってビルドして
i386互換モードで動かすか、
FreeBSD/i386 でビルドして FreeBSD/amd64 上に持っていって
互換モードで動かす事になるが、
SDL 回りで以下の様な相性問題が発生する。
- loadso機能を有効にしてあると、
FreeBSD/amd64上で実行する場合、互換モードで動いているにも関わらず
amd64用の動的ライブラリを読み込んでしまいクラッシュして落ちる。
loadso機能を無効にすれば、
正しく i386用の動的ライブラリを読み込み問題無く動作する。
- FreeBSD/amd64上で実行する場合、SDL でスレッド機能を有効にしてあると、
SDL_SetVideoMode, TTF_OpenFontIndex, TTF_OpenFont, SDL_CreateRGBSurface
辺りでスレッド切り替えをしようとした瞬間に SIGSEGV で落ちる……、
どこで落ちるかは毎回変化するが、
とにかく初めてスレッドを切り替えようとした時に落ちる。
FreeBSD/i386上で実行した場合も、わりと不安定になる。
理由は不明。
FreeBSD/i386上でビルドしようが、
FreeBSD/amd64上で FreeBSD/i386用にビルドしようが、
状況は変わらない。
SDL を amd64上で i386互換モードでビルドする時の手順は、以下の通り。
- SDL が依存しているライブラリ等は、
FreeBSD/i386用のバイナリパッケージを
/usr/local32 辺りに手動で展開した方が楽だと思う。
- ↑ で32ビットモード用ライブラリをインストールした場合、
/usr/local32/lib/lib*.la を消すか、
/usr/local32/lib/lib*.la の中に書かれている
/usr/local/lib を /usr/local32/lib に置換する。
忘れると、リンカが通らなくなる。
- SDLだけは、前述の通り、設定を変えた方が無難なので、
手動でやる必要がある。
- esound 有効でビルドする場合
(現在の GearHead は音回り非対応なので esound 有効にしても無駄)、
/usr/local/bin/esd-config を /usr/local32/bin/esd-config にコピーして、
esd-config中の /usr/local を /usr/local32 に置換する必要がある。
- 環境変数を設定する。
ccache とか /usr/local32 とか -g3 とか -O3 とかは適宜調整。
% export LD_32_LIBRARY_PATH='/usr/lib32:/usr/local32/lib'
% export CC='/usr/local/bin/ccache gcc -B/usr/lib32'
% export CFLAGS='-g3 -O3 -m32 -march=pentium-mmx -I/usr/obj/usr/src/lib32/usr/include -fno-omit-frame-pointer -pthread -I/usr/local32/include -I/usr/local/include'
% export CXXFLAGS=${CFLAGS}
% export LDFLAGS='-g3 -O3 -m32 -march=pentium-mmx -L/usr/lib32 -B/usr/lib32 -Wl,-rpath,/usr/local32/lib'
libtool は、*FLAGS の -B オプションを消してしまうので、CC側に書く。
- いつも通り configure。
% mkdir build
% cd build
loadso と threads を無効にする以外、
FreeBSD の ports と同じ設定にするならば、以下。
% ../configure --disable-loadso --disable-alsa-shared --disable-esd-shared --disable-arts-shared --disable-x11-shared --disable-osmesa-shared --enable-video-vgl --enable-video-ggi --enable-video-opengl --enable-video-aalib --enable-video-svga --disable-arts --x-libraries=/usr/local32/lib --x-includes=/usr/local/include --prefix=/usr/local32 --mandir=/usr/local/man --infodir=/usr/local/info/ --build=i386-portbld-freebsd6.3 --with-esd-exec-prefix=/usr/local32 --disable-threads
GearHead に必要な最低限の設定にするならば、以下。
% ../configure --disable-loadso --disable-alsa-shared --disable-esd-shared --disable-arts-shared --disable-x11-shared --disable-osmesa-shared --enable-video-vgl --enable-video-ggi --enable-video-opengl --enable-video-aalib --enable-video-svga --disable-arts --x-libraries=/usr/local32/lib --x-includes=/usr/local/include --prefix=/usr/local32 --mandir=/usr/local/man --infodir=/usr/local/info/ --build=i386-portbld-freebsd6.3 --with-esd-exec-prefix=/usr/local32 --disable-threads --disable-cpuinfo --disable-joystick --disable-cdrom --disable-audio --disable-oss --disable-nas --disable-arts --disable-video-opengl --disable-video-dga --disable-video-aalib --disable-video-ggi --disable-video-svga --disable-video-vgl
- ./build/.libs/libSDL* にできあがる。
GearHead の存在を知ったのは 2005年下半期頃。
Roguelike方面で名前が出されていた。
どんな物か調べ始めたのは 2006年2月。
web で検索すると、JunkMetal(鉄屑)方面でも名前が出ていた。
でも手を出したのは 2008年2月だったり。
そして JNetHack for PC-9801 の時と同様、
移植を行う所から始まり……、
そしてまたもや移植で力尽きる。
バトルテックのブームにも
メックウォーリアーのブームにも乗れなかったので、
メックのネタが、まるでわからない。
JNetHack に比べて、
日本語化データ集が大きい割に、
日本語化パッチが小さくてコンパイル時間がやたら早いと思ったら、
イベントやシナリオの処理は独自スクリプト言語を使っているのね。
その結果、プログラム本体は小さくなるけれども、
かわりにシナリオ・メッセージデータは大きくなっている。
……、そのキー配置は「ローグライク」では無いと思うのだが。
「ローグライクキー配置」といったら、
hjkl で、ついでに yubn、走る時は大文字。
テンキーを使う様では偽ローグライクキー配置。
そもそも GearHead って、
死ぬ様な目に遭っても死なない
(救急病院に担ぎ込まれて助かった事になる)ので、
それは Roguelike ではないと言う話もある。
個人的には、
死んでも死なずにいくらでもやり直せる辺り Roguelike の本流ではないけれども、
ランダムなシナリオ、ランダムなマップ、ランダムな登場人物、と言った辺りで
Roguelike の思想を受けているので、
Roguelike の傍流だとは思う。
それ以前に、Roguelike であろうがなかろうが、どうでもいいと思う。
本格派ローグライクキー配置を真面目に検討すると、
Look, Help, UseScenery, AddressBook の4つが、かぶる。
Help は ?、Look は /、UseScenery は a、AddressBook が +。
Attack, CalledShot, FullSpeed が、再びかぶって、
……きりがないな。
まるっきり最初から再配置した方が良さそう。
……、こんなんでどうだろう。
NormSpeed g 前進
FullSpeed G 全速前進
TurnLeft [ 左旋回
TurnRight ] 右旋回
Stop @ 停止
Dir-UpLeft y
Dir-Up k
Dir-UpRight u
Dir-Left h
Dir-Right l
Dir-DownLeft b
Dir-Down j
Dir-DownRight n
ShiftGears : ギアチェンジ
Look / 調べる
AttackMenu E 攻撃メニュー
QuitGame Q ゲーム終了
Talk c 話す
Help ? ヘルプ
SwitchWeapon w 武器変更
CalledShot t 狙い撃ち
Recenter C 中央表示
Get , 拾う
Inventory i 持ち物
Equipment P 装備
Enter > 入る
PartBrowser B 部位表示
LearnSkills W スキル習得
Attack A 攻撃
SelectMecha M メック選択
UseScenery a 周辺物使用
Messages x メッセージ
SaveGame S セーブ
Enter2 < 出る
CharInfo \ キャラクター情報
FirstAid e 応急手当
ApplySkill Z スキル使用
Eject q 緊急脱出
Rest . 休憩
History V メッセージ履歴
FieldHQ I (メックの装備を変更)
Search s 探索
Telephone T 電話
SwitchBV z 連射数変更
Reverse = 後進
SwitchTarget ; ターゲット変更
RunToggle - 速度変更
AddressBook r 電話帳
ToggleDrawWall 0 壁表示切替
ドアの閉め方が判らなくて、ソースとかシナリオデータとか探した。
UseScenery らしい。
……、ドアの処理までシナリオマクロになっているのね。
あらためて思うが、日本語版の移植をした方々って、
よくこれだけの量を翻訳したものだと、つくづく驚嘆する。
GearHead の場合、他の Roguelike よりも特にメッセージが多いから……。
オンライン版ギアヘッドが欲しいと言うのは同意。
でもやる余裕など無い。
開発とプレイの両方の意味で。
↑と同様、GearHead-2 の日本語化・多言語化を行う予定はありません。
■GearHead-2 を日本語化・多言語化しようとする方へのメモ(Memorandum for future pioneers of I18N GearHead-2)
まず、何はともあれ、ソースコード中に日本語を直接記述すると、
日本人以外には扱えなくなりますし、
違う OS を使っている人が扱えなくなります(再移植が必要になる)。
メッセージ分離型ローグクローンの要領で、
MsgString() 使うか、I18N_MsgString() を実装するかして、
外部ファイルに吐き出す必要があります。
上記の文中でも何度も言っていますが、
漢字を使う言語を UTF-8 で記述すると文字数制限が(略)、
ShiftJIS や CP932 で記述するとコンパイルできなかったり
Pos() かますと日本語2バイト目を ANK と誤判定して文字列データが壊れてしまったり
文字列の先頭からパースしないと文字の区切りが(略)、
ISO2022 はロッキングシフトの扱いが面倒だし
文字列の先頭からパースしないと文字の区切りが(略)、
EUC だと文字列の先頭からパースしないと文字の区切りがわからないし(略)、
UTF-16 な WideChar型はコンパイラの対応が不完全で表示できなかったり(略)、
さあ、どれがマシだ?。
文字列の扱いを、全て C型文字列に交換すれば文字数制限は無くなりますが、
ソースの変更量が莫大な量になります。
覚悟を決めて C型文字列に変更すれば、余計な制限は無くなるのですが。
ソース中の StatName や KeyMap など、
配列変数で記述されているメッセージは、
シナリオデータでの参照用タグとしても使われているため、
直接翻訳してしまうと、
プロット機能が動かなくなるとか、キーカスタマイズができなくなるとか、
問題が発生します。
よって、画面に表示する直前に、翻訳しなくてはなりません。
同様に、メックデータやパーツデータやアイテムデータやモンスターデータでも、
Name <> タグや Caliber <> タグなどは、
名前の定義だけではなく参照用タグとしても使われているため、
タグの内容をそのまま翻訳してしまうとシナリオが動かなくなります。
その為、GearHead-1 I18N では、
オリジナル表記のタグと、翻訳後のタグの両方を持ち、両方のタグを検索する、
と言う方針をとりました。
言語によって語順が違う為、
ReplaceHash() を多要素対応版に交換する必要があります。
オリジナル版の ReplaceHash() は語順固定専用なので注意、
メッセージデータを見ると一見多要素対応にも見えますが、
単に ReplaceHash() をネストして呼び出しているだけです。
ReplaceHash() を多要素対応にした後、
既存のメッセージデータも語順可変用に書き換えないといけません。
gears.pp の SAtt系関数では、< と > を特殊用途に使用しています。
文字列中に < や > が含まれていると、処理がこけます。
それから FormatChatStringByGender() では % を特殊用途に使用しています。
オリジナルの ExtractWord() は、スペース(#$20)を単語の区切りとして処理し、
1つの単語は1行の中で表示しようとします。
従って、日本語の様に、
文の先頭から最後尾まで一切スペースを含まない文字コードの場合、
1文丸ごと1行で表示しようとするか、
多バイト文字コードの途中で切ってしまうかして、
画面からはみ出たり文字化けを起こしたりします。
オリジナルの ExtractWord() の呼び出し側は、
単語毎に分割された文字列を再連結する際にスペースを挿入します。
よって、ExtractWord() を日本語・多言語化するだけでなく、
ExtractWord() を呼び出した側の再連結部分も
日本語・多言語化する必要があります。
オリジナルのままだと、文字列の表示に必要な幅を計算する際に、
Length() の返値をそのまま使っています。
多バイト文字コード対応の処理に書き換える必要があります。
オリジナルのままだと、文字列の表示がはみ出す場合のトリミング処理として、
Length() して Copy() している為、
多バイト文字コードの途中で切ってしまう場合があります。
上に述べてきた様な、「特に危ない処理」は、
texutil.pp に集中していたかと。
FreePascal の Write() や WriteLn() は、
OS によっては2バイト文字コードの表示に対応していない場合があります。
また、多バイト文字コード(UTF-8 や EUC の3バイト文字など)の表示には
一切対応していないと思われます。
ファイル名は、英数以外は適当にエンコーディングした方が無難かと思われます。
これまでのところ、翻訳する時、固有名詞は英語表記のままにする、
と言う方針が立っています。
翻訳担当者によって訳が違うとプレイしていて意味がわからなくなるし、
翻訳単語を決定するにも意見が乱立してまとまらないし、
r と l の違いがわからなくなるとか、
微妙なニュアンスが、とか。
色々あって。
そもそも根本的なプログラムの作り方の問題がありまして。
オリジナルのソースでは、
「とある一群の処理の最初に静的変数にポインタを代入してから、
分岐した先でその静的変数を使って処理を行う」
と言うソースの書き方が頻繁に行われているのですが。
ソースをじっくりと追いかけていくと、
- 処理の引数として変数が渡される。
取り敢えず、
処理を[処理 P1]、
引数の変数を[変数 V]と呼ぶことにする。
- [変数 V]へのポインタを静的変数[静的変数 SVP]に代入。
- 一旦、[処理 P1]の呼び出し側[処理 P0]に戻る、
もしくは、別のソースに書かれている処理[処理 P2]に移動する。
- [処理 P0]とか[処理 P2]の中の処理で、[変数 V]のメモリを解放。
- [処理 P1]の続きを呼び出す、もしくは[処理 P1]に戻る。
- [処理 P1]の続きの処理で[静的変数 SVP]を使って処理を行う……。
……行うんだけれども、
[静的変数 SVP]の実体である[変数 V]は既に存在していないので、
存在しない領域、あるいは、別の変数に再利用されている領域に対して、
読み書きを行ってしまう。
ということを行っている問題があります。
世に「不正なメモリアクセス」
(英語に訳すと Memory Access Vulnerability かな?)
と言われるものです。
……。
これの完全で簡単な解決方法って……無いんだよね。
「スマートポインタもどき」の処理を実装するか。
地道に全てのソースを読んで治すか。
あるいは諦めて「プレイを終了するまでメモリ解放をしない」
ようにしてしまうか。
……、
拙作版では、この3種を混合して対策としています。
すまん、あと何があったか忘れた。
■謝辞 (Thanks to / Credits)
GearHead 原作開発者 Joseph Hewitt氏および協力者諸氏。
日本語版 GearHead 創始者 しみてい氏および協力者諸氏。
日本語版 GearHead ASCII版の主開発者にして主翻訳者 らふ氏および協力者諸氏。
過去の記録から発見できたぶんの協力者諸氏:
422氏、912氏、+7boomerang氏、Ago氏、Fin.氏、shimo氏、Alba(banko)氏。
日本語MS-Windows用 ASCII表示の高速表示モード(GUI)の主開発者 スレ2号機422氏 および協力者諸氏。
日本語版 GearHead SDL版の開発者にして日本語雑談機能の改良者 スレ4号機937氏および協力者諸氏。
gearhead日本語スポイラー 管理者氏および協力者諸氏。
したらば GearHeadスレ勇士達および匿名希望の協力者氏。
……すみません、全員ぶんリストアップしてみようとしましたが無理でした。