開発日誌

すべての記事

[ 天下御免!からくり屋敷 ] [ テクニック ] ツクールでルビを振る

2020-07-19 23:16:37

RPGツクールMZ』が発表されてから、その新情報関連と制作関連の記事とで、週2本ペースで記事を公開しております。年2本だった時もあったのに、奇跡じゃなかろうか。

もっと記事を出していきたいのですが、制作過程の記事はあまりネタバレしすぎるのもどうかという説があります。そこで、これからは技術的な話題も積極的に取り扱っていこうと思います。

さて、『天下御免!からくり屋敷』では、スクリプトを組んで漢字にルビを振っています。詳しくは「RubyでRubyを…」の記事をご覧ください。

ルビ振りを可能にするスクリプト素材はいくつかありましたが、画面構成全体や文字表示など根幹の部分に関わってくるため、自力で実装したという経緯があります。そういう経緯があるため、私もスクリプト素材という形で提供はしていませんでした。

ただ、どのようにルビ振りを実装しているのか、注意する点や苦労した点はどんなところかを公開して、制作者の方の参考にしていただければと思います。RPGツクールVXでの実装ですが、基本的な考え方は変わらないはずです。

最初に大変なのは、上でも書いた通り、画面構成全体をいじる必要がある点。

ルビの分の高さを確保する必要があるため、テキストの1行の高さをデフォルトの24から32に拡大しています。

通常の文章表示では、4行あったメッセージウィンドウを3行にすれば、ちょうどいい感じに収まります。ただし戦闘メッセージの場合は、2行ある物理スキルの発動メッセージ→会心の一撃→敵のダメージ→敵のステータス変化のように、最大で5行を要するケースがあるので、既に3行表示されていたら最後の1行を消して上書きする、といった処理を加える必要があります。VX Aceからはメッセージログ形式になったので、意識する必要はないかもしれませんが。

また、メッセージ表示以外にも、アイテムやスキル、敵の選択ウィンドウやステータスウィンドウ、店での購入ウィンドウなど、ほとんど全てのウィンドウのレイアウトを調整する必要があります。ウィンドウレイアウトはスクリプトやプラグインでデフォルトから変えている場合も多いと思いますが、まずルビには対応していないので、自力で調整しなければなりません。

さて、ルビの入力は、{漢|かん}{字|じ}のように、ルビを振りたい文字を{ }で囲んで、|の手前に漢字、後ろにルビを入力すれば、ルビ付きのテキストとして表示されるようにしました。

文章の表示だけでなく、アクター名、職業名、スキル名、アイテム名、敵キャラ名、およびスキルやアイテムの説明文や、使用時メッセージなどでも、有効にしています。

表示部分のスクリプトはこんな感じ。

1文字ずつ取り出して、漢字部分とルビ部分に分けて出力しています。

ここで問題は、ルビが多いとテキストボックスの横幅に収まりきらない点。

文章の表示のテキストボックスは、横幅を超えると勝手に改行されてしまいます。そこで、ダミーのアクターをいくつか作って、長いルビ付きの言葉をアクター名に設定し、文章の表示の中で\N[n]として用いています。こうすれば、ルビが多くても横幅に収めることができます。

ただし、アクター名の入力欄にも文字数制限があるので、ルビの量が多いとダミーのアクターがいくつも必要になります。1文字微妙にオーバーする!といった苦労は日常茶飯事で、このあたりの調整は都度やる形になるので、テキストの入力は通常時よりもかなり時間がかかります。これが、制作がなかなか進まない原因でもあります(ということにしておこう)。

また、ルビは漢字1字につき3文字までが限度で、4文字以上だと文字が潰れてしまってさすがに読めません。

だいたいは3文字に収まるのですが、隼(はやぶさ)とか亥(いのしし)とか、作っているとけっこう4文字のルビが登場します。こういう場合は、{亥の|いのしし  }{足|た}{袋|び}のように、次の文字と組み合わせています。

ただ、鉞(まさかり)はこれ1文字だけしかないので、前後に半角スペースを入れて{ 鉞 |まさかり}としました。また、狼男(おおかみおとこ)も漢字2文字に対してルビ7文字なので、{狼 |おおかみ}{男|おとこ}と間に半角スペースを補っています。一番悩んだのが、石川五右衛門の方術の金鯱(きんのしゃちほこ)で、仕方ないので間に全角スペースを挟んで{金 鯱|きんのしゃちほこ}としました。今後、源順(みなもとのしたごう)とかを登場させることにならないか不安。

最後に悩ましい点としては、どこまでルビを振ればいいのかという点。

さすがにフリーゲームを小学生とかがプレイするとも思えないので、小学校レベルの漢字にまでルビを振る必要はないと思います。

とは言え、漢字自体は小学校で習うけど、熟語としてはあまり馴染みがなかったりすると、読みが自信ない場合もあり得ます。

実際、実況プレイ動画を見ていても、普段使わないような語句の読みで間違っていたり、詰まっているのをよく見かけます。

初めは固有名詞や常用漢字以外のものに限ってルビを振っていましたが、だんだんとルビ振りの基準レベルを下げていき、最近では「見る」「思う」とかのレベルでも、たまにルビを振ったりしています。そこまでするならいっそ全部に振ってしまえば、悩む必要もなくなるとは思うのですが、それはそれで作業が大変すぎるので、難しいところです。

ルビは日本語だけの特殊事情なため、海外展開にシフトしつつある現状のツクール事情では、今後もデフォルト機能として組み込まれることはないと思いますが、格調高い言葉を使いつつも、難しくしすぎないというバランスを取るのに、ルビ振りのシステムは欠かせないものだろうと思います。

最初に述べたように、ルビ振りシステムは画面全体の構成などに関わるため、なかなかプラグインとして素材化することが難しいですが、今後も必須レベルで組み込んでいきたいと思います。

コメント
お名前
コメント
※ 確認画面はありません。