したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

小技・ちょっといいこと

1high-life:2005/09/20(火) 20:16:53 ID:RDHODZYI
クライアントに関する小技や何か便利な技がありましたら、
このトピックに投稿してください。


http://page.freett.com/high_life/bsw_no_susume/index.html

2high-life:2005/09/20(火) 20:19:32 ID:RDHODZYI
和訳サイト・侍掲示板より転載。ketchupさんの投稿です。

「MacOS X クライアントの文字化け対策」

Macクライアントで文字化けを直す方法について説明します
(SanJuanなどの各ゲームパッチの方は, ソースに手を入れなくてはならないので
ここではチャットの部分について説明します)

念のため, アプリケーションのバックアップはとっておいて下さい.

2つやることがあります
1. propファイルで日本語フォントを指定します
foType = Osaka
のようにしてください. Osaka-Mono, HiraKakuPro-W3とW6,
HiraKakuStd-W8, HiraMaruPro-W4, HiraMinPro-W3とW6でも
いいと思います. 確認してません. すいません.

2. 日本語リソースのダミーを作ります
MacOS X のアプリケーションは, 実はアプリケーションバンドルという構成のフォルダで...
って, そんな細かい説明はいりませんでした. すればいいことだけ書きます. すいません.

アプリケーション本体「BrettspielWelt」をコントロールキーを押しながらクリック
メニューが出てくるので「パッケージの内容を表示」を選びます.
パッケージの中身が表示されるので, Contents -> Resources とフォルダを開いて
行きましょう.
Resourcesフォルダの中には, 「en.lproj」というフォルダがあると思います.
実はこれはただの空っぽのフォルダです. どのソフトでも空っぽということではありません.

話がそれました. Resourcesの中に, 同じように新しいフォルダを作ります.
名前は「ja.lproj」にしてください.

これで終わりです. ソフト起動し直してみてください.

3high-life:2005/09/20(火) 20:20:29 ID:RDHODZYI
ketchupさんの投稿より、転載。

その後, アプリケーションバンドルを作り直してみました.

改善点
起動と描画が少し速くなった
propファイルの設定がいらなくなった ( してもいいけど )
ファイルメニューの「終了」で, 終了できるようになった
日本語化パッチの作成が簡単になった
テキストの表示が少し大きくなって読みやすくなった

既知の問題点
起動して最初にチャットのテキストフィールドで入力しようとすると
入力されない. チャットテキストが表示されるビューなどを一旦
触ったりしてフォーカスを移した後は, 問題なく入力できる

こんな感じです. これって欲しい人います?

4high-life:2005/09/20(火) 20:21:26 ID:RDHODZYI
ketchupさんの投稿より、転載。

描画のタイミングが遅れる問題の原因が分かりました.
Apple の 次期アップデートで修正される不具合でした.

来月辺りには直るんじゃないかなとおもいます.
Apple Developer Connection に登録すれば, DP版がダウンロードできますので
お急ぎの方は, そちらでどうぞ. (ちなみに開発者登録は無料です)
描画が結構速くなります.

描画のタイミングの問題以外では, 下に書いた以外に

6. /tell チャットのウインドウがきちんとした大きさで開く
7. 日本語の文字化けの改善
8. アンチエイリアシング有効
9. ヒープサイズの改善
10. アイコンが綺麗に!

の変更点があります. 結構快適になったので, パッチをアップロードします.
よろしければ使ってみて下さい.

http://www2.ezbbs.net/30/high-life/img/1126345272_1.zip

5追放されました。:追放されました。
追放されました。

6high-life:2005/09/20(火) 20:23:37 ID:RDHODZYI
ketchupさんの投稿より、転載。

10日に書いた Java のアップデートが出ましたので, 開発者でない人も
普通に使えるようになりました.

ちなみに Java のバージョンは 1.4.2_07 から 1.4.2_09 にアップデートされます.
1.4.2_09 以降で不具合が解消されます.
Java5 Release1 では動作検証してません.

7high-life:2005/09/20(火) 20:24:23 ID:RDHODZYI
ketchupさんの投稿より、転載。

「ゲーム日本語化パッチ パック」

とりあえず必要な サンファンとプエルトリコだけ
画像ファイルや「ゲーム名.strings」のリソースファイルは含んでいません
ついでなので, ゲーム中に使われるフォントをpropファイルで指定できるように
してみました.

propファイルに
jaNormalFont = フォント名
と指定します.

他のゲームでパッチが必要なものはありますか?
なんなら作りますが

