トップページgamedev
687コメント255KB

【Ruby/SDL他】Rubyでゲーム制作・総合スレッド

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/04/02(水) 02:11:27ID:cxIG00d1
Ruby/SDL、StarRubyなどを用いてゲームを作る(作ろうとしている)人が
情報交換したり雑談したり質問したりするためのスレッドです。
ツクールXP(RGSS)についてはツクールスレ等でお願いします。

Ruby/SDL
http://www.kmc.gr.jp/~ohai/rubysdl.html

StarRuby
http://www.starruby.info/ja/
0002名前は開発中のものです。2008/04/02(水) 02:15:28ID:ebTSCWAK
ttp://www8.atwiki.jp/poruporustory/
プログラマ募集してる
0003名前は開発中のものです。2008/04/02(水) 02:18:27ID:cxIG00d1
【Ruby/SDL関連】
MyGame(支援ライブラリ)
http://dgames.jp/ja/projects/mygame/

Miyako(支援ライブラリ)
http://www.twin.ne.jp/~cyross/Miyako/

Rubyist Magazine - Ruby/SDLで始めるゲームプログラミング
http://jp.rubyist.net/magazine/?0018-GameProgramingForRubySDL
http://jp.rubyist.net/magazine/?0019-GameProgramingForRubySDL


【関連スレ】
Ruby でなんかゲームつくる
http://pc11.2ch.net/test/read.cgi/gamedev/1205141142/
0004名前は開発中のものです。2008/04/02(水) 02:21:29ID:cxIG00d1
Ruby/SDL Users
http://mono.kmc.gr.jp/proj/rubysdl/

他にも関連ページや関連スレがあれば、追記お願いします
0005名前は開発中のものです。2008/04/03(木) 10:02:12ID:i0VfX6sH
SDLdoc 日本語翻訳プロジェクト
http://www.tacoworks.jp/software/SDLdoc-jp/
http://www.tacoworks.jp/software/SDLdoc-jp/html/index.html
0006名前は開発中のものです。2008/04/04(金) 21:31:12ID:wl4zhTBo
Win-gcc-SDL:フルスクリーン表示をちゃんとする
> 表示できない画面モードにすると、フリーズするパソコンもあります
> ちゃんと環境を調べてからSDL_SetVideoModeを行いましょう
http://blog.livedoor.jp/nanashisoft/archives/51495887.html
0007名前は開発中のものです。2008/04/04(金) 22:33:48ID:COKMRNIc
Ruby/SDLで、未だにdisplay_formatとdisplay_format_alphaの違いがよく分からない
いったいdisplay_format_alphaはどんな時に使えばいいんだろう
0008名前は開発中のものです。2008/04/05(土) 00:22:05ID:4RENp5IN
プログラムよく分かってないんだけど参加しておk?
0009名前は開発中のものです。2008/04/05(土) 07:44:08ID:lmqsmDRl
>>8
プログラム的な部分に何らかの興味があるならおk
このスレは初心者もウェルカムです(たぶん)
0010名前は開発中のものです。2008/04/05(土) 09:24:45ID:4RENp5IN
>>9
どうも。
何を使えば良いのかも分からないので名前でStarRubyを選んでみました。

コピペでキャラクターを動かす所までは出来ました。
http://gamdev.org/up/img/11278.zip
とりあえず次は画面外にはみ出してしまうのを防ぎたいです。

Game.run(320, 480) do
Game.terminate if Input.keys(:keyboard).include?(:escape)
Game.screen.clear
keys = Input.keys(:keyboard)
if keys.include?(:right)
x = x + 10
elsif keys.include?(:left)
x = x - 10
end
Game.screen.render_texture(type3, x, y, :src_width => 32, :src_height => 32)
end
0011名前は開発中のものです。2008/04/05(土) 14:08:51ID:lmqsmDRl
>>10
ヒント
1:画面外に出たかどうかを判定して
2:出ていたらx座標を画面内に戻す
0012名前は開発中のものです。2008/04/05(土) 16:25:47ID:4RENp5IN
>>11
ヒントどうもです。出かけていました。
http://gamdev.org/up/img/11279.zip
次はななめに移動&アニメーションをさせたいですね。
アニメーションはどうやるのがいいんでしょうか?

