2.1の変更点をまとめてみました
というわけで、Miyakoの変更点を、わかりやすくまとめて見ました・・・が、多すぎ。
全部解説するのに時間が掛かりすぎる・・・。
というわけで、変更点は、一部を抜粋して連載形式で紹介します・・・スミマセン。
・Miyako1.5x/2.0.xからの変更点
大事な部分は文字を大きく。もっと大事な部分は、2回書いたら鬱陶しいだけなので、赤文字にしました。
・特徴・特長
- Miyako.main_loopメソッド内処理の拡充
- (2.1以前)入力更新・画像消去・画面反映のみ
- (2.1.0)上記内容に加えて、スプライト自動描画、アニメーション自動更新、コールバック(タイマー)処理管理、音声再生管理を追加。
- スプライトの定義を明示
- (2.1以前)スプライトの定義が曖昧
- (2.1.0)以下の条件を満たしたものがスプライト
- 描画できる(画像であってもなくても)
- 描画を制御できる
- →SpriteBaseモジュールをmixinしているものがスプライト
- アニメーションの定義を明示
- (2.1以前)アニメーションの定義が曖昧
- (2.1.0)以下の条件を満たしたものがアニメーション
- アニメーションを開始できる
- アニメーションを終了できる
- →Animationモジュールをmixinしているものがアニメーション
- 「スプライト」「アニメーション」として扱えるものの増加
- Map,MapLayer,FixedMap,FixedMapLayer,MapEvent,Font,Viewport,TextBox,Parts,Array,SpriteList,choice,choices,planeの各クラス・モジュール・構造体やインスタンスは「スプライト」として扱える
- Font#renderメソッドなどを追加(Font#text=メソッドで文字列を設定、Font#move!などで描画位置を変更可能)
- スプライト描画の多様化
- (2.0以前)Screen.updateによる自動描画のみ。順番はdpアクセサで変更。描画順に致命的問題あり
- (2.0.x)自動描画を廃止。明示的な描画メソッド(render、render_to)を追加。画面以外へのスプライト描画を可能に
- (2.1.0)Sprite.,Sprite.=メソッドにより、描画の自動描画が復活。
- アニメーション更新の多様化(自動化の追加)
- (2.1以前)アニメーションの更新は明示的呼び出しのみ(Animation#.update_sprite)
- (2.1.0)自動化するアニメーションオブジェクトを管理するメソッドを追加(Animation.,=,anim_hash,start,stop,reset)。
- コリジョンの多様化
- 簡易コールバック(タイマー処理)の追加
- (2.1以前)WaitCounterクラスの管理は明示的なもののみ
- (2.1.0)WaitCounter.append_callbackメソッドを追加(メインループ外で、所定の時間が経過したタイマーに対応づけているブロックを評価。繰り返し評価可能。繰り返し回数も指定可能)
- 複数スプライトへの操作メソッドの拡充
- (2.1以前)まとめて描画できるのはPartsクラスのみ。また、ベースとなるオブジェクトが必要で、管理が複雑になる危険性があった
- (2.1.0)SpriteArrayモジュールの追加、Arrayクラスにmixin。Array#renderメソッドで、スプライトを一気に描画
- (2.1.0)SpriteListクラスの追加。ハッシュのように名前-スプライトに対応するリストを管理。ハッシュと違い、順番を変更可能(SpriteList#swapメソッドなど)
- (2.1.0)PartsクラスをSpriteListクラスインスタンスで再実装。ベースオブジェクト不要(LayoutSpace(パーツ空間の大きさ)がベースオブジェクトの替わりに)
- 選択肢の表現の追加
- Choice構造体にenable、body_disenableメンバの追加
- TextBox,Yuki,InitiativeYukiにも、disenable状態の対応を追加
- マップレイヤー仕様の多様化
- (2.1以前)フォーマットに従ったCSVファイルのみ対応
- (2.1.0)入力はフォーマットに従った配列を、MapStruct構造体に繋げる方式に変更。入力形式に囚われないマップレイヤー生成可能
- 音楽再生の強化
- (2.1以前)音声を再生できるのみ、繰り返し再生中に突然再生が終わるバグあり
- (2.1.0)音声の繰り返し再生が確実にできるように修正
- (2.1.0)音声の繰り返し回数を指定可能に
- (2.1.0)音声の再成長・再生時間・残り時間を取得可能
- (2.1.0)効果音再生の管理を強化(同時再生数の管理を独自に実装)
- (2.1.0)効果音再生の優先度を設定可能(優先度の高い音声をできるだけ最後まで再生)
- 配列のディープコピー
- Arrayクラスにdeep_copyメソッドを追加、配列の中身を複写可能
- require方法の簡素化・多様化
- (2.1以前)require "Miyako/miyako"のみrequire可能
- (2.1.0)require "miyako"でもrequire可能
- (2.1.0)require "miyako_require_only"で、画面・描画に関係のない処理の実装・テストが可能
- ただし、使いこなすにはRuby/SDLの知識が必要
- オブジェクトのコピーの厳密化
- (2.1.0)オブジェクトの中身をできる限り複写できる処理を追加
- (2.1.0)複写すると不具合の起きるクラスは、複写すると例外を発生させる仕様に変更
- Utilityモジュールの追加
- (2.1.0)直線上の全ての点の座標を求めるUtility.product_linerメソッド
- (2.1.0)格子状の空間に置いた矩形に重なる全てこう死の座標を求めるUtility.product_positionメソッド
- InitiativeYukiの追加
- (2.1以前)YukiではFiberを使っていたが、Fiberは時間が掛かるとの結果が
- (2.1.0)メインルーチンをシナリオエンジン側で行わせるInitiativeYukiクラスを追加
・機能制限
- (2.1.0)同時再生できるBGMは1曲までに制限(効果音はその限りではない)
- (2.1.0)EXT/miyak_kairo.rbの削除