あそうだ, 重要なことを忘れてました

Mac OS X に対応しました
逆に Mac 以外では動作検証していません. 動くと思うんですけど.

8ketchup:2005/09/21(水) 02:30:26 ID:RBBZhHhY
7 のパッチセットを暫定的に以下のところに置きました.
恒久的に置いておけるか(忘れちゃうかもしれないし...) 分からないので, お早めに.
ふう, ファイルのアップロードだけでへばりそう.
ページ作るのは大変ですね. いつもすごいなあと思っています.

http://ketchup.sakura.ne.jp/bsw/BSW_GamePatchPack.zip

9high-life:2005/10/25(火) 20:56:15 ID:2M./3kSw
新人増加age

10high-life:2006/01/22(日) 15:28:07 ID:wEYFYu0w
Mac使いいるかもage

11ketchup:2006/01/22(日) 19:54:19 ID:rR7F9seg
だれだれ?

12ketchup:2006/01/28(土) 19:34:03 ID:uo9Jmirc
そうえいば, 前からMacクライアントでは, なんで出来ないんだろうと思っていた事が
解決したので書いておきます.
それは, 街マップでの移動です. 以前のクライアントでは, たしかコントロールキーを押しながら
マップをクリックすると, そこがビューの中央になるように移動していたのですが,
クライアントが改定されてから出来なくなりました.
なんでかな, と思いながら, 一方あんまりマップの移動なんかしないので放置していたのですが
おとといコマンドキーを押しながらマップを触るとちょこっと画面が動きました.

???

以前にも, いろんなキーを押しながらマップ画面をクリックしてみたりはしていたのですが...

どうも, ドラッグで移動ができるようになっていたみたいですね.
というわけで, 移動の方法は

コマンドキーを押しながらマップをドラッグ, ということで.

13ketchup:2006/04/20(木) 16:02:11 ID:/823r3GU
Mac版Javaについて
J2SE50Release4が出てます。Quarzレンダリングがディフォルトでオンになっているので
(いや、どうだろ。確認してないので…。リリース直前まではオンになっていたので、そのまま
だと思いますけど…リリースノートをまだ読んでないので間違ってるかも)
それなりの機種なら、結構快適になるのではないかと。
多分アップデートかけても、Macクライアント用文字化け対策パッチでは Java 1.4.x で起動してしまうので、
その時はアプリケーションパッケージを開いて、Info.plistのJVMVersionを「1.5+」に書き替えて下さい。
必要ならアップデート出しますけど、Mac使ってるのわたしだけですよねぇ…

14ストーンR:2006/06/03(土) 14:53:59 ID:8SyIKEmM
 私もMacユーザーです。
 ようやくBSWの使い方が分かってきました。

 まだ不明な点が多いのでいろいろご教授願います。

15ketchup:2006/06/03(土) 16:40:34 ID:kEcGyG9k
最近は顔出せていないのですが、お会いしたときはよろしくー

16ストーンR:2006/09/26(火) 02:16:59 ID:Gb5JMBUE
ketchupさん

 「カタン」は、プレイヤー情報がドイツ語だったりします。
 発展カードについてや、最長交易路だとか。
 画像については、先人の素晴らしいデータを使わせてもらってます。
 パッチの作り方がわかれば自分でチャレンジしたいとは思ってますが、スキルがなさすぎます。

17ketchup:2006/09/26(火) 21:40:39 ID:X5SFfECI
もしかして、黄色のバックに黒文字で
「Rohstoffkarten:」
「Sonderkarten:」
「Ritterkarten:」
とか表示されるところですか?

