どうもクラムチャウダーです。
ようやく新作タイトル名が決定しました!
「シロウト家出娘と俺」です。
……まあそのままと言いますか、仮だったタイトル名がそのまま正式名に格上げされました。
まだロゴなどは制作中ですので、後日公開されると思います。
ヒロインと世界設定
※本作はまだ開発中のものですので設定や仕様は変わる可能性があります
本作のヒロイン「沖美夏帆(おきみなつほ)」さんです。
推定年齢はX校生くらい?
ある事情があって家出してしまい、世間から隠れて主人公「俺」の家で同棲を始めることに。
彼女はほぼ引きこもりなのでその気になったらHな事をし放題……みたいな生活を送ることになります。
ほのぼのした日常生活とちょっとダークな設定が絡み合う一風変わった日常系SLGとなります。
解像度アップ!
本作では描画解像度で1600x900を使用する事にしました。
(※次回以降もこれで行けるという保証は無いですが…‥)
とにかく今回は前作より高解像度の画面でゲームをお楽しみいただける予定です。
しかしおかげで長年使い回してきたUI周りを作り直すことになり…‥控えめに言って地獄の予感!?
技術的な話
ゲームエンジンのテキスト描画周りを大幅に更新しました。
今までフォントグリフ取得に昔懐かしいWindowsAPIを使っていたのですがその辺りをまるっとオープンソースのFreeType2に差し替えました。
これでゲーム本体に同梱したOpenTypeやTrueTypeフォントをそのまま描画できます。
※UIやテキストはテスト用に仮のものです。実際のHシーンのものではありません。
文字の背景の影を大きくしてウインドウの透過率を上げても読みやすくなりました。
しかし一つ困ったことが発覚。
WindowsのOSフォントではハートマークなどのUNICODEで追加された記号が描画できていたのですが案外フリーのTrueTypeフォントでは収録されておらず表示できなかったりします。
そこで特殊な記号の文字コードが来たときは独自のビットマップフォントを描画する機能を実装しました。
おかげでこんな変則的なテキスト表示も可能に…‥
ちなみに私の本業はプログラマーですので、この手の作業のほうが慣れていたりします。
(シナリオ書いたり背景モデリングしてたりしますけどそこは趣味なのですよ!)
FreeType2(freetype-2.10.2)でハマりそうだったところ
※このセクションは完全にプログラマー向けです。
有り難いことにFreeType2の使い方はネット上に情報が色々あるのでそれほど難しくないのですが、それでもちょっとはまりそうだったところがあるのでここに私の解決方法を似せておきます。
ちなみに今回試験的に使用しているフォントはGoogle Fontsにある KosugiMaru-Regular.ttf です。
フォントグリフのビットマップ取得前、FT_Get_Char_Index()でメモリアクセス違反で落ちる
原因は読み込みにFT_New_Memory_Face()を使用していたことと関連がありました。
FreeType2でフォントファイルの読み込みに使う関数は一般的にFT_New_Face()かFT_New_Memory_Face()のいずれかだと思いますが、FT_New_Memory_Face()を使用した後はFT_Done_Face()を実行するまでバッファを解放してはいけません。
FreeType2はFT_New_Memory_Face()を呼んだ後も使用者がフォントファイルのデータを保持し続ける必要があります。
ビットマップの表示位置
FT_Render_Glyph()で生成されるビットマップは固定幅では無く文字の描かれる部分のみですので表示時にオフセットを加えてやらないと位置がずれてしまいます。
私はこれを以下の方法で計算しています。
int Height = FT_Set_Pixel_Sizesで指定したフォントの縦幅
int baseline_up_offset = std::max((Height / 8 - 1), 0);//場合によってはstd::外さないと駄目なときが…
GlyphOffsetX = glyph->bitmap_left;
GlyphOffsetY = Height - glyph->bitmap_top - baseline_up_offset;
どうやら日本語フォントでは数ピクセル下に表示位置がずれる問題があるようなのですが正式な解決方法が分からなかったためbaseline_up_offsetでY位置を上げることで無理矢理解決しています(これでも大きなサイズでは多少ずれるようですが、今回はそれほど大きなサイズを使用しないのでこれで妥協しました)
【 有料プラン 】プラン以上限定
支援額:500円
サブキャラのデザイン案ラフです
このバックナンバーを購入すると、このプランの2020/05に投稿された限定特典を閲覧できます。
バックナンバーとは?