ページ 11

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

Posted: 2012年6月16日(土) 02:21
by jay
セリフは台詞とも科白とも書く…

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

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

どちらの方法がいいのか、または他にいい方法があるのか
どなたか教えてください

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

Posted: 2012年6月16日(土) 02:44
by ISLe
MSゴシックとMS明朝は日本語版ウィンドウズなら必ず入ってますよ。

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

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

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

Posted: 2012年6月16日(土) 10:05
by h2so5
台詞中心のゲームということであれば、やはり文字を動的にレンダリングするのがよいと思います。

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

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

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

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

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

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

Posted: 2012年6月16日(土) 18:32
by jay
おぉ、お二人のご教授のお陰で早くも問題解決しちゃいました
ありがとうございます~

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

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

改めまして…、お二方ともありがとうございました~