2009-05-01から1ヶ月間の記事一覧
DirectXにはViewPortという機能がある。 ようするにクリッピング範囲の指定だ。 現在、DXRubyにはViewPortを指定する機能が無い。 Imageクラスの拡張が超高速に動くのなら、それこそImageオブジェクトを適当な範囲で作って、そこに描画するようにすればViewP…
Rubyでアクションゲームは一般的なイメージとして無謀だ。 ファミコン程度のものであればできそうな感じ。 しかしそれも物によって、ライブラリの得意不得意というものがある。 大きな画像を描画するのが遅ければ全画面スクロールして大きなキャラを動かすの…
DirectXを直接使うプログラミングをする場合、デバイスロストの動作を理解してゲームを設計しなければならない。 テクスチャを全てレンダーターゲットにしてハードウェア描画をしながら使う、ということをすると、デバイスロストで全てを失うことになるから…
DirectX11が出ようかというこの時代にいまだにDirectX9なのは、WindowsXPではDirectX9までしか使えないからだ。 Windows7が出ようがこの状況はまだ数年変わらないだろう。 そういうことでDXRubyも当分DirectX9だ。 DirectX9のDirectGraphicsでは、描画系の関…
DXRubyにはImageオブジェクト間の転送機能が無い。 ピクセル単位で取得と書き込みはできるから、がんばればなんとかなるだろうが、恐ろしく遅いであろうことは想像に難くない。 Cでそういった機能を作ればRubyでやるよりかは相当速いだろうが、結局ソフト描…
DirectXにはデバイスロストというとても厄介な問題がある。 現状のDXRubyではD3DXSpriteをロストさせてリセット、復元の処理を入れてある。 これをしないとデバイスロスト時に描画されなくなってしまうのだ。 テクスチャはD3DPOOL_MANAGEDを指定しているから…
MSIのネットブック。 社長のやつなのだが、いない隙に勝手にサンプルシューティングを実行してみたらDirectX Graphicsの初期化でエラーになってコケた。 予想外の結果にびっくりだ。 ATOMプロセッサ使ってる新しいやつだから、まさか動かないとは思わなかっ…
ソフト頂点シェーダを使う指定をしているDXRubyは動いた。 どうやら原因は想像している通りらしい。
DXRuby1.0.1では1つの画像を複数に分割して読み込む機能がある。 あるのだが、縦横の数を指定するから、すべて同じ大きさになるのが制限事項となる。 1つの画像に大きさがマチマチのデータが混在してることを想定していなかったのだが、ゲームの素材を調べて…
DXRubyExtensionは用途は色々になる予定だが、とりあえず衝突判定ロジックが詰め込まれている。 これはRuby汎用の拡張ライブラリだから、名前にはDXRubyと付いているしサンプルもDXRuby用だがDXRubyには依存しない。 はずだ。 論より証拠ということで、Star …
とりあえずDXRuby1.0.2リリース。 ネットブックを借りて来ちゃったから動作確認してバッチリ。 最新とはいえAtomプロセッサは遅かった。これは丁度いいテスト環境になりそうだ。 一つ買ってもいいかも。 それはさておき。 DXRubyで何か作ろうと思ったとき、…
判定範囲オブジェクトから範囲を取得できるようにした。 これで、判定オブジェクト配列から範囲を取りまくって、Imageオブジェクトを動的生成して判定範囲を表示する、とかができるようになる。 他に用途が思いつかない。 Ruby側でこれをできるようにしよう…
たとえば、Rubyで大量のループをする。 objects.each do |obj| obj.draw end みたいなことをする場合、drawメソッドの呼び出しが大量に発生するわけだ。 もちろんこれを省くことはできないのだが、Rubyではブロック付きイテレータは遅いのだ。 いや、Ruby内…
Star Ruby拡張クラスライブラリのStarFrameを眺めてたら、加速配列と減速配列を作るメソッドがあった。StarFrame http://coderepos.org/share/browser/lang/ruby/starframe?rev=27505 面白そうだったからオプションのフォーメーション変更時の動きに減速配列…
なにげにサンプルシューティングをRuby1.9.1で動かしてみたところ、Ruby1.8.7で動かしていた時と最大負荷がかなり近いことに気付いた。 具体的にはYARV採用でVM方式になった1.9.1だが、大雑把に言えば1.8.7で遅かったところを速くしたっつーことで、1.8.7の…
基本的なところからもう一度考え直してみよう。 Rubyゲームプログラミングの時代はやってくるのか。 Rubyが好きな人はとても多いと思う。 ゲームを作るのが好きな人も結構いると思う。 しかし、その2つを同時に満たす人は、あんまりいないかもしれない。 ま…
いきなりやってしまった。 インストール時にコピー先ディレクトリが無いとエラーになるから、作成するように修正した。 しかも1.9.1版はインストールできないときたもんだ。 ついでにStar Rubyのインストーラを参考に若干修正しといた。 さすがにインストー…
パトラッシュ、疲れたろう。 僕も疲れたんだ… ,.-─-、 / /_wゝ-∠l ヾ___ノ,. - > /|/(ヽY__ノミ .{ rイ ノ 何だかとても眠いんぶべら パーン l>‐∠l ,.-─-、∩/,. - > //。wv、ゝヾヽY__ノミ ヾ__Д(☆ ミ⊃ ヽ /∨ (ヽ
何年か前、イオンだったかどっかで偶然誰かのミニライブに出くわして、聞いたことある歌なんだが誰かは知らんなーと思っていた(そういうのにすごいウトい)のだ。 これだ、この人、この歌。 YouTubeより「奥華子 ガーネット/2007春コンサート ~TIME NOTE~」…
DXRubyMapを使ったらどんなもんが作れるのだろう、と思って、ちょっとためしていた。 マップ素材はこちらから頂いた。 First Seed Materialさま http://www.tekepon.net/fsm/ これが作ってみたマップ。右クリックで選択、左クリックで置く。 左Shiftでチップ…
ゲームなどの実行速度を決めるのは、大きく分けて2つの要因がある。 「環境」と「アルゴリズム」だ。 環境はCPUやGPU、メモリ、バス、OS、ドライバ、ライブラリなどで、アルゴリズムはゲーム側でどのように描画や計算をするか、という話だ。 2つのうち、どっ…
必要メモリ帯域は大幅に減らした。 うちには遅いPCは無いから実際どのレベルまで動くようになっているのかはわからないが、半透明フィルタ100枚かぶせた時の動作は軽くなったから効果はあるはずだ。 どうしてそういう判断になるかというと、半透明フィルタの…
Exerbのソース取ってきて1.9.1コア作ってみようと思って、.excファイルできてexerbでexeもできたが実行するとコケてしまって原因不明で諦めた。
記録として、サンプルシューティングで修正したところとその意味を書いておく。 基本的な仕組みとして、弾とか敵とかはそれぞれのモジュールが管理する。 モジュールのインスタンス変数としてオブジェクト配列や当たり判定配列があって、モジュールのメソッ…
ほったらかしになってた棒人間エディタをまたいじっていた。 線の先に線をつなげるようにして、連動して回転するようにしたところ、腕の付け根が表現できないことに気付いて、急遽「首」を追加してみたのだが、何かが変だ。 関節を増やしすぎても使いにくく…
ヒマだし事務所に俺1人だから、また休みを取っている。 景気の悪さは結構なものだ。 GWもあったし、ここ一ヶ月ぐらいで半分ぐらいしか出勤していないような気がする。 おかげでDXRubyのリリース準備は進むのだが。 DXRubyと言えば、「こんなもん作ってます」…
まあ、趣味でやってるレベルだからテキトーだけど。 とりあえずDXRuby0.0.9から不具合を20件ほど修正した。 ずっと実際に使ってるのもあって、規模から言えば少ないだろうとは思っていたが、予想以上に少ない。 ほんまに大丈夫やろかw バグったからと言って…
やっとの思いでDXRuby安定版をリリース。 バージョンは0.0.9からぶっ飛んで、誰もがビックリの1.0.0とした。 やっぱり正式なリリースはメジャーバージョン1にしたいところ。 んで不具合見つかって1.0.1とか1.0.2とかになるのがお約束。 ついでにSourceForge.…
急いで作ってもいいものにはならん。 つーことでマップシステムも取り込まないことにした。 間違った判断ではなかろう。 内部情報をいじるから取り込む、ってのは、結局のところ速度的な問題であって、たとえばRuby経由でWindow.drawを呼びまくる(rb_funcall…
というわけで考えるのを停止して、とりあえずできているものをプロジェクトWebにアップ。 外部ライブラリにしてもそれなりに高速だから、マップを2回描画して手前に重ねるのも問題ないようだ。 やっぱ最低限こういう表現ができないと話にならない。 Rubyで作…