2009-05-01から1ヶ月間の記事一覧

ViewPort機能を考える

DirectXにはViewPortという機能がある。 ようするにクリッピング範囲の指定だ。 現在、DXRubyにはViewPortを指定する機能が無い。 Imageクラスの拡張が超高速に動くのなら、それこそImageオブジェクトを適当な範囲で作って、そこに描画するようにすればViewP…

ゲームループの分解を考える

Rubyでアクションゲームは一般的なイメージとして無謀だ。 ファミコン程度のものであればできそうな感じ。 しかしそれも物によって、ライブラリの得意不得意というものがある。 大きな画像を描画するのが遅ければ全画面スクロールして大きなキャラを動かすの…

なぜデバイスロストが問題になるのか

DirectXを直接使うプログラミングをする場合、デバイスロストの動作を理解してゲームを設計しなければならない。 テクスチャを全てレンダーターゲットにしてハードウェア描画をしながら使う、ということをすると、デバイスロストで全てを失うことになるから…

DirectX9の思想

DirectX11が出ようかというこの時代にいまだにDirectX9なのは、WindowsXPではDirectX9までしか使えないからだ。 Windows7が出ようがこの状況はまだ数年変わらないだろう。 そういうことでDXRubyも当分DirectX9だ。 DirectX9のDirectGraphicsでは、描画系の関…

新機能を考える

DXRubyにはImageオブジェクト間の転送機能が無い。 ピクセル単位で取得と書き込みはできるから、がんばればなんとかなるだろうが、恐ろしく遅いであろうことは想像に難くない。 Cでそういった機能を作ればRubyでやるよりかは相当速いだろうが、結局ソフト描…

デバイスロスト問題

DirectXにはデバイスロストというとても厄介な問題がある。 現状のDXRubyではD3DXSpriteをロストさせてリセット、復元の処理を入れてある。 これをしないとデバイスロスト時に描画されなくなってしまうのだ。 テクスチャはD3DPOOL_MANAGEDを指定しているから…

DXRubyが動かないPCがあった

MSIのネットブック。 社長のやつなのだが、いない隙に勝手にサンプルシューティングを実行してみたらDirectX Graphicsの初期化でエラーになってコケた。 予想外の結果にびっくりだ。 ATOMプロセッサ使ってる新しいやつだから、まさか動かないとは思わなかっ…

古いDXRubyだと動いた

ソフト頂点シェーダを使う指定をしているDXRubyは動いた。 どうやら原因は想像している通りらしい。

画像分割機能

DXRuby1.0.1では1つの画像を複数に分割して読み込む機能がある。 あるのだが、縦横の数を指定するから、すべて同じ大きさになるのが制限事項となる。 1つの画像に大きさがマチマチのデータが混在してることを想定していなかったのだが、ゲームの素材を調べて…

Star RubyでDXRubyExtensionを使う

DXRubyExtensionは用途は色々になる予定だが、とりあえず衝突判定ロジックが詰め込まれている。 これはRuby汎用の拡張ライブラリだから、名前にはDXRubyと付いているしサンプルもDXRuby用だがDXRubyには依存しない。 はずだ。 論より証拠ということで、Star …

なにかむずかしいことをかんがえよう。これからのぼくは

とりあえずDXRuby1.0.2リリース。 ネットブックを借りて来ちゃったから動作確認してバッチリ。 最新とはいえAtomプロセッサは遅かった。これは丁度いいテスト環境になりそうだ。 一つ買ってもいいかも。 それはさておき。 DXRubyで何か作ろうと思ったとき、…

DXRubyExtension新機能

判定範囲オブジェクトから範囲を取得できるようにした。 これで、判定オブジェクト配列から範囲を取りまくって、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.8.xと1.9.1と最適化の行き着く先

なにげにサンプルシューティングをRuby1.9.1で動かしてみたところ、Ruby1.8.7で動かしていた時と最大負荷がかなり近いことに気付いた。 具体的にはYARV採用でVM方式になった1.9.1だが、大雑把に言えば1.8.7で遅かったところを速くしたっつーことで、1.8.7の…

Rubyゲームプログラミング

基本的なところからもう一度考え直してみよう。 Rubyゲームプログラミングの時代はやってくるのか。 Rubyが好きな人はとても多いと思う。 ゲームを作るのが好きな人も結構いると思う。 しかし、その2つを同時に満たす人は、あんまりいないかもしれない。 ま…

DXRuby1.0.1リリースorz

いきなりやってしまった。 インストール時にコピー先ディレクトリが無いとエラーになるから、作成するように修正した。 しかも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つのうち、どっ…

Ruby側の最適化

必要メモリ帯域は大幅に減らした。 うちには遅い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…

DXRubyMap0.0.1

というわけで考えるのを停止して、とりあえずできているものをプロジェクトWebにアップ。 外部ライブラリにしてもそれなりに高速だから、マップを2回描画して手前に重ねるのも問題ないようだ。 やっぱ最低限こういう表現ができないと話にならない。 Rubyで作…