【Ruby/SDL他】Rubyで ..
[2ch|▼Menu]
2:名前は開発中のものです。
08/04/02 02:15:28 ebTSCWAK
URLリンク(www8.atwiki.jp)
プログラマ募集してる

3:名前は開発中のものです。
08/04/02 02:18:27 cxIG00d1
【Ruby/SDL関連】
MyGame(支援ライブラリ)
URLリンク(dgames.jp)

Miyako(支援ライブラリ)
URLリンク(www.twin.ne.jp)

Rubyist Magazine - Ruby/SDLで始めるゲームプログラミング
URLリンク(jp.rubyist.net)
URLリンク(jp.rubyist.net)


【関連スレ】
Ruby でなんかゲームつくる
スレリンク(gamedev板)

4:名前は開発中のものです。
08/04/02 02:21:29 cxIG00d1
Ruby/SDL Users
URLリンク(mono.kmc.gr.jp)

他にも関連ページや関連スレがあれば、追記お願いします

5:名前は開発中のものです。
08/04/03 10:02:12 i0VfX6sH
SDLdoc 日本語翻訳プロジェクト
URLリンク(www.tacoworks.jp)
URLリンク(www.tacoworks.jp)

6:名前は開発中のものです。
08/04/04 21:31:12 wl4zhTBo
Win-gcc-SDL:フルスクリーン表示をちゃんとする
> 表示できない画面モードにすると、フリーズするパソコンもあります
> ちゃんと環境を調べてからSDL_SetVideoModeを行いましょう
URLリンク(blog.livedoor.jp)

7:名前は開発中のものです。
08/04/04 22:33:48 COKMRNIc
Ruby/SDLで、未だにdisplay_formatとdisplay_format_alphaの違いがよく分からない
いったいdisplay_format_alphaはどんな時に使えばいいんだろう

8:名前は開発中のものです。
08/04/05 00:22:05 4RENp5IN
プログラムよく分かってないんだけど参加しておk?

9:名前は開発中のものです。
08/04/05 07:44:08 lmqsmDRl
>>8
プログラム的な部分に何らかの興味があるならおk
このスレは初心者もウェルカムです(たぶん)

10:名前は開発中のものです。
08/04/05 09:24:45 4RENp5IN
>>9
どうも。
何を使えば良いのかも分からないので名前でStarRubyを選んでみました。

コピペでキャラクターを動かす所までは出来ました。
URLリンク(gamdev.org)
とりあえず次は画面外にはみ出してしまうのを防ぎたいです。

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

11:名前は開発中のものです。
08/04/05 14:08:51 lmqsmDRl
>>10
ヒント
1:画面外に出たかどうかを判定して
2:出ていたらx座標を画面内に戻す

12:名前は開発中のものです。
08/04/05 16:25:47 4RENp5IN
>>11
ヒントどうもです。出かけていました。
URLリンク(gamdev.org)
次はななめに移動&アニメーションをさせたいですね。
アニメーションはどうやるのがいいんでしょうか?

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

13:名前は開発中のものです。
08/04/05 16:37:19 u330x2Hg
>>12
) が足りんぞ

14:名前は開発中のものです。
08/04/05 16:39:33 4RENp5IN
>>13
何かの拍子に消してしまったみたいです。
Game.screen.render_texture(type3, px, py, :src_width => 32,
:src_height => 32)←これですね。

15:名前は開発中のものです。
08/04/05 16:40:37 u330x2Hg
>>12
アニメって、どのようにアニメさせたいん?

16:名前は開発中のものです。
08/04/05 16:44:42 4RENp5IN
>>15
type3.pngを見てもらうと分かると思いますが、
エンジン部分が光るようになっています。

17:名前は開発中のものです。
08/04/05 16:45:29 u330x2Hg
>>16
それはわかるけど、いつ光るタイミングになるのよ?

18:名前は開発中のものです。
08/04/05 16:47:26 u330x2Hg
>>16
ちなみに光る絵に切り替えるなら、:src_x => 32, :src_y => 0 を追加すればいいと思う

19:名前は開発中のものです。
08/04/05 16:50:26 4RENp5IN
>>17
さあ?
どのタイミングでアニメーションするのが普通なんでしょうか?
あまりシューティングなんてやらないのでなんとも。

ななめ移動もいまいちどうやっていいのか考え中です。

20:名前は開発中のものです。
08/04/05 16:56:10 4RENp5IN
>>18
隣の画像にはなりましたが、アニメーションはしません。

21:名前は開発中のものです。
08/04/05 17:02:34 u330x2Hg
>>20
:src_x => の部分を変数にして切り替えるんだよ。
君が切り替えのタイミング分からないなら俺にも分からん。

22:名前は開発中のものです。
08/04/05 17:13:31 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)
で出来ました。凄い勢いで点滅してます。

23:名前は開発中のものです。
08/04/05 17:30:46 u330x2Hg
>>22
別の変数でカウンター作って、その値で切り替えるともっとゆっくりになると思う。
がんがれ。

24:名前は開発中のものです。
08/04/05 17:41:25 4RENp5IN
>>23
色々どうもです。ちと疲れたので休みます。
ななめ移動で詰まってしまっているので、どなたか分かる方がいらっしゃたら、
教えてください。

25:名前は開発中のものです。
08/04/05 17:54:21 lmqsmDRl
>>24
ヒント:縦移動と横移動を別々に処理

26:名前は開発中のものです。
08/04/05 19:12:04 4RENp5IN
>>25
ヒントどうもです。
URLリンク(gamdev.org)
次は弾が出せるようにしてみます。

他の人も来ないかなー、独り占めってのも気が引ける。

27:名前は開発中のものです。
08/04/06 00:07:21 snHQsLG1
>>22
秒間30〜60回ループしてるんだから、
@animation_counterでも作ってカウントアップして、
アニメーションのトリガが来たらsrc_x,yを動かせばいいんじゃ?

