IronRubyでXNAを試してみた
前々から気になっていた、.NETで動くRubyことIronRuby。去年、リポジトリをGitHubに移してから触っていなかったのですが、「XNA動くかなぁ・・・」との衝動に駆られて最新のソース引っ張ってきて試してみました。
色々悩みましたが、無事起動に成功しました。
やり方は以下の通り。
ちなみに、使用した環境は以下の通り。
以下、動作に使用したスクリプトです。
require 'mscorlib' # .NET Frameworkは2.0を使用 require 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' # XNAは3.0を使用 require 'Microsoft.Xna.Framework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d' require 'Microsoft.Xna.Framework.Game, Version=3.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d' module XNAGameSample class Game1 < Microsoft::Xna::Framework::Game def initialize @graphics = Microsoft::Xna::Framework::GraphicsDeviceManager.new(self) @spritePosition = Microsoft::Xna::Framework::Vector2.Zero @spriteBatch = nil @myTexture = nil end def load_content @spriteBatch = Microsoft::Xna::Framework::Graphics::SpriteBatch.new(self.graphics_device) # Content.Loadメソッドは何故かエラーが出たため、Texture2D.FromFileを使用 @myTexture = Microsoft::Xna::Framework::Graphics::Texture2D.from_file(self.graphics_device, "miku.jpg") end def unload_content end def update(gameTime) end def draw(gameTime) self.graphics_device.clear(Microsoft::Xna::Framework::Graphics::Color.white) @spriteBatch.begin @spriteBatch.draw(@myTexture, @spritePosition, Microsoft::Xna::Framework::Graphics::Color.white) @spriteBatch.end end end end @game = XNAGameSample::Game1.new @game.Run
このスクリプトは、VS2008上でXNAのウィザードを起動したときのソースをRubyで動くように修正して手を加えたものです。
使用する.NET Frameworkは2.0、XNA Studioは3.0を指定しています。
このスクリプトを保存して(仮に"xna.rb"します)、xna.rbと同じディレクトリにmiku.jpg(クリプトンのサイトから引っ張ってきたもの)を置いて、IronRubyのパスが通っているコマンドプロンプトで以下のコマンドを入力します。
ir xna.rb
さて、これが動くかな・・・。
無事、ミクが姿を現しました。ばんざーい。
いやぁ、前々から、動くはず動くはずと思っていたけど、実際に動かしてないからモヤモヤしていましたが、これで一気に解消されました。やっほーい。やっぱIronRubyは期待大だわ。
これで、XNAが動作すると言うことが分かったので、Rubyで3Dゲームを作れる垣根が低く・・・なればいいなァ(笑)
(・・・っていうことは、IronPythonでも動くのかなぁ。やってみてPythonな人)