keys = Input.keys(:keyboard)
if keys.include?(:right)
px = px + 10
if px > 288
px = 288
end
elsif keys.include?(:left)
px = px - 10
if px < 0
px = 0
end
elsif keys.include?(:up)
py = py - 10
if py < 0
py = 0
end
elsif keys.include?(:down)
py = py + 10
if py > 448
py = 448
end
end
0013名前は開発中のものです。2008/04/05(土) 16:37:19ID:u330x2Hg
>>12
) が足りんぞ
0014名前は開発中のものです。2008/04/05(土) 16:39:33ID:4RENp5IN
>>13
何かの拍子に消してしまったみたいです。
Game.screen.render_texture(type3, px, py, :src_width => 32,
:src_height => 32)←これですね。
0015名前は開発中のものです。2008/04/05(土) 16:40:37ID:u330x2Hg
>>12
アニメって、どのようにアニメさせたいん?
0016名前は開発中のものです。2008/04/05(土) 16:44:42ID:4RENp5IN
>>15
type3.pngを見てもらうと分かると思いますが、
エンジン部分が光るようになっています。
0017名前は開発中のものです。2008/04/05(土) 16:45:29ID:u330x2Hg
>>16
それはわかるけど、いつ光るタイミングになるのよ?
0018名前は開発中のものです。2008/04/05(土) 16:47:26ID:u330x2Hg
>>16
ちなみに光る絵に切り替えるなら、:src_x => 32, :src_y => 0 を追加すればいいと思う
0019名前は開発中のものです。2008/04/05(土) 16:50:26ID:4RENp5IN
>>17
さあ?
どのタイミングでアニメーションするのが普通なんでしょうか?
あまりシューティングなんてやらないのでなんとも。

ななめ移動もいまいちどうやっていいのか考え中です。
0020名前は開発中のものです。2008/04/05(土) 16:56:10ID:4RENp5IN
>>18
隣の画像にはなりましたが、アニメーションはしません。
0021名前は開発中のものです。2008/04/05(土) 17:02:34ID:u330x2Hg
>>20
:src_x => の部分を変数にして切り替えるんだよ。
君が切り替えのタイミング分からないなら俺にも分からん。
0022名前は開発中のものです。2008/04/05(土) 17:13:31ID:4RENp5IN
規制されてしまう。
if srcx == 0
srcx = 32
elsif srcx == 32
srcx = 0
end
Game.screen.render_texture(type3, px, py, :src_x => srcx,
:src_y => srcy,
:src_width => 32,
:src_height => 32)
で出来ました。凄い勢いで点滅してます。
0023名前は開発中のものです。2008/04/05(土) 17:30:46ID:u330x2Hg
>>22
別の変数でカウンター作って、その値で切り替えるともっとゆっくりになると思う。
がんがれ。
0024名前は開発中のものです。2008/04/05(土) 17:41:25ID:4RENp5IN
>>23
色々どうもです。ちと疲れたので休みます。
ななめ移動で詰まってしまっているので、どなたか分かる方がいらっしゃたら、
教えてください。
0025名前は開発中のものです。2008/04/05(土) 17:54:21ID:lmqsmDRl
>>24
ヒント:縦移動と横移動を別々に処理
0026名前は開発中のものです。2008/04/05(土) 19:12:04ID:4RENp5IN
>>25
ヒントどうもです。
http://gamdev.org/up/img/11280.zip
次は弾が出せるようにしてみます。

他の人も来ないかなー、独り占めってのも気が引ける。
0027名前は開発中のものです。2008/04/06(日) 00:07:21ID:snHQsLG1
>>22
秒間30〜60回ループしてるんだから、
@animation_counterでも作ってカウントアップして、
アニメーションのトリガが来たらsrc_x,yを動かせばいいんじゃ?

と思い付いた

SRPG作ってるんだが、どういう設計にすればいいか悩んでる
どこかに例が転がってないかなあ…
0028名前は開発中のものです。2008/04/06(日) 13:53:12ID:ZZArlQe5
どなたか弾の出し方のサンプルを提示してもらえないでしょうか?

