【雑談?】ゲームで表示する文字(セリフ)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
jay
記事: 314
登録日時: 15年前
住所: 大阪市
連絡を取る:

【雑談?】ゲームで表示する文字(セリフ)

#1

投稿記事 by jay » 14年前

セリフは台詞とも科白とも書く…

そんなことはさておき、ここからが本題ですが
今開発中のゲームの中で、キャラクターにセリフを言わせる必要があります

DXライブラリを使用しているのでDrawStringToHandle関数を使って、普通に文字列を表示させればいいかなと思っていました
でも僕は「指定のフォントがパソコンの中に入っていなければ、文字は表示されない」という問題があることを知っていました
知っていて敢えてこの方法を取りました、「MSゴシック」ならば通常どのパソコンにもデフォルトで入っていると思ったからです
でもやっぱり100%どのパソコンにも入っているという保証は(おそらく)無いですよね? ではやはりこの方法は確実ではないでしょうか?
やはり(物凄く手間は掛りますが)そのセリフを書いた画像を用意して、それを描画する方が確実でしょうか?

どちらの方法がいいのか、または他にいい方法があるのか
どなたか教えてください
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 【雑談?】ゲームで表示する文字(セリフ)

#2

投稿記事 by ISLe » 14年前

MSゴシックとMS明朝は日本語版ウィンドウズなら必ず入ってますよ。

設定用ダイアログとか用意して、フォントを選択できるようにするのが親切かと思います。
ノベル系のゲームだとそういう機能が付いてます。

オリジナルフォントを用意してAddFontResourceExでセットして使うという手もあります。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 【雑談?】ゲームで表示する文字(セリフ)

#3

投稿記事 by h2so5 » 14年前

台詞中心のゲームということであれば、やはり文字を動的にレンダリングするのがよいと思います。

OSデフォルトのフォントを指定してもいいですし、ファイルサイズやライセンスの問題もあるものの、
必要なフォントを同梱して起動時にロードする方法もあります。

(MSゴシックをはいかにも安っぽく見えてしまう気がしてあまり好きではないので、
僕だったらOSデフォルトのフォントを指定するとき、メイリオが入っている場合はそちらを優先させるかもしれません)

ただ、DXライブラリのフォントエンジンはアンチエイリアシングの品質が悪く、
小さい文字などは潰れて読みにくくなってしまいますのでそういう場合に局所的に画像を使用するのはありだと思います。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 【雑談?】ゲームで表示する文字(セリフ)

#4

投稿記事 by ISLe » 14年前

描画品質にこだわるなら…
GetGlyphOutlineというWindows APIを使うと階調付きでフォントをレンダリングしたビットマップを得ることができます。
大きめにレンダリングして自前で縮小すればさらに品質を上げることができます。
ただしフォントのレンダリング処理は重いので、ひらがな等使用頻度の高いフォントをあらかじめレンダリングしておいたり、レンダリングしたフォントを再利用するキャッシュを実装したりといった工夫が必要です。

jay
記事: 314
登録日時: 15年前
住所: 大阪市
連絡を取る:

Re: 【雑談?】ゲームで表示する文字(セリフ)

#5

投稿記事 by jay » 14年前

おぉ、お二人のご教授のお陰で早くも問題解決しちゃいました
ありがとうございます~

h2so5さんがおっしゃる通り、フォントデータを用意して
それをISLeさんが教えてくださったAddFontResourceEx関数でセットして使うようにしました

セリフ部分は半ば「あるだけ」なので画質にはそこまでこだわらない
だから楽チン且つ確実な方法で行くことにします(使うフォントはフリーのヤツ)

改めまして…、お二方ともありがとうございました~
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

閉鎖

“C言語何でも質問掲示板” へ戻る