2014-01-01から1年間の記事一覧

Spriteの実装と設計判断

高尾さん(@takaokouji)から「Spriteはなぜインスタンス変数に値を持たないのか」という質問を受けた。その回答はシンプルに「遅いから」であった。 Spriteの描画時など、参照するパラメータは10を軽く超える。これらをすべてCのAPIでインスタンス変数から取…

松江Ruby会議05に参加してきた(3)

昨日の最初に書いた「普段置かれている環境への疑問」てのは職場のことであって、Twitterとかで関わってる人たちのことではない。ここを誤解されると致命傷になりかねんので一応念のため。さて、今回は松江Ruby会議05ちょー個人的感想の最終回で、DXRubyに関…

松江Ruby会議05に参加してきた(2)

前回は講演の超主観的な感想であった。全体的にレベルが高いのは松江だからなのか、それともどこに行ってもこんな感じなのか。 自分が普段置かれている環境に若干の疑問を持ちつつ。次いってみよー。 松江、島根の取り組み Ruby合宿、中学生Ruby教室、Ruby.J…

松江Ruby会議05に参加してきた

2014/3/15(土)、島根県松江市にてMatsue.rb主催の松江Ruby会議05が行われた。それのゲスト講演をしてきた。 島根県がやっているRuby合宿でDXRubyが使われているという繋がりでDXRubyに関する講演の依頼が来たので、ちょっと喋りに行ったという経緯である。 …

DXRuby1.4.1リリース

1.4.0が2012年8月だったので随分久しぶりのリリースとなった。 開発版の1.5devを2013年5月に開始してから、いろいろと修正を入れているうちの、確定していない微妙な機能を省いたバージョンとなっている。ソースは1.5devと共通で、マクロでコードを削除した…

ソース隠蔽手法

昨日の続き。隠蔽といってもアセンブラレベルでは見れてしまうので頑張れば解析可能なわけだが。Rubyのアセンブラは高レベルなので読みやすいというのが難点か。 ともあれ、このようなファイルを作る。名前はiseqloader.rbとしよう。 require 'fiddle' class…

バイトコードのローディング

ちょいとメモ。 require 'fiddle' class RubyVM class InstructionSequence addr = Fiddle.dlopen(nil)['rb_iseq_load'] fn = Fiddle::Function.new( addr, [Fiddle::TYPE_VOIDP] * 3, Fiddle::TYPE_VOIDP) define_singleton_method(:load) do |dat, par=nil…

Rubyのインスタンス変数について

Rubyの特徴としてよく言われるのは「すべてがオブジェクト」だが、オブジェクトであるならばインスタンス変数を持つことができる。今回はRubyのインスタンス変数についての色々。 インスタンス変数とは Rubyでは「@」ひとつで始まる変数名が自動的にインスタ…

DTLの自作レンダラの実験

いいスクリーンショットがなかなか撮れない。のでgif動画にしてみた。 土屋つかささんのdxruby_text_layerを使って、独自レンダラを書いて、この間のmieki256さんのSTGサンプルのステージクリアの文字みたいな動きを(アルゴリズムパクって)作ってみた。それ…

BGアニメーションを考える

mieki256さんが大変なものを作っていたのでご紹介。 DXRubyでSTGサンプルを作成 爆発エフェクトは派手だわShaderを使った背景は派手だわすごいもんだ。デカいボスもおるし、途中の壁は斜めの見た目に合わせて丁寧な衝突判定してるし、音こそ無いものの、ここ…

ミニゲームキット

DXRubyはちょっとしたものを簡単に作れるライブラリであるからして、とりあえずrequire 'dxruby'してWindow.loop do endでガシガシとコードを書いていけば動くものが作れる。例えば、ちょっとしたコードでなんか作る。 require 'dxruby' class Enemy < Sprit…