v1.14 制作途中経過・その6

画面まわりを変更しています。

ところで、文体がコロコロ変わるのは私の気まぐれであります。あまり気になさいませぬよう。

文字が大きく変化、一部の文字に色

以下は、解像度1024×768の状態で窓を最大表示したときのスクリーンショットです。

(旧)v1.13


(新)v1.14

名前の前後にあるワードは称号で、本日の主旨とは無関係です。称号は、能力値の水準に応じて自動的に切り替わります。(テストのために称号を割り当ててあるだけで、サンプルでは採用しません。それにしても“秀才魔術師”だなんてこっ恥ずかしくて名乗りたくないですな)

長すぎる文字列の幅を縮小

以下は、解像度800×600の状態で窓を最大表示したときのスクリーンショットです。

(旧)v1.13


(新)v1.14

違いが分かるでしょうか?v1.14の側は、レザーアーマー以下の文字が、ローブに比べると狭くなっています。描画エリアが狭すぎる場合に、自動的に文字幅を狭くするようにしました(複数行文字列では効果なし)。

従来はこの機能がなかったために、文字の大きさを小さくしておかないと、長い名詞を表示しきれず枠を飛び出してしまいます。ですので、文字サイズを控えめにしてありました。

今回の変更で、多くの画面部品が描画エリアの幅に合わせてフォント幅を決定するようになったので、堂々と文字を大きくすることにしました。

ただしフォント幅を狭くする処理がたくさん入ると重くなるので、将来的にはデフォルトの文字サイズを設定する機能が欲しいところです。

ただ、長い名前を狭いスペースに押し込んでくれる機能、ある程度は活用したいところで。たとえば、以下のような呪文もOKと。

アンチエイリアスを自前で処理

従来は、文字のアンチエイリアス処理(文字のギザギザを取って線をなめらかにする処理)をOSに任せきりにしていました。このままだとWindows2000以降でないとアンチエイリアスがかからないのと、綺麗にアンチエイリアスがかかる文字の大きさに制限が残ります。これをv1.14では自前で処理するよう変更しました(一部の文字を除く)。

これによって低解像度では文字が太く、色が薄い印象になります。900ピクセル前後の中解像度ではだいぶ見栄えがするようになり、高解像度ではほとんど変化が感じられません。

以下は、解像度約640×480のスクリーンショットです。

(旧)v1.13


(新)v1.14

これが見やすいかどうかは分かりませんが、全体的にメリットの方が大きいと判断しましたのでこれを標準にします。

追記:テーブルの列幅を自動決定する機能

これはバージョンアップの話ではなく、初期バージョンから搭載されている機能の話です。

Desigeonのテキスト部品のほとんどは、Windowsのボタンなどと同様、独立した部品になっていて、同じものを画面部品として埋め込んでいます。今回の処理も、文字描画を司るコードを一箇所更新しただけですが、ほとんどの部品で効果が現れます。

その中で、「テーブル」(表組み)の各セルの大きさを決定する処理も同一のロジックで処理されています。テーブルは、様々なところで使われていて、たとえばキャラクタ情報の装備品リストも一個のテーブルが配置されています。

Desigeonの表組みは、HTMLのテーブルを参考に設計されていて、各セルの文字列の幅をあらかじめ取得し、列の割り当てを自動的に更新するようになっています。長い文字列のある列には広い幅が、短い文字列しかない列には短い幅が与えられます。

ですので、たとえば装備品欄において、長い名前のアイテムを装備したときには自動的に右の列が広がり、左の列が狭まります。短い名前の装備品ばかりが装備されている間は、左にある装備箇所の文字列もそれなりの幅になります。

この規則を知っておくと、名詞にどのくらいの長さの文字列を割り当てることが妥当であるか、想像できるようになるかもしれません。

将来的には、フォントサイズをもう少し細かく弄れるようにしたいところです。