Miyako APIリファレンスマニュアルへ
Yukiリファレンスマニュアルへ
Miyako Extensionリファレンスマニュアルへ(テキスト形式)

# −情報交換の場＆日記−

Miyakoの制作日記やRubyなどに関するよしなしごとを「はてな」上で公開いたします。また、Miyakoに関する情報提供の場として解放したいと思います。是非ともご愛顧をよろしくお願いいたします。
「サイログ。
MiyakoとかRubyとかなんとか」へ

# −v0.9.9（1.0beta）リリース！−

本バージョンアップで、モジュール・クラス名が大幅に変更されています。
前バージョンからのスクリプトの引継に多大な修正が必要なことをお詫び申し上げます。
v0.9.1からの変更点(太字は重要な箇所、赤字は特に重要な箇所)は、以下の通りです。

- メッセージマクロのフォーマットを新たに「メッセージマクロ言語Yuki」としてマクロ言語化
- Yukiモジュールの追加
- メッセージ関連クラスを改名＆Yukiモジュールに変更
- メッセージ関連処理の整理、新規マクロの追加
- AuthorモジュールをStoryモジュールに名称変更
- ScriptクラスをSceneクラスに名称変更
- Sceneクラスのテンプレートメソッドにinitメソッドを追加
- Sceneクラスインスタンス内部で使用できるインスタンス変数に@prev,@upprtを追加、直前に実行していたシーンやサブルーチンの呼び元シーンのチェックが可能に
- シーンのキャッシュに対応（今頃・・・）。20個までのシーンキャッシング可能
- ウェイト（message_waitマクロ、sleepマクロ、pauseWaitプロパティ、cursorWaitプロパティ、pageWaitプロパティ）をフレーム単位から秒単位（実数可）に変更
- ShowData,HideDataクラスの廃止
- MessageDirectorクラスの整理
- Inputモジュールにtrigger_all?/any?、pushed_all?/any?メソッドを追加
- Miyako Extensionに、ScinarioWindowの追加
- マクロ・コマンドマニュアルの修正
- 各種バグの修正

※v0.6から、インストールの方法が変わりました。
v0.5をインストールされている方はアンインストールをお願いします。
詳しくはreadme.txtをご覧下さい。

# −はじめに(Miyakoって？)−

このソフトは、ゲームやプレゼンテーションなどのインタラクティブコンテンツをゲームプログラミングの感覚でRubyを使って簡単・気楽に作成できることを目指したクラスライブラリです。
Ruby上で使えるメディアライブラリ「Ruby/SDL」のラッパークラスです。
特色として、スプライト表示や入力デバイスの制御などの機能を簡単に扱えるようにカプセル化しただけではなく、各画面の関係を整理しやすく、また分かり易く記述できるAuthorモジュール、ワイプイン・アウトやラスタ・スクロールなどを一つのクラスに実装できるEffectクラスなどといったコンテンツ制作の手助けとなれる環境も用意しています。
また、スクリプトを組んで実行すれば「組んだ結果が見て分かる」という効果もありますので、Rubyの勉強用にもうってつけです。
まだまだ「簡単」とはいきませんが、「気楽」にコンテンツ制作やRubyの勉強が出来ていただければと思っています。

# −Miyakoのタイトルの由来−

Miyakoのタイトルは、以下の事柄に由来しています

- 「都」というネーミングは勿論「京都」から取った
- ゲーム業界に大きな影響を与えた任天堂の本社が京都にあることに由来する
- リッチ・コンテンツを気楽に作れるということで、優雅そうなイメージを「はんなりと」醸し出す、「都」という漢字から取った
- Miyakoの前身、EGSRの制作のきっかけとなったのが京都で行われた「Ruby勉強会＠関西-7」だったため
- 名前を考える際にたまたま読んでいた漫画『えすぴー都見参！(岬下部せすな・芳文社)』の主人公・五条都（ごじょう・みやこ）から取った（笑）

# −Miyakoの構成−

Miyako v0.6からは、更に使いやすい環境を提供するため、構成をMiyako API、Miyako Extensionという２つの要素で構築いたしました。これまでどおり、さまざまな形式のゲームを作りたいときはMiyako APIを直接いじって、ジャンルに特化したスクリプトを書きたいときはMiyako Extensionを利用することによって、簡単にコンテンツ制作を行えるようになっています。
なお、現在のMiyako Extensionでは、アドベンチャーゲーム(ビジュアルノベル、ゲームブック)に特化した構成となっています。
更に、v0.9.9からは、メッセージ・コマンド処理部分の機能強化を目指すため、マクロ仕様と実装を、Miyako用メッセージマクロ言語「Yuki」としてMiyakoモジュールから独立させ、Yukiという新しいモジュールに移動、各クラスを改名しました。
今後は、基本的に「Yuki」の機能強化を進めていきます。
以下は、Miyako APIのクラス一覧です。
書くクラス・モジュールは全てMiyako/Yukiモジュールの構成要素になっています
以下は、Miyako Extensionのクラス一覧です。
以下のクラスも全てMiyakoモジュールの構成要素です。

