Nintendo MessageStudio ヘルプ

# libmsの概要

## libmsとは？

libmsは、Message Studioが出力するリソースファイルを読み込み、 ゲームソフトがテキスト情報を取得できるようにするためのAPIを提供するライブラリです。 このlibmsを利用することでゲーム開発者はMessage Studioが出力したデータを容易にアプリケーション側からアクセスすることが可能になります。 このライブラリはC言語のみで作られています。

このライブラリは、メッセージバイナリファイル(*.msbt)、プロジェクトバイナリ(*.msbp)と、 Message Studioのフローチャートプラグインで提供される機能のひとつ フローチャートバイナリファイル(*.msbf)の読み込みに関する機能を提供しています。

## 禁止事項

１．このライブラリで読み込み可能なファイルは、 事前に開発者が用意したバイナリファイルに限ります。 UGC(User Generated Contents, ユーザーが作成したデータ)を読み込ませて それをライブラリに処理させることは禁止されています。 そのような利用方法は想定されていないため、 セキュリティホールの原因となる可能性が高いことが理由です。 また、バイナリ化されたリソースは情報が暗号化されないので ユーザー側で容易に情報を抜き出すことが可能になってしまう場合もあります。

２．このライブラリはマルチプラットフォームで動作するように設計されていますので、 原理的にはコンパイル作業を行うことで ある程度さまざまな機械の上で動作させることが可能です。 ただし、このライブラリを組み込むことが認められているソフトウエアは、 特別に認められた場合を除いて、 任天堂が提供するプラットフォーム上で動作したり、 またはそれの制作を補佐するためのライブラリやツールに限ります。 また、任天堂が提供するプラットフォームにて動作する アプリケーションを作成する場合は、 それに対する正規の開発ライセンスを保持している必要があります。

## 注意事項

１．このライブラリで読み込み可能なバイナリファイルは、 エンディアン設定を正しく行う必要があります。 対象とされるプラットフォームとは違うエンディアン構造のリソースファイルをロードしようとすると、 そのタイミングでアサートに失敗します。

２．libmsをビルドシステムに静的リンクで組み込む場合、 必ずコンパイラのバージョンおよびSDKのバージョンが一致しているかどうかを確認してください。 異なるバージョン同士のものをリンクすると予期せぬ動作を起こす場合があります。

３．必ずMessage Studioに添付されているlibmsを利用してください。 利用するMessage Studioと異なるバージョンのlibmsを利用しての 動作保証はいたしません。

４．デバッグ作業は綿密に行ってください。 libmsが正常に動作するかの確認テストは行われていますが、 すべてのパターンで動作することを保障するものではありません。

５．このライブラリはスレッドセーフな設計にはなっていません。 複数のスレッドから同時にアクセスされると内部状態が不安定となる場合があります。 必ず、単一のスレッドからアクセスするか、あるいはロック機構をアプリケーション側で用意してください。

## 使用方法

includeディレクトリ以下をどこかにコピーするか、追加インクルードディレクトリとしてコンパイラに指定してください。 関数を利用するファイルから以下のように記述します。

    #include <libms.h>

その上で、ライブラリのソースコードファイル(.c)をコンパイルするか、すでにコンパイルされているものをリンクしてください。 libmsが提供する関数やマクロはすべて接頭語(プリフィックス)にLMS_が付いていますので、見分ける際はこれを参考にしてください。 LMSおよびlibmsは、Lib Message Studioの略称です。

## 提供されるファイル

libmsには以下のファイルが含まれます。 プロジェクトチームごとに必要なファイルを選択して利用してください。

### ソースコード

C言語のソースコードおよびヘッダファイルが付属します。 チームごとに細かくカスタマイズする必要がある場合には直接ビルドシステムに組み込むことも可能です。
ただし、改変したソースコードはサポートの対象外となります。 また、バージョンアップした際にマージ作業を行う必要がある点に注意してください。

### Win32 DLL(ネイティブ)

32bit Windows環境におけるDLL (Dynamic Link Library)ファイルです。 リトルエンディアンのリソースファイルのみにアクセス可能です。 ちなみに、このDLLファイルはMessage Studio本体も直接的に利用してプログラムが出来ています。
DLLファイルは、Windows SDK for Windows Server 2008 and .NET Framework 3.5 SDKにてコンパイルされています。

### Wii用静的リンクライブラリ

Wiiで利用可能な静的リンクライブラリ(.a)ファイルです。 このライブラリはCode Warrior for Wii 1.2 (Hotfix 20100105適用済み)および Revolution SDK 3.3を利用してビルドしています。 ビッグエンディアンのリソースファイルのみを取り扱うことが出来ます。

### DS/DSi用静的リンクライブラリ

Nintendo DSおよびNintendo DSiで動作する静的リンクライブラリ(.a)です。 このライブラリはCode Warriror for DSi 1.2 patch 2および TWL SDK 5.4 patch 1を利用してビルドされています。 リトルエンディアンのファイルのみを取り扱うことが出来ます。

- はじめに
- 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
- 扱うファイルの拡張子一覧
- よくある質問