XNA3.1(C#)用のシンプルなゲーム開発者向け ライブラリ『danmaq Nineball-Library』を製作・頒布します。
別に内部でなんか凄い処理を行っているわけではなく、それなりの規模の ゲームを作るために最低限必要だろうと思われるアルゴリズムをまとめた ライブラリです。XBOX360とWindowsでなるべく同じ感覚でゲームが 作れるような設計を目指しています。例えば……
ちょっと古いけど、Adobe FlexSDK3.2(AS3)版も用意しています。 気が向けばC++とObjective-C 2.0にも移植するつもりです。(ただしCore部分だけ)
◆0.2.0.103→0.2.1.167における主な変更点
○入力回り
新入力機能にフォース フィードバック機能が長らく未実装のままだったが、実装完了した。
これで旧版の全機能が事実上移行したことになるため、古い機能全機能にObsolete設定をした。
斜め方向情報のための列挙体を追加。
仮想ボタンが離されたかどうかを取得する機能を追加。
最後にボタンを離した時間を取得する機能を追加。
レガシ ゲームパッド入力内部で例外が飛びまくっていた不具合を修正。
CInputAdapter<T,S>クラスのフォース フィードバック ラッパーを削除。
入力回りの計算量を減らして負荷を軽減した。
○配列・コレクション機能
スレッドプール機能(ThreadPoolクラスの車輪の再発明版)を追加。
Flyweightタスクのコレクション インターフェイス対応。
Flyweightタスク管理機能のスレッドセーフ対応。
Flyweightタスク管理機能において、明らかに死んでいるタスクは墓場に送る機能を追加。
CTaskManager.Clear()メソッドを呼ぶと、ぬるぽが出る不具合を修正。
その他リスト・配列操作系の補助用便利関数を追加。
○算術系機能
軽量版数値アニメーションクラスの追加。
xorshift法の乱数機能、および乱数周りの便利機能を追加。
ラジアン定数を追加。
位置揃え定義機能に、原点算出機能を追加。
内分カウンタの再構築。(今までLunaベースだったが、Tweenerベースに移行)
アニメーション機能の主要プロパティを継承先でオーバーライドできるようにした。
○ベクトル演算補助機能
元々算術系関数群クラスとしてまとめていたが分離独立。
2Dベクトルの外積を計算する便利関数を追加。
各種ベクトル変換をする便利関数を追加。
点対線の距離算出関数を追加。
速度角度から二次元ベクトルを生成する機能を追加。
○グラフィック機能
スプライト描画機能にてテクスチャアドレッシング設定対応。
テクスチャの切り出し機能を追加。
テキスト描画機能に、nullチェック機能を組み込んだ。
グラデーション フォント機能機能でなぜかぬるぽが出るので対症療法的な修正。
カメラパスの線形補完計算に等速演算をブレンドして移動速度をスムーズに変化するようにした。
ローダ タスク機能において、読み込みタイミングの間引き機能が全く機能していない不具合を修正。
汎用アニメやスプライト フォントなど、一部内部コードの軽微なリファクタリング。
○マルチメディア機能
Windowsマルチメディアタイマ機能を追加。
サウンド機能にnullチェックを追加した。
音響機能周りを中心に色々とメモリ消費を削減した。
○XBOX360対応
ゲーマー情報制御機能を追加。
ガイド ユーザー インターフェイスのラッパー機能に体験版かどうかを取得する機能を追加。
XBOX360版にて、ガイドの例外対策(対症療法)。
ヒープ使用量表示機能を使用すると、XBOX360版で落ちる可能性がある不具合を修正。
○コア部分
CEntityクラスにDisposeされたかどうかを取得するプロパティを追加。
CEntityクラスにて、現在の状態が完全に空かどうかを取得する機能を追加。
CEntityクラスにおける実験的なスレッドセーフの実装。
CEntityクラスに遅延状態変更タイマを常時稼働するようにした。
CState.emptyClone廃止。(フレームワーク側から見たら蛇足な存在なので)
CVariableOwnerクラスにおいて所有者不在の状態で状態遷移するかどうかのフラグを追加。
CVariableOwner.Dispose()において、所有者を常に削除するようにした。
CEntityクラスのinitialize()メソッドを削除した。
○その他
エラーメッセージなどの文字列の大半を外部リソース化。
基本環境レポート機能を旧版より移行。旧版はObsolete指定にした。
Mutexラッパーに任意の文字列を設定できるようにした。
CSerializeHelper<T>クラスを使って複数ファイルを扱う場合において、データフォルダにゴミフォルダが大量に発生してしまう不具合を修正。
一部コードのコメント抜けを修正。
○サンプルゲーム「赤い玉 青い玉 競走ゲーム」
プレゼンス情報の送信機能を追加。
入力の反応が遅延する不具合を少しだけ緩和した。
初期化回りにおいて、XBOX360版でビルドが通らない不具合を修正。
ガイド表示中にポーズがかからない不具合を修正。
その他フレームワーク側の仕様変更に合わせた対応。
◆今後について
原則として、今回のバージョンがFinal版となります。
今後XNA版のメンテナンスは継続しますが、Nineballの開発に重点を置かず、大きな更新は行いません。
zip形式での頒布はこのバージョンで最後にするつもりです。もし最新版を入手したい場合、trunkより直接入手してください。
(もし今回のように多くの機能が累積されたら、その段階でリリースを考えます)
今後は、Project THIN( http://thin.sourceforge.jp/ )の開発がメインとなります。
こちらにもNineballの技術が部分的に組み込まれる予定です。