# −EGSRのポリシー−

EGSRとは「Easy Game Scripting by Ruby」の略で、Miyakoの開発当初に掲げていたゲーム制作のポリシーです。
当初、本ライブラリのタイトルも「EGSR」とし、単純にRubyで簡単にゲーム制作できる環境として作成していました。
元々は、『RPGツクールXP』というゲームコンストラクションソフトで使われていたRubyベースのスクリプティング環境(ゲームエンジン)「RGSS」の魅力にとりつかれたのが始まりです。
必要なデータがカプセル化されていたり、RPGに限らず少しのコードでグラフィカルなスクリプトが組めたりと、非常に使いやすいゲームエンジンと感じました。
Rubyの勉強用としても使えるので、なるべく広く使ってもらいたいと考えていたのですが、
ライセンスやOS環境の関係で先行きが難しいということが判明。方向性を模索しているうちに
「それやったら、Rubyで簡単にいろんなゲームが作れるクラスライブラリを作ったらええやん！」
という結論に達し、EGSRの制作を開始いたしました。
（ちなみに、略称が4文字なのは、RGSSに対するリスペクトです）
開発開始から、結構使えるようになってきましたのでサイトを作って公開していたのですが、ある時(Ruby勉強会＠関西-9の懇親会)、「これ、プレゼンテーションとかにも応用できますね」という意見をいただきました。その意見に納得した僕は、ゲーム以外にも応用できるように手を加えました。
そのとき、ゲームに特化した印象を与える「EGSR」から「Miyako」にタイトルを変更いたしました。
しかし、「EGSR」の名前が消えるわけではありません。僕自身、「Miyako」のメインをゲーム制作ツールとしているため、「EGSR」という言葉をを「ポリシーの一種」として残しています。
ゲームを制作を楽しむこと、それでも思ったように動かずに試行錯誤すること、作っていたゲームが完成したときの達成感、そして、完成したゲームを他の人にプレイしてもらい、楽しそうにプレイする姿を見て(オンライン配布なら、その姿を想像して)自分自身が感動すること、そして何よりも「ゲーム制作ができる」ということ。
これらの思いを共有できるように、EGSRのポリシー、そして「Miyako」が少しでも手助けできればと思って止みません。
Happy EGSR(笑)！

# −スクリーンショット−

手前で作成したスクリプトからいくつかスクリーンショットを用意しておきます。
ウィンドウの作成もできます
一部文字色を変更したり、１文字ずつ表示させることもできます
RPGの戦闘画面のようなものも作れます
コマンド選択の機能もMiyakoに組み込まれています
開発当初の名残で、マップの表示もできます
イベントクラスを用意すればもっと開発がラクになるでしょう
（・・・イベントクラスは作らないかも・・・）
複数解像度に対応しました
レイアウト機能も追加しました
例えば、これは640x480ですが・・・
動的に800x600に変更できます
設定したレイアウト情報通りに設置されていることに注目！
真ん中のウィンドウの「プレイヤ」という名前がポイントです
Window、TextBoxでもレイアウト情報を設定できます

# −特徴−

