【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/04/02(水) 02:11:27ID:cxIG00d1情報交換したり雑談したり質問したりするためのスレッドです。
ツクールXP(RGSS)についてはツクールスレ等でお願いします。
Ruby/SDL
http://www.kmc.gr.jp/~ohai/rubysdl.html
StarRuby
http://www.starruby.info/ja/
0043名前は開発中のものです。
2008/04/15(火) 16:22:40ID:3tODdakK:delay と :interval の違いがよく分かりません。
分かる人よかったら解説きぼん!
以下 API リファレンス (http://www.starruby.info/ja/documentation/api_reference/star_ruby.input) より抜粋。
:duration キーを押し始めてから、キーが押されていると判別される持続時間 (フレーム数)。
-1 を指定した場合は無限です (押しっぱなしの間ずっと「押された」と判別されます)。
:delay :duration を正数で指定している場合、 2 回目以降「押された」と判別されるまでの遅延時間 (フレーム数)。
-1 を指定した場合は無限です (2 回目以降の判定がありません)。
:interval 2 回目以降「押された」と判断される時間間隔 (フレーム数)。
0044名前は開発中のものです。
2008/04/15(火) 21:55:09ID:G4jMd8nd・10フレームの間キーが押された→当然10フレーム全てで押されていると判定
○○○○○○○○○○
・:duration に3を指定→頭から3フレーム分だけ押されていると判定
○○○×××××××
・:duration はそのままで :delay :duration に2を指定
→最初に頭から3フレーム分押されていると判定され、ディレイ分開け繰り返し押されていると判定される
○○○××○○○××
0045Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 21:59:32ID:WAeOMGRr分かりにくくてすみません。図を追加しました。
0046名前は開発中のものです。
2008/04/15(火) 22:12:26ID:3tODdakK解説ありがとう!
でも :interval が出てきてない?
>>45
こんにちは中の人!
さっそく図を見てきますね
0047名前は開発中のものです。
2008/04/15(火) 22:22:54ID:3tODdakK図を見てきました。
大体はイメージしていた通りなのですが、ちょっと分からないところがあります。
この図の例で :interval を 0 にした場合はどうなるんでしょうか?
例えば、StarRuby のサンプルの1つである falling_blocks には
:interval に 0 を指定する以下のようなコードがありますが
def repeatings(device)
keys(device, {
:duration => 1, :delay => 2, :interval => 0
})
end
0 というのは極めて短い間隔で「押された」と判断する、という解釈で合っていますか?
0048Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 22:32:45ID:WAeOMGRr> 0 というのは極めて短い間隔で「押された」と判断する、という解釈で合っていますか?
0 になるのを想定していなかったというのが正直なところです。どうなるんだろう。
Star Ruby においては FPS (1 フレーム時間) より細かい時間の単位はありません。
よって、最小は 1 で、図にしたがうと「ずっと押された」と判別されることになります。
2 にすると、毎フレーム「押された」と「押されていない」を繰り返すようになります。
0049Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 22:35:25ID:WAeOMGRr図にかけないな。
0050Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 22:38:25ID:WAeOMGRrというわけで
> :duration => 1, :delay => 2, :interval => 0
は 1 の間違いです…
0051名前は開発中のものです。
2008/04/15(火) 22:41:11ID:3tODdakK> 図にかけないな。
そうそう!
僕もそこが分からなかったんですよ。
0 になるとどうなるのかなーって。
そして、falling_blocks は中の人さんが書いたんじゃなかったのですね。
0052Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 22:42:17ID:WAeOMGRrやっぱり 0 が正しいです。で、
> 0 というのは極めて短い間隔で「押された」と判断する、という解釈で合っていますか?
も正しいです。
すみませんすみません…。
0053名前は開発中のものです。
2008/04/15(火) 22:42:56ID:3tODdakKえ!なんだなんだ(;゚д゚)
:interval => 1 が正しいってこと?
0054Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 22:43:13ID:WAeOMGRrいや、自分で書きました。
>>47 は「こう書くとどうなるの」という意味だと空目してました。
0055名前は開発中のものです。
2008/04/15(火) 22:44:12ID:3tODdakK0056Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 23:02:03ID:WAeOMGRr0057名前は開発中のものです。
2008/04/15(火) 23:05:16ID:3tODdakK上に書いた repeating メソッド内に出てくる
:interval は 0 の方が 1 よりもスムーズに動く。
0058名前は開発中のものです。
2008/04/15(火) 23:06:16ID:3tODdakK今 57 を図を見ながら書いてて
ページを更新したら図が変わったので
そうじゃないかと思いましたw
おつかれさまです
0059名前は開発中のものです。
2008/04/15(火) 23:07:54ID:3tODdakK今の僕のイメージとぴったり重なる。
0060Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 23:10:40ID:WAeOMGRrStar Ruby を使っていただきありがとうございます。
0061名前は開発中のものです。
2008/04/15(火) 23:14:30ID:3tODdakKいえいえ。
こちらこそありがとうございました。
また何かあったらここに書き込むかもしれないので
よかったらまたお願いします。
0062名前は開発中のものです。
2008/04/15(火) 23:15:27ID:Ky2ZHIVpチュートリアル早く書いてね(はぁと)
0063Star Ruby の中の人 ◆VqDEEXDP8E
2008/04/15(火) 23:34:24ID:WAeOMGRrはーい><
0064名前は開発中のものです。
2008/04/17(木) 21:55:26ID:/N9sorSiゲーム作りではRubyを使わざるを得ないようだなこりゃ
0065名前は開発中のものです。
2008/04/17(木) 22:35:39ID:LbpK4gl9pyGameには何か問題があるのか?
0066名前は開発中のものです。
2008/04/18(金) 12:30:18ID:MYeenWuRMacOS使ってるんだけど、
object-cモジュールの兼ね合いで正常に動作しない。
一応バイナリパッケージ版でrc5版がリリースされてるけど
動作がいまいち安定してないんだよ..
0067名前は開発中のものです。
2008/04/19(土) 21:13:21ID:pyAMTUL2Rubyへようこそ
0068名前は開発中のものです。
2008/04/20(日) 02:03:18ID:nOrmnF1m0069名前は開発中のものです。
2008/04/21(月) 20:23:31ID:yXrZrnn7なんかgemコケるんだよなー
0070名前は開発中のものです。
2008/04/23(水) 16:14:29ID:jxFSACYNhttp://d.hatena.ne.jp/authorNari/20080422/1208880928
0071名前は開発中のものです。
2008/04/23(水) 20:49:52ID:UI+EbsIIソース見てみたが、もっと簡潔にできそうだね
0072名前は開発中のものです。
2008/05/01(木) 20:46:41ID:uIZC2Vdr0073名前は開発中のものです。
2008/05/04(日) 08:45:24ID:BTa1QZ3iWindows版のリリースはまだみたいだが
ttp://www.kmc.gr.jp/~ohai/
0074名前は開発中のものです。
2008/05/17(土) 11:23:55ID:zKBwdQ9K付属のサンプルのうちfpstimer alpha cursor event2 font joy2 movesp randrect stetris testspriteは動きました
それ以外は動きませんでした
どうすればまともに動くようになるでしょうか
0075名前は開発中のものです。
2008/05/17(土) 14:21:59ID:9mUdty5Mエラーとか出てるならそれも書かないとわからないよ
007674
2008/05/17(土) 14:24:09ID:zKBwdQ9Ksgetest.rb:15: undefined method `drawLine' for #<SDL::Screen:0x1aeca468> (NoMethodError)
0077名前は開発中のものです。
2008/05/17(土) 14:33:26ID:9mUdty5Mttp://www.kmc.gr.jp/~ohai/rubysdl/README.ja
この辺見てオプションのライブラリ一通り入れると全部の機能使えるようになるぜ
0079名前は開発中のものです。
2008/05/21(水) 13:28:10ID:vzVpxeFw0080名前は開発中のものです。
2008/06/25(水) 05:44:15ID:dDH20x7g「画面を覆い尽くす弾幕と、派手なボムでの玉消し」とか
めっさピクセル使うときに一番軽いのって
どのゲーム制作モジュールなんだろ?
候補としてはmygame, miyako, starruby あたりなんだが。
それとも ruby/sdl だけの問題なのだろうか?
既出ネタだったらスマソ。
0081名前は開発中のものです。
2008/06/25(水) 07:45:42ID:wMsF4i4Yもしruby/sdl自体に限界を感じてるのならruby-OpenGLも良い候補かも
0082名前は開発中のものです。
2008/06/25(水) 09:01:15ID:v4+cr6BpStarRubyはRuby/SDL使ってないはず
だからここで比較するなら
1. Ruby/SDLで直接プログラミング
2. Ruby/SDLに中間層(MyGame, Miyako)を挟む
3. StarRuby
の三択だろう
どれが軽いかは分からん。コード内での工夫にもよるだろうし
0083名前は開発中のものです。
2008/06/25(水) 09:09:20ID:wMsF4i4Yいやいや使ってるよ
0084名前は開発中のものです。
2008/06/25(水) 10:43:04ID:pFm8UCsUたぶん描画より、「画面を覆い尽くす弾幕」の更新、ヒット判定の方がボトルネックになると思うぜ
0085名前は開発中のものです。
2008/06/25(水) 11:43:05ID:0H1XKKpHニコ動に動画あたよ
Ruby のゲーム開発の現状と自作ゲームライブラリ Star Ruby - 星一‐ニコニコ動画(SP1)
http://www.nicovideo.jp/watch/sm3733775
0086名前は開発中のものです。
2008/06/25(水) 13:33:39ID:JUyYpQJeSDLでシューティング作ってるんですけど 被弾した時に 画面全体を赤っぽくしたいんですが、画面全体を赤で塗りつぶして半透明にするような処理ってできますか?
0087名前は開発中のものです。
2008/06/25(水) 18:46:42ID:v4+cr6Bpどの辺に?
ソースコード見ても、C言語でガリガリ書いてるようにしか見えないし
ダウンロードページにも「Ruby/SDL は不要です。」って書いてあるよ
もしかして「RubyとSDLを使ってる」っていうオチか
俺が言ってるのは固有名詞の「Ruby/SDL」なんだが
>>86
Surface#fill_rectで塗りつぶした別サーフェス(screenと同じサイズの)を生成し
Surface#set_alphaでαブレンディングを有効にしてから重ねる
0088名前は開発中のものです。
2008/06/25(水) 19:19:29ID:JUyYpQJe0089名前は開発中のものです。
2008/06/25(水) 19:21:07ID:JUyYpQJe自分もそれでやろうとしたけどなんか出来ないんですよ・・・ もうちょいグーグル先生と逆引きに聞きながらがんばってみます
0090名前は開発中のものです。
2008/06/25(水) 20:01:53ID:JUyYpQJe初心者すぎて死にたい
orz
0091名前は開発中のものです。
2008/06/25(水) 20:08:50ID:nTAJQ39k(A) 書いたコード(抜粋でも可)
(B) 期待する結果
(C) 実際に起きた結果
を書くと良いかも。
「できない」だけではエスパーじゃないと答えづらいはず。
0092名前は開発中のものです。
2008/06/25(水) 22:14:00ID:JUyYpQJeSDL::Surface.new(SDL::HWSURFACE,640,480,8,220,10,20,70)
SDL::Surface#fill_rect(0,0,640,480,[220,10,20])
SDL::Surface#set_alpha(SDL::SRCALPHA,70)
ここらへんつかうのわかったんですけど書き方がわからなくて・・・;初心者すぎてごめんなさい;
0093名前は開発中のものです。
2008/06/25(水) 22:58:32ID:kaYQXnzU暇人は多い。でも、現在のコードが判らないと修正のしようもない。
0094名前は開発中のものです。
2008/06/25(水) 23:30:47ID:JUyYpQJeとりあえず適当に書いて抜粋したけど頭こんがらがってパニックになってます; 初心者にはムリっぽそうです
def act(input)
@pache.act(input)
is_crashed,books = @items.act(@pache)
if is_crashed
SDL::Mixer.halt_music
aka = SDL::Surface.new(SDL::HWSURFACE,640,480,8,220,10,20,70) #←ここで画面全体を赤くしたいです;。
def pityu(aka)
SDL::Surface#fill_rect(0,0,640,480,[220,10,20])
SDL::Surface#set_alpha(SDL::SRCALPHA,50)
end
pityu
sleep 2
# (4) ゲームオーバーになったらハイスコアを更新する
@high_score = @score if @high_score < @score
score #scoreをインスタンスクラスからグローバルクラスに
return :game_over
else
@score += books * 100 # (3) 本を 1 個取るごとに 100 点加算する
return nil
end
end
0095名前は開発中のものです。
2008/06/25(水) 23:51:55ID:JUyYpQJe汚いソースですけどマジでごめんなさいorz うpする自分も初心者丸出しで恥ずかしい
0096名前は開発中のものです。
2008/06/26(木) 00:41:08ID:uCUDTTyx実際に動くかどうかは未検証
screen = SDL::Screen.get
aka = SDL::Surface.new(screen.flags, screen.w, screen.h, screen.format)
aka.fill_rect(0, 0, aka.w, aka.h,[220,10,20])
aka.set_alpha(SDL::SRCALPHA, 50)
screen.put(aka, 0, 0)
0097名前は開発中のものです。
2008/06/26(木) 00:48:21ID:Y1fNGck7マジありがとうございます; 書き方全然違ってて恥ずかしい・・・;
いまからいれてきてみます。
0098名前は開発中のものです。
2008/06/26(木) 01:34:03ID:Y1fNGck7009996
2008/06/26(木) 09:43:49ID:uCUDTTyx実際にはrenderメソッドの中に入れる必要がある
(画面に地形やキャラクターを描いた後で赤くする)
それ以外の部分は、手元でRuby/SDLのサンプル使って検証してみたところ動いたので問題なさそう
0100名前は開発中のものです。
2008/06/27(金) 00:50:18ID:OOVE5AKfもうマジ初心者の質問すぎてごめんなさい・・・ リファレンスマニュアル読んでもわからないんです・・
0101名前は開発中のものです。
2008/06/27(金) 02:46:41ID:bltVx0hU2.x(最新は2.0.1)という二つのバージョンがあって、
>>96が書いているSDL::Screen.getは2.xにしかない。
リファレンスマニュアルもバージョン毎にある(1.xと2.xは別)ので要注意。
SDL::Screen.getがうまくいかないという>>100は1.xを使っているのではないか。
念のために、SDL::VERSIONの値を教えてほしい。
require 'sdl'
p SDL::VERSION
0102名前は開発中のものです。
2008/06/27(金) 13:19:02ID:FLBA5DaJけどたぶんスターター使って起動してるから多分そっちのバージョンが低いのかも・・・('A`)
0103名前は開発中のものです。
2008/06/27(金) 14:02:06ID:FLBA5DaJでもactの中でスクリーンプット置くにはどうしたらいいんだろう・・・
render(screen)のところにそのまんま全部おいたら常に赤くなるのは確認できたんですけど 死んだときに赤くするって処理がいまだにできないですor2
いろいろためしてますが・・・もうダメぽ
http://www.uploda.org/uporg1507985.rar.html とりあえずmainソースです;
0104名前は開発中のものです。
2008/06/27(金) 21:06:56ID:l2w5o4Csもう消えてる
0105名前は開発中のものです。
2008/06/29(日) 09:23:06ID:+QlqCrVnなんとか自己解決しました。
被弾した時にすぐに別のシーンに移動してしまっていたようで 新しくスクリーンアップデートをつくってあげたらなんとかあかくなりましたor2お騒がせしてごめんなさい
0106名前は開発中のものです。
2008/07/11(金) 19:52:05ID:iVchH/POhttp://ruby-game-dev.org/
まだほとんど何もないけど。
0107名前は開発中のものです。
2008/07/11(金) 20:14:05ID:zL2sa+vS俺がプレイした中でハマったのはSOAR(ただしプレイスタイルはボタン連打)だけなんだが
0108名前は開発中のものです。
2008/07/13(日) 07:03:02ID:XXccfbsjRubyでゲーム開発のコミニティがほしいといってたから作ったんだね
0109名前は開発中のものです。
2008/07/16(水) 00:25:20ID:tEiF1FT20110名前は開発中のものです。
2008/07/23(水) 12:43:57ID:XJisHIkxイベント画像がフォルダ開いて丸見えってのはやっぱツライよな。
0111名前は開発中のものです。
2008/07/23(水) 13:33:03ID:09s8RLrZ0112名前は開発中のものです。
2008/07/23(水) 14:23:56ID:jaDqW5960113名前は開発中のものです。
2008/07/23(水) 19:13:56ID:IFZqEpkn今のStarRubyでもTexture#dump/undumpあたりを使えばできるかもしれないけど、どっちにしても面倒そうだな
Ruby/SDLで言う、load_from_ioみたいなメソッドを実装してもらえるように
要望出してみたらどうだろう
もしくはもっとダイレクトに、暗号化機能そのものを提案するとか
0114名前は開発中のものです。
2008/07/23(水) 21:51:17ID:XJisHIkxたしかに、IOオブジェクトから画像をロードできればいいんだよな。
Rubyスクリプトが読める人には意味ないけど、とりあえず一般ユーザーの目をごまかせればいいんだし。
とか思ってたら、すでに星さんがこの話題を取り上げていたぜ
http://groups.google.com/group/starruby/browse_thread/thread/4029a1fa5486ee01
0115名前は開発中のものです。
2008/07/24(木) 12:17:59ID:vi/50UDV利便性との両立がフレームワーク作者の勘所だったりするわけですな。
0116名前は開発中のものです。
2008/07/24(木) 21:06:36ID:KjJDp2BX拡大縮小が使い物にならん気がする。
HDDまでアクセスし始める始末だから、メモリかなり使ってるのかなぁ。
結局SDLを直にやるか、代替クラス作らんといかんっぽいのが難か・・・。
0117名前は開発中のものです。
2008/07/24(木) 21:31:06ID:ZAyfyp08MyGameって、拡大縮小になんか特殊な処理やってるのか?
普通のRuby/SDLと同じだと思うが
0118名前は開発中のものです。
2008/07/24(木) 22:12:58ID:b4aMzTsiSDL経由でOpenGLを使うと楽かもね。
ttp://www.kmc.gr.jp/~ohai/sgt.rb とか。
0119名前は開発中のものです。
2008/07/26(土) 16:27:16ID:IqVhnzGT0120名前は開発中のものです。
2008/07/26(土) 16:38:03ID:LYWnlODe0121名前は開発中のものです。
2008/07/26(土) 16:53:45ID:IqVhnzGTただXcodeで書きたかったっていう、それだけ
0122名前は開発中のものです。
2008/07/27(日) 19:39:57ID:L0iN1u/r0123名前は開発中のものです。
2008/07/28(月) 19:29:54ID:9GhNVVJ30124名前は開発中のものです。
2008/08/03(日) 17:47:55ID:W/zmysiG0125名前は開発中のものです。
2008/08/03(日) 17:49:53ID:Fm7SEmEsPythonだとpycみたいなの
r2eの類だと全部一緒のexeになってまうでしょ?そんなのじゃなくて・・・
0126名前は開発中のものです。
2008/08/03(日) 17:50:25ID:Fm7SEmEsこっちより本スレで聞いてきまつ
0127名前は開発中のものです。
2008/08/03(日) 18:05:27ID:+gPnPllxyarvでバイトコード化はやってる筈だし検討はしてるみたいな事言ってた記憶はあるんだけどな
バイトコード化と暗号化は別もんだけど。
現状、上にも出てるけど手動でダンプしたのロードするとかが正攻法かもな
0128名前は開発中のものです。
2008/08/04(月) 08:00:58ID:2UcTdZru全然認識が間違ってたらすまんけど、RubyってGPLだよね。
ソースを暗号化してもGPLを盾にソース公開を要求されたら暗号化意味無くない?
(上のdumpの例は画像だから有効だろうけど)
0129名前は開発中のものです。
2008/08/04(月) 11:02:51ID:0vDDSQkq間違ってる
「GPLのツールを使って開発したソフトウェアはGPLでなければならない」というのは間違い。
GPLのソースコードを含む。GPLのライブラリーをリンクしている 場合にのみ感染する。
・自分が書いたRubyのスクリプトには任意のライセンスを適用できる。よってソース公開の義務はない。
あとRubyは、GPLとArtisticに似た独自ライセンスのデュアルライセンス
0130名前は開発中のものです。
2008/08/04(月) 14:55:29ID:JBgDhP6y拡張モジュールを使って、暗号化したソースを読む、という難読化を実現してる
例はあるよ。1.9 のバイトコードの外部化は検討中の段階。
0131名前は開発中のものです。
2008/08/04(月) 22:56:25ID:2UcTdZruレスTHX
ということは、
1.自作のRubyソースでGPLのソースを使わない。
2・GPLのRuby実行環境とリンクしない。
に気をつければGPL回避はできるわけですね。
(2.があるからmkexyはアウトですか。)
暗号化したRubyソースを復号化する外部プログラムを作って、
そのプログラムがRubyソースを復号化&system("ruby.exe 復号化したソースファイル")とかすれば
一応、Ruby.exeとはリンクしてないわけだから問題ない?
0132名前は開発中のものです。
2008/08/04(月) 23:05:09ID:nwnG0EQa0133名前は開発中のものです。
2008/08/04(月) 23:32:20ID:q0P6gIfFruby.exeにリンクしたからといってGPLに感染するわけではない
詳しくはRubyライセンスを読め
ttp://www.ruby-lang.org/ja/LICENSE.txt
また、exerbで生成したファイルも、GPL(LGPL)に感染はしない
ttp://exerb.sourceforge.jp/man/doc/license.ja.html
0134名前は開発中のものです。
2008/08/05(火) 22:47:08ID:9DK3Bk0RExerbで固めてUPXで圧縮とかで目的は果たせそう
ウィルス判定されそうだけどなw
0135名前は開発中のものです。
2008/08/09(土) 05:55:33ID:XTb0A79HRPGツクールXPなんかはファイル単位の暗号化やってるみたいだよね。
RPGツクールVXの方は、さらに進化していて1つのアーカイブにまとめているみたい。
こういうのって拡張モジュールのレベルで可能なのかな?
require上書きして・・・と思ったけど、組み込み関数だよな・・・
って、そろそろスレ違いなので本スレで聞いてくる
0136名前は開発中のものです。
2008/08/09(土) 15:58:15ID:Bpln2nruexerbでもrubygemsでもやってる
0137名前は開発中のものです。
2008/08/14(木) 20:24:31ID:q15OOEOgゲームループは、各オブジェクトの更新(update)と各オブジェクトの描画(render)の2ステップに分かれると思うのですが、各オブジェクトの更新のメソッド名が決められません
updateにしようとも思ったのですが、それではObservableから呼び出されるupdateとかぶってしまいます
いまは第二候補としてiterateを考えていますがいまいちです
ほかに良い名前があればお願いします
0138名前は開発中のものです。
2008/08/14(木) 21:06:08ID:+Csgcr000139名前は開発中のものです。
2008/08/15(金) 00:55:57ID:S09k7UOGもしくはイベント駆動的にon_every_frameとか
0140名前は開発中のものです。
2008/08/15(金) 16:44:29ID:3xc17uVBシンプルでタイプ量が少ないstepを使うことにします
ありがとうございました
0141名前は開発中のものです。
2008/08/26(火) 22:40:24ID:YnC+NSXLなにも考えずに1.9にしたら露骨に速くなったりするものかな
拡張ライブラリのコンパイルしなおしとかが面倒でなかなか試せなくて
0142名前は開発中のものです。
2008/08/27(水) 12:10:36ID:tSXh0P22もともとコアのライブラリは高速化のためにCで書かれてる
まあRubyで書かれた部分が
処理に大きなウェイトを占めるのなら、あるいは・・・・
■ このスレッドは過去ログ倉庫に格納されています