2009-07-01から1ヶ月間の記事一覧
我がブログの検索キーワードで「Segmentation fault」が急上昇中である。 これが「DXRuby Segmentation fault」だったら困ってしまうところだが、ただの「Segmentation fault」なのでそもそもそれがRubyの話なのかどうかもわからない。 メモリ管理機能のある…
コードを少しいじって、Imageオブジェクトの編集機能を高速化してみた。 もとのロジックがダサダサだっただけなのだが、そもそもそのへんコンパイラで最適化できるレベルじゃないのかと。 あと、リクエストがあったのでフォントにイタリックとボールドの指定…
重いのは描画ではなく、Rubyの処理だ。DXRubyの描画は十分速い。 というのがいつもの俺の主張なので、DXRubyFrameworkに加速度などを設定できるよう機能追加して、それを使って動かしてみた。 複数の色を使うには別々のテクスチャが必要で、描画順も問題にな…
DXRubyのロゴとか、るびまサンプルの絵とかを描いてくれていた水視さんが、Webサイトも作ってくれた。 http://dxruby.sourceforge.jp/ かっちょいい。 こんなん作るの、俺には一生無理だなあー。 こんだけのもの作っといて、自分の名前とかサイトのリンクと…
花火を高速に動かすために、作ろうと思っていた機能を追加した。 基本的に腰が重いため、こういう個人的需要が無ければ何もしない。 http://dxruby.sourceforge.jp/files/dxrubyfw001alpha2-mswin32-ruby18.zip サンプルとして花火をつけてあるが、とりあえ…
これをやろうとしたらDXRuby1.0.5のWindow.drawTileがバグってて動かなかったのだ。 DXRuby1.0.6では動くようになっている。 MyGameサンプルのぷにゃりんのメニュー背景。 require 'dxruby' count = 0 image = Image.load("menu_tile.png") Window.loop do W…
してきた。 これでSegmentation faultで検索してくる人が減ればいいのだが、それは次のASRがリリースされて、みんながそれを使うようになってからの話だろうから、ずっと先だろう。 とりあえずこれでDXRuby本体に関してはすることはなくなった。 他のことに…
花火の音がするので、昔から何かといろいろある花火のプログラムを作ろうと思った。 ランダムで星を生成するなら簡単に作れるわけで、星の初期位置をきちんと計算してみようかと。 やったことないのでテキトーに考えて、ざくざくっと作ってみたのが以下。 し…
星の数が多いので非常に重い。多いといっても460ほどなのだが。 軽くする努力を、と言っても、計算自体はすでにほぼ最小だからして、たとえばz値の計算は不要だから省いたとしてもせいぜい1割か2割ぐらいしか変わらないだろう。数の多い点を描画するにはImag…
DXRubyFrameworkではSpriteクラスのデータにアクセスするのにself.を付けないといけないことになっている。 なぜかというと、Rubyではx=メソッドなどの呼び出しがローカル変数への代入と解釈されてしまうからだ。 class Hoge def x=(obj) @x = obj end def x…
なんだかアルゴリズムが腐ってるっぽかったので、きちんと考え直した。 これでバッチリだろう。 これだと黒い縁取りの白い文字にしか対応できないから、別の色とかもできるようになればいいのだが、どうしたらいいのやら。 # DXRuby1.0.6サンプル require 'd…
なにをそんなにこだわっているのか。 いままではフォントの端1ピクセルを黒くしようとしていたが、今回はフォントの外側の透明部分1ピクセルを黒くしてみた。 これなら小さくても綺麗に見える。 アルゴリズムは試行錯誤で悲惨なものになってしまっているが。…
たかが縁取り、されど縁取り。 検索しても出てこないので試行錯誤してしまった。 これにて完成を宣言しよう。 白黒専用だが。 ついでにシステムにインストールされてないフォントを使う機能も追加。 そして使えないサンプルを置いておく。 # DXRuby1.0.6サン…
Rubyのような高級言語において、拡張ライブラリの役割は大きくわけて3つ。 これは前にも書いたが、 (a) できないことを可能にする。 (b) できるけど面倒なことを楽にする。 (c) できるけど遅いものを速くする。 DXRubyは基本(a)で、DXRubyFrameworkは(b)(c)…
メソッド関連の説明がいい加減なので、詳細な解説を書いてやろうかと考えている。 ためしに書いてみたのが以下。 Window.draw 画像を描画します。 Window.draw( x, y, image[, z = 0]) ■解説 指定位置に指定の画像を描画します。 xとyは座標で、画面の左上が…
RubyオブジェクトをCのメモリに保持するのは、「そういった参照は推奨されません」とRubyのマニュアルにも書いてあるとおり、あまりよろしくない。 保守的GCがどのようにデータを検索し、マークをつけているのかなど、Ruby内部の動きを理解しないと正しく動…
twitterでフォントの縁取りがしたいという話が出た。 俺は画像処理は得意ではないのだが、やりたいことができないのは寂しいことなので、ちょっといじってみた。 白背景に白いフォントを黒い縁取りで描いてみた画像。 縁取りの幅がアンチエイリアス込み1ピク…
常識ハズレの圧倒的実行性能を叩き出すDXRubyFrameworkのプロトタイプができた。 http://dxruby.sourceforge.jp/files/dxrubyfw001alpha-mswin32-ruby18.zip 同梱のサンプルはるびまサンプルのDXRubyFramework対応版となっているので、目新しいことは無い。 …
DXRubyFrameworkはゲームの基本ロジックをCに完全に閉じ込めることで圧倒的な速度を叩き出そうという試みだ。 Spriteクラスを継承してクラスを作り、オブジェクト生成時の初期化で各種設定をして、あとは勝手に動く。 設定に応じて必要なときだけRubyのメソ…
丸い形状も扱えるようになった。 Box2DのオブジェクトとDXRubyのImageをカプセル化してみた。 require 'rubygems' require 'dxruby' require 'box2d' include Box2d b = B2AABB.new b.minVertex.set(0.0, 0.0) # 世界の左上 b.maxVertex.set(640.0, 480.0) #…
まあ、画像をアップしてもよくわからないが。 マウスで物を掴んで動かせるようになった。 これでようやくよくあるサンプルレベルになってきたわけだ。 require 'rubygems' require 'dxruby' require 'box2d' include Box2d b = B2AABB.new b.minVertex.set(0…
こんなのが動くところまでは来た。 機能が足りてない部分をRubyで書いてるせいで少し遅い。
HDDを漁ってたらこんなのが出てきた。 2005年5月23日 ■なぜRubyでゲームプログラムなのか あんまり大した理由はないんだけど、ようするに俺自身がいま一番扱いやすい言語だから。 そりゃあ、例えばHSPみたいなゲーム用に開発された言語/環境を使うと…
Ruby-Box2D http://rubyforge.org/projects/ruby-box2d/ 2007年でなんか止まってたけど、つい最近別の人?がいじりはじめたようだ。 サンプルのプログラムを参考に、Box2Dで計算した結果を使ってDXRubyで描画してみた。 すなわち、別にDXRubyがサポートしな…
してきた。 一日中ヒマ人だからこそできることだな、と思った。
作ろうと思っていた機能で小さいものを、まとめて1.0.5に突っ込もうとしている。 色配列を[r, g, b]でも指定できるようにするとか、Image#boxを塗りつぶさない描画に変更するとか、Image.sliceをImage#sliceに移動するとか、そういう細かいところから、DXRub…
DXRuby1.0.5betaを置いておく。 http://dxruby.sourceforge.jp/files/dxruby105beta-mswin32-ruby18.zip http://dxruby.sourceforge.jp/files/dxruby105beta-mswin32-ruby19.zip 新しい機能を試してみたい人で、変なふうにコケても怒らない人、不具合を見つ…
タイトルバーに注目。 縮小したから読みづらいけど。 っていうか読めない。 ひっぱっておいて自分で言うのも情けないが「DXRuby Application」と出ている。 これはMyGame for DXRubyで実行した画面だ。 punyarace.rbのはじめのrequireと、Imageクラスの名前…
yharaさんからコメントを頂いたので、THE APPLE CATCHERのMyGame版を試す。 いくつかバグがあったから(DXRuby1.0.5の新機能にも)、それを修正してとりあえず動くように。 影付きフォントもばっちりだぜ。 元ソースの修正は、 ・最初のrequrieをmygameからm…
MyGame作者のdan5yaさんからコメントを頂いて、MyGame公式に追加されたアクションゲームを試す。 修正点はTHE APPLE CATCHERと似たようなもんだった。 イベントを使っていないのでさっくり動いた。 screenオブジェクトを微妙にエミュレーションするクラス(h…