2016/07/03(日) [n年前の日記]
#1 [dxruby] DXRubyのバージョンをアップグレードしたいのだけど
どうやればいいんだろう…。
「DXRuby って何?」 … Rubyというプログラミング言語からWindowsのDirectXを使えるようにする、ライブラリ? モジュール? パッケージ? …とにかくそういうアレです。
「DirectX って何?」 … Windows上でゲームを作りやすくするための機能、ですかね。画像を高速に描画できたり等、色々できます。
要するに、Ruby + DXRuby を使えば、Windows上で動く2Dゲームが作れるよ、ってことなんですが。
それはさておき。 DXRuby は gem も用意されてるから…gemで上書きインストールすればいいのだろうか。
「gem って何?」 …Rubyのライブラリをインターネット経由で簡単にインストールできる仕組み、とでも言えばいいのかな。例えば gem install dxruby と打つだけで、dxruby をインストールできちゃいます。
とりあえず、今まで入ってたバージョンを確認。
ちなみに、irb --noreadline とオプションをつけてるのは、 _自分の環境では readline を無効にしないと irb が固まる からです。
gem で公開されてる DXRuby のバージョンを確認。
gem を使って上書きインストールしてみる。
DXRubyのバージョンを確認してみる。
アレレ? DXRuby は 1.4.2 のままだぞ…? どうなってるんだ?
インストールされてる gem の一覧を確認してみる。
よくわからんので、gem版はアンインストール。
たしか以前は、 _ダウンロードファイル一覧 - DXRuby - OSDN から入手したファイルでインストールした記憶があるのだけど。コレをアンインストールしてから gem でインストールすればいいのかな。でも、アンインストールするには、どうしたら…。
install.rb を眺めてみた。
CONFIG["sitearchdir"] って、どこを指定しているんだろう?
この2つのファイルを削除すればアンインストールできる、ということかな…。削除してみるか…。
削除した状態で、require "dxruby" ができるか確認。
gem install dxruby でインストールし直してみる。
バージョンが 1.4.4になってる。DXRuby 1.4.4 にアップグレードできたっぽい。
しかしコレ、gem でインストールした場合は、dxruby.so はどこに入っているのだろう。
ファイル検索してみたら、Rubyインストールフォルダ\lib\ruby\gems\2.2.0\gems\dxruby-1.4.4\ に入ってた。
一応、 _Home - mirichi/dxruby-doc Wiki で公開されてるサンプルファイル群を動かしてみたけど。自分の環境、Core i5 2500 + GeForce GTX 750 Ti + Windows 10 x64 では動いてるように見える。
ただ、 _DXRuby1.4.4(´・ω・`) - mirichiの日記 によると、「Window.draw_box を使うと不正終了するから Window.draw_line で代替してくれ」と書いてあった。修正されるまで、ちょっと気を付けておかねば…。
「DXRuby って何?」 … Rubyというプログラミング言語からWindowsのDirectXを使えるようにする、ライブラリ? モジュール? パッケージ? …とにかくそういうアレです。
「DirectX って何?」 … Windows上でゲームを作りやすくするための機能、ですかね。画像を高速に描画できたり等、色々できます。
要するに、Ruby + DXRuby を使えば、Windows上で動く2Dゲームが作れるよ、ってことなんですが。
それはさておき。 DXRuby は gem も用意されてるから…gemで上書きインストールすればいいのだろうか。
「gem って何?」 …Rubyのライブラリをインターネット経由で簡単にインストールできる仕組み、とでも言えばいいのかな。例えば gem install dxruby と打つだけで、dxruby をインストールできちゃいます。
とりあえず、今まで入ってたバージョンを確認。
> ruby --version ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]
> irb --noreadline irb(main):001:0> require "dxruby" => true irb(main):002:0> DXRuby::VERSION => "1.4.2" irb(main):003:0> exit手元の環境では、DXRuby 1.4.2 を今まで使ってたらしい。
ちなみに、irb --noreadline とオプションをつけてるのは、 _自分の環境では readline を無効にしないと irb が固まる からです。
gem で公開されてる DXRuby のバージョンを確認。
> gem search -r dxruby *** REMOTE GEMS *** dxruby (1.4.4, 1.4.0 mswin32) dxruby_rp5 (0.0.4) dxruby_sdl (0.0.14)DXRuby 1.4.4 が登録されてるっぽい。
gem を使って上書きインストールしてみる。
> gem install dxruby Fetching: dxruby-1.4.4.gem (100%) Successfully installed dxruby-1.4.4 Parsing documentation for dxruby-1.4.4 Installing ri documentation for dxruby-1.4.4 Done installing documentation for dxruby after 1 seconds 1 gem installed
DXRubyのバージョンを確認してみる。
> irb --noreadline irb(main):001:0> require "dxruby" => true irb(main):002:0> DXRuby::VERSION => "1.4.2" irb(main):003:0> exit
アレレ? DXRuby は 1.4.2 のままだぞ…? どうなってるんだ?
インストールされてる gem の一覧を確認してみる。
> gem list (中略) dxruby (1.4.4) (中略)うむむ…。こっちは、DXRuby 1.4.4 が入ってるように見えるな…。
よくわからんので、gem版はアンインストール。
> gem uninstall dxruby Successfully uninstalled dxruby-1.4.4
たしか以前は、 _ダウンロードファイル一覧 - DXRuby - OSDN から入手したファイルでインストールした記憶があるのだけど。コレをアンインストールしてから gem でインストールすればいいのかな。でも、アンインストールするには、どうしたら…。
install.rb を眺めてみた。
(中略) require 'rbconfig' require 'fileutils' include RbConfig if CONFIG["ruby_version"] != "2.2.0" then puts "このバイナリは2.2系じゃないと動かせません" exit end if CONFIG["arch"] =~ /64/ then puts "32bit版じゃないと動かせません" exit end FileUtils.mkdir_p(CONFIG["sitearchdir"]) file = CONFIG["sitearchdir"] + "/" + "dxruby.so" FileUtils.install("dxruby.so" , file, :preserve => true) file = CONFIG["sitearchdir"] + "/" + "dxrubyex.so" FileUtils.install("dxrubyex.so" , file, :preserve => true) puts "DXRubyのインストールに成功しました"どうやら、CONFIG["sitearchdir"] で指定されたフォルダの中に、dxruby.so と dxrubyex.so をコピーしているらしい。
CONFIG["sitearchdir"] って、どこを指定しているんだろう?
> irb --noreadline irb(main):001:0> require 'rbconfig' => false irb(main):002:0> include RbConfig => Object irb(main):003:0> CONFIG["sitearchdir"] => "C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/i386-msvcrt" irb(main):004:0> exit自分の環境の場合は、Ruby 2.2インストールフォルダ\lib\ruby\site_ruby\2.2.0\i386-msvcrt になってるらしい。覗いてみたら、たしかに dxruby.so と dxrubyex.so が入ってた。
この2つのファイルを削除すればアンインストールできる、ということかな…。削除してみるか…。
削除した状態で、require "dxruby" ができるか確認。
> irb --noreadline irb(main):001:0> require "dxruby" LoadError: cannot load such file -- dxruby from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from (irb):1 from C:/Ruby/Ruby22/bin/irb:11:in `<main>' irb(main):002:0>「dxruby なんて見つからねえよ!」と怒られた。さっきの2つのファイルを削除しただけで、アンインストールできたっぽい。
gem install dxruby でインストールし直してみる。
> gem install dxruby Fetching: dxruby-1.4.4.gem (100%) Successfully installed dxruby-1.4.4 Parsing documentation for dxruby-1.4.4 Installing ri documentation for dxruby-1.4.4 Done installing documentation for dxruby after 0 seconds 1 gem installed
> irb --noreadline irb(main):001:0> require "dxruby" => true irb(main):002:0> DXRuby::VERSION => "1.4.4" irb(main):003:0> exit
バージョンが 1.4.4になってる。DXRuby 1.4.4 にアップグレードできたっぽい。
しかしコレ、gem でインストールした場合は、dxruby.so はどこに入っているのだろう。
ファイル検索してみたら、Rubyインストールフォルダ\lib\ruby\gems\2.2.0\gems\dxruby-1.4.4\ に入ってた。
一応、 _Home - mirichi/dxruby-doc Wiki で公開されてるサンプルファイル群を動かしてみたけど。自分の環境、Core i5 2500 + GeForce GTX 750 Ti + Windows 10 x64 では動いてるように見える。
ただ、 _DXRuby1.4.4(´・ω・`) - mirichiの日記 によると、「Window.draw_box を使うと不正終了するから Window.draw_line で代替してくれ」と書いてあった。修正されるまで、ちょっと気を付けておかねば…。
[ ツッコむ ]
#2 [anime][neta] 遠くから撃ってくるヒーローってどうなんだろう
たまたまTVでローカルヒーロー番組を何本か見たのだけど。どれもこれも肉弾戦ばかりだな、銃を構えて撃ってくるヒーローが居ないな、てなところが気になって。
まあ、子供達の前でヒーローショーをする際に、アクションを見せたほうが俄然喜ばれるだろうから、そりゃ肉弾戦で戦うのは当たり前だろうし。遠くから銃で撃つとなると、合成や操演が必要になって大変なので、ローカルヒーローならそういう設定は避けるのが当たり前、だろうとは思うのだけど。
でも、真面目に考えたら、たぶん正義のヒーローって、遠いところから悪の怪人を狙い撃つ戦い方になりそうだな、と…。
怪人 「ぐわっ! 遠くから攻撃してくるなんて汚ねえぞ! お前それでも正義のヒーローか!?」
ヒーロー 「そうさ、お前の言うとおりだ。俺は正義のヒーロー! 正義が悪に負けるなんてことは、絶対に許されない…。だからこそ、お前が手を出せないこの距離から攻撃して、確実に勝利するのだ!」
その場に居る市民達 「(ええー)」
そんなヒーローはどうか。どうかと言われても。たぶん売れないなコレ。
しかし、そういうローカルヒーローを設定すれば差別化できそうな気はするなと…。いや、でも、子供達に悪影響を…。いやいや、本当に目的を果たしたいと思うなら頭を使わなきゃダメだよ、みたいなメッセージ性をですね…。無理があるか…。
まあ、子供達の前でヒーローショーをする際に、アクションを見せたほうが俄然喜ばれるだろうから、そりゃ肉弾戦で戦うのは当たり前だろうし。遠くから銃で撃つとなると、合成や操演が必要になって大変なので、ローカルヒーローならそういう設定は避けるのが当たり前、だろうとは思うのだけど。
でも、真面目に考えたら、たぶん正義のヒーローって、遠いところから悪の怪人を狙い撃つ戦い方になりそうだな、と…。
怪人 「ぐわっ! 遠くから攻撃してくるなんて汚ねえぞ! お前それでも正義のヒーローか!?」
ヒーロー 「そうさ、お前の言うとおりだ。俺は正義のヒーロー! 正義が悪に負けるなんてことは、絶対に許されない…。だからこそ、お前が手を出せないこの距離から攻撃して、確実に勝利するのだ!」
その場に居る市民達 「(ええー)」
そんなヒーローはどうか。どうかと言われても。たぶん売れないなコレ。
しかし、そういうローカルヒーローを設定すれば差別化できそうな気はするなと…。いや、でも、子供達に悪影響を…。いやいや、本当に目的を果たしたいと思うなら頭を使わなきゃダメだよ、みたいなメッセージ性をですね…。無理があるか…。
[ ツッコむ ]
以上、1 日分です。