シンボルを任意の色で表示する


7

RPG /ローグライクスタイルのゲームを開発しています。次のようなマップの代わりに:

.........
.........
....@....
...h.....

ああ、ドワーフ。

私は無地の背景タイルを持っていたので、描画されたタイルなしのタイルベースのRPGのようなものです。生き物や物にアスキータイルを付けるのが好きです。アーティストの時間を大幅に節約できます。タイルを変更して、ある種のシンボルをもう少し...関連させることができますか?しかし、それぞれ個別の4つの方向を持つよりはましです。

私がこれを白でして、雪の領域があったら、あなたは見ることができません。だから黒くして。暗い場所に到着するとすぐに、キャラクターがどこにいるのかがわからなくなります。「これはタイルとNPCの間で暗すぎます」と言って、色を目に見えるものに変更するが、淡いピンクから明るいシアンには行かないようなアルゴリズムや何かがありますか?

回答:


8

文字ごとに1つの明るい色と1つの暗い色があると仮定すると、タイルの色とNPCの色をHSLに変換することで、輝度の違いを確認できます。タイルとの輝度差が最も大きいNPCカラーを選択します。

両方の色を手動で割り当てたくない場合は、単純にハードコードできます。

if (tile_color.l > 0.5)
    character_color.l = 0.1;
else
    character_color.l = 0.9;

また、RGBトリプレットではなくHSペアを各文字に割り当てます。

また、常に暗い文字の周りに明るいアウトラインを、明るい文字の周りに暗いアウトラインを提供することもできます。


ここで同じ種類の効果にHSVの値を使用できますか?
共産主義者のダック

いいえ。直感的には、値を「暗く」することはできますが、「明るくする」ことはできません。または、途中で「明るくする」ことしかできません。HSVで色を明るくするには、値を上げると同時に彩度を下げる必要があります。Wikipediaページのカラーシリンダーを見て、変更がどのように機能するかを確認してください。

5

これは、ASCIIアートをテキストレンダリングではなくビットマップとして保存することを前提としています。これは、パフォーマンスと柔軟性に優れ、カスタムタイルセットの実装を容易にします。

背景色に応じて色を変更する代わりに、すべてのASCIIアートを明るい色にして、ビットマップにプリレンダリングされたわずかなドロップシャドウ効果を持たせます。

これにより、キャラクターやアイテムがすべての色/色合い/色調でうまく表示されます。

編集:ここにいくつかの例があります

影付き 代替テキスト

影なし 代替テキスト


色が非常に近い場合、影はまだ機能しません。あなたは影を見るだけで終わります。それは識別できず、それだけでは見た目が悪いです。輪郭の方がよく、形状の詳細が保持されます。

@Joe Wreshnig、私は答えを編集して例を提供しました。
AttackingHobo

中高輝度フォントに2つの低輝度シェードを提供しました。フォントとほぼ同じ背景の影だけを試すと、問題が発生します。それでも、問題は白の「テキスト」の黄色の影付き「e」にすでに現れています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.