(Miyako添付のReadme.txtから転載しています）
メリット

- ゲームを作るような感覚でプレゼンテーションやe-ラーニングのシステムを作れる（はず）
- カスタマイズ性に富んだMiyako APIと、より簡単にコンテンツ作成ができるMiyako Extensionの２構成
- Authorモジュールによる簡単なフレームワークを用意(各画面の構成が分かり易くなります)
- スプライトには、位置情報を抽象的に実装できるレイアウト機能、
  対象の図形のレイアウトに準じたレイアウト設定が出来るスナップ機能を搭載
- 図形を描いたスプライトを作成するShapeクラス
- アニメーションを管理するAnimationSpriteクラス
- 実時間をもとにウェイトをかけることができる(正確ではないですが)WaitCounterクラス
- スプライトへの効果を分かり易く記述できるEffectクラス
- Pure Ruby（内容物はRubyスクリプトファイル2つと、幾つかの画像ファイルのみです）
- Windows/Linuxに対応
- インストールがラク（スクリプトファイル１〜２個をコピーするだけ）
- ゲーム作成に最低限必要な構成をカプセル化(スプライト、ウィンドウ、サウンド等)
- スプライト、プレーン、ウィンドウ等をクラスとしてカプセル化
- スプライトを通じての文字描画や図形描画が可能
- Waveファイルによる効果音、oggによるBGM演奏
- キーボード、ジョイパッド両対応(1人プレイのみという制限付きです・・・)
- Ruby/SDLの機能が使える（ラッパークラスなので）
- Rubyの勉強に役に立つ（ハズ）

デメリット・制限
（ゴメンナサイ！）

- 画面サイズは640x480のみ
  →800x600等の複数解像度に対応しました
- 同時発色数はハイカラー以上（フルカラー奨励、256色非対応）
  →この制限は変更の予定はありません
- ウィンドウスタイルのみ、フルスクリーンモードなし
  →フルスクリーンに対応、メソッドやAlt+Enterでモードの切り替えが出来ます
- 遅い（どうしようもないなぁ・・・）
  →逐次リファクタリングや高速化などを行う予定
  →v0.7では少しばかり高速化を実行
- ウィンドウ、マップのインタフェースが煩雑（どうしようか・・・）
  →WParamに加えて、MParamクラスも用意しました
  →更に、WParamクラスをWindowParameter,CursorParameterに分割しました
- Windows以外ではフォントパス検索が不十分（解決したい・・・）
  →Windows以外では$font_path変数にディレクトリを格納する形式にしました
  →特定のディレクトリ（カレントディレクトリ、フォントディレクトリ）のフォントのみを採用し、フォントパスを格納するファイルを作成するようにしました
  →更に、serif,sans_serifフォントを用意し、Windows/Linux間のファイル名の相違をカバーしました
- エラーの整備が不十分
  →思ったよりエラーが出そうな箇所が少ないので、その都度追加するようにします
- ドキュメントが全然整っていない（リファレンスはまだまだ・・・）
  →各種チュートリアルや「るびま」記事などでドキュメントを拡充する予定

- Windows/Linux以外のOSに対応していない

  # −動作環境−

  Miyakoは、以下の環境で動作することを想定しています
  マシン環境
  - PentiumIII以降のCPUを積んだマシン(互換プロセッサでも可)
  - 256MB以上のメインメモリ(出来れば512M、いや1Gあれば・・・)
  - サウンドボード(出来ればSoundBlaster Live!クラスは欲しい)
  - ジョイパッド(テストプレイがラクに！)
  - HDD容量は必要な分だけ(Miyako本体は1MBもいかないし・・・)
  OS
  - Windows 2000/Xp(SDLが動作するもの)
  - Linux(SDLが動作するもの)
  制作環境
  - Ruby1.8.2以降(1.8.4奨励)
  - Ruby/SDL 1.0.0以降(1.1.0奨励)
  - MS 明朝・MS ゴシック(Windows)、さざなみフォント(Linux)、みかちゃんフォント(必要なら)
  - 他、エディタ、グラフィックエディタ、作曲ソフト、マップエディタ等

  # −インストール方法−

  本節では、既にMiyakoが利用できる環境(Ruby、Ruby/SDL、SGE、SDL_ttf、SDL_Mixer、SDL_image)
  が整っていると想定しています。
  - (使用OSがLinuxのとき)「さざなみフォント」がインストールされている状態になっていることを確認します
  - 次節のリンクからMiyako本体をダウンロードします
  - アーカイブを展開します。出来れば、展開したファイル群に添付しているreadme.txtの一読をお願いします
  - miyako.rb,miyako_ext.rbを使用するスクリプトと同じディレクトリにコピーします
  これで、Miyakoのインストールは完了です。あとは、スクリプトの先頭に、

      require 'miyako'
      require 'miyako_ext'

  と入力すればOKです。
  また、アーカイブ内には幾つかのサンプルスクリプトを用意していますので、ご参考にどうぞ。

  # −ダウンロ〜ド−

  下のリンクからMiyako本体をダウンロードできます。
  Miyako_v0.9.9.zip
  Miyako_v0.9.9.tar.gz
  (本ダウンロードリンクは、リンクカウンタとしてKent Webさんの
  「Lime Counter」を使用しています)

  # −リファレンスマニュアル−

  下のリンクからMiyako APIとYukiのリファレンスマニュアルを閲覧することができます。
  随時解説を追加修正していきたいと思います。
  Miyako Extensionについては、アーカイブに同梱しているext_reference.txtをご参照下さい。
  Miyako API
  リファレンスマニュアルへ
  Yukiリファレンスマニュアルへ

  # −ライセンス−

  本ライブラリは、LGPL2.1に基づいた再配布が可能です。
  また、本ライブラリを使用して作成した成果物の著作権はその作者に帰属します。
  （これは使用者ご本人の自由ですが、もし本ライブラリを使用して作品を作られた場合、
  その旨（作品がダウンロード出来る場所など）をご一報いただければ幸いです）

  # −免責事項−

  本ライブラリは無保証です。本ライブラリを使用していかなる問題が生じても、
  本ライブラリ作者であるサイロス誠は一切の責任を負わないことをご了承下さい。

  # −連絡先−

  もし、何かお気づきの点や御意見・ご要望がございましたら以下のメールアドレスでご連絡ください。
  ＳＰＡＭ対策のため、メールアドレスは２バイト文字かつリンク無しで置いておきます。
  また、"あっと！"の部分は"@"に置き換えてください。
  ｃｙｒｏｓｓあっと！ｐｏ．ｔｗｉｎ．ｎｅ．ｊｐ
  但し、Miyako以外の、RubyやRuby/SDL等のインストールに関する質問はお答えできかねます。
  以下の公式サイトをご参照下さい。
  Ruby公式サイト
  COM Meets Ruby
  (ActiveRubyのサイト。Miyakoの動作確認はActiveRuby+Ruby/SDLで行ってます)
  Ruby/SDL公式サイト
  (みかちゃんフォント公式サイト)

  last updaetd 2006.10.15
  2006 Cyross Makoto