と思い付いた

SRPG作ってるんだが、どういう設計にすればいいか悩んでる
どこかに例が転がってないかなあ…

28:名前は開発中のものです。
08/04/06 13:53:12 ZZArlQe5
どなたか弾の出し方のサンプルを提示してもらえないでしょうか?

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

> SRPG作ってるんだが、どういう設計にすればいいか悩んでる
> どこかに例が転がってないかなあ…
ジャンル別に作り方が載っているサイトとかないんですかね?

29:名前は開発中のものです。
08/04/06 14:35:34 GePdtDO2
>>27
RPGやS-RPGはサンプルが少ないな
rubyじゃないけど、このページは参考になるかも?
URLリンク(gumina.sakura.ne.jp)

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

ちなみに弾を出すあたりから、オブジェクト指向を理解してないと厳しくなる

30:名前は開発中のものです。
08/04/06 15:07:32 ZZArlQe5
>>29
Rubyへの置き換え方がいまいち分からなくて聞いてみました。
サンプルを作るのは難しいですか?難しいなら分かる人を待ってみます。

31:名前は開発中のものです。
08/04/10 06:17:57 cxu7rJMK
Ruby/SDLでシューティング。かなりシンプル

URLリンク(hoge.mine.nu)

32:名前は開発中のものです。
08/04/10 16:06:09 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
後ほど見てみます。

33:名前は開発中のものです。
08/04/10 16:08:54 lfkkv2ZU
一つ質問があります。
今後ここでサンプルソースを要求しても、提示は一切なしですか?

34:名前は開発中のものです。
08/04/10 16:36:02 lfkkv2ZU
zipを忘れていました。
URLリンク(gamdev.org)
次は発射時に音を出したりなどの細かい所と、
いよいよ敵を出現させてみたいと思います。

35:名前は開発中のものです。
08/04/10 23:38:15 O/o4AMAo
>>33
意味が分かりかねるんだが

36:名前は開発中のものです。
08/04/11 00:06:56 8FxancmH
>>33
31がわざわざ提示してくれたのに何を言っているんだ

37:名前は開発中のものです。
08/04/11 00:44:07 nEMzRDKZ
>>35
なしだったら、他へ行こうかなと思いまして。
人もあまり居ないみたいですので。

38:名前は開発中のものです。
08/04/11 17:54:44 wfScRD9q
>>37
提示ってなんの提示?主語と目的語がないからわからないのよ

39:名前は開発中のものです。
08/04/11 23:03:47 CTkbzMiH
サンプルソースくれって言ったら作って貼れってことか。
他いけば?

40:名前は開発中のものです。
08/04/13 02:41:34 dV6hecf3
>>34
おーなめらかにうごくじゃん
がんばー

41:名前は開発中のものです。
08/04/13 22:58:53 hGwqVbQC
>>34
こっちでもちゃんと動いたよー

42:名前は開発中のものです。
08/04/14 22:12:41 rYEMXViq
>>34 のスクリプトを
自分なりに適当にリファクタしてみた。
delay_shot がよく分からなかった。

43:名前は開発中のものです。
08/04/15 16:22:40 3tODdakK
StarRuby::Input.keys の options に指定できる
:delay と :interval の違いがよく分かりません。
分かる人よかったら解説きぼん!

以下 API リファレンス (URLリンク(www.starruby.info)) より抜粋。

:duration キーを押し始めてから、キーが押されていると判別される持続時間 (フレーム数)。
-1 を指定した場合は無限です (押しっぱなしの間ずっと「押された」と判別されます)。
:delay :duration を正数で指定している場合、 2 回目以降「押された」と判別されるまでの遅延時間 (フレーム数)。
-1 を指定した場合は無限です (2 回目以降の判定がありません)。
:interval 2 回目以降「押された」と判断される時間間隔 (フレーム数)。

44:名前は開発中のものです。
08/04/15 21:55:09 G4jMd8nd
使ってはいないけど、レス読んだ限りじゃ

・10フレームの間キーが押された→当然10フレーム全てで押されていると判定
○○○○○○○○○○

・:duration に3を指定→頭から3フレーム分だけ押されていると判定
○○○×××××××

・:duration はそのままで :delay :duration に2を指定
→最初に頭から3フレーム分押されていると判定され、ディレイ分開け繰り返し押されていると判定される
○○○××○○○××

45:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 21:59:32 WAeOMGRr
>>43-44
分かりにくくてすみません。図を追加しました。

46:名前は開発中のものです。
08/04/15 22:12:26 3tODdakK
>>44
解説ありがとう!
でも :interval が出てきてない?

>>45
こんにちは中の人!
さっそく図を見てきますね

47:名前は開発中のものです。
08/04/15 22:22:54 3tODdakK
>>45
図を見てきました。
大体はイメージしていた通りなのですが、ちょっと分からないところがあります。
この図の例で :interval を 0 にした場合はどうなるんでしょうか?

例えば、StarRuby のサンプルの1つである falling_blocks には
:interval に 0 を指定する以下のようなコードがありますが

def repeatings(device)
keys(device, {
:duration => 1, :delay => 2, :interval => 0
})
end

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

48:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 22:32:45 WAeOMGRr
>>47
> 0 というのは極めて短い間隔で「押された」と判断する、という解釈で合っていますか?

0 になるのを想定していなかったというのが正直なところです。どうなるんだろう。
Star Ruby においては FPS (1 フレーム時間) より細かい時間の単位はありません。
よって、最小は 1 で、図にしたがうと「ずっと押された」と判別されることになります。
2 にすると、毎フレーム「押された」と「押されていない」を繰り返すようになります。

49:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 22:35:25 WAeOMGRr
とかいいつつ :interval のデフォルト値は 0 ですが。
図にかけないな。

50:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 22:38:25 WAeOMGRr
ってあれ、これ自分のソースか。何を言っているんだ俺。
というわけで
> :duration => 1, :delay => 2, :interval => 0
は 1 の間違いです…

51:名前は開発中のものです。
08/04/15 22:41:11 3tODdakK
>>49
> 図にかけないな。
そうそう!
僕もそこが分からなかったんですよ。
0 になるとどうなるのかなーって。

そして、falling_blocks は中の人さんが書いたんじゃなかったのですね。

52:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 22:42:17 WAeOMGRr
何度もすみません。実際やってみたら図がまちがっておりました…。
やっぱり 0 が正しいです。で、

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

すみませんすみません…。

53:名前は開発中のものです。
08/04/15 22:42:56 3tODdakK
>>50
え!なんだなんだ(;゚д゚)
:interval => 1 が正しいってこと?

54:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 22:43:13 WAeOMGRr
> そして、falling_blocks は中の人さんが書いたんじゃなかったのですね。

いや、自分で書きました。
>>47 は「こう書くとどうなるの」という意味だと空目してました。

55:名前は開発中のものです。
08/04/15 22:44:12 3tODdakK
ちょっと僕もちゃんとコードいじって試してみよう

56:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 23:02:03 WAeOMGRr
そしてこっそり図を修正しました。

57:名前は開発中のものです。
08/04/15 23:05:16 3tODdakK
あまりちゃんと検証したわけじゃないけど、とりあえず
上に書いた repeating メソッド内に出てくる
:interval は 0 の方が 1 よりもスムーズに動く。

58:名前は開発中のものです。
08/04/15 23:06:16 3tODdakK
>>56
今 57 を図を見ながら書いてて
ページを更新したら図が変わったので
そうじゃないかと思いましたw
おつかれさまです

59:名前は開発中のものです。
08/04/15 23:07:54 3tODdakK
この図はしっくりきますね。
今の僕のイメージとぴったり重なる。

60:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 23:10:40 WAeOMGRr
混乱させて申し訳ありませんでした。
Star Ruby を使っていただきありがとうございます。

61:名前は開発中のものです。
08/04/15 23:14:30 3tODdakK
>>60
いえいえ。
こちらこそありがとうございました。
また何かあったらここに書き込むかもしれないので
よかったらまたお願いします。

62:名前は開発中のものです。
08/04/15 23:15:27 Ky2ZHIVp
>>60
チュートリアル早く書いてね(はぁと)

63:Star Ruby の中の人 ◆VqDEEXDP8E
08/04/15 23:34:24 WAeOMGRr
>>62
はーい><

64:名前は開発中のものです。
08/04/17 21:55:26 /N9sorSi
Python使いだが、
ゲーム作りではRubyを使わざるを得ないようだなこりゃ

65:名前は開発中のものです。
08/04/17 22:35:39 LbpK4gl9
>>64
pyGameには何か問題があるのか?

66:名前は開発中のものです。
08/04/18 12:30:18 MYeenWuR
>>65
MacOS使ってるんだけど、
object-cモジュールの兼ね合いで正常に動作しない。
一応バイナリパッケージ版でrc5版がリリースされてるけど
動作がいまいち安定してないんだよ..

67:名前は開発中のものです。
08/04/19 21:13:21 pyAMTUL2
>>66
Rubyへようこそ

68:名前は開発中のものです。
08/04/20 02:03:18 nOrmnF1m
Rubyだからその辺安心ってわけでもないがな

69:名前は開発中のものです。
08/04/21 20:23:31 yXrZrnn7
俺は逆にOSX+Rubyでのゲーム制作は挫折しました
なんかgemコケるんだよなー

70:名前は開発中のものです。
08/04/23 16:14:29 jxFSACYN
マリオブラザーズをRubyで作ってみた
URLリンク(d.hatena.ne.jp)

71:名前は開発中のものです。
08/04/23 20:49:52 UI+EbsII
>>70
ソース見てみたが、もっと簡潔にできそうだね

72:名前は開発中のものです。
08/05/01 20:46:41 uIZC2Vdr
保守

73:名前は開発中のものです。
08/05/04 08:45:24 BTa1QZ3i
少し前の話だけど、Ruby/SDL 2.0が出てる
Windows版のリリースはまだみたいだが
URLリンク(www.kmc.gr.jp)

74:名前は開発中のものです。
08/05/17 11:23:55 zKBwdQ9K
mac os x leopardでruby/sdlを使おうとしているのですがうまくいきません
付属のサンプルのうちfpstimer alpha cursor event2 font joy2 movesp randrect stetris testspriteは動きました
それ以外は動きませんでした

どうすればまともに動くようになるでしょうか

75:名前は開発中のものです。
08/05/17 14:21:59 9mUdty5M
動かないって具体的にどうなんのよ
エラーとか出てるならそれも書かないとわからないよ