>>27
@の付いた変数はインスタンス変数だとリファレンスにありましたが、
どういった時に使うのかよく分かっていないので普通にcounterという変数で
やりました。

> SRPG作ってるんだが、どういう設計にすればいいか悩んでる
> どこかに例が転がってないかなあ…
ジャンル別に作り方が載っているサイトとかないんですかね?
0029名前は開発中のものです。2008/04/06(日) 14:35:34ID:GePdtDO2
>>27
RPGやS-RPGはサンプルが少ないな
rubyじゃないけど、このページは参考になるかも?
http://gumina.sakura.ne.jp/CREATION/OLD/MAKING/index.html

>>28
まずは自分で考えるべき
そもそもSTGのサンプル(チュートリアル)ぐらい、ネット上にいくらでも転がっている

ちなみに弾を出すあたりから、オブジェクト指向を理解してないと厳しくなる
0030名前は開発中のものです。2008/04/06(日) 15:07:32ID:ZZArlQe5
>>29
Rubyへの置き換え方がいまいち分からなくて聞いてみました。
サンプルを作るのは難しいですか?難しいなら分かる人を待ってみます。
0031名前は開発中のものです。2008/04/10(木) 06:17:57ID:cxu7rJMK
Ruby/SDLでシューティング。かなりシンプル

http://hoge.mine.nu/~koji/diary/?date=20051026#p01
0032名前は開発中のものです。2008/04/10(木) 16:06:09ID:lfkkv2ZU
なんとか自力で置き換える事が出来ました。
i = 0
pbmx.times{|i|
if pbf[i] == 0
if shot_delay > 0
shot_delay -= 1
else
if Input.keys(:keyboard).include?(:z)
shot_delay = 10
pbx[i] = px + 14
pby[i] = py - 24
pbf[i] = 1
end
end
end
pby[i] -= 10
if pby[i] < 0
pbf[i] = 0
end
if pbf[i] == 1
Game.screen.render_texture(bullet, pbx[i], pby[i])
end
i += 1
}

>>31
後ほど見てみます。
0033名前は開発中のものです。2008/04/10(木) 16:08:54ID:lfkkv2ZU
一つ質問があります。
今後ここでサンプルソースを要求しても、提示は一切なしですか?
0034名前は開発中のものです。2008/04/10(木) 16:36:02ID:lfkkv2ZU
zipを忘れていました。
http://gamdev.org/up/img/11303.zip
次は発射時に音を出したりなどの細かい所と、
いよいよ敵を出現させてみたいと思います。
0035名前は開発中のものです。2008/04/10(木) 23:38:15ID:O/o4AMAo
>>33
意味が分かりかねるんだが
0036名前は開発中のものです。2008/04/11(金) 00:06:56ID:8FxancmH
>>33
31がわざわざ提示してくれたのに何を言っているんだ
0037名前は開発中のものです。2008/04/11(金) 00:44:07ID:nEMzRDKZ
>>35
なしだったら、他へ行こうかなと思いまして。
人もあまり居ないみたいですので。
0038名前は開発中のものです。2008/04/11(金) 17:54:44ID:wfScRD9q
>>37
提示ってなんの提示?主語と目的語がないからわからないのよ
0039名前は開発中のものです。2008/04/11(金) 23:03:47ID:CTkbzMiH
サンプルソースくれって言ったら作って貼れってことか。
他いけば?
0040名前は開発中のものです。2008/04/13(日) 02:41:34ID:dV6hecf3
>>34
おーなめらかにうごくじゃん
がんばー
0041名前は開発中のものです。2008/04/13(日) 22:58:53ID:hGwqVbQC
>>34
こっちでもちゃんと動いたよー
0042名前は開発中のものです。2008/04/14(月) 22:12:41ID:rYEMXViq
>>34 のスクリプトを
自分なりに適当にリファクタしてみた。
delay_shot がよく分からなかった。
0043名前は開発中のものです。2008/04/15(火) 16:22:40ID:3tODdakK
StarRuby::Input.keys の options に指定できる
: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
>>43-44
分かりにくくてすみません。図を追加しました。
0046名前は開発中のものです。2008/04/15(火) 22:12:26ID:3tODdakK
>>44
解説ありがとう!
でも :interval が出てきてない?

