Download List

Project Description

XNA3.1(C#)用のシンプルなゲーム開発者向け ライブラリ『danmaq Nineball-Library』を製作・頒布します。

別に内部でなんか凄い処理を行っているわけではなく、それなりの規模の ゲームを作るために最低限必要だろうと思われるアルゴリズムをまとめた ライブラリです。XBOX360とWindowsでなるべく同じ感覚でゲームが 作れるような設計を目指しています。例えば……

  • WindowsジョイスティックとXBOX360コントローラを同じ感覚で扱えたりとか
  • ランタイムの有無を判別してGamerServices.Guideの機能をWindows機能で(ちょっとだけ)再現したりとか
  • 出来る限り#if XBOX360を拝まないコードが書けたりとか
  • その他諸々

★ライブラリに入っている主要な機能一覧を一部だけ紹介(XNA3.1版)

  • State パターンのためのインターフェイス完備
  • シーン、タスク、Fryweight、コルーチン管理機能、部分責任コレクション(勝手に命名)機能
  • A/S比を維持した画面の拡大縮小機能(パン&スキャン/レターボックス対応)
  • グラデーションフォント表示機能(色/拡大率/回転/相対座標)
  • ボタン入力機能(Windows Joystick/XBOX360 GamePad/Keyboard & ChatPad/Mouse)、ボタンアサイン/独自のアクションマッピング入力機能
  • 内分カウンタなどの便利な関数群
  • ライブラリの使い方が判り易い、シンプルなサンプルゲーム付属

ちょっと古いけど、Adobe FlexSDK3.2(AS3)版も用意しています。 気が向けばC++とObjective-C 2.0にも移植するつもりです。(ただしCore部分だけ)

System Requirements

System requirement is not defined

Released at 2011-01-12 23:00
nineball-Library for XNA on C# 0.2.0.103 (3 files Hide)

Release Notes

■サンプルアプリ「赤い玉 青い玉 競走ゲーム」追加。
今までタイトル画面まで作っていましたが(それもビルドが通らなかった)、
今回の更新で一通り完成しました。

■下記機能の新規追加。
・Flyweightなタスク管理機能を追加。
・マップ方式当たり判定機能を追加。
・カメラパスやフォグアニメ管理ができる、汎用アニメクラスを追加。
・スプライト バッチをアニメーションさせるための機能を実装完了。
・時間・ヒープ・フレームレート表示機能を追加。
・ガイド インターフェイスのラッパー機能を作成。

■下記機能を刷新し、ゼロから作り直した。旧版はObsolete指定。
・入力機能
・XACT音響機能
・タスク/コルーチン管理機能
・解像度管理機能
また、下記機能も小刷新した。
・CEntityクラス
・永続データ管理クラス

■その他の更新・修正など
スプライト フォント機能において下記対応。
・合成モード設定機能を追加。
・グラデーション有効フラグが実際と反転していた不具合修正。
・大量に無駄なヒープメモリを確保してしまう不具合を修正。
旧版入力機能において、下記対応。
・ボタンを離された瞬間を取得する機能を追加。
・毎秒24KB程度無駄にヒープ確保していた不具合を修正。
旧バージョン後方互換用のローダ タスクが入っていなかったので急遽追加。
グラデーション構造体の内分カウンタをカスタマイズできるようになった。
コンテンツ キャッシュ機能に強制リロード機能/アセット文字列取得機能を追加。
旧解像度管理機能から対応解像度コレクション機能を分離、独立した。
空の状態のクローンを実装。
便利関数にベクトル回転機能を追加。
メインループ機能を削除。
ミューテックス オブジェクト機能をスターター クラスから分離し、それ以外は削除した。
フェーズ・カウンタ管理クラスがIDisposableに対応した。
XBOX360版でビルドが通らない不具合を修正。
フレームレート計測機能が全く機能していなかった不具合を修正。
ベクトルの回転機能において、回転方向が逆だった不具合を修正。
旧バージョン互換機能を使ってフレームワークを起動すると環境確認チェック部分で誤動作を起こして起動できない不具合を修正。
その他、微細な修正。


今回は大幅な機能追加および修正を行いました。
旧バージョン(0.0~0.1)との互換性もある程度考慮していますので、少ない修正で移行もできます。

Changelog

■2011/1/11 0.2.0.103
時間・ヒープ・FPS表示機能を追加。
CEntityクラスの解放処理がいい加減だったのでもうちょっと真面目に実装した。
移動キーのキーリピートが片方向にしか作用しない不具合を修正。

■2011/1/10 0.1.0.101
汎用アニメクラスに既定のコンストラクタを追加。
刷新版解像度管理機能において、下記対応。
・数パターンのコンストラクタを追加。
・拡大率が正しく計算されない不具合を修正。
・レターボックス機能がそのままでは使用できない不具合を修正。

■2011/1/9 0.1.0.100
0.1.0.52で一旦ストップしていた解像度機能刷新の実装を完了した。
旧解像度管理機能をObsolete指定にした。
旧解像度管理機能から対応解像度コレクション機能を分離。
カメラパス管理クラスとフォグアニメ管理クラスを統合して汎用アニメクラスを作成。
年越しのため、クレジットの年表記を繰り上げ。

■2011/1/7 0.1.0.99
入力周りを中心に、XBOX360版でビルドが通らない不具合を修正。

■2010/12/29 0.1.0.98
プロジェクト設定の軽微な変更。

■2010/12/25 0.1.0.97
アニメーション スプライト機能において、Dispose()呼び出し時にデータをクリアするようにした。

■2010/12/23 0.1.0.96
マップ方式当たり判定機能にて、グリッド辺り複数オブジェクトを登録可能にした他、一部仕様変更。
ガイド ユーザー インターフェイスのラッパー機能にガイド通知位置を取得/設定する機能を追加。
状態変化時間取得機能を削除。

■2010/12/14 0.1.0.95
コンテンツ キャッシュにおいて、インターフェイス レベルで
読み出し対象のアセット文字列を取得できるようにした。

■2010/12/13 0.1.0.94
レガシ ゲームパッド周りにおける下記対応。
・ハット スイッチを使用した2D入力に対応。
 (一部のPS1パッドでは十字キーをPOVに割り当てているようで)
・方向ボタン入力が機能していない不具合を修正。
・アナログ入力のハイパス フィルタが事実上のバイパス フィルタになっていた不具合を修正。
タスク管理クラスの基底状態の名前空間名が明らかに間違っていたので修正。
その他、微細な修正。

■2010/12/12 0.1.0.93
ガイド ユーザー インターフェイスのラッパー機能にガイド表示中かどうかを取得する機能を追加。
入力周りのコメント修正。

■2010/12/8 0.1.0.92
Flyweightなタスク管理機能において、インデクサを実装した。

■2010/12/5 0.1.0.91
ベクトルの回転機能において、回転方向が逆だった不具合を修正。

■2010/12/2 0.1.0.90
空の状態のクローンを実装。
一部クラス名のTypoを修正。
CEntity.Dispose()してもIState.teardown()が呼ばれない不具合を修正。

■2010/12/1 0.1.0.89
所有者を動的に変更可能な、状態を持つオブジェクト クラスを追加。

■2010/11/29 0.1.0.88
即時状態変化機能をどこからでも使用できるようにした。
最後に状態が変化したフレーム時間を取得する機能を追加。
バージョン表記について、ビルドナンバーをタスクベースからの通しのナンバーで合わせた。

■2010/11/28 0.1.0.75
永続データ管理クラスで、Windows版でも非圧縮保存に対応した。
スプライト描画機能で複数画像を異なる合成モードを指定すると正しく描画されない不具合を修正。
スプライト フォント描画機能で無駄なヒープメモリを確保してしまう可能性がある不具合を修正。

■2010/11/27 0.1.0.74
グラデーション フォント更新時に無駄なヒープメモリを確保してしまう可能性がある不具合を修正。

■2010/11/25 0.1.0.73
フォグ アニメーション管理クラスを追加。
グラフィック機能用の名前空間を作成し、一部機能をそこに移転させた。

■2010/11/23 0.1.0.72
旧版入力管理機能をObsolete指定にした。
刷新版入力機能にて、下記対応。
・高位入力コレクションにボタン割り当て補助機能追加。
・XBOX360ゲームパッドのハイパス フィルタを軸ごとにも軽くかけるようにした。

■2010/11/23 0.1.0.71
音響管理ヌル機能を追加。
解像度列挙体に一段階上位または下位の解像度を取得する機能を追加。
刷新版入力機能にて、下記対応。
・ヘルパ クラスを機能強化の上、復活。
・入力情報構造体のキーリピート判定を軸ごとに行えるようにした。
一部クラスの名称変更。
小刷新版永続データ管理クラスにおいて、XBOX360版だとビルドが通らない不具合を修正。
グラデーション フォント描画時に大量のヒープメモリを確保してしまう不具合を修正。

■2010/11/22 0.1.0.70
ガイド インターフェイスのラッパー機能にて、
ゲーマー サービス コンポーネントを削除する機能を追加。
刷新版入力機能にて、ヘルパ クラスを削除。
スプライトバッチ描画機能のStateベース化。旧機能はObsolete指定にした。
小刷新版永続データ管理クラスについて下記対応。
・データの要件を刷新に当たり緩和していたが、元に戻した。
・フォルダが存在しない場合、新しく作るようにした。
・保存に成功しても失敗とレポートされる不具合を修正。
雑多な関数群クラスについて、名称変更など軽く整理した。

■2010/11/22 0.1.0.68
永続データ管理クラスの小刷新。実質旧版のリファクタリング版。
ガイド インターフェイスのラッパー機能を作成。
メインループ・スタータ機能を一時的に無効化。今後機能縮小/汎用化していく。
刷新版入力機能にて、下記対応。
・ヘルパ クラスを追加。
・キーボード入力部に複数ボタンの組み合わせで軸とする機能を追加。
・高位入力部分にもアナログ入力のハイパス フィルタを実装。
・キーリピート機能追加。

■2010/11/21 0.1.0.67
刷新版入力機能のヘルパ クラスを追加。
刷新版入力機能にて入力状態をリセットする機能を追加。
刷新版音響機能をストリーミングWaveバンク対応した。
刷新版音響機能のロジック順序ミスで初期化できない(例外が発生する)不具合を修正。
旧版音響機能をObsolete指定にした。

■2010/11/20 0.1.0.66
ミューテックス オブジェクト機能をスターター クラスから分離した。

■2010/11/19 0.1.0.65
入力機能刷新完了。
XBOX360版だとビルドが通らない不具合を修正。

■2010/11/18 0.1.0.64
入力機能刷新作業の続き。低位入力コレクションが完成し、高位入力部もレガシ機能除き完成。

■2010/11/17 0.1.0.63
音響機能をタスクベースからステートベースへと移行。
フォントやローダなどの一部の機能において、状態の型制約を緩和した。
入力機能刷新作業開始。低位入力部およびそのコレクション(XBOX360チャットパッド除く)がほぼ完成した。
旧入力機能のエラーメッセージを刷新版に統一した。

■2010/11/16 0.1.0.61
音響機能刷新。自前で実装していた機能の大半を
XACT側の機能に任せることで、非常にシンプルな構造となった。
入力機能刷新に先立ち、旧入力機能の残滓をold名前空間へ移転した。
旧入力機能やタスク管理クラスなどにおいて毎秒24KB程度無駄にヒープ確保していた不具合を修正。

■2010/11/15 0.1.0.60
音響機能刷新作業開始。(中間コミット)
現在単純なBGM再生(モノ/多重)および効果音再生(多重)のみ。

■2010/11/14 0.1.0.59
状態遷移において、完全に同一の状態同士の遷移を許可するフラグを追加。

■2010/11/7 0.1.0.58
マップ方式当たり判定機能を追加。
コンテンツ キャッシュ機能に強制リロード機能を追加。

■2010/10/31 0.1.0.57
カメラパス管理クラスを追加。
タスク管理クラスに即時全削除機能を追加。
コルーチン管理クラスの追加削除予約の総数取得に対応した。
グラデーション構造体の内分カウンタをカスタマイズできるようになった。
フェーズ・カウンタ管理クラスがIDisposableに対応した。
一部ドキュメンテーションが紛らわしかったので修正。
スプライト管理クラス以外の機能で描画した場合、描画されない不具合を修正。

■2010/10/30 0.1.0.56
タスク管理機能の一部仕様変更。
状態遷移を一定時間遅らせる機能を追加。
次に遷移する状態を外部から取得できるようにした。
コルーチン管理クラスを完全にStateベースへ移行。旧バージョンはただのラッパーとなった。
便利関数にベクトル回転機能を追加。

■2010/10/29 0.1.0.55
入力機能(後方互換版)にボタンを離された瞬間を取得する機能を追加。

■2010/10/28 0.1.0.54
Flyweightなタスク管理機能を追加。
スプライト バッチをアニメーションさせるための機能の一部仕様変更。

■2010/10/26 0.1.0.53
スプライト バッチをアニメーションさせるための機能を実装完了。

■2010/10/23 0.1.0.52
解像度管理機能周りにある全画面非対応解像度でスケール調整しない不具合対処のため該当機能の作り直し。
古い機能はとりあえず旧バージョン後方互換として名前空間変更の上残すことにした。
画面解像度列挙体のサイズ変換処理を予めキャッシュすることで負荷軽減した。

■2010/10/19 0.1.0.51
スプライト バッチをアニメーションさせるための機能をガワだけ作成。
フレームレート計測機能が全く機能していなかった不具合を修正。
そのついでに計測ロジックを最適化、負荷を微量だが軽くした。

■2010/10/18 0.1.0.50
タスク管理機能において、削除時のコールバック機能は蛇足と判断し全削除時を残して廃止。
タスク管理機能において、特定条件で所属タスクを排除する機能を追加。
タスク基底インターフェイスにIDisposableを実装。

■2010/10/17 0.1.0.49
スプライト描画機能において、フォント描画にも合成モード設定に対応。
同時にフォント機能にも合成モード設定機能を追加した。

■2010/10/16 0.1.0.48
CEntityクラスにフレームカウンタ制御機能を追加。
CEntityクラスに次に移行する状態を外部から見られるようにした。
フォント機能において、グラデーション有効フラグが実際と反転していた不具合を修正。

■2010/10/15 0.1.0.47
旧バージョン互換機能を使ってフレームワークを起動すると
環境確認チェック部分で誤動作を起こして起動できない不具合を修正。

■2010/10/12 0.1.0.46
タスク管理クラスを実装完了。
旧バージョンで使用していたレイヤ機構は実装取りやめ。
(レイヤの数分だけ、管理クラスぶん回せばいいんじゃね?とふと思ったので)
旧バージョン後方互換用のローダ タスクが入っていなかったので急遽追加。

■2010/10/11 0.1.0.45
タスク管理クラスを半分ほど実装した。インターフェイスICollection<T>に対応。

■2010/10/10 0.1.0.44
タスク管理クラスを追加。まだガワだけ。
(ゲームコンポーネントは追加削除時のイベントがオーバーヘッドとなるため、大量の追加削除には向かない)
前バージョンの更新の結果、ローダ、メインループなどの機能に無駄なコードが発生したため、修正。