76:74
08/05/17 14:24:09 zKBwdQ9K
ほぼすべてにおいて下のようなエラーがでます undefined method '****'ってかんじです
sgetest.rb:15: undefined method `drawLine' for #<SDL::Screen:0x1aeca468> (NoMethodError)



77:名前は開発中のものです。
08/05/17 14:33:26 9mUdty5M
その辺のメソッド使うにはSGEを入れてからruby/sdlをビルドする必要がある
URLリンク(www.kmc.gr.jp)
この辺見てオプションのライブラリ一通り入れると全部の機能使えるようになるぜ

78:74
08/05/17 15:31:00 zKBwdQ9K
>>75
>>77
ありがとうございます
SGEを入れてSDLを再インストールしたら動きました

79:名前は開発中のものです。
08/05/21 13:28:10 vzVpxeFw
今度のRuby Kaigi で StarRubyの中の人が出るんだね

80:名前は開発中のものです。
08/06/25 05:44:15 dDH20x7g
STGとかでのボス戦みたいに
「画面を覆い尽くす弾幕と、派手なボムでの玉消し」とか
めっさピクセル使うときに一番軽いのって
どのゲーム制作モジュールなんだろ?
候補としてはmygame, miyako, starruby あたりなんだが。

それとも ruby/sdl だけの問題なのだろうか?
既出ネタだったらスマソ。

81:名前は開発中のものです。
08/06/25 07:45:42 wMsF4i4Y
その三つをベンチ比較するみたいな話題はなかったと思う

もしruby/sdl自体に限界を感じてるのならruby-OpenGLも良い候補かも

82:名前は開発中のものです。
08/06/25 09:01:15 v4+cr6Bp
>>80
StarRubyはRuby/SDL使ってないはず
だからここで比較するなら

1. Ruby/SDLで直接プログラミング
2. Ruby/SDLに中間層(MyGame, Miyako)を挟む
3. StarRuby

の三択だろう
どれが軽いかは分からん。コード内での工夫にもよるだろうし

83:名前は開発中のものです。
08/06/25 09:09:20 wMsF4i4Y
>StarRubyはRuby/SDL使ってないはず
いやいや使ってるよ

84:名前は開発中のものです。
08/06/25 10:43:04 pFm8UCsU
どれもSDL使ってるからピクセル合成についてなら大して変わらなそうな気がするな
たぶん描画より、「画面を覆い尽くす弾幕」の更新、ヒット判定の方がボトルネックになると思うぜ

85:名前は開発中のものです。
08/06/25 11:43:05 0H1XKKpH
>>79
ニコ動に動画あたよ

Ruby のゲーム開発の現状と自作ゲームライブラリ Star Ruby - 星一‐ニコニコ動画(SP1)
URLリンク(www.nicovideo.jp)

86:名前は開発中のものです。
08/06/25 13:33:39 JUyYpQJe
余所から誘導されてきました

SDLでシューティング作ってるんですけど 被弾した時に 画面全体を赤っぽくしたいんですが、画面全体を赤で塗りつぶして半透明にするような処理ってできますか?


87:名前は開発中のものです。
08/06/25 18:46:42 v4+cr6Bp
>>83
どの辺に?
ソースコード見ても、C言語でガリガリ書いてるようにしか見えないし
ダウンロードページにも「Ruby/SDL は不要です。」って書いてあるよ

もしかして「RubyとSDLを使ってる」っていうオチか
俺が言ってるのは固有名詞の「Ruby/SDL」なんだが

>>86
Surface#fill_rectで塗りつぶした別サーフェス(screenと同じサイズの)を生成し
Surface#set_alphaでαブレンディングを有効にしてから重ねる

88:名前は開発中のものです。
08/06/25 19:19:29 JUyYpQJe
>>86 返事ありです!

89:名前は開発中のものです。
08/06/25 19:21:07 JUyYpQJe
ごめ・・また途中でカキコしちまった('A`)改行でSHIFT+Enter押すくせががが

自分もそれでやろうとしたけどなんか出来ないんですよ・・・ もうちょいグーグル先生と逆引きに聞きながらがんばってみます

90:名前は開発中のものです。
08/06/25 20:01:53 JUyYpQJe
>>87 どうしても重ね方がわからないんだぜ


初心者すぎて死にたい
orz

91:名前は開発中のものです。
08/06/25 20:08:50 nTAJQ39k
もっと具体的に
(A) 書いたコード(抜粋でも可)
(B) 期待する結果
(C) 実際に起きた結果
を書くと良いかも。
「できない」だけではエスパーじゃないと答えづらいはず。

92:名前は開発中のものです。
08/06/25 22:14:00 JUyYpQJe
もう書いたコードというより どうやって新しいサーフェスを作って 出力するのかがわからないんです;
SDL::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)

ここらへんつかうのわかったんですけど書き方がわからなくて・・・;初心者すぎてごめんなさい;

93:名前は開発中のものです。
08/06/25 22:58:32 kaYQXnzU
多分、今出来ているコードをうpすれば改変してくれる予感。
暇人は多い。でも、現在のコードが判らないと修正のしようもない。

94:名前は開発中のものです。
08/06/25 23:30:47 JUyYpQJe
出来ているコードすらないからこまるorz

とりあえず適当に書いて抜粋したけど頭こんがらがってパニックになってます; 初心者にはムリっぽそうです

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

95:名前は開発中のものです。
08/06/25 23:51:55 JUyYpQJe
わかりにくいのでやっぱりうpしますURLリンク(www2.uploda.org)
汚いソースですけどマジでごめんなさいorz うpする自分も初心者丸出しで恥ずかしい

96:名前は開発中のものです。
08/06/26 00:41:08 uCUDTTyx
とりあえずやっつけでakaの部分書き換えてみた
実際に動くかどうかは未検証

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)

97:名前は開発中のものです。
08/06/26 00:48:21 Y1fNGck7
。・゚・(ノД`)・゚・ ぶわっ
マジありがとうございます; 書き方全然違ってて恥ずかしい・・・;
いまからいれてきてみます。

98:名前は開発中のものです。
08/06/26 01:34:03 Y1fNGck7
うっ・・・できませんでした・・ いろいろ試行錯誤してみますね・・・;

99:96
08/06/26 09:43:49 uCUDTTyx
ごめん、最後の行のscreen.put入れる位置はここ(actメソッド)じゃない
実際にはrenderメソッドの中に入れる必要がある
(画面に地形やキャラクターを描いた後で赤くする)

それ以外の部分は、手元でRuby/SDLのサンプル使って検証してみたところ動いたので問題なさそう

100:名前は開発中のものです。
08/06/27 00:50:18 OOVE5AKf
なんかScreen.getがうまくいかないんでSurface.newを新しく作ってるんですけどL::Surface.new(flags,w,h,format) のformatってなんてかけばいいのかわかりません;

もうマジ初心者の質問すぎてごめんなさい・・・ リファレンスマニュアル読んでもわからないんです・・

101:名前は開発中のものです。
08/06/27 02:46:41 bltVx0hU
ちなみにRuby/SDLにはおおざっぱに1.x(最新は1.3.1)と
2.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


102:名前は開発中のものです。
08/06/27 13:19:02 FLBA5DaJ
PCに入ってるのは2.0alpha1です 


けどたぶんスターター使って起動してるから多分そっちのバージョンが低いのかも・・・('A`)