>>45
こんにちは中の人!
さっそく図を見てきますね
0047名前は開発中のものです。2008/04/15(火) 22:22:54ID:3tODdakK
>>45
図を見てきました。
大体はイメージしていた通りなのですが、ちょっと分からないところがあります。
この図の例で :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
>>47
> 0 というのは極めて短い間隔で「押された」と判断する、という解釈で合っていますか?

0 になるのを想定していなかったというのが正直なところです。どうなるんだろう。
Star Ruby においては FPS (1 フレーム時間) より細かい時間の単位はありません。
よって、最小は 1 で、図にしたがうと「ずっと押された」と判別されることになります。
2 にすると、毎フレーム「押された」と「押されていない」を繰り返すようになります。
0049Star Ruby の中の人 ◆VqDEEXDP8E 2008/04/15(火) 22:35:25ID:WAeOMGRr
とかいいつつ :interval のデフォルト値は 0 ですが。
図にかけないな。
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
>>49
> 図にかけないな。
そうそう!
僕もそこが分からなかったんですよ。
0 になるとどうなるのかなーって。

そして、falling_blocks は中の人さんが書いたんじゃなかったのですね。
0052Star Ruby の中の人 ◆VqDEEXDP8E 2008/04/15(火) 22:42:17ID:WAeOMGRr
何度もすみません。実際やってみたら図がまちがっておりました…。
やっぱり 0 が正しいです。で、

> 0 というのは極めて短い間隔で「押された」と判断する、という解釈で合っていますか?
も正しいです。

すみませんすみません…。
0053名前は開発中のものです。2008/04/15(火) 22:42:56ID:3tODdakK
>>50
え!なんだなんだ(;゚д゚)
:interval => 1 が正しいってこと?
0054Star Ruby の中の人 ◆VqDEEXDP8E 2008/04/15(火) 22:43:13ID:WAeOMGRr
> そして、falling_blocks は中の人さんが書いたんじゃなかったのですね。

いや、自分で書きました。
>>47 は「こう書くとどうなるの」という意味だと空目してました。
0055名前は開発中のものです。2008/04/15(火) 22:44:12ID:3tODdakK
ちょっと僕もちゃんとコードいじって試してみよう
0056Star Ruby の中の人 ◆VqDEEXDP8E 2008/04/15(火) 23:02:03ID:WAeOMGRr
そしてこっそり図を修正しました。
0057名前は開発中のものです。2008/04/15(火) 23:05:16ID:3tODdakK
あまりちゃんと検証したわけじゃないけど、とりあえず
上に書いた repeating メソッド内に出てくる
:interval は 0 の方が 1 よりもスムーズに動く。
0058名前は開発中のものです。2008/04/15(火) 23:06:16ID:3tODdakK
>>56
今 57 を図を見ながら書いてて
ページを更新したら図が変わったので
そうじゃないかと思いましたw
おつかれさまです
0059名前は開発中のものです。2008/04/15(火) 23:07:54ID:3tODdakK
この図はしっくりきますね。
今の僕のイメージとぴったり重なる。
0060Star Ruby の中の人 ◆VqDEEXDP8E 2008/04/15(火) 23:10:40ID:WAeOMGRr
混乱させて申し訳ありませんでした。
Star Ruby を使っていただきありがとうございます。
0061名前は開発中のものです。2008/04/15(火) 23:14:30ID:3tODdakK
>>60
いえいえ。
こちらこそありがとうございました。
また何かあったらここに書き込むかもしれないので
よかったらまたお願いします。
0062名前は開発中のものです。2008/04/15(火) 23:15:27ID:Ky2ZHIVp
>>60
チュートリアル早く書いてね(はぁと)
0063Star Ruby の中の人 ◆VqDEEXDP8E 2008/04/15(火) 23:34:24ID:WAeOMGRr
>>62
はーい><
0064名前は開発中のものです。2008/04/17(木) 21:55:26ID:/N9sorSi
Python使いだが、
ゲーム作りではRubyを使わざるを得ないようだなこりゃ
■ このスレッドは過去ログ倉庫に格納されています