セクションID検索スクリプト

2004/08/10のパッチ(Ver.1.13.3)からセクションIDの算出式が変更になりました。 おおむねソフトバンク刊の攻略本に載っている内容の通りのようですが、全角・半角の扱いに 不透明な部分があります。ゲーム中で実際に入力した結果と異なる場合はお申し出下さい。


名前と職業からセクションIDを調べる

キャラクターの名前:
キャラクターの職業:
HUmar HUnewearl HUcast HUcaseal
RAmar RAmarl RAcast RAcaseal
FOmar FOmarl FOnewm FOnewearl

結果:

希望するセクションID:
VIRIDIA GREENILL SKYLY BLUEFULL PURPLENUM
PINKAL REDRIA ORAN YELLOWBOZE WHITILL
末尾に付け足す文字:

アルファベット ひらがな・カタカナ ギリシャ・キリル 記号類 漢字

職業を選び、キャラの名前を入力すると「結果」の欄にセクションIDが表示されます。また、 「希望するセクションID」で選んだIDにするのに必要な文字が「末尾に付け足す文字」の欄に 表示されます。但し、フォントによっては正常に表示されない文字もあります。

「末尾に付け足す文字」欄の下にあるチェックボックスをON/OFFすることで、表示する文字の種類を切り替えられます。 「詳細」をクリックするとさらに細かい設定が可能になります。


セクションID算出方法について

求め方

ソフトバンク刊行の攻略本によれば、

  1. 名前の各文字のUnicode値*1を合計し、それに職業毎の固有値*2を足す。
  2. 半角なら45を、全角なら83を足す。全角・半角が切り替わるたびに適用。
  3. 合計を10で割った余りがID*3になる。

となっています(概略)。このうち2番目が分かりづらいので、「はこhako箱」というRAcastを 例にとって解説してみます。

(全角) (半角)hako (全角) (職業)
Unicode U+306FU+3053 U+0068U+0061U+006BU+006F U+7BB1
十進 1239912371 10497107111 31665 56854
補正値 83 45 83 4 215
57069

57069を10で割った余りは9。表よりWHITILLと分かります。

*1 Unicode値:
Windowsに付属の文字コード表等で調べることができます。多くは 「U+592B」のように16進数の頭に「U+」を付けて表記されます(ちなみに、592Bは十進表記では22827になります)。

*2 職業コード
職業職業職業
HUmar0RAmar3FOmar10
HUnewearl1RAmarl11FOmarl6
HUcast2RAcast4FOnewm7
HUcaseal9RAcaseal5FOnewearl8
*3 セクションID
ID名ID名
VIRIDIA0PINKAL5
GREENILL1REDRIA6
SKYLY2ORAN7
BLUEFULL3YELLOWBOZE8
PURPLENUM4WHITILL9

謎の仕様

ところで、上記では特に説明もなく「全角」「半角」という言葉を使っていましたが、 ここに落とし穴があります。シフトJISであれば1バイト文字をいわゆる半角文字として 呼んでいたわけですが、何せBBではUnicodeです。全角半角という区別がそもそも ナンセンスで、あえて言えばU+FF00〜U+FFEFにマッピングされている Halfwidth and Fullwidth Forms(半角形・全角形)がそれにあたるくらいです。

では実際のところ何を半角として判断しているのか。とりあえずBasic Latin (U+0020〜U+007E)に分類されるアルファベット及び記号類は、上記の例が正しいことでも 半角と判断して問題なさそうです。

次にLatin 1 Supplement(U+0080〜U+00FF)。ウムラウトやアクセントの付いた文字が 入っていますが、これもいくつかテストしてみたところ半角として扱われていることが 分かりました。JISでは全角記号である×(U+00D7)や÷(U+00F7)も半角扱いです。

ÿ(ウムラウト付きy: U+00FF)は半角扱いと確認しました(HUmar「ÿ」で VIRIDIA。(255 + 45 + 0) % 10 → 0)が、Ā(Aの上に横棒: U+0100)は全角扱い でした(HUmar「Ā」でWHITILL。(256 + 83 + 0) % 10 → 9)。以降 Latin Extended A(U+0100〜U+017F)の文字をいくつか試しましたがどれも全角扱い。 メジャーどころでギリシャ・キリル文字についてもいくつか試したところ、やはり 全角扱いでした。

この辺で面倒になってきたので、一気にすっ飛ばして前述のHalfwidth and Fullwidth Formsを チェック。すると、ここで妙な仕様が発覚しました。

まずは全角英数記号。これは全角扱いで問題なし。

で、次に半角カナなわけですが、これがおかしい。どうも全角扱いのものと半角扱いのものが あるようです。一文字ずつ調べるのも面倒だなぁ、と思っていたところ、この辺は既に mintreportさんが調査済だったようで、 それによるとム(U+FF91)までが半角扱いで、メ(U+FF92)以降は全角扱いに なっているようです。自分でも確認しましたが確かにHUmar「ム」はVIRIDIA ((65425 + 45 + 0) % 10 → 0)、HUmar「メ」はWHITILL((65426 + 83 + 0) % 10 → 9) になりました。

まとめると、現状では以下のようになります。

半角扱い:
U+0020(スペース)〜U+00FF(ÿ)
U+FF61(。: 半角句点)〜U+FF91(ム)
全角扱い:
上記以外のすべて

何とも不可解な仕様ですが、とりあえず半角カナを使用しない限りはアルファベットを半角、 それ以外を全角と思っておいて問題ないでしょう。

調べ方がそもそも相当いい加減なので、まだまだ半角扱いの範囲が存在する可能性があります。 間違いを見つけられたらご一報下さると助かります。

フォントについて

上記からも分かるように、PSO BBでは文字エンコードがUnicodeになっています。 Unicodeなので♥とか©なんかも入力可能です。が、ゲーム内で表示するには これらのグリフが用意されているフォントをオプションで指定する必要があります (私はMS UI Gothicで表示を確認しました)。

しかし自分の環境で表示されたとしても、他の人からもきちんと見えるとは限りません。 じっさい、私は普段SH G30-Mを使っているのですが、キャラ名が「・・」のように表示されてしまう ケースが多く見受けられます。

今のところは、Unicodeに対応していない日本語フォントでも表示できる範囲の名前に とどめていた方が無難かと思われます。指定フォントに含まれないグリフがあった場合に Unicode対応フォントで代替するような機能があればいいんですけどねぇ。

愚痴

U+0020〜U+00FFの範囲はプロポーショナルで表示されますが、フォントは選べません。 それ以外の文字はフォントを選べますが、プロポーショナルフォントでもかまわず等幅で 処理されるため、半角カナが間延びして表示されてみっともないです。

フォントの表示の汚さも一向に改善される様子がありません。見た限りではどうも ビットマップフォントを拡大してアンチエイリアシングをかけたような感じです。 TrueTypeを処理する重さを嫌ったんでしょうか。よくわからん。