Nintendo MessageStudio ヘルプ

# スタイルと幅計算

## なぜ幅計算が必要なのか

ゲーム機が利用可能な画面サイズは無限ではありません。 その限られた領域の中でテキストと絵を同時に表示してユーザーに情報を伝える必要があります。 そのためテキストは、内容ももちろん重要なのですが、正確にすべての内容が画面に全部収まった状態で表示されるかを 確認しておかなければ、ゲームとしては出荷することが出来ません。

もちろん最終的にはすべてのテキストについて画面上での確認を行う必要はありますが、 テキストを入力するたびに確認をするのはとても骨の折れる作業であることには変わりません。 幅に収まることを確認できるまで、何度も修正と確認を繰り返す必要があるからです。 開発機材にゲームの情報を送り込むのには時間もかかりますし、とても効率がよいとは言えません。 そこでMessage Studioでは、実際のゲームを起動することなく、どのぐらいの大きさで表示されるのかを事前に計算する機能があります。

この機能を用いることで、行ごとに幅を計算することができ、 文章を推敲したり修正作業を行っているときは機材にデータを送ることなくパソコン上で表示を確認し、 最後に実機にデータを送って確認することができるようになります。 また、幅をはみ出しているテキストを検索し、一覧で表示することも可能です。

## タグの幅について

文章中に出現する特殊な制御記号であるタグも、幅を持ったものが存在します。 たとえば、「絵文字挿入」タグであれば、挿入されるアイコンの幅を勘定に含めなければなりません。 これらの設定は、タグの設定画面にて行うことが出来ます。

ところが、中にはタグのパラメータや状況によってタグの幅が変わるケースがあります。 たとえば、タグにTypeという名前のパラメータがあったとして、その内容によって表示されるアイコンが異なるとします。 その場合、タグの幅をどのようにするかには複雑な判定が必要になってきます。

そこで、Message Studioでは、標準で搭載されている「○○文字分として扱う」「○○ピクセル分として扱う」 というモードの他に、特殊なモードをプラグインによって追加することが可能になっています。 この機能を利用することで、タグの幅をフレキシブルに扱うことができ、 より実際の画面に近い感じでプレビューや幅計算処理を行うことが出来ます。

## 「スタイル」について

幅を計算するためには、当然「どのように表示されるのか」を設定する必要があります。 ほとんどのゲームでは、共通の表示方法によって複数のテキスト情報が描画されるでしょう。 たとえば、エラーの通知ウィンドウがポップアップされるゲームがあったとします。

このようなゲームでは、ウィンドウ部分は共通で中身のテキストがその時々に応じて変わる場合がほとんどです (たとえば、「サーバに接続できません」「本体メモリが不足しています」「リモコンを接続してください」など)。 Message Studioでは、「表示のされ方」を一つの設定として持っておいて、テキストはそれとの関連付けのみを持つように設計されています。 この「表示のされ方」という情報のことを、Message Studioでは「スタイル」と呼びます。 スタイル情報はプロジェクトファイル(msproj)に保存されることになります。

設定情報をスタイルによってグルーピングできることのメリットはもう一つあります。 それはデザイン面の修正に非常に強いことです。 テキストもかなりの頻度で変更が加わりますが、デザインもまた、変更が多くある部分といえます。 ユーザーインターフェイスのデザインが変更になれば、そのままテキスト情報への影響として現れます。 Message Studioでは、デザインが変更になっても、スタイル情報に登録された情報のみを変更した上で、 「テキスト幅チェック」を行えばよいことになります。

- はじめに
- Message Studioの基礎
  - ゲーム製作のフロー
  - プロジェクトファイルについて
  - プロジェクトエクスプローラの操作
  - ウインドウ操作
  - 言語設定
  - カラーの設定
  - 属性の設定
- メッセージ編集
  - 基本操作
  - テキストの種類
  - クリップボードを利用した操作
  - 言語セルステータス
  - 表示のカスタマイズ
  - メッセージ一覧画面のTips
- タグ
  - 概要
  - タグを用いた編集
  - タグのソース文字列
  - タグ比較について
- 検索機能
  - 概要
  - 簡易検索
  - 詳細検索
  - 正規表現
- スペルチェック
  - スペルチェックについて
  - スペルチェックの利用方法
- ロールとパーミッション
  - 概要
  - ロールの追加とパーミッションの設定
  - ロールの選択
- メッセージの統計情報
  - 統計情報について
  - 統計情報の利用方法