103:名前は開発中のものです。
08/06/27 14:02:06 FLBA5DaJ
なんか2.0のほうで起動したらちゃんと起動しました


でもactの中でスクリーンプット置くにはどうしたらいいんだろう・・・
render(screen)のところにそのまんま全部おいたら常に赤くなるのは確認できたんですけど 死んだときに赤くするって処理がいまだにできないですor2
いろいろためしてますが・・・もうダメぽ

URLリンク(www.uploda.org) とりあえずmainソースです;

104:名前は開発中のものです。
08/06/27 21:06:56 l2w5o4Cs
>>103
もう消えてる

105:名前は開発中のものです。
08/06/29 09:23:06 +QlqCrVn
返事おくれてごめんなさい('A`)
なんとか自己解決しました。

被弾した時にすぐに別のシーンに移動してしまっていたようで 新しくスクリーンアップデートをつくってあげたらなんとかあかくなりましたor2お騒がせしてごめんなさい

106:名前は開発中のものです。
08/07/11 19:52:05 iVchH/PO
StarRubyの人がこんなサイトを。

URLリンク(ruby-game-dev.org)

まだほとんど何もないけど。

107:名前は開発中のものです。
08/07/11 20:14:05 zL2sa+vS
そのサイト見ながら思ったんだが、Ruby製で真面目に遊べそうなゲームって何かないかな?
俺がプレイした中でハマったのはSOAR(ただしプレイスタイルはボタン連打)だけなんだが

108:名前は開発中のものです。
08/07/13 07:03:02 XXccfbsj
>>106
Rubyでゲーム開発のコミニティがほしいといってたから作ったんだね

109:名前は開発中のものです。
08/07/16 00:25:20 tEiF1FT2
ruby初心者だけどやろうかな・・・上のwikiみておもった。

110:名前は開発中のものです。
08/07/23 12:43:57 XJisHIkx
StarRubyでエロゲ作りたいんだけど、
イベント画像がフォルダ開いて丸見えってのはやっぱツライよな。

111:名前は開発中のものです。
08/07/23 13:33:03 09s8RLrZ
Marshalでどうにかならんか

112:名前は開発中のものです。
08/07/23 14:23:56 jaDqW596
xorみたいな可逆暗号を実装すればいんでねーの

113:名前は開発中のものです。
08/07/23 19:13:56 IFZqEpkn
>>110
今のStarRubyでもTexture#dump/undumpあたりを使えばできるかもしれないけど、どっちにしても面倒そうだな

Ruby/SDLで言う、load_from_ioみたいなメソッドを実装してもらえるように
要望出してみたらどうだろう
もしくはもっとダイレクトに、暗号化機能そのものを提案するとか


114:名前は開発中のものです。
08/07/23 21:51:17 XJisHIkx
>>113
たしかに、IOオブジェクトから画像をロードできればいいんだよな。
Rubyスクリプトが読める人には意味ないけど、とりあえず一般ユーザーの目をごまかせればいいんだし。

とか思ってたら、すでに星さんがこの話題を取り上げていたぜ
URLリンク(groups.google.com)

115:名前は開発中のものです。
08/07/24 12:17:59 vi/50UDV
デバッグ中とかの利便性では、生のまま持ってたほうがいいから、そのへんの
利便性との両立がフレームワーク作者の勘所だったりするわけですな。

116:名前は開発中のものです。
08/07/24 21:06:36 KjJDp2BX
mygame使ってみたけど
拡大縮小が使い物にならん気がする。
HDDまでアクセスし始める始末だから、メモリかなり使ってるのかなぁ。

結局SDLを直にやるか、代替クラス作らんといかんっぽいのが難か・・・。


117:名前は開発中のものです。
08/07/24 21:31:06 ZAyfyp08
>>116
MyGameって、拡大縮小になんか特殊な処理やってるのか?
普通のRuby/SDLと同じだと思うが

118:名前は開発中のものです。
08/07/24 22:12:58 b4aMzTsi
>>116
SDL経由でOpenGLを使うと楽かもね。
URLリンク(www.kmc.gr.jp) とか。

119:名前は開発中のものです。
08/07/26 16:27:16 IqVhnzGT
MacでRuby/SDLのインスコがめんどくさくて鼻血でそう

120:名前は開発中のものです。
08/07/26 16:38:03 LYWnlODe
つ bootcamp

121:名前は開発中のものです。
08/07/26 16:53:45 IqVhnzGT
ブートキャンプいれてる
ただXcodeで書きたかったっていう、それだけ

122:名前は開発中のものです。
08/07/27 19:39:57 L0iN1u/r
ビリーズブートキャンプ

123:名前は開発中のものです。
08/07/28 19:29:54 9GhNVVJ3
筋肉ムキムキでLightweightじゃなくなっちまうじゃないか

124:名前は開発中のものです。
08/08/03 17:47:55 W/zmysiG
筋肉つけて、重いRubyもこんなに軽々と!

125:名前は開発中のものです。
08/08/03 17:49:53 Fm7SEmEs
Rubyでソースを暗号化する方法って何かないのかなあ?
Pythonだとpycみたいなの
r2eの類だと全部一緒のexeになってまうでしょ?そんなのじゃなくて・・・

126:名前は開発中のものです。
08/08/03 17:50:25 Fm7SEmEs
って、ゲームの話題じゃないかw
こっちより本スレで聞いてきまつ

127:名前は開発中のものです。
08/08/03 18:05:27 +gPnPllx
の方が有意義でしょうねw
yarvでバイトコード化はやってる筈だし検討はしてるみたいな事言ってた記憶はあるんだけどな
バイトコード化と暗号化は別もんだけど。

現状、上にも出てるけど手動でダンプしたのロードするとかが正攻法かもな

128:名前は開発中のものです。
08/08/04 08:00:58 2UcTdZru
>>125
全然認識が間違ってたらすまんけど、RubyってGPLだよね。
ソースを暗号化してもGPLを盾にソース公開を要求されたら暗号化意味無くない?
(上のdumpの例は画像だから有効だろうけど)


129:名前は開発中のものです。
08/08/04 11:02:51 0vDDSQkq
>>128
間違ってる

「GPLのツールを使って開発したソフトウェアはGPLでなければならない」というのは間違い。
GPLのソースコードを含む。GPLのライブラリーをリンクしている 場合にのみ感染する。
・自分が書いたRubyのスクリプトには任意のライセンスを適用できる。よってソース公開の義務はない。

あとRubyは、GPLとArtisticに似た独自ライセンスのデュアルライセンス

130:名前は開発中のものです。
08/08/04 14:55:29 JBgDhP6y
>>125
拡張モジュールを使って、暗号化したソースを読む、という難読化を実現してる
例はあるよ。1.9 のバイトコードの外部化は検討中の段階。

131:名前は開発中のものです。
08/08/04 22:56:25 2UcTdZru
>>129
レスTHX
ということは、
 1.自作のRubyソースでGPLのソースを使わない。
 2・GPLのRuby実行環境とリンクしない。
に気をつければGPL回避はできるわけですね。
(2.があるからmkexyはアウトですか。)

暗号化したRubyソースを復号化する外部プログラムを作って、
そのプログラムがRubyソースを復号化&system("ruby.exe 復号化したソースファイル")とかすれば
一応、Ruby.exeとはリンクしてないわけだから問題ない?

132:名前は開発中のものです。
08/08/04 23:05:09 nwnG0EQa
スレ違い

133:名前は開発中のものです。
08/08/04 23:32:20 q0P6gIfF
>>131
ruby.exeにリンクしたからといってGPLに感染するわけではない
詳しくはRubyライセンスを読め
URLリンク(www.ruby-lang.org)

また、exerbで生成したファイルも、GPL(LGPL)に感染はしない
URLリンク(exerb.sourceforge.jp)

134:名前は開発中のものです。
08/08/05 22:47:08 9DK3Bk0R
ファイル開いただけで見えるのは困るという程度なら
Exerbで固めてUPXで圧縮とかで目的は果たせそう
ウィルス判定されそうだけどなw

135:名前は開発中のものです。
08/08/09 05:55:33 XTb0A79H
>>130
RPGツクールXPなんかはファイル単位の暗号化やってるみたいだよね。
RPGツクールVXの方は、さらに進化していて1つのアーカイブにまとめているみたい。

こういうのって拡張モジュールのレベルで可能なのかな?
require上書きして・・・と思ったけど、組み込み関数だよな・・・
って、そろそろスレ違いなので本スレで聞いてくる

136:名前は開発中のものです。
08/08/09 15:58:15 Bpln2nru
require上書きはできるだろ
exerbでもrubygemsでもやってる

137:名前は開発中のものです。
08/08/14 20:24:31 q15OOEOg
メソッドの名前の付け方に関して相談させてください
ゲームループは、各オブジェクトの更新(update)と各オブジェクトの描画(render)の2ステップに分かれると思うのですが、各オブジェクトの更新のメソッド名が決められません
updateにしようとも思ったのですが、それではObservableから呼び出されるupdateとかぶってしまいます

いまは第二候補としてiterateを考えていますがいまいちです
ほかに良い名前があればお願いします

138:名前は開発中のものです。
08/08/14 21:06:08 +Csgcr00
安易にstep

139:名前は開発中のものです。
08/08/15 00:55:57 S09k7UOG
update_every_frameとか
もしくはイベント駆動的にon_every_frameとか

140:名前は開発中のものです。
08/08/15 16:44:29 3xc17uVB
update_every_frameをやや省略したupdate_frameを使う案も考えましたが
シンプルでタイプ量が少ないstepを使うことにします
ありがとうございました

141:名前は開発中のものです。
08/08/26 22:40:24 YnC+NSXL
今までruby1.8.7で作ってて流石に処理が増えたら重くなってきたんだけど
なにも考えずに1.9にしたら露骨に速くなったりするものかな
拡張ライブラリのコンパイルしなおしとかが面倒でなかなか試せなくて

142:名前は開発中のものです。
08/08/27 12:10:36 tSXh0P22
あんまり期待しないほうがいいような
もともとコアのライブラリは高速化のためにCで書かれてる
まあRubyで書かれた部分が
処理に大きなウェイトを占めるのなら、あるいは・・・・

143:名前は開発中のものです。
08/08/27 22:28:44 eVcLY6Kw
ありがとう
やっぱりそんなに期待しちゃ駄目か
まずプロファイル取る所から真面目にやって見るよ

144:名前は開発中のものです。
08/09/01 18:36:52 Zwq+vFb8
macOS 10.4で開発環境を整えることが出来た方、いらっしゃいますか?
これだという情報を探し当てられなくて、行き詰まってしまいました。
解決方法をご存知の方がいらっしゃいましたら、どうか教えていただけませんでしょうか。

【状況】
sdlをインストールして更に
rubysdl(2系)をgemにてインストールし、
rsdlを opt/local/bin に入れました。
この状態で、下のサンプルプログラムを実行すると、窓は出ないでエラーが出ます。

【サンプル】
_______________________________
# ライブラリの読み込み
require "sdl"

# 定数の定義
SCREEN_W = 640
SCREEN_H = 480

# SDL の初期化
SDL.init(SDL::INIT_EVERYTHING)
SDL.set_video_mode(SCREEN_W, SCREEN_H, 16, SDL::SWSURFACE)

# 2 秒間待つ
sleep(2)
_______________________________

【エラー内容】
_NSAutoreleaseNoPool(): Object 0x3529b0 of class NSImage autoreleased with no pool in place - just leaking
2008-09-01 18:26:33.147 ruby[28998] *** _NSAutoreleaseNoPool(): Object 0x3e1e90 of class _NSThemeWidget autoreleased with no pool in place - just leaking
2008-09-01 18:26:33.147 ruby[28998] *** _NSAutoreleaseNoPool(): Object 0x3e16a0 of class NSFont autoreleased with no pool in place - just leaking
こういうのが沢山

145:名前は開発中のものです。
08/09/02 12:51:42 h/fuKRtU
rsdlで実行してる?
ruby hoge.rb
じゃなくて
rsdl hoge.rb
で実行するんだぞ

146:名前は開発中のものです。
08/09/02 17:14:35 ezlAUq6N
>>145さん

ご指摘の通りでした。
素人考えでIDE(netbeans)から動かそうとしていましたが、ターミナルから
rsdl hoge.rbで実行したら動きました。
どうもありがとうございました!
うれしいです。

147:名前は開発中のものです。
08/09/16 13:10:54 Yf+0nKT9
Mac OS X 10.5.2で、Mygameをシステムにインストールされているrubyとは別のrubyのディレクトリにインストールしたいのですが、install_mygame.rbをどのように書き換えればできますでしょうか。
どなたかご教示ください。

148:名前は開発中のものです。
08/09/17 01:24:40 DBB0kkz+
書き換えなくてもその別のrubyでinstall_mygame.rbを動かせばいいように見える
MyGame使ってないんで間違ってたらごめん

149:名前は開発中のものです。
08/09/17 02:08:51 6SEPyg3M
>>148
返信ありがとうございます。
実は、
URLリンク(mono.kmc.gr.jp)
このruby・SDLをインストールしていないPCでも動かせるようにするパッケージを使用したいと思っていまして、
このパッケージの中のrubyにmygameをインストールしたいのです。
わかりにくくてすみません。
最初に申し上げておくべきでした。

150:名前は開発中のものです。
08/09/18 01:02:57 RVpg2t6e
libとfontsをResourcesの中にコピーすりゃよさそうだが
そのままだとフォントの位置が問題出そうだな
mygame.rbを310行目付近をいじるなり参考にして対処してみてくれ

151:名前は開発中のものです。
08/09/18 11:29:45 H2tmF02M
>>150
返信ありがとうございます。
うーん、やはりできません。
Resourcesの中にコピーして、フォントの入っているディレクトリのパスを相対パスで適切に直したのですが、なぜかできません。
requireで参照するパスを組み込み定数$:で調べたところ、lib/ruby/1.8やlib/ruby/site_ruby/1.8だったので、それらのディレクトリにmygameディレクトリおよびmygame.rbをコピーしてみる、ということも試したのですがうまくいきません。
require 'mygame'の時点でスクリプトが終了してしまいます。

いったい何が悪いのでしょうか。

152:名前は開発中のものです。
08/09/18 23:17:18 RVpg2t6e
コンソール.app開いてみたらエラー出てないかな

153:名前は開発中のものです。
08/09/19 00:11:41 AMcmg5Cj
>>152
ややっ!こんなところにきっちりログが保存されているとは!
どうもありがとうございます。
チェックしてみます。

154:147
08/09/19 16:50:49 AMcmg5Cj
ついにできました!みなさんご回答どうもありがとうございました。

mygameディレクトリ及びmygame.rbをlib/ruby/1.8にコピーし、
FontsディレクトリはResources直下にコピー。
その時点で起動したところコンソール.appにはkconv.rbがnkfをrequireできていないとのエラーが出ていたので、
起動するrubyスクリプトに
$: << "lib/ruby/1.8/i686-darwin9,2,2"
としてnkf.bundleがあるディレクトリを、libを読み込むディレクトリに追加。
そして、今度はrbconfig.rbがおかしいというエラーが出たので、mygame.rbの297行目、require 'rbconfig'をコメントアウト。
311行目を
datadir = Dir.pwd
と書き換えました。
これでrbconfig.rbを使わずに、起動するrubyスクリプトと同ディレクトリのFontsディレクトリからフォントを読み込むようになり、無事起動いたしました。

なんだか拙い解決方法ですが、一応解決できたので、ほかの方の参考になれば、と思います。

繰り返しになりますが、回答してくださったみなさんどうもありがとうございました。
これからゲーム制作にのめりこみたいと思います。

155:名前は開発中のものです。
08/10/19 01:33:54 5gugO+Xs
保守

156:名前は開発中のものです。
08/10/19 22:40:14 rF3bgZLP
GRikoの講座をみておもろかったから、軽くrubyの勉強も兼ねてを弄り始めたんですが、
簡単な2Dゲーなら他のライブラリを使った方がいいかも、とかあります?
やりたいのは、とりあえずテーブルゲーム系で、派手な画像処理はいらなくて、
音楽好きなんで音はちょっと拘りたいのと、入力はマウスよりキーボードからの方が多いかも、で、
URLリンク(ruby-game-dev.org)
ここの紹介を見てるとmiyakoがいいのかなって感じなんですが、どでしょうか
プログラミング入門者なんでドキュメントが多いと助かります

157:名前は開発中のものです。
08/10/19 23:08:24 o251uXL9
ドキュメントに手を抜いている開発者が多いかも。

158:名前は開発中のものです。
08/10/19 23:50:28 Mq2HTqU9
Wikiの紹介見たけど、もはやゲーム用のライブラリが多すぎて、どれが良いのか分からん……

俺の知ってる範囲では
かなり低レベルなところ(SDLに近い部分)までいじくれて、ドキュメントが充実してるRuby/SDL
仕様がシンプルで、拡大縮小などの画像処理機能が充実してるStarRuby
あたりが良いライブラリだと思う(両方とも日本語文書あり)

Miyakoについてはきちんと触ったことないから分からない
Ruby/SDLのラッパーだったはずなので、とりあえず動作速度には注意

159:名前は開発中のものです。
08/10/19 23:59:06 rF3bgZLP
サンプルが充実していて、読みやすいコードが沢山あれば
ドキュメントが頼りなくてもなんとかしてみようって思えるんですけどね
だったらruby以外で…って話になってしまうのかもしれませんが

rubyはやっぱり既に出来る人向けの環境なのかなあ
結局、ツクールやHSPあたりからやっとけ、みたいな…

まあじっくり焦らず色々やってみます
キーを叩くより、紙の上でゲームのアイデアを考えたりしてるほうが
時間的にはだいぶ多くなるわけだし

>>158さん
StarRubyは画像処理にスーファミ的具体例wがあったので
つかみはOKだったんですが、できる人向けっぽい印象がありました

動作速度に関しては、アクションゲーム的なのは気になるのかもしれませんね
自分は思考タイプのゲームが好みなんで、たぶんなにを使っても問題なさそうです
Flashでもなんとかなりそうな感じなんで

GRikoは入力がゲームパッド仕様だったので、アクションゲーム寄りの
ライブラリなのかな?と思い、それで他が知りたくなったわけです

160:名前は開発中のものです。
08/10/21 01:19:43 SjJ19aHP
GRikoは今のところほぼ作者専用でちゃんとリリースするつもりは無さげ
StarRubyは良いと聞くし、使ってる人も結構いそう
MyGameは本も出てるのでRuby自体の勉強も一緒にできる
初めてなら「Rubyではじめるゲームプログラミング」を読んでMyGameを使ってみたらどうだろう

161:名前は開発中のものです。
08/11/10 18:07:48 jzB6LQre
RUBY/SDL
でマリオ的なゲーム作りたいんですけど、
今やっと、背景、キャラ表示して
左右に動けるようになったんですが
徐々に走るスピードを上げるってどうやるんですかね?

162:名前は開発中のものです。
08/11/10 20:50:12 DwNpP07e
>>161
キー操作に反応して速度を上げていけばおk

163:名前は開発中のものです。
08/11/10 21:25:26 mVuGBL+M
>>160
if (Bボタン)
VX+=1
end
X+=VX

164:名前は開発中のものです。
08/11/10 21:26:08 mVuGBL+M
161だった

165:>>161
08/11/11 00:25:28 A5AdEiUE
def act(input)
@x -= 8 if input.left
@x += 8 + x(input) if input.right
@x = 0 if @x < 0
@x = SCREEN_W-@image.w if @x >= SCREEN_W-@image.w


end
def render(screen)
screen.put(@image, @x, @y)
end
end

def x(input)
if input.b
vx += 1
end
end

>>162 >>163ありがとう!
始めたばかりで手探り状態なんだが、
こんな感じかな?
上手く起動できない、見てくれ。

166:名前は開発中のものです。
08/11/11 07:03:14 J8rpg6TX
>>165
ぱっと見で分かること

・renderメソッドの後ろのendが一つ多い
・xメソッドの中にあるvxがローカル変数

167:>>161
08/11/11 17:29:14 A5AdEiUE
>>166
endが1つ多いのはこの上にclassがあったから。
消し忘れスマン

ローカル変数をインスタンス変数に変えてみたけど結果は同じだった。

思ったんだけど、これがもしできたとしても
ボタン押してる間(この処理が行われるとき)ずっと1づつ足されるわけだから
一瞬で画面外に出るぐらいのスピードになるんじゃないかな?
って馬鹿なこと言ってるなと思わないでくれ・・・

168:名前は開発中のものです。
08/11/11 17:39:59 sZyTNaq5
通常は、前回も押してたかチェックしてリピートか判断し
何回リピートしたらいくつ増やす、とかいくつ以上は増えない、とか離したら0に戻す、とかやるけど
動かしながら試すのがいいと思うよ。

169:名前は開発中のものです。
08/11/11 18:09:28 J8rpg6TX
そもそも、なぜエラーの内容を書かないの
エラーに関する質問をするときに、そのエラーの詳細を書くのは基本だ

とりあえず、Bボタンを押してないときに
xメソッドがnilを返して落ちるだろうということは想像がつく

170:>>161
08/11/11 18:49:12 A5AdEiUE
>>168
・前回も押してたかチェックする  これどういうことですか
・何回リピートしたらいくつ増やす  これは条件式(if)でおkだよね?
>>169
スマン。 エラーの詳細って言うのは
タイプ  ArgumentError
メッセージ  wrong number of arguments (1 or 0)
バックとレース  'x' 'act'  って所か?初心者でスマン(汗

def act(input)
@x -= 8 if input.left
@x += 8 + x(input) if input.right
@x = 0 if @x < 0
@x = SCREEN_W-@image.w if @x >= SCREEN_W-@image.w
end
def render(screen)
screen.put(@image, @x, @y)
end
def x(input)
if input.b
if (@vx <= 4)
@vx += 2
elsif (@vx <= 6)
@vx += 1
end
else
@vx = 0
end
end
やっぱり、起動して→ボタン押すと止まる・・・
→ + B ボタンも止まる


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5318日前に更新/161 KB
担当:undef