18ketchup:2006/09/26(火) 22:58:29 ID:X5SFfECI
パッチを作ってみました。試してみて下さい。
一応、Mac以外でも動くと思います。
あとで、インストールドキュメントを書きます。(これが一番時間がかかるんだ... ;-(
同梱の LocalizeUtils.class (前回パッチと全く同じものです)を

BrettspielWelt/de/brettspielwelt/client/LocalizeUtils.class

Dice.class を

BrettspielWeltForPlay/de/brettspielwelt/client/boards/games/Dice.class

に入れればOKです。

ttp://ketchup.sakura.ne.jp/bsw/Siedler-J-patch.zip

では

19ストーンR:2006/10/02(月) 01:45:50 ID:b2r6LJXk
 ketchupさん、いつもお世話になります。
 今回も早々の対応、感謝感激です。
 問題なく動作しました。
 日本語化されるとすごく気持ちよく快適です。
 ありがとうございました。

20ketchup:2006/10/02(月) 18:18:19 ID:ZSBDRydc
いえいえ、うまくいって良かったです。
カプコンの公式ルールに従って「最長交易路」と「最大騎士力」を
「ロンゲストロード」と「ラージェストアーミー」にしたほうがいいのかなと、
ちょっと悩みました。(どっちが分かりやすいんでしょうね。)
いっそ勝手に「インフラ王」とか...

21ストーンR:2006/10/04(水) 01:10:37 ID:KV6LC9Ec
 私はトライソフト版に慣れているので、「最長交易路」「最大騎士力」の方が馴染みやすく、こちらの方が嬉しいです。

 あと、お時間のある時にでも、「王への請願」や「操り人形」にもチャレンジして頂けませんでしょうか?
 また日本語パッチの製作方法についてもご指導頂けると、何かしら貢献できるのではないかと思ってみたりしています。

22ketchup:2006/10/04(水) 01:58:26 ID:ChDL7K0.
では、そのままで。
「王への誓願」と「操り人形」については、あとで見てみますね。
ところで、パッチの制作方法は、ここに書いてもいいのでしょうか? >high-life さん
オフ会の話題で盛り上がってるところでスレが上がってしまうと悪いかなあ、と心配です。
大したことしてる訳じゃないので、有用かどうかも分からないし...

23Miieko@市長:2006/10/04(水) 10:21:30 ID:pA0GadJE
high-life さんじゃないけど、いいんじゃないですかね。
パッチの話は有用だと思いますよ。

ところで、Windows用のパッチでも「Javaだから動くんじゃないかなあ……試したことないけど」と当方の専属プログラマーが申しておりました。一応、「王への誓願」と「操り人形」、実験前にしっかりバックアップとっておいて、だめもとで試してごらんになっては。だめだったらすみません。

彼も私も、一応Mac歴あるんだけど、なにぶん十年も昔の話だし。

24ketchup:2006/10/04(水) 20:45:24 ID:ChDL7K0.
> norinさん
安心しました。気合いに感謝 :-)

> Miiekoさん
多分Jiroさんのパッチでは、フォント指定が"Helvetica"になっていると思うのですが、
そこで文字化けします。font.properties を書き換える対策も検討したのですが、
Mac ではこの方法が使えません。(と思います。Mac OS 9 の MRJでは、代替の方法があります)
最初にサンファンのパッチを作ったときは、SansSerifにしていたのですが、
最近は、propファイルからフォント名指定を読んで、指定が無いか無効なフォント名なら
Macの場合"Osaka"、それ以外(Winとか)の場合は"Helvetica"にする、という方法にしています。
安直かも。
もし、JiroさんのパッチでMacの場合にOsakaとかにして貰えるなら、全部解決かもw
あと、リソースファイルを読み込むときのファイルパス辺りに、何かあったような...忘れちゃった。

25Miieko@市長:2006/10/04(水) 22:46:32 ID:pA0GadJE
ketchupさんへ

おおう、了解です。伝えておきますね。

どこか近所にMacの使える所ないかな……。

26ketchup:2006/10/04(水) 23:27:39 ID:ChDL7K0.
期待できそう。:-)

では、簡単にパッチの作り方について。
基本的には、パッチの対象になるクラスファイルを逆コンパイルして、ソースを修正、
コンパイルしてテスト、という流れです。
逆コンパイルには、昔は jad を使っていましたが、最近は Jode を使っています。
JodeはGUIで起動して使うこともできますが、コピーペーストが面倒なので、
コマンドラインから使います。

export CLASSPATH="jodeが置いてあるフォルダのパス/jode-1.1.2-pre1.jar:$CLASSPATH"
alias jode='java jode.decompiler.Main'

jode -c ~/PATH_TO/BrettspielWelt de.brettspielwelt.client.boards.games.SanJuanBoard > SanJuanBoard.java

使っているシェルによってちょっと違いますが、こんな感じです。ちなみにわたしは zsh
別にコピーペースト面倒じゃないよ、という人はそれで全然かまいません。

GUIから使う場合の手順
「Options」メニューから「set classpath...」で出てくるダイアログにBSWのフォルダのパス
を入れて「了解」とか「OK」とかのボタンを押します。
3分割表示の左のビューから逆コンパイルしたいファイルを探して選択すると
右上にソースコードが出てきます。コピーペーストとかドラッグドロップしてファイルに保存
します。ファイル名は「AAA.class」を逆コンパイルした場合は「AAA.java」にしてください。

つづく

27ketchup:2006/10/04(水) 23:50:44 ID:ChDL7K0.
次に、ソースコードの修正です。
日本語表示できない理由は3点あります。

まず、リソースファイルがないこと。日本語化した翻訳文字列が無いと日本語化できません。あたりまえー :-)

次にエンコーディングの問題です。BSWでは、国際化は欧米までと決めているのか、.strings
ファイルを読み込むときに、ISO-8859-1決めうちで読み込みます。UTF-8にすればいいのに...
つまり、ここを .strings のエンコーディングと同じにすれば文字化けしません。
Shift-JISとかEUC-JPとかにすればいいわけですが、ファイルエンコーディングを統一しちゃうと
間違って違うエンコードで保存しちゃって化けちゃったとかのトラブルも面倒かなと思い
JISAutoDetectを指定しました。S-JISとかEUC-JPとかを自動でやってくれます。
たしかJava 1.4 の何処かのバージョンで、上手くいかないとかのトラブルがあった気もしますが
気にしないことにしました。強い子です。

最後にフォントです。ここらへんは環境依存ですね。Windowsだとそのままでも文字化けしない
ようです。

つづく

28ketchup:2006/10/04(水) 23:55:30 ID:ChDL7K0.
コンパイルの手順です。

javac -encoding utf-8 -classpath ~/PATH_TO/BrettspielWelt SanJuanBoard.java

とすると SanJuanBoard.class が出来上がり。PATH_TOの所にはBSWのフォルダのパスを入れて下さい。

29ketchup:2006/10/05(木) 00:04:11 ID:bcJyAGLs
と、こんな感じですかね。ああ、そうだソースの修正のところがちょっと情報足らないかも。

翻訳文字列について

文字中に「|」(縦棒)があるときは、そこで改行されるという意味です。
翻訳文字列は、ソースコードに直に書いてある時と、SanJuan.strings のように別ファイル
になっている時があります。

30ketchup:2006/10/05(木) 00:40:40 ID:bcJyAGLs
ちょっと訂正。上で.strings と書いてあるのは .string でした。

エンコード指定について

文字列の読み込みを行っているのは、Client.class です。
だから、普通に考えれば、これを直せばいいじゃん、やったー?(^ ^)/、と思うところです。
ここで問題点が一つ。Client.class は頻繁にアップデートがかかるんです。
アップデートで置き換えられちゃうと、パッチが全滅。
(そこで、アップデート前の Client.class を元にした 修正 Client.class を
入れちゃうと、アップデート内容によっては、他の所にトラブルが。)
じゃ、どうしよう、というわけで、文字を読み込んでいるところを切り出して
各ゲームパッチで文字列を読み込む所では、それを使う、という方法にしました。
パッチごとに同じ機能をコピーしてくると後で混乱しそうなので、
LocalizeUtils.class という別クラスにしました。ネーミングが悪いなあ...

31ketchup:2006/10/05(木) 00:49:10 ID:bcJyAGLs
Client.class で文字列を読み込んでいるのは、getStrings()というメソッドです。
切り出すのは、ここら辺。

あとは、init() と setLanguagee() あたりを直せば日本語化完了です。
ソースコードに文字列リソースが直に書いてあるものは、ここの手順がいりません。

init()では、languages.txt を見て、propファイルで指定した言語リソースが
このゲーム用に用意してあるか確認しています。なければディフォルトで "de" になります。
languages.txt に ja を加えて、propファイルで"ja"を指定してもいいんですけど、
languages.txt もよくアップデートがかかるんですよね。その度に入れ替えるのは大変。
「日本語化パッチだし」と割り切って、そこらのコードはバッサリ削って"ja"にしてしまいます。

setLanguage()は各ゲーム用にリソースファイルを読み込むところです。Client.class への
問い合わせもここでやっています。 これを切り替えて、文字化け無く読み込めばOKです。

32ketchup:2006/10/05(木) 00:57:59 ID:bcJyAGLs
こんな風にやってます。

アトリビュートとかは、これとは別の方法を使わないと無理です。
文字列を直接サーバーから取ってきているので、流れをブロックするとか、そんな感じで。
つじつま合わせるのが大変そうだけど。

おわり
分かりづらい文章ですいません。

33ストーンR:2006/10/06(金) 00:18:15 ID:lVG1wYnM
 解説、ありがとうございます。
 今の私のスキルでは難しそうですねぇ;。
 でも、チャレンジしたいと思いますので、ご教授下さい。