- スタイル機能と幅計算
  - スタイルと幅計算について
  - テキスト幅の全体チェック
  - レンダリング方式について
  - スタイルの設定方法
- フォント
  - フォント機能の概要
  - フォントに関するワークフローについて
  - フォントの設定
- チーム管理機能
  - 概要
  - ファイル管理のされ方
  - チーム管理機能を利用する
  - 基本操作
  - コミットログを表示する
  - 差分(diff)を表示する
  - 競合とマージ
  - プロキシサーバの設定
  - サーバーの設定
- メタ情報の設定
  - メタ情報の設定について
  - 設定可能なメタ情報一覧
- リソースファイル関連
  - リソースについての概要
  - リソースファイルを出力する
  - 出力設定を行う
  - ビルドイベントについて
  - 共通のバイナリフォーマット
  - メッセージバイナリフォーマット
  - フローチャートバイナリフォーマット
  - プロジェクトバイナリフォーマット
    - プロジェクトバイナリフォーマット
    - カラー情報
    - コンテンツ情報
    - 属性情報
    - タグ情報
    - スタイル情報
  - タグについて
- マクロ文字列展開機能
  - マクロ文字列とは
  - 利用可能なマクロ一覧
- コマンドライン関連
  - コマンドライン制御について
  - /convertスイッチについて
- プラグインについて
  - プラグインの概要
  - プラグインの種類について
- プラグインの作成方法
  - 単純なプラグイン作成チュートリアル
  - 開発環境を利用しない作成方法
  - サンプルについて
- Message Studioのアセンブリ設定
  - Caspol：アセンブリセキュリティ設定
  - Ngen：ネイティブイメージ生成
- XML仕様
  - 概要
  - プロジェクトファイル（.msproj）のXML仕様
  - メッセージファイル（.mstxt）のXML仕様
- libmsについて
  - 概要
  - コンパイルの仕方
- 共通の関数
  - LMS_SetMemFuncs
- メッセージに関する関数
  - LMS_InitMessage
  - LMS_CloseMessage
  - LMS_SearchMessageBlockByName
  - LMS_GetMessageBlockInfoByName
  - LMS_GetTextNum
  - LMS_GetTextIndexByLabel
  - LMS_GetText
  - LMS_GetTextSize
  - LMS_GetTextByLabel
  - LMS_GetLabelByTextIndex
  - LMS_GetTextStyle
  - LMS_GetTextStyleByLabel
  - LMS_GetAttributeSize
  - LMS_GetAttribute
  - LMS_GetAttributeText
- フローチャートに関する関数
  - LMS_InitFlowchart
  - LMS_CloseFlowchart
  - LMS_GetNodeNum
  - LMS_GetEntryNodeIndex
  - LMS_GetNodeDataPtr
  - LMS_GetFlowNodeIndex
  - LMS_GetCaseIndexesFromBranchNode
  - LMS_GetFlowParamText
- プロジェクトに関する関数
  - LMS_InitProject
  - LMS_CloseProject
  - LMS_SearchProjectBlockByName
  - カラー情報に関する関数
    - LMS_GetColorIndexByName
    - LMS_GetColor
    - LMS_GetColorByName
    - LMS_GetColorNum
  - コンテンツ情報に関する関数
    - LMS_GetContentsNum
    - LMS_GetContentPath
  - 属性情報に関する関数
    - LMS_GetAttrInfoIndexByName
    - LMS_GetAttrType
    - LMS_GetAttrTypeByName
    - LMS_GetAttrOffset
    - LMS_GetAttrOffsetByName
    - LMS_GetAttrListItemName
    - LMS_GetAttrListItemNameByName
    - LMS_GetAttrNum
    - LMS_GetAttrListItemNum
  - タグ情報に関する関数
    - LMS_GetTagGroupName
    - LMS_GetTagName
    - LMS_GetTagParamName
    - LMS_GetTagParamType
    - LMS_GetTagListItemName
    - LMS_GetTagGroupNum
    - LMS_GetTagNum
    - LMS_GetTagParamNum
    - LMS_GetTagListItemNum
  - スタイル情報に関する関数
    - LMS_GetStyleIndexByName
    - LMS_GetRegionWidth
    - LMS_GetRegionWidthByName
    - LMS_GetLineNum
    - LMS_GetLineNumByName
    - LMS_GetFontIndex
    - LMS_GetFontIndexByName
    - LMS_GetStyleNum
- 扱うファイルの拡張子一覧
- よくある質問