現在、DirectX と C++でオリジナルのシューティングゲームを作っています。
そこで、スコアや画面で文字(文)を表示したいのですが、
使うフォントを環境に依存しないようにしたいのです。
D3DXFontなどで文字描画はできますが、それは使うPCに入っているフォントしか表示できませんよね?
市販や同人のゲームを見ていると、「MS 明朝」などではなくオリジナル、あるいは製作されたフォントを使っているようにしか思えません。
フォントを配布された覚えもありません。
一つ一つの文字を画像にして、それから「画像として」表示する、という方法もありますが、それでは漢字の処理がかなり面倒なことになると思うのです。
つまり、「PCに入っていないフォントをゲーム中で自由に表示できる(ように見せかける)」方法が分からないのです。
やはり文字一つ一つを画像にするしかないのでしょうか。
それとも別の方法があるのでしょうか。
ご回答お願いします。
実際に作品を作っているサークルの方の回答もあれば嬉しい限りです。
No.4ベストアンサー
- 回答日時:
他の方の回答と同じなのですが。
。。方法は次の二つです。1.画像ファイルとして事前に用意する。
最も簡単な方法です。
画像として表示すれば、凝った自前のフォントも簡単に表示できます。
が、描画する文字が大量になった場合に、容量を食いますし、台詞など
頻繁に変わる可能性があるものの場合対処できません。
2.フォントファイルを起動中に追加する
AddFontResourceを利用して、起動中だけフォントを追加するようにします。フォントファイルを追加するので、台詞などが変化しても対応できます。起動、終了ごとにこまごまと追加削除をするのが嫌なら本体インストール時に勝手にフォントもインストールさせてしまうのも手ですね。
>>画像で処理したほうが「速い」という話も聞いたことがあるような
>>気がします。
確かに、D3DXFontの実体はGDIを使っての描画なので、「遅い」です。
しかしこれは毎フレーム描画せずに、一回だけRenderTargetに描画してそれを画像として表示してしまえばいいわけです。
お奨めは、ロゴ、メニューなど懲りたい部分は画像で作成しておき、台詞など大量に文字を扱う必要がある場合は、AddFontResourceで追加したフォントをRenderTargetに対して描画したものを利用するのが良いかと思います。
ありがとうございます。
なるほど、両者を使い分ける方法もあるんですね。
ステージタイトルを画像に、台詞を追加・削除にすれば、
面倒ということもなくなりそうですね。
参考にさせていただきます。
ご回答ありがとうございました。
No.3
- 回答日時:
毎回同じ文章を出す・数字を出す
などであれば、画像を用意するのが一番良いです。
#大げさな話フォントが無くても表示できますから。
環境に依存しないようにと有りますが、
具体的にどんな場合を想定しているのでしょうか?
DirectXならばWindows前提だと思うので、
英語・日本語程度の違いだとおもいますが、
AddFontResourceEx/RemoveFontResourceEx
などのWindowsのAPIを使用してオリジナルフォントを
ゲーム起動中のみ使うという手もあります。
!!
WindowsAPIをすっかり忘れていました。
DirectXの中ばかり見ていました。
ちなみに「環境に依存」というのは、
例えば、「フォントA」というフォントを(D3DXFontの中で)指定したプログラムを配布したときに、使う側のパソコンに「フォントA」が入っていないという場合です。
このときデフォルトの引数(フォント)を指定していないとエラーが出ると思われます。
AddFontResourceExやRemoveFontResourceExも調べてみようと思います。
ご回答ありがとうございました。
No.2
- 回答日時:
携帯ゲーム機用のプログラムを作ったことがありますが
自分でフォントを用意するしかないので普通にビットマップフォントを使って表示しました。
画像で表示するのが簡単で楽だと思います。
漢字の処理は別に面倒ではないですよ。
ご回答ありがとうございます。
考えてみれば、漢字も使うものだけを画像に入れとけば、それほど面倒でもありませんよね。
そういえば、下手にいろいろいじるより、画像で処理したほうが「速い」という話も聞いたことがあるような気がします。
画像を使う方法でも、工夫すれば面倒でなくなりますね。
参考にさせていただきます。ありがとうございました。
No.1
- 回答日時:
ゲームをインストール時にフォントもインストールするものもありますよ。
BitMap Fontは作るだけでも労力が必要で現実的では無いと思います、
市販ゲームでもBitmap fontはライセンスを買って使うものも多いです。
アルファベット+数字だけなら作るのはアリかな。
あとはフリーのBitmap fontもあるので、それを使うのも手ですね。
"環境依存しないように"に、マルチ ランゲージ環境も含むなら
UnicodeでいかないとDBCS(2バイト文字)が、文字化けするかと
思います。(Bitmap font時は除く)
ご回答ありがとうございます。
なるほど、そういえばゲームCDにはインストーラなるものがありましたね。
BitMapフォントというものも何度か見かけたことがあります。
早速試してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
outlook 文字を揃えたい。tab...
-
マイクロ(μ)の文字を半角で出...
-
教えてください。
-
C# Font GdiCharSet
-
似ているフォント(Win⇔Mac)
-
Outlookのメールを送信するマクロ
-
cssで英語と日本のフォント...
-
「〆」 の表示方法
-
VB6.0でLabelに表示する文字を...
-
font-family の記載方法
-
LEDマトリクスに表示するフリー...
-
Wordで、指定したフォント...
-
英語版OSでの遊明朝、游ゴシック
-
Visual C++ 6.0 行番号の表示
-
パワポが文字化け
-
メールで、榊の文字を木辺に神...
-
tex の文字に関して
-
ヒラギノの印刷時の品質について
-
分数をどう書くか。(教えて!g...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
outlook 文字を揃えたい。tab...
-
マイクロ(μ)の文字を半角で出...
-
教えてください。
-
MsgBoxについて
-
似ているフォント(Win⇔Mac)
-
「MS Pゴシック」と同じ幅の...
-
英語版OSでの遊明朝、游ゴシック
-
C# Font GdiCharSet
-
font-family の記載方法
-
メールで、榊の文字を木辺に神...
-
ワードでゴシックの文字を太く...
-
Excel:一部のフォントでセルの...
-
CommonDialogでの、キャンセル...
-
逆向き/(スラッシュ)の入力方法
-
エクセルの代替フォントを指定...
-
Visual C++ 6.0 行番号の表示
-
CSS SafariでMS P ゴシックを表...
-
ホームページをTeraPadで日本語...
-
printf("文字列\\n")が円マーク...
-
このフォントはなんというフォ...
おすすめ情報