34Jiro:2006/10/06(金) 20:44:19 ID:v4pHh2Ns
Jiroです。

Ketchupさんがノウハウ公開してくれたので・・・。

getStrings()メソッドについて

 私の場合は、getStrings()のコピーをShift_JISに変更したものを
 該当ゲームのクラスに入れて、

 元>Hashtable hash = master.getStrings(nation, "SanJuan.string");
 先>Hashtable hash = getStrings(nation, "SanJuan.string");

 のようにClient.classを読みに行かないように変更しています。
 別クラスにしてパッチの独立性が無くなるのを嫌ったんですが、
 他のパッチにコピペで同じコードが入ってしまうのが難点。

 文字コードはShift_JIS固定にしてます。
 今思えばUTF-8にしたほうが良かったんですが、
 リリースしちゃった後から日本語文字列リソースを変更するというのも
 逆に混乱を招きそうだし・・・。
 

言語選択について

 getStrings()はnationを取るようにしたので、
 『「日本語化パッチだし」と割り切って、』
 ChooseString()する代わりにnation="ja";としました。

操り人形について

 操り人形はメッセージが全部ドイツ語でサーバーからくるので、
 翻訳のためのモジュールでメッセージの置き換えをやっています。
 ドイツ語文字列と、対応する日本語文字列を全部内包しています。
 ログ取って試験するのが結構大変でした。

 本家でバージョンアップされるとまた作業発生なので、
 「拡張入れるな〜」とか念じてたりして。

 ちなみに本家版のバグもこっそり直してあったりします。


後はだいたいKetchupさんの書いてくださったのと同じですね。

んで、本題。
フォントについて

 JREのWin/Macの差で問題になってるのが
  Win:Helveticaで日本語表示すると、一応漢字が出る。
  Mac:Helveticaで日本語表示すると、文字化けする。
 っていう違いだと思っていいんでしょうか?
 んで、font.properties使って、Helvetica->Osaka へのマッピングを指定しても駄目、と。

 調べてみたら、HelveticaはJavaの共通フォントじゃないんですね。
 たまたま両方のプラットフォームで使えたってだけのようです。
 (ttp://ja.wikipedia.org/wiki/ヘルベチカ
  によるとWindowsでは実際にはArialが使われるらしい)

 つーことは、
 Helvetica→sansserif
 Times New Roman→serif
 に置換しておけばWin/Macとも文字化けせずに済む、つーことですね。

 >Ketchupさん
 とりあえずclassファイルだけの「王との請願」でフォント名書き換えてみたので、
 Macで表示できるかどうか試してみてください。
 ttp://www.aqua.gr.jp/jiro/bswKronepathch_20061006.zip

 まともに動くようなら、他のも同じ処置をしてみます。

35ketchup:2006/10/07(土) 00:48:36 ID:t67qnxYs
>StoneRさん
では、その時に。((^ ^))/
>Jiroさん
操り人形のパッチ制作は、本当にご苦労さまでした。ホント手を出さなくて良かった...ホッ :-)
王との請願のパッチを試してみましたら、文字化けはありませんでした。

Helvetica についてですが、フォント自体の問題というか、文字パレットから溢れた場合に
どのフォントで補完するかというところで違いがあるようです。普通にAppletを作って
ブラウザから起動すれば、Helveticaを指定してあっても、日本語は文字化け無く表示されます。
アプリケーションバンドルの方で吸収できるのでは無いかなと予想しつつ、放置して現在に至る、
という...... SansSerifやDefaultは日本語フォントで表示されるので、言語環境の情報がいって
ない、ということは無いと思うんだけどなあ。
ちなみに Apple実装のMac OS X のJAVAには、そもそも font.properties がありません。
正確には Public Beta の頃と、初期の Mac OS X Server にはあったと思います。
その後、起動時のオプションでどうにかしろ、とかそんな話だったかな。
(これが、ちょっと試したら効かないんだもの。)

36Jiro:2006/10/07(土) 01:03:34 ID:3iXfujNk
>Ketchupさん
 確認ありがとうございました。
 これで安心して修正できます。
 appletの場合は、ブラウザが文字描画に噛んでるんですかねえ。
 (Javaは普段使わないんで間違ってるかもしれないんだけど)
 共通フォントを使わないBSWは、行儀悪いコードなんでしょうねえ。

 でも、「操り」は使う文字列が限定されてるからまだましです。
 (2〜3ゲーム分のログで出尽くしました。)
 アトリビュートは絶対無理(w
 本家から辞書もらわない限り無理。

>high-lifeさん
 近いうちに「王との請願」も含めて、フォント直したやつ送ります。

37Jiro:2006/10/07(土) 20:31:21 ID:3iXfujNk
>Ketchupさん
 これまで私が作った分のパッチ全てにフォントの対処を入れました。
 お手数ですが、動作確認をお願いしてもよろしいでしょうか?
 バイナリ: ttp://www.aqua.gr.jp/jiro/bsw_Jp_patch_20061009.zip
 ソース: ttp://www.aqua.gr.jp/jiro/bswpatchsrc_20061009.zip

 (これまで出した5ゲーム分全部まとめてあります)

38ketchup:2006/10/08(日) 01:15:57 ID:DRwChgmc
はい了解しました。

39ketchup:2006/10/08(日) 04:44:49 ID:DRwChgmc
確認しました。結論から言うと「王への請願」以外のゲームは動作しません。

原因についてですが、getCodeBase()で帰ってくるURLが無効であることに依ります。
file:///localhost...... が帰ってきて欲しいのに file://localhost...... になってしまうん
です。なんでスラッシュが抜けるかな。

「サンファン」「プエルトリコ」については、bubbleTextの画像生成ができずに、
結果として文字が表示されません。

「フィレンツェの匠」「操り人形」については、ゲーム画面に移動できません。
(というか描画できないので移動してないように見えるだけですが)
詳しく見ると「操り人形」の場合、.string ファイルから画像へのパスを組み立てていますが、
.strings ファイルのパス生成に失敗して読み込みが出来ていないので、画像へのパスも
生成できません。依って画像が表示できなくなっています。
「フィレンツェの匠」の場合は、画像の読み込みは出来ているいますが、その後
帰ってこなくなります。
文字列を配列にセットする部分かなあ。ここが謎。画面までは出るサンファンや
プエルトリコとほとんど同じことをやっているのに、なんでここで流れなくなるんだろう。
変わっているところは(String)でキャストするか、toString()で変換するかというところ...
って、帰ってこなくなる部分を特定した方が早そうですね。

画像の読み込みがOKなものもある原因についてですが、多分URL(strings)とURL(strings, spec)
の違いかと思います。

いづれにせよ、getCodeBase()のパスをちょっと加工してやれば直るので、それが一番簡単
かな、と思います。というか、今までのパッチではそれで対処してました。

ここにコード書いて大丈夫かな?
パス生成するところでこんな感じにします

String codeBase = "";
if ( isMacOSX() ) {
String userdir = System.getProperty("user.dir");
codeBase = new String("file://" + userdir + "/");
} else {
codeBase = client.getCodeBase().toString();
}

で、OSの判定はこんな感じ

public boolean isMacOSX()
{
String osName = System.getProperty("os.name").toLowerCase();
if ( osName.startsWith("mac os x") ) {
return true;
} else {
return false;
}
}

なんて、やっつけのコード... :-)
というわけで報告終了ーー(・∀・)ゞ

40Jiro:2006/10/08(日) 08:18:55 ID:9KHhKqDo
>ketchupさん
 ありがとうございました。
 おそらく上記のコードを入れるのはそんなに手間じゃないと思います。

 んで、ちょっとだけ納得いかないのは、オリジナルは動いてるってとこです。
 なんで改造すると駄目になるんでしょうかね?

 Javaでシステム依存コード書きたくない、というのもあるので、
 Linux入れてLinux版の動作も確認してみます。
 Unix系なのでMacOSと共通するところがあるかもしれません。

41Jiro:2006/10/08(日) 22:07:41 ID:9KHhKqDo
わかったことまとめ

