1 名前:名前は開発中のものです。 [2008/04/02(水) 02:11:27 ID:cxIG00d1] Ruby/SDL、StarRubyなどを用いてゲームを作る(作ろうとしている)人が 情報交換したり雑談したり質問したりするためのスレッドです。 ツクールXP(RGSS)についてはツクールスレ等でお願いします。 Ruby/SDL www.kmc.gr.jp/~ohai/rubysdl.html StarRuby www.starruby.info/ja/
524 名前:名前は開発中のものです。 mailto:sage [2010/06/15(火) 08:43:14 ID:Uk3NPRWF] Ruby会議の企画としてRubyゲーム会議2010ってのをやります ruby-game-dev.org/wiki/index.php?Ruby ゲーム会議2010 ショートセッションとかデモとかやりたいので興味があったらご参加ください 唐突に宣伝で申し訳ないが、今日Ruby会議のチケット販売だったのを思い出したので… このスレ見てるような人が主な対象のイベントなので良かったら来てください
525 名前:名前は開発中のものです。 mailto:sage [2010/06/15(火) 13:09:43 ID:VSyZJlIR] >>524 おお、ショートセッション参加希望です。 主催者様にメール送りました。
526 名前:名前は開発中のものです。 mailto:sage [2010/06/15(火) 15:05:11 ID:2FMnXDvV] ちゃんとURLはろうぜ Rubyゲーム会議2010 - Ruby ゲーム開発のハブサイト ruby-game-dev.org/wiki/index.php?Ruby%E3%82%B2%E3%83%BC%E3%83%A0%E4%BC%9A%E8%AD%B02010
527 名前:名前は開発中のものです。 mailto:sage [2010/06/17(木) 09:09:13 ID:52B3shuC] DXライブラリにC#用のDLLがあるけど これをRubyから利用することは 出来ないかなぁ
528 名前:名前は開発中のものです。 mailto:sage [2010/06/17(木) 11:06:08 ID:eGb2uki/] rubyすげー DXライブラリのDLLで試しに ウィンドウの表示だけやってみたら すんなり表示された やろうと思えば3Dのゲームとかも 作れそうだね
529 名前:名前は開発中のものです。 mailto:sage [2010/06/17(木) 13:43:20 ID:WAj30wAj] >>527 DXライブラリちょっと見てみたけど、APIがC言語用でクラス使ってるわけじゃないから、 Ruby用のラッパー書く分には簡単そうに見えるけど
530 名前:529 mailto:sage [2010/06/17(木) 15:12:35 ID:WAj30wAj] ちょろっと書いてみたけどC#用DLLで動くね require "ffi" module DxLib extend FFI::Library ffi_lib "DxLib.dll" attach_function :Init, :dx_DxLib_Init, [], :int attach_function :End, :dx_DxLib_End, [], :void attach_function :ChangeWindowMode, :dx_ChangeWindowMode, [:int], :void attach_function :GetColor, :dx_GetColor, [:int, :int, :int], :int attach_function :DrawString, :dx_DrawString, [:int, :int, :string, :int, :int], :int attach_function :WaitKey, :dx_WaitKey, [], :void end DxLib.ChangeWindowMode(1) if DxLib.Init == -1 raise "dxlib error" end color = DxLib.GetColor(255, 255, 255) DxLib.DrawString(250, 240 - 16, "Hello C World!", color, 0) DxLib.WaitKey DxLib.End
531 名前:名前は開発中のものです。 mailto:sage [2010/06/17(木) 18:45:36 ID:p9s2skma] なるほどー、ffiってのをつかうんですね 一生懸命wib32apiでやってましたわ
532 名前:名前は開発中のものです。 mailto:sage [2010/06/17(木) 18:50:01 ID:p9s2skma] 訂正 wib32api -> win32api
533 名前:名前は開発中のものです。 mailto:sage [2010/06/17(木) 19:34:26 ID:WAj30wAj] Win32Api は使いづらいから DL のほうがいいと思うけど こっちは標準ライブラリなのも大きいかも swig 使わないなら ffi か DL の二択…… require "dl/import" module DxLib extend DL::Importer dlload "DxLib.dll" extern "int dx_DxLib_Init()" extern "void dx_DxLib_End()" extern "int dx_ChangeWindowMode(int)" extern "int dx_GetColor(int, int, int)" extern "int dx_DrawString(int, int, char*, int, int)" extern "void dx_WaitKey()" end DxLib.dx_ChangeWindowMode(1) raise "dxlib error" if DxLib.dx_DxLib_Init == -1 color = DxLib.dx_GetColor(255, 255, 255) DxLib.dx_DrawString(250, 240 - 16, "Hello C World!", color, 0) DxLib.dx_WaitKey DxLib.dx_DxLib_End
534 名前:名前は開発中のものです。 mailto:sage [2010/06/18(金) 05:16:33 ID:zrJc5vPv] DXRubyで文字表示をする際、妥当なやり方ってあるのかな… できれば、Ruby/SDLで言うところの、 SFont?みたいなのを使いたいのであるが… route477.net/d/?date=20070504#p02 文字表示は、「表示されてて当たり前」の扱いで地味な割に 画面上にはやたらと数が出てきて処理速度に響いてくる… DirectXでは一般的にどういう扱いをしてるんだろう… 1文字1文字をスプライトで扱ってるのかなあ…? それともBG扱い(タイル上に並べる)のかな…?
535 名前:名前は開発中のものです。 mailto:sage [2010/06/18(金) 08:27:35 ID:kbLsFb6j] DirectXにBG機能はないよ 1文字ずつスプライトにするか、文字列単位でテクスチャ作ってスプライトで描くかじゃないかな
536 名前:名前は開発中のものです。 mailto:sage [2010/06/19(土) 00:12:29 ID:EQVLjEVu] でっかい一枚のテクスチャにタイル状に文字並べて そこから一文字ずつ切り出して自分でレイアウト計算して描画するのがセオリー 一文字ずつ分けてしまうと非常に遅くなる
537 名前:名前は開発中のものです。 mailto:sage [2010/06/19(土) 14:18:30 ID:UM9UWztJ] 固定の文字列だったらまとめて1つの画像を用意する。 文章を描画するなら画像が多くなるから必要な時に >>536 のように自分でレイアウトして画像を作る。 スコアの描画程度なら一文字ずつでもよさげ。
538 名前:名前は開発中のものです。 mailto:sage [2010/06/21(月) 04:46:17 ID:I8O1/KzF] starrubyを入れたはずなのに動かない 「ruby install.rb」をするとInstallation Star Ruby completed!とは出るが ruby -e 'require "starruby"'としてもno such file to load -- starruby(LoadError)が出る (これはstarrubyが見つからないって事でいいんだよな?) Fxrubyだと、例文にバージョン名をちょっと追加して「require "fox16"」 とするととりあえず動きはするけどそれと同じようなエラーなんだろうか? 使ってるOSはWin7(64bit)で rubyのバージョンは1.8.7と1.9.1(64bit用)のmswin版 不躾な質問だけど、分かる人が居たらよろしく頼む
539 名前:名前は開発中のものです。 mailto:sage [2010/06/21(月) 11:55:39 ID:KSVcNr2p] >>535-537 dです 1文字も、プレイヤーキャラも、弾も、敵も、全部等しくスプライトということですね…
540 名前:名前は開発中のものです。 mailto:sage [2010/06/21(月) 21:31:29 ID:4q1x72M8] >> 538 $LOAD_PATH が通ってないのでは? 1. そもそも starruby.so が正しく配置されているか? 自分の場合だと、install.rb を実行すると starruby.so は↓に入ってる。 C:/Ruby19/lib/ruby/site_ruby/1.9.1/i386-msvcrt/starruby.so まずはそもそもファイルの配置に失敗してないか確認したほうがいいと思う。 2. starruby.so の配置フォルダに $LOAD_PATH が通っているか? starruby.so がちゃんと配置されてたら、次は ruby -e 'puts $LOAD_PATH' の出力に1で確認したフォルダが含まれるか確認する。 含まれてなければ ttp://doc.okkez.net/static/191/doc/spec=2fenvvars.html を参考に環境変数を設定する。
541 名前:名前は開発中のものです。 mailto:sage [2010/06/22(火) 06:07:37 ID:vaD2Y1F0] >>540 たぶんあなたの仰る通りに$LOAD_PATHというのが通ってないのだと思う 1については、正しく配置されておらず rubyフォルダの中に、starrubyの解凍フォルダをそのまま置いていた (C:\programming\ruby187\starruby-0.3.3-win32-ruby18\ext\starrubby.so) 2についても、さきほどのコマンドを実行してみたが 上記のパスは含まれていなかった まずは上にリンクされた環境変数についてのドキュメントを参考に フォルダの移動とパスの設定を試してみて、それからまた報告させて頂く
542 名前:名前は開発中のものです。 mailto:sage [2010/06/22(火) 10:23:48 ID:nRcQCoeI] >>541 どうも話を聞いている感じ、Ruby1.8.7 と Ruby 1.9.1 の共存に失敗している気がする。 まずは1.8.7はアンインストールして、1.9.1だけがインストールされた状態で試してみてはどうだろう。 WindowsでRuby1.8系とRuby1.9系を共存させるのはそれなりに難しい。何か共存させたい理由があるんだろうとは思う。でも今は一旦保留にしておいて、もっとスキルがついてから共存を試みるのがいいと思う。
543 名前:名前は開発中のものです。 mailto:540 sage [2010/06/23(水) 00:28:14 ID:0PfZy1en] うーん、正直さっぱりわからない まず1.starruby.soの配置で躓いている まず、code.google.com/p/starruby/downloads/list から binaries(バイナリ)→mswin32の中から「ruby-1.8.7-p72-i386-mswin32.zip」と「ruby-1.9.1-p378-x64-mswin64_80.zip」をDLし、 展開したものを「c:\programing」の中に置く。 この時、この二つをそれぞれ「ruby191」と「ruby187」という名前のフォルダにリネームし、 あらかじめ作っておいたC:\programingフォルダ以下に配置しruby191\binの方だけパスを通した。 (システムのプロパティ→環境変数→システム環境変数(S)へ「C:\programming\ruby191\bin」を追加した) 次にStarRuby公式サイトからリンクを辿り、 Google Code(code.google.com/p/starruby/downloads/list )から starruby-0.3.3-win32の(ruby19.zipとruby18.zip)をDL・展開した。
544 名前:名前は開発中のものです。 mailto:sage [2010/06/23(水) 00:30:20 ID:0PfZy1en] この後、展開したstarrubyのフォルダとその中身をどこにもっていけばいいのかわからない。 単純に、「install.rb」を実行しても、前に書いたように「Installation Star Ruby completed!」とメッセージが出るだけで (前略)ruby191フォルダの中のどこにも「starruby.so」は配置されず、 無理矢理「(前略)lib\ruby\site_ruby\1.9.1\x64-svcr80」の中に入れても 「dllが見つからない」とのメッセージが表示されエラーとなる。 実は、別口でDL・展開した「ActiveScriptRuby」の方はエラーが出ていないのでこちらを使えばいいのだが、 なぜ個別ではうまくインストールできていないのかがすっきりしない 長々と書いてしまって恐縮だが、もしよければ、どうかもう少しお付き合い願いたい
545 名前:名前は開発中のものです。 mailto:sage [2010/06/23(水) 00:46:17 ID:4Wd2dMWQ] mswin64のRubyでmswin32のライブラリって使えるの?
546 名前:名前は開発中のものです。 mailto:sage [2010/06/23(水) 17:40:26 ID:zddUPtHq] >>544 とりあえずActiveScriptRubyで代用できてるとのことで安心した。 しかし納得いってないとのことなので、一応アドバイスしておく。 まず先に言っておくが、自分には原因はわからない。なぜって環境が無いから。なので原因究明の方法だけ。 > 「install.rb」を実行しても、前に書いたように「Installation Star Ruby completed!」とメッセージが出るだけで(略) こういう「他人が作ったスクリプトを実行したんだけどなんかうまく動かない」という場合の鉄則は『ソース読め』。 まずは install.rb をテキストエディタで開いて中身を見てみよう。 開いてみたらファイルの最後に↓の一文があるはずだ。 puts "Installation Star Ruby completed!" もう分かったと思うが、このスクリプトはインストールが成功しようがどっかで失敗しようが 無条件で「Installation 略 completed!」を出力するようになってるってこと。 じゃあ何が悪いんだって話だが、こういう「スクリプトのどっかで失敗してるらしいんだけどどこで失敗してるのか分からない」という時の鉄則は『一行ずつ実行してみる』。 irb ( ttp://doc.okkez.net/static/191/library/irb.html ) を開いて、install.rb の内容を一行ずつコピペして実行してみよう (この時絶対に手打ちはしない。typoか本当に失敗してるのか分からないから)。 で、一行実行するたびに本当にうまく動いているか確認する。たとえば FileUtils.mkdir_p(dlldir) の行なら 本当に dlldir の場所にフォルダが作られてるかを見てみる。 何をするのか分からない行があったらリファレンスマニュアル( doc.okkez.net/static/191/doc/index.html )を読む。 以上の手順を繰り返せば必ず原因が分かる。健闘を祈る。
547 名前:名前は開発中のものです。 mailto:sage [2010/06/23(水) 17:41:29 ID:zddUPtHq] 最後に二つほどアドバイス。 ・『一度に二つのことをしない』 欲張ってruby187とruby191の両方を同時に入れようとするから問題がややこしくなる。 うまくいくまではどっちか片方の兎だけを追うべし。 ・『よく整理してから質問しよう』 とりあえず↓を読むといい。>>538 のような聞き方ではなかなか問題は解決しない。 最初から>>543 のように質問していればもっと早く原因に迫れたはず。 ttp://www.hyuki.com/writing/techask.html#procedure 長くなったが、俺ができるアドバイスはこれくらいだ。>>544 がStarRubyを楽しめることを祈る。
548 名前:名前は開発中のものです。 mailto:sage [2010/06/26(土) 19:03:26 ID:9CeE/+nX] 返信が遅れて申し訳ない 実はまだ、言われた事が全て終わっていないが、解決までまだ時間が掛かりそうなので途中経過だけ書き込んでおく まずはinstall.rbを分解する #!/usr/bin/env ruby require "rbconfig" require "fileutils" option = {:noop => false, :verbose => true} dlldir = Config::CONFIG["bindir"] sitearchdir = Config::CONFIG["sitearchdir"] FileUtils.mkdir_p(dlldir) FileUtils.mkdir_p(sitearchdir) Dir.glob("dll/*.dll") do |path| next if path =~ /zlib/ and File.exist?(File.join(dlldir, File.basename(path))) FileUtils.install(path, dlldir, option) end Dir.glob("ext/*.so") do |path| FileUtils.install(path, sitearchdir, option) end puts "Installation Star Ruby completed!" 一行目と二行目の区切りが怪しいが、大文字小文字を考えるとこうだろう
549 名前:名前は開発中のものです。 mailto:sage [2010/06/26(土) 19:04:16 ID:9CeE/+nX] 次にirbで一行ずつ実行してみた 01行目「#!/usr/bin/env ruby」はエラーは出なかった (今動いているrubyのインストール位置を調べてる?戻り値なんかも無いからたぶん成功したとしか言えない) 02行目「require "rbconfig"」は「true」と返ってきた(ちゃんとインクルードされた?) 03行目「require "fileutils"」は「true」と返ってきた(ちゃんとインクルードされた?) 04行目「option = {:noop => false, :verbose => true}」は{}で指定した内容がそのまま帰ってきた (変数optionに"「オプション無効モード」は無効に、「ログ出力」は有効に"と入れた?) 05行目「dlldir = Config::CONFIG["bindir"]」はruby本体のbinディレクリが返ってきた (変数"dlldir"の中にbinフォルダのフルパスが格納された?) 06行目「sitearchdir = Config::CONFIG["sitearchdir"]」ではruby\libの中のフォルダが返ってきた (変数"sitearchidir"の中に、.so格納予定のフォルダへのパスが格納された?) 07行目「FileUtils.mkdir_p(dlldir)」はruby1.9.1のbinフォルダが返ってきた (変数dlldirで指定されたフォルダを作ろうとしたが、元から存在したフォルダなのでスルーされた?) 08行目「FileUtils.mkdir_p(sitearchdir)」は六行目で指定したフォルダへのパスが返ってきた (七行目と同じで、元から存在してたからスルーされた?) 01行目が怪しいが、大体問題ないように見える 07行目と08行目の命令については、「FileUtils.mkdir_p(sitearchdir + "\\testdir")」などとして ちゃんとフォルダが作られる事を確認している
550 名前:名前は開発中のものです。 mailto:sage [2010/06/26(土) 19:05:20 ID:9CeE/+nX] 09行目〜12行目 「Dir.glob("dll/*.dll") do |path| next if path =~ /zlib/ and File.exist?(File.join(dlldir, File.basename(path))) FileUtils.install(path, dlldir, option) end」 13行目〜15行目 「Dir.glob("ext/*.so") do |path| FileUtils.install(path, sitearchdir, option) end」 ここではエラーこそ出ないが、それぞれのフォルダの中には変化がない each文で、各フォルダの中を調べて、各.dllやl.soが存在しなければそれをファイルのコピーを繰り返す命令のようだが 「C:\programming\ruby191\bin」の中にdllがインストールされたり 「C:\programming\ruby191\lib\ruby\site_ruby\1.9.1\x64-msvcr80」の中にstarruby.soが配置されたりもしない
551 名前:名前は開発中のものです。 mailto:sage [2010/06/26(土) 19:06:14 ID:9CeE/+nX] 試しに 「Dir.glob("dll/*.dll") do |path| puts "test" + path end」 などとしても何の反応もない(nilが一度だけ表示される)事から、Dir.globの中の命令が一度も実行されていないのだろうか? ここまで付き合ってくれてありがとう。まだ原因がわかった訳ではないが それでも問題解決まで大分前進した気がする。 例によって長々と書いてしまって申し訳ない。とりあえずこの辺をもう少し調べてみて、また何か分かったら報告させて頂く
552 名前:名前は開発中のものです。 mailto:sage [2010/06/26(土) 19:07:58 ID:9CeE/+nX] ちなみに、starruby用dll(starruby-0.3.3-win32-ruby19.zipを展開して出来たdllフォルダの中にある各.dllファイル)と 同じく展開して出来たstarruby.soファイルを手動でコピーし、requireできるか試してみた所 「-e:1:in ‘require’: 193: %1 は有効な win32 アプリケーションではありません。 -0:/programing/ruby19/lib/(中略)starruby.so (LoadError) from -e:1:in ‘<main>’」 と出てきた。 同じ事をruby1.8.7でやってみた所(>>547 の時点であまりやるなと言われてはいたが) ちゃんとGUI画面が表示された。ruby1.9.1(32bit版)でも同じくGUI画面が表示された (隅々まで不備なく動くかどうか確認したわけではないが) 今回のインストールできない問題とは別に>>545 で指摘された問題があるかもしれない。
553 名前:名前は開発中のものです。 mailto:sage [2010/06/26(土) 20:42:01 ID:9CeE/+nX] starruby を install.so を使ってインストールする事に成功した 失敗していた理由はなんて事もない、ただカレントディレクトリの位置を設定していなかったからだった (ちなみに、次に例に出す ruby のバージョンは、32bit版を使うために1.8.7を使っている) まず、>>543 に書き込んだ通りに ruby本体 と、それに対応した starruby をDL・展開して、DOSを起動させ、 環境変数を追加して、PCを再起動させる この後、「カレントディレクトリを starrubyを展開したフォルダまで移動させる作業」 (cd C:\programming\ruby187\starruby-0.3.3-win32-ruby18) ・・・が必要だったが、これを怠っていた為に install.rb の中の「Dir.glob 〜 end」命令が上手く働いていなかったようだ 分かってしまえば簡単・単純なミスだが、最初は全く思いつけなかった お騒がせしてしまって申し訳ない ともあれ、何とか正常にインストールする事に成功した ありがとう、この板の皆の適切なアドバイスのおかげだ またどうしても分からない事があった出てきた時は、よろしく頼む
554 名前:名前は開発中のものです。 mailto:sage [2010/06/26(土) 21:44:01 ID:+RqvD318] おつかれさま。 StarRubyをいじってゆっくりじっくり遊ぶといいよ。
555 名前:名前は開発中のものです。 mailto:sage [2010/07/05(月) 13:15:13 ID:McBHvfXL] >>528-530 マルチプラットフォーム狙いじゃなくてバリバリ3Dじゃないなら(バリ3DをそもそもRubyでやるのか?はおいておいてだな) DXライブラリ使えるならいい案だな。 国内の同人ゲームでよくつかわれているみたいで情報も多いし。 C#用のライブラリってどんなのかと思ったら、 元がC言語で他の言語でも使えるようにDLL化してあるからRubyからも使えるってことかー。
556 名前:名前は開発中のものです。 mailto:sage [2010/07/05(月) 13:58:30 ID:quyLdWxB] .NET専用にC++/CLIで書きなおした、とかじゃないからね 汎用に使えるね。
557 名前:名前は開発中のものです。 mailto:sage [2010/07/17(土) 23:46:14 ID:Dnvbzl3f] コチラで聞けと言われたので参りました。質問です! Rubyでゲーム作れるって聞いたので ttp://jp.rubyist.net/magazine/?0018-GameProgramingForRubySDLのサイトのリンク先でsource of Ruby/SDL 1.3.0というのが見つからなかったのでrubysdl-win32-binの1.3.0をダウンロードしてprogrum file内にインストールしたRuby1.8の下にフォルダを作って解凍しました。 回答したあとinstall_rubysdl.rbを実行したら変なメッセージが出たのですが無視してテストのウィンドウだけ出すプログラムを作ってみたらファイル名:2:in `requie' : no such file to load -- sdl (LoadError)というものが出ました。 どうしたらウインドウを出す様に出来るのでしょうか。ちなみに変なメッセージはこんな感じでした。 mkdir -p C:/Program Files/ruby-1.8/bin mkdir -p C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8 mkdir -p C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/i386-msvcrt install -c dll/jpeg.dll C:/Program Files/ruby-1.8/bin C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/fileutils.rb:1264:in `initialize': Permission denied - C:/Program Files/ruby-1.8/bin/jpeg.dll (Errno::EACCES) from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1264:in `open' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1264:in `copy_file' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1263:in `open' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1264:in `copy_file' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:464:in `copy_file' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:845:in `insrall' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1397:in `fu_each_src_dest' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest' from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:841:in `insrall' from C:/Program Files/ruby-1.8/rubysdl-1.3.0-mswin32-1.8.5-p12/install_rubysdl.rb:26
558 名前:つづき mailto:sage [2010/07/17(土) 23:47:25 ID:Dnvbzl3f] from C:/Program Files/ruby-1.8/rubysdl-1.3.0-mswin32-1.8.5-p12/install_rubysdl.rb:26:in `globe' from C:/Program Files/ruby-1.8/rubysdl-1.3.0-mswin32-1.8.5-p12/install_rubysdl.rb:26 以上です。宜しくお願いします。
559 名前:名前は開発中のものです。 mailto:sage [2010/07/18(日) 11:53:06 ID:6fMtGEk6] あっちでも書いたが、C:/Program Files/ruby-1.8/binが管理者じゃないと書き込み権限がないとかだろ。
560 名前:名前は開発中のものです。 mailto:sage [2010/07/18(日) 12:28:32 ID:ic6NNUQZ] Rubyのインストール先をProgramFiles以外にすればいいんじゃね?
561 名前:名前は開発中のものです。 mailto:sage [2010/07/18(日) 14:18:58 ID:WsCVWUVt] >>559 ,>>560 Dドライブにインストールしなおしたら出来ました! ありがとうございます!