ゲーム製作メンバー募集スレ 13人目
■ このスレッドは過去ログ倉庫に格納されています
0424sn0w75
2013/03/14(木) 09:18:50.48ID:yrrBkyJsこの問題に付いて詳しいつもりですけど、そういうOSや言語設定によって変わる問題があるからこそwcharやSHIFT-JISじゃなくてUTF-8を使ってます。
このゲームは現在Windows、Linux、Androidでも使えますが、先代の古物であるwcharを使っていたら絶対出来ないことです(ソースコードを書き直さずに)。
wcharはWindowsでは16ビット、Linuxでは32ビット(Macは分からない、多分32bit)。つまりwcharのサイズはC++のルールでは決まっていなくて、コンパイラーやOSによってサイズが違う。つまりクロスプラットフォームプログラムを書くには相応しくない。
こういうことを知らずにwchar使ってる人未だ多いと思いますので、SHIFT-JISとwcharよりUTF8を推奨したい所です。現在ならC++11の新しいUTFコンスタントや、自分が書いたコードかUTFヘルパーライブラリを使うべきです。
ちなみに、僕が通ってた大学、Texas A&M大学にはBarne Stroustrup、C++の…お父さん?wが教師として働いていますが、この問題に付いて聞いたら
「wcharは古いプログラムをコンパイル出来る為にまだC++に残ってるけど、新しいプログラムでは使わない方がいい」と言われました。
そして勿論多数言語を使うプログラムならUTF-8を推奨されました。
SHIFT-JISに付いてはそこまで詳しくはないけど、まぁつまりジャパンオンリーということで、日本語と英語以外の言語を使う余地はないと思われます。
本ゲームでは、最初はwcharを使っていましたよ、実は?
当直に言うが、Windowsに使おうとしたら使い物にはならなかった。
Windowsではwcharは32bitじゃなくて16bitですから、UTF8のキャラクターは一つのwcharには入れないんですよ。言語やOS設定いじれば解決出来るけど、そんなの全ユーザーに頼むわけには行かないでしょ?ゲームをプレイ出来る前に飽きれてしまうだけだろうが。
現在はUTF-8データをbitsetコンテナーに入れて、binaryレベルで解釈して結果をunsigned int vectorに入れてます。C++と使えるUTF8ヘルパーライブラリーは沢山あるが、どれも大きすぎるか使い辛くて、最後で自分のUTF8テキストハンドラーを書くことにしました。
こうしたらテキストに関するバグは相当減りましたし、OSや言語設定に関わらずゲームをプレイ出来ます。
■ このスレッドは過去ログ倉庫に格納されています