・Linux用の日本語化は出来なかった。
 VM付き、VM無し+JRE、の両方の組み合わせで日本語が出ない。
 (VM付きのは#$##とかに、JREのは□□とかになる)

・Client.getString()を呼び出すと、動作する。
 もちろんラテン系しか読んでくれない。

・getCodeBase()は("file:/"+カレントディレクトリのフルパス)を返す。
 Windowsだと、D:\home\bsw\ => file:/D:/home/bsw/
 Unix系環境(Linux,MacOSX含む)では、/home/bsw/ => file://home/bsw/
になる。
 すると、URL::OpenStream()は、schema://server-name/path と解釈するので
 本来のパスにアクセス出来ない。
 UnixでgetString()で止まる原因はこれらしい。

・ClientクラスからOpenStream()してるものは正常に動作するのに
 コピー版だと止まる。原因は不明。
 画像が正しく読めるのも同じ原因みたい。

・対策案として、getString()で、file:// => file:/// に置換してみる、
 という案を考えついた。修正が1行追加で済むし、OSを読む必要もない。

 Linuxではこれをやると□□□□□・・・なポップアップが出るようになったので
 たぶんいけると思う。


>ketchupさん
 一日調べて上のようなことが分かったんですが、どう思いますか?
 ご意見をお聞かせください。


 あと、昨日のソースに以下の修正を入れて試してもらえませんか?
public Hashtable getStrings(String nation, String myFile) {
Hashtable myStrings = new Hashtable(128);
String codeBase = master.getCodeBase().toString();
codeBase = codeBase.replaceFirst( "file://" , "file:///" );// <<<<ここを追加

 サンファンとかどれか一つでいいです。

42ketchup:2006/10/08(日) 22:42:34 ID:DRwChgmc
ちょっと時間がとれないので、お返事だけ。
getCodeBase()で帰ってきたパスは、相対パスと同時に使われることを想定しているので
文字列操作でパスを合成するのはダメなのかな、と予想。(テキトーなこと言ってるかもしれません)

String path = getCodeBase().toString() + "to_file_path"
URL url = new URL( path ) ではだめで

URL url = new URL(getCodeBase(), "to_file_path") にするとか。

で、いちいち全部のURL合成を書き換えるのは面倒なので、前回書いたようにしました。

> 対策案として、getString()で、file:// => file:/// に置換してみる、
> という案を考えついた。修正が1行追加で済むし、OSを読む必要もない。

とのことですが、39のコードとやっていることは一緒なので、問題はないと思います。
39で機種判定を入れたのは、WindowsやLinuxの場合の確認が取れないので、
いじらないようにしよう、と思ったからです。Windowsの場合でもfile:///で大丈夫なら
一本化してかまわないと思います。

Linuxが文字化けするのは、環境変数かfont.properties.jaがうまく設定されていないからでは
ないかと思います。

動作確認は、もう少しかかるかも。ごめんなさい。

43Jiro:2006/10/09(月) 08:44:54 ID:qyQ.YWR2
時間とれたときでいいです〜。
よろしくお願いします。

44Jiro:2006/10/09(月) 13:29:03 ID:qyQ.YWR2
やっと、わかったあ〜〜〜〜〜〜。
ゲームから呼び出すgetStrings()は、Clientクラスじゃなくて、
SelfClientクラスのメソッドでした。

Jodeでデコンパイルできなくて、JAD系のツール使ってようやく中身が見えました。
そしたら、getCodeBase()使ってなくて、相対パスで直接ファイルを開いてました。
(実装が全然違ってました)

んで、SelfClient:getStrings()をベースに作り替えました。

これでうまくいくはず!

あ〜〜〜すっきりした。

夜までに、全部作り替えたやつをあげときます。
(file://の件は忘れてください)


#それにしてもBSWの連中は何を考えて設計してるのか・・・ブツブツ

45Jiro:2006/10/09(月) 19:46:42 ID:qyQ.YWR2
パッチ作り直しました。

たぶんこれでいけるはず!ばーじょん

ttp://www.aqua.gr.jp/jiro/bsw_Jp_patch_20061010.zip
ttp://www.aqua.gr.jp/jiro/bswpatchsrc_20061010.zip

ついでにプエルトリコで残り勝利点と残り開拓者の数が
「−」表示にならずに「255」と表示されてしまう問題も
直しました。
(パッチの元が古かったのをアップデートしました)

王との請願は先日の動作確認時のと同じです。

>ketchupさん
 Macでの動作がOKなら、high-lifeさんに引き渡します。
 時間がとれたところで確認お願いしまーす。

46ketchup:2006/10/09(月) 22:11:04 ID:2falL9q.
動きましたよー。ごくろうさまー。

47ketchup:2006/10/09(月) 22:36:56 ID:2falL9q.
でも、相対パスにすれば動くのは同じだから、前回書いたように

String codeBase = master.getCodeBase().toString();

のところを

URL codeBase = master.getCodeBase();

にして

stringsURL = new URL(codeBase + "localized/" + myFile);

のように引数ひとつの URL(String spec) を使う代わりに

stringsURL = new URL(codeBase, "localized/" + myFile);

と、引数ふたつの URL(URL context, String spec) に置き換えた方が簡単じゃないでしょうか?
置き換え部分4行ですし。こっちでも動きますよー。

48Jiro:2006/10/10(火) 07:26:53 ID:oYMT5x8w
動作確認感謝です。

実際に呼び出されてるコードを元に新しいgetStrings()を作ったので、
もうgetCodeBase()もURLクラスも使わないんですよ。

動作しない原因が判明したので、修正するライン数が増えても
正しく直す、という方を採りました。
どのみちgetStrings()は元ソースに対する追加部分ですしね。

ともあれ、ありがとうございました。

49Jiro:2006/10/10(火) 07:29:33 ID:oYMT5x8w
>high-lifeさん
 てことで、これまでのパッチをまとめたやつがWin/Mac兼用に生まれ変わりました。
 ttp://www.aqua.gr.jp/jiro/bsw_Jp_patch_20061010.zip
 ここから持って行ってください。
 よろしくお願いします。

50ストーンR:2006/10/13(金) 02:15:23 ID:KUN5NB4o
Jiroさん

 早速、ダウンロードさせて頂きました。
 Mac対応、とても嬉しいです。
 感謝感激!

 私のスキルでは、日本語化は相当ハードルが高いです。

51Jiro:2006/10/17(火) 21:11:55 ID:CNiQw2Fw
新ゲームの大地の柱 die Saulen der Erdeの日本語パッチα1を作ってみました。
ttp://www.aqua.gr.jp/jiro/Saeulen_a1.zip

nessssさんのページ(ttp://www.uranus.dti.ne.jp/~ness/List.htm)を
元に作ってあります。
パッチ作成の文字列データの議論用に使ってください。

ご利用は自己責任で使ってください。

52FAL:2006/10/17(火) 21:29:38 ID:hyPaCy4A
いちおうイベントの内容を
*イベントカード
"Alle Spieler erhalten 5 Gold.",全てのプレイヤーは5金受け取る
"Alle Spieler erhalten 1 Metall.",全てのプレイヤーは金属1受け取る
"Alle Baustoffkarten +1.",全ての建材カードの、もらえる資材が1増える
"Je bis zu 5 Arbeiter doppelten Lohn.",1人のプレイヤーにつき5人の労働者まで賃金が倍になる
"Kapazitat eines Handwerkers +1.",職人カード1枚の仕事回数が+1される。
"Einen Handwerker abgeben.",職人カードを1枚捨てる
"Nur zwei Baumeister nachste Runde.",このラウンドは建築家を2つしか置けない。
"Alle Baustoffkarten -1.",全ての建材カードの、もらえる資材が1減る
"Alle Spieler verlieren 2 Siepunkte.",全てのプレイヤーは2VP失う
"Alle Spieler verlieren 4 Gold."全てのプレイヤーは4金失う。

53Jiro:2006/10/18(水) 00:02:33 ID:AR43z7b6
>FALさん
イベントカードの未対応のあったので参考になりました。
感謝です。

54nessss@副市長:2006/10/18(水) 00:09:08 ID:GBWznJ.c
うちのもアップデートかけてあります。
画面小さいときのドイツ語も書いてあるので、照らし合わせれば小さいままでもできるようになるかな?

55high-life:2006/10/18(水) 01:08:27 ID:Wgm8ETJg
10/18 現在

パッチファイルをアップロードしました。
必要な方は
BSWのすゝめ→豆知識→パッチファイル
よりお持ち帰り下さい。

56ketchup:2006/10/18(水) 01:31:41 ID:eGqCpk.2
>high-lifeさん
クライアント用文字化け対策パッチなのですが、動くには動きますが設定が古いので
消して貰ってもいいかな、と思います。
BSW本部で現在ダウンロードできるクライアントは、パッチで施したメモリ関係の設定
もしてあるようですし、アイコンも綺麗になってます。
AppleのJavaアプリケーションバンドルの作り方に沿った方法でバンドル内にクラスファイル
をセットすると、フィアルパスが決めうちになっている部分や今の日本語化パッチに
は影響が出そうなので、元のまんまにしておいた方が安全ですし。
ということで、要は、Info.plistの言語環境をJapaneseに設定してある、という違いぐらいしかないので
チャットで文字化けして困るって人は、そこだけ設定すれば上手くいきます。
J2SE 5.0以降がインストールしてあるなら、「1.4*」になっているところを「1.4+」にして下さい。
描画がちょっと早くなって快適になると思います。QuartzレンダリングがディフォルトでONですので。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板