Ruby でなんかゲームつくる

このエントリーをはてなブックマークに追加
1名前は開発中のものです。
Ruby でなんかゲームをつくろうと思います。
開発環境は Windows XP、Ruby 1.8.6 (MyGame) です。
ゲームの制作は基本的に一人でやるつもりです。
また、1 はあまりゲームを作った経験がありません。
今までに作ったことがあるのは
ブロック崩しとかテトリスとかライフゲームくらいです。
なので面白いものができる保証はありません。

とりあえずのまとめサイト > http://www7.atwiki.jp/rubydenanka/
21:2008/03/10(月) 18:29:08 ID:aUiEtfD9
さて、スレを立ててはみたけど何を作るかは全然決まってないという…。
まずはまとめサイトの形を整えようっと。
3名前は開発中のものです。:2008/03/10(月) 19:35:04 ID:hAFbxCE9
■自主製作ゲーム:開発状況報告スレVer0.9■
http://pc11.2ch.net/test/read.cgi/gamedev/1202473528/
41:2008/03/10(月) 20:03:45 ID:aUiEtfD9
おわ。
>>3 はそっちに移動しなさいってことか。
たしかにゲーム制作の報告なら向こうのスレでやる方がよさそう。

Ruby でゲーム作ってる人ってあんまりいないみたいだから
こういうスレがあってもいいかなと思って立てたんだけど
それなら Ruby でのゲーム開発について話すとか
そういうことを目的にしないとダメですよね。
51:2008/03/10(月) 20:51:50 ID:aUiEtfD9
とりあえずスレをつぶすかどうかはまだ様子見でゲーム作りはじめた。
リアルタイムストラテジーが目標。
目標が高すぎるような気がするので色々けずった方がよさそうだ…。
キャラクター1人がクリックした箇所まで移動するっていう一番基本的なとことはできた。
MyGame のアニメーションの使い方も理解できた。たぶん。

次なんだろ…。落ちてるアイテムを拾えるようにしてみようかな。
61:2008/03/10(月) 23:27:33 ID:aUiEtfD9
落ちてるアイテム拾えるようになった。
7名前は開発中のものです。:2008/03/11(火) 00:43:41 ID:NPmBAzWP
SDLか。クロスプラットホーム前提だと見守りたいスレ
MyGameって実際どんな感じですか だんさんのだっけ
サイロスさんのは全部作り直したくなる欲求で満たされて窓から投げ捨てちまった
81:2008/03/11(火) 01:12:04 ID:/2t3XFNt
配布は exe 形式で、と思っていましたが
Ruby/SDL が動作する環境であれば UNIX などでも問題なく動くと思います。
サイロスさんのっていうのは Miyako のことですよね。きっと。
MyGame は Miyako よりずっとシンプルだと思います。
といってもおれもまだ使いはじめたばかりなのでこれは率直な感想です。
とりあえずできるところまで MyGame でやってみようと考えています。

そういえば MyGame の名前が出てるのにリンクがないのに気付いたので貼っておこう。
ttp://dgames.jp/ja/projects/mygame/
91:2008/03/11(火) 22:12:38 ID:rEIlR0C+
操作は基本的にマウスでする。
キーボード操作もそのうち追加するかもしれない。

複数のキャラを範囲選択できるようにした。
左ボタンを押してドラッグすると範囲選択できる。
そんで選択したキャラには吹き出しのアイコンが出るようにした。
10名前は開発中のものです。:2008/03/11(火) 22:22:46 ID:3ylS4E8H
wktk
111:2008/03/11(火) 22:37:38 ID:rEIlR0C+
そっか。
制作過程のリンクを貼っておけばいいんだ。
ということで今日から貼っていこうと思います。
あんまりここ見てる人いないと思うけど
>>7>>10 のような方もいるみたいだしそれを励みに地道に続けていきます。

今日が2日目
http://www7.atwiki.jp/rubydenanka/pages/15.html
12名前は開発中のものです。:2008/03/11(火) 22:50:01 ID:NPmBAzWP
のんびり継続してな
ゲ製的にRuby需要がどんくらいあるか知らんけど、
潜在的需要は少なくないと思うよ
131:2008/03/11(火) 22:58:19 ID:rEIlR0C+
>>12
はい。ありがとうございます。

リアルタイムストラテジーだと漠然としてたので
ロードモナークを目標にすることにしました。

ロードモナークオンライン
ttp://www.falcom.co.jp/monarch/index.html

研究がてらちょっと久しぶりに遊んでみようかな。
あとやっぱりマップエディタが必要になってくると思うので
自分用の簡単なエディタを作ろうと思います。
マップのサイズは最初は固定でいいや。
14名前は開発中のものです。:2008/03/11(火) 23:53:15 ID:NPmBAzWP
古いるびまにマップエディタの簡単なサンプルがあるよ
http://jp.rubyist.net/magazine/?0003-RubyTkMovement

tkによるサンプルだから汎用性高いとオモ
既にご存知でしたら失礼
151:2008/03/12(水) 00:31:15 ID:AGqK01tD
おっ、おお!
そうか tk ですか。
ちょっと見てみますね。
ありがとうございます。

実はマップエディタも MyGame(Ruyb/SDL) で作ろうとしてました。
っていうか作りはじめてました。ほんの少しですが。
当たり前のことかもしれないですが、MyGame はそういう用途には全然向いてませんでした。
161:2008/03/12(水) 14:57:52 ID:8yMzBc95
教えてもらった Tk のページ見てみました。
ソースもちょっとだけ読んだ。
あとそのままじゃ動かなかったから ActiveTcl 入れた。

参考ページ
ttp://www4.ocn.ne.jp/~holmes17/html/rubytk.html

tk84.dll が必要らしいので、ActiveTcl は 8.4.* の中で一番新しい 8.4.18 を入れた。
でもマップエディタのサンプルがうまく動かない。
それに期待していたものとけっこう違った。
Tk でマップエディタを作るには Tk の使い方を覚えないといけないけど
その学習コストを考えたら、MyGame で作った方が早そうなのでやっぱり MyGame で作ることにした。
171:2008/03/12(水) 15:00:00 ID:8yMzBc95
>>14
ってことなのでせっかく紹介してもらったのに申し訳ないっす!
18名前は開発中のものです。:2008/03/12(水) 15:13:03 ID:QOZs/4kT
いえいえ、参考にならんで申し訳ない
ご健闘祈る
191:2008/03/12(水) 16:07:20 ID:8yMzBc95
マップエディタの仕様を大ざっぱに決めた。

左クリックでチップを選択したり置いたりする。
右クリックは基本はスポイト。
でもキーボードから機能切りかえができるようにするかも。
例えば D を押したら消しゴムになるとか。

実装はチップを選択するところまでできた。
ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=4
201:2008/03/12(水) 20:04:47 ID:8yMzBc95
マップにチップを置けるようになった。
でも重い!
原因として思い当たるところがあるので何とかしたい。
21名前は開発中のものです。:2008/03/12(水) 20:29:48 ID:EW75YJx/
Rubyと聞いて密かにwktk
22名前は開発中のものです。:2008/03/12(水) 20:58:33 ID:XZCqo9Fo
漏れもちょっとずつMyGameでテトリスを作ってたりするけど
ほんとシンプルというか機能が少ないというか。。

まあ足りないところはSDLを叩けばいいんだろうけど。
231:2008/03/12(水) 21:58:35 ID:8yMzBc95
お。住人が増えてる?
こんばんは >>21 >>22

今 MyGame のソース読んでますがほんとに機能はしぼられてますよね。
MyGame では画像の一部を切り出すメソッドが用意されてないので
MyGame の Image クラスを少し拡張しようかと思ってます。
マップエディタを作るのに画像の切り出しをアニメーション機能で代用させたら
メモリをすごい喰ってしまうようになって困りました(´・ω・`)

テトリスがんばって!
まとめサイトのアップローダとかよかったら使って下さい。
241:2008/03/12(水) 22:29:27 ID:8yMzBc95
とりあえずすごいアドホックな拡張ができた。
おかしなところが出てこなければいいのだけど…。
251:2008/03/12(水) 22:45:14 ID:8yMzBc95
キャッシュにも対応させた。
たぶんこれでいける。

module MyGame
class PartialImage < Image
def initialize(filename, x, y, w, h, *options)
super(filename, *options)
key = "filename-#{x}-#{y}-#{w}-#{h}"
unless @@image_cache[key]
@image = @image.copy_rect(x, y, w, h)
@@image_cache[key] = @image
end
@w = w
@h = h
end
end
end
261:2008/03/12(水) 22:48:49 ID:8yMzBc95
うわダメだ!
key がおかしい。
filename は #{filename} の間違いだ。
271:2008/03/13(木) 17:43:10 ID:pil7M4Ux
やっぱりキャッシュちゃんと取れてなかった。
何回ミスってるんだ…。
今度こそ。

module MyGame
class PartialImage < Image
def initialize(filename, x, y, w, h, *options)
super(filename, *options)
key = "#{filename}-#{x}-#{y}-#{w}-#{h}"
if @@image_cache[key]
@image = @@image_cache[key]
else
@image = @image.copy_rect(x, y, w, h)
@@image_cache[key] = @image
end
@w = w
@h = h
end
end
end
281:2008/03/13(木) 18:03:21 ID:pil7M4Ux
拡張はうまく機能しているみたい。
アニメーションで代用していたところを
PartialImage を使って書き直したらメモリ使用量が半分以下になった。
それでも 20MB。多い…?
あとチップを置いてるときに CPU 使用率が 90% くらいいく。
たくさんのチップイメージを render してるせいなのかも。

今度は画像の一部分を書きかえる拡張がいりそうだ。
29名前は開発中のものです。:2008/03/13(木) 19:22:32 ID:RCjCBXC4
>>12
ゲームで継続が使えるケースってあるの?
30名前は開発中のものです。:2008/03/13(木) 21:51:40 ID:3GC40oYT
その継続ではなく。Rubyだからって。わかったよ言い換えるよ。

ゆっくり継承してな。

だからmix-inではなく。
311:2008/03/13(木) 22:39:36 ID:pil7M4Ux
>>29 >>30
ん?
何を言ってるのかよく分かりません。

マップエディタを作ってたら細かいデザインなどが気になりだした。
後回しでいいようなものなのに…。
優先度を考えながらやるようにしなきゃ。
32名前は開発中のものです。:2008/03/13(木) 22:42:08 ID:RCjCBXC4
>>30
なんだ。コンティニュエーションのことじゃないのか。
うっかり勘違いしてた^^
33名前は開発中のものです。:2008/03/13(木) 23:16:19 ID:RCjCBXC4
そういや、しばらく前にもRubyのスレが立ったけど
全然レスがなくて、すぐ落ちちゃったな。
今回は1が頑張ってくれ。
341:2008/03/13(木) 23:39:37 ID:pil7M4Ux
>>33
そうなんですか。
消えないようにがんばりたいです。

4日目
ttp://www7.atwiki.jp/rubydenanka/pages/19.html
スクリーンショット
ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=5
351:2008/03/13(木) 23:57:45 ID:pil7M4Ux
CPU 使用率を 20% あたりにまで落とせた
マップのナンバーの表示をプリミティブな描画とフォントの描画で
毎フレーム更新してたのが問題だったみたい。
今は自前で用意した画像になってる。
361:2008/03/14(金) 21:17:09 ID:VGyM9tn7
マップをロードしたときの描画がうまくいかないよー。
更新が反映されてない。
なにがいけないんだろ。
371:2008/03/14(金) 22:35:46 ID:VGyM9tn7
やっとなんでうまくいかないのか分かった。
MyGame::Image#load は新しいサーフェスを作るときに
自動的にキャッシュを取っていて
以降同じファイルを load する場合は前回作ったキャッシュを参照する。
そう、キャッシュなんだ…。
38名前は開発中のものです。:2008/03/14(金) 22:37:00 ID:675udRKg
1のスペックについて詳しく・・・
391:2008/03/14(金) 23:23:28 ID:VGyM9tn7
やっと必要最低限の機能をもったマップエディタができました。
セーブがおかしいなぁと思ったら単純な計算ミスだった… orz

>>38
Windows XP SP2
Celeron M 360, 1400MHz
メモリ 512MB
VRAM 64MB
40名前は開発中のものです。:2008/03/14(金) 23:25:18 ID:675udRKg
いや、1自身のスペックについてなんだが・・・
411:2008/03/14(金) 23:38:15 ID:VGyM9tn7
>>40
そんな恥ずかしいこといえません!

5日目
ttp://www7.atwiki.jp/rubydenanka/pages/20.html
スクリーンショット
ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=6
42名前は開発中のものです。:2008/03/15(土) 09:15:15 ID:T3ulheNB
すげー!
431:2008/03/15(土) 18:45:46 ID:tdr+3viM
>>42
どうもありがとう!
441:2008/03/15(土) 18:58:21 ID:tdr+3viM
スポイトの修正をしたり、消しゴム機能を実装してる間に
マップエディタの操作方法は
マウスとキーボードの両方でやりたいと思うようになった。

左手はフォームポジションで右手はマウス。
マウスの左クリックは "チップを置く" で固定で
右クリックの機能をキーボード入力で切りかえる。

右クリックに割りあてる機能は多くても 4 つまでにしたい。
今考えてるのは、スポイト、消しゴム、塗りつぶし、コピー。
スポイト … カーソル下のチップを左クリックで置くチップにする。
消しゴム … カーソル下のチップを削除。
塗りつぶし … カーソル下を含む閉ざされた範囲を塗りつぶす。
コピー … 範囲を選択して選択されたチップを全てコピーする。

以上が構想第一案なんだけど
これに加えて、チップセットからチップを選ぶ操作も
キーボードでできた方がいいかなぁとか思いはじめてる。
マップにチップを置いてるときに
他のチップを選びにチップセットまでカーソル動かすのがめんどくさそうなので。
いやスポイトがあるから別にいいのかなぁ。
451:2008/03/15(土) 18:59:56 ID:tdr+3viM
あ、書き忘れてた。
マウスの真ん中クリックはペースト専用にしようかと思ってる。
461:2008/03/15(土) 20:27:30 ID:tdr+3viM
構想第一案は実装してみたら微妙だった。

モード切りかえが微妙。
スポイトだと思って右クリックしたら消しゴムだったとかの誤爆が多い。
一応視覚的に確認できるようなインターフェースにしたけどそれでも微妙だった。

こうなったら特定のキーを入力している間だけモードが切りかわるようにしようと思う。
あと、消しゴムとかは、右より左の方が使いやすかったので
モードが切りかわるのは左にしようと思う。
右はスポイト固定にする。
47名前は開発中のものです。:2008/03/15(土) 21:39:10 ID:zs134JdV
テトリス大体できた

exe同梱(3MBくらい)
http://www.dotup.org/uploda/www.dotup.org3608.zip.html
ソースのみ
http://www.dotup.org/uploda/www.dotup.org3610.zip.html

パスはmygame
48名前は開発中のものです。:2008/03/15(土) 22:23:19 ID:IT4B494z
とりあえずexe実行したらエラーになった。
「SDL_image.dllが蜜からなかったため、このアプリ(ry」
これって自分の環境にMyGameが入ってないと動かないの?
491:2008/03/15(土) 22:35:20 ID:tdr+3viM
>>47
おれの環境では動きました。
ちゃんとテトリスでした!

でも同封されてる dll が足りないです。
>>48 さんがエラーになっちゃったのはそのためでしょう。

Ruby/SDL の dll を全て同封すれば動くようになると思います。
MyGame の本体から dll ディレクトリを丸ごともってきちゃうのがお勧めです。

参考
ttp://www7.atwiki.jp/rubydenanka/pages/12.html
501:2008/03/15(土) 22:38:12 ID:tdr+3viM
ちなみに、dll は全部で 15 個です。
全部あわせて 4MB くらいあります。
必要ないのは削れるかもしれないですが
全部入れてしまうのが無難だと思います。
511:2008/03/15(土) 22:59:46 ID:tdr+3viM
キーを入力しているときにマウスの左ボタンのモードが変わるようにした。
塗りつぶしモードも実装した。
52名前は開発中のものです。:2008/03/15(土) 23:02:49 ID:zs134JdV
ああ、いらなそうなの削ってるうちに必要なのも削ったのか・・
ごめんなさい

http://www.dotup.org/uploda/www.dotup.org3685.zip.html
必要(そう)なDLL全部同梱
5MBくらいでパスはmygame

exerbでexe形式にできるのはいいけど、でかいな・・
531:2008/03/15(土) 23:06:16 ID:tdr+3viM
>>52
ですよね。
圧縮してもけっこうでっかい…。
dll と fonts は変わることないと思うので
それだけパス通しておいてもらえたらお互い楽かもですね。
54名前は開発中のものです。:2008/03/15(土) 23:10:25 ID:zs134JdV
>>53
そうですな。
まあ最近はみんな結構高速なネット環境を持ってるので、この程度なら
まあ我慢してもらえる気もするけれど。
551:2008/03/15(土) 23:26:40 ID:tdr+3viM
>>54
そうだと信じたい!

6日目
ttp://www7.atwiki.jp/rubydenanka/pages/21.html
スクショ
ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=7

なんかコピー機能は別になくてもいいような気がしてきた。
もちろんあった方がいいけど。

アンドゥとかも欲しいけどそろそろゲームの方に取りかかりたいなぁ。
マップエディタは明日でとりあえず完成ということにして
不便を感じたときにチョコチョコ直していこう。
56:2008/03/18(火) 04:53:26 ID:T0UZCOiP
Star Ruby 使ったらどう?
ttp://starruby.info/
57:2008/03/18(火) 04:55:19 ID:T0UZCOiP
↑ 言い忘れた。サンプルにテトリスあるよ。見てみるといいかも。
58名前は開発中のものです。:2008/03/18(火) 08:23:08 ID:3P2lIOrk
>>56-57
透視変換描画凄いなw

せっかく詳細なレビュー書いてくれてるんだから、
Rubyに興味のある連中が集まってるスレに貼らないのは勿体無い。(という事で勝手に転載すr

各種ライブラリ紹介スレ2
ttp://pc11.2ch.net/test/read.cgi/gamedev/1177886529/247
59名前は開発中のものです。:2008/03/18(火) 08:23:54 ID:3P2lIOrk
> 247 名前:名前は開発中のものです。 age New! 投稿日:2008/03/18(火) 04:58:50 ID:T0UZCOiP
> 評価日:2008-03-13
> 公式:http://www.starruby.info/
> とっつき:◎
> ドキュメンテーション:○(テトリス・飛空挺デモなどあり)
> ライセンス:○ MIT(SDL込みでLGPL)
> 2D対応:◎
> 3D対応:×
> 日本語対応:OK
> 機能:◎
> 拡張性:◎
> 速度:○
> 日本語サイト:◎ (Rubyベースなので、基本はRubyサイトを参照)
> マルチプラットホーム:◎
> 私見:
> SDLをベースとしたRubyの拡張ライブラリ。
> Win, Mac, Linuxのほぼすべてのプラットフォームで動作。
> ハードウェアに一切依存せず、すべてソフトウェアによって処理しているのが特徴。
> 基本的にすべての描画が、『テクスチャの上にテクスチャを書き込む』ことにより実現されているため、非常に柔軟で分かり易い。
> Rubyの恩恵をもろに利用できるため、ネットワーク対応なども容易。
> 感覚としては、RPGツクールXP・VXのRGSSに近い。
> 描画も結構速く、ラスタスクロールなども容易に実現できる。
> 2Dゲームライブラリとしてはおそらく唯一の透視変換描画機能があるため、
> FF6の飛行船、マリオカートのコースのようなものが実現可能。
> 画像は PNG、サウンドはOGG・MP3・WAVに対応。
> シンプルかつコンパクトなソフトウェア設計方針のため、
> 覚えることが少なく、学習が容易なのも特徴だ。
>
> 一言:
> 「とにかくRubyでゲーム開発できるのは効率的」
601:2008/03/18(火) 13:32:02 ID:97NwfFBD
>>56->>59
おー。紹介ありがとうございます!
Star Ruby は試してみたことがあります。
ほんのちょっと触っただけですが。
テトリスのソースがあるのも知ってました。
MyGame での開発が行き詰まったら使ってみようかなぁ。

とかいって更新が2日空いてるわな…。
ちょっと他のことに時間をもってかれていて
マップエディタが進んでない!
今日はがんばろーっと。
611:2008/03/18(火) 22:47:27 ID:97NwfFBD
マップエディターはひとまず完成ということで
ソースと exe を同封した zip ファイルをアップしました。
http://www.dotup.org/uploda/www.dotup.org6174.zip.html

興味のある方は試しに動かしてみて下さい。
もし動かなかったらごめんなさい(´・ω・`)
その場合はコメントで教えて頂けると助かります。
621:2008/03/18(火) 22:48:01 ID:97NwfFBD
あ、あ、パスワードは mygame です!
63名前は開発中のものです。:2008/03/19(水) 00:31:31 ID:dTUq5A0A
おや?DLLは同梱されてるけどエラーが出るな。

dllフォルダを検索してないみたいなので
*.dll を mapeditor.exe の所に持ってきて正常起動を確認。
641:2008/03/19(水) 21:44:23 ID:+SG0OgVj
>>63
確認して頂いてどうもありがとうございます。
dll ファイルはディレクトリの中に入れていたはダメなようですね。
勘違いしていました。

exe と同じパスに移動させてアップロードし直しました。
http://www.dotup.org/uploda/www.dotup.org6433.zip.html
65名前は開発中のものです。:2008/03/19(水) 22:12:59 ID:WhfyToJK
なんかウイルス検査が反応しちゃうな
Exerbが原因??
66名前は開発中のものです。:2008/03/19(水) 22:16:24 ID:gQefg68v
exerbのコアを誤検知するときがあるみたいだね。
67名前は開発中のものです。:2008/03/24(月) 20:39:11 ID:I6+HPgu7
1はどうした?
68名前は開発中のものです。:2008/03/26(水) 16:17:41 ID:Ms8DNrIr
スレ主は飽きたのか
69名前は開発中のものです。:2008/03/31(月) 21:24:57 ID:0HyqKyOa
生きてるか?
701:2008/04/03(木) 21:17:08 ID:RtS02P+R
>>67
>>68
>>69
すみません。います。
でも開発は全然進んでいません。
他のことばかりしていました。(´・ω・`)

TDD(BDD) のことが気になって
先にそっちを勉強しておこうと考えていたのですが
手があまり動いてないのでこれは言い訳ですね。

停滞していて申し訳ないです。
71名前は開発中のものです。:2008/04/03(木) 22:11:41 ID:xJJULF9+
いや、生きてるなら別にいい
ただ、たまには近況とかも書いてね
721:2008/04/04(金) 22:47:24 ID:+qX13weU
>>70
はい。分かりました。
731:2008/04/08(火) 17:28:25 ID:u8Tm9ze0
今まで1つのファイルに全部書きこんでいたけど
今日確認してみたら1000行くらいになってたので
関連するクラスごとにファイルを分けることにした。
ついでにモジュールにもしてみた。すっきりした。
741:2008/04/08(火) 17:30:01 ID:u8Tm9ze0
いつのまにかお隣りさん的なスレが立ってますね。

【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1207069887/
75名前は開発中のものです。:2008/04/09(水) 22:05:09 ID:svPDgDLf
Rubyでゲーム製作ブーム到来か?
761:2008/04/10(木) 19:54:53 ID:3q1I2muF
>>75
それは面白いですね(・∀・)
771:2008/04/14(月) 22:11:14 ID:rYEMXViq
このまま過疎っていってしまうんだろうか。
何でもいいからレスしていくことにしよう。
最近 Starruby が気になってる。
781:2008/04/15(火) 22:49:46 ID:3tODdakK
大きな画像から小さな画像を切り出す処理は
MyGame よりも StarRuby の方が使い勝手がいい気がする。
791:2008/04/15(火) 23:10:57 ID:3tODdakK
StarRuby のサンプルコードを読みながら
StarRuby の中の人と戯れるなどした。
801:2008/04/20(日) 22:59:51 ID:+4RSE+dQ
StarRuby の falling_blocks ってサンプルは
MVC でできてていいなと思った。見習いたい。
81名前は開発中のものです。:2008/04/22(火) 18:51:45 ID:CfdknHpb
rubyでゲームを作ってみようと思った。
やはりGTKだろうか
821:2008/04/22(火) 19:14:38 ID:9rhZO4ty
>>81
StarRuby がいいかもしんない。
83名前は開発中のものです。:2008/04/28(月) 20:43:57 ID:jnZXOePg
1、元気?
841:2008/04/30(水) 21:31:01 ID:2q9bP0Tg
>>83
はい。落ち込むこともあるけど、元気です。
85名前は開発中のものです。:2008/05/05(月) 19:50:19 ID:2U0kHtjd
俺もRubyでゲーム作ってみようと思ってる
86名前は開発中のものです。:2008/05/05(月) 23:37:38 ID:oIp0pcdI
>>85
がむばれ。
出来たらここでちょくちょく報告してくれるといいな。
871:2008/05/15(木) 21:16:03 ID:0HKsR/Rh
チップセットの各チップが歩行可能か否かを設定するための
簡単なツールを作った。
MyGame じゃなくて StarRuby で。
881:2008/05/25(日) 16:47:16 ID:qC3ViASp
ダンジョンの中をうろうろ動き回る AI を作った。
歩行可能なタイルをランダムに1つを選んで
そこまでの最短経路を A* で探索して移動する。
AI はこの探索、移動のサイクルを延々と繰り返す。
AI たちがわらわら動き回る様は見ていて面白い。

でも1つ問題がある。
A* 探索を開始してから答えを得るまでには少し時間がかかるので
探索をはじめると AI の動きが一瞬ピタっと止まる。
AI が複数いると、AI たちのどれかが探索をする度に
他の AI まで動きが止まってしまう。

探索の影響を、なるべく他の AI には与えたくないのだけど
こういうときってどうしたらいいんだろう?
スレッドを使ってなんとかできるのかな。
89名前は開発中のものです。:2008/05/25(日) 20:14:47 ID:g2vbuKQP
スレッド使うとか、コルーチン使って暇な時に計算させるとか?
90名前は開発中のものです。:2008/05/25(日) 21:31:15 ID:QgKX5KGU
JavaScriptでゲーム作ってたときに同じ状況で悩んだなぁ
スレッドないし、おれ頭悪いので
「処理終わらせる関数」として書くからそうなるのだと考えて
「処理を進める関数/終わった時に呼ばれる関数」に分離したらなんとかなった

Rubyならスレッドかなぁ
コルーチンってよく判らんけど言語機能で同じ事やってるだけなのかな
911:2008/05/25(日) 21:46:59 ID:u/AqeOfy
>>89
>>90
ありがとうございます。
スレッドとコルーチンかぁ。調べてみよう。

ちなみに、件のプログラムは MVC で組んでいて
AI の次の移動先を Model で計算しておいて
View が Model の計算結果を見てその位置に描画、っていう感じになっています。
スレッドを使うってなると Model と View でスレッドを分けるようにするのかな。
なんだかまだ今一イメージが掴めてないですが
調べたり紙に書いたりしている内にうまくまとまるといいなぁ。
92名前は開発中のものです。:2008/05/26(月) 00:54:57 ID:q+r4EH/m
View Modelの関係はそのままにしておき、
移動の計算は、ワーカースレッドに任せちゃうとかは?

1.Model:開始地点・目標地点など必要な情報を仕事依頼キューに積む
2.ワーカースレッド:仕事依頼キューから一つずつ取り出し計算し、結果キューに積む
             (全ての仕事が終わったら、新しく仕事が詰まれるまで待機)
3.Model:結果キューを確認し、結果が詰まれていれば取得

この辺参考になるかも
[Ruby] Queueを使ったワーカースレッド
ttp://d.hatena.ne.jp/unageanu/20071228

>>90
コルーチンは処理を細切れにして、ちょっとずつ実行していくやり方で
>「処理を進める関数/終わった時に呼ばれる関数」に分離した
ってのは結構近い考え方かも
931:2008/05/26(月) 01:10:44 ID:YPl5ZkW3
>>92
ありがとうございます。
ワーカースレッドというものをはじめて知りました。
参考先をちょっと見てみましたがよさそうですね。
明日以降また見てみます。
941:2008/05/26(月) 19:03:28 ID:HmVOAoHn
下記を参考にしてワークパイルを実装してみた。
ワークパイルはワーカースレッドみたいなものだろうと思っている。
イメージは掴めたし大体は意図した通りに動いている。

http://blog.s21g.com/articles/245

でもまだ完全じゃない。
A* 探索の結果として得られるのは
ある地点 Start からある地点 Gall までの最短経路。
具体的な例を出すと、こんな感じの配列。
[[0, 0], [0, 1], [0, 2], [1, 2], [2, 2]]
この配列は地点 (0, 0) から (2, 2) までの最短経路を表している。

だけどワークパイルを通して複数の AI の経路を探索させると、
たまにトンチンカンな配列が返ってくる。
ちなみにその配列の要素数は決まって 1、[22, 34] とかそんなの。
こういう結果が返ってくると
(2, 2) から (22, 34) に AI がジャンプしたかのような動きをする。
たぶんワークパイルのどこかがおかしいんだろうな…。
951:2008/05/27(火) 21:19:39 ID:tgyjkVJl
バグ取れた。
ワークパイルは問題なかった。
問題は A* 探索がマルチスレッドに対応できてなかったことだった。
何はともあれ解決できてよかった!
96名前は開発中のものです。:2008/05/28(水) 20:32:51 ID:lAtw5FKI
マルチスレッドはデバッグが困難な茨の道だからあまりおすすめしないぞ。
A*探索を中断・再開できるような仕組みにしてちょっとずつ進めるとかしたほうがいいんじゃない。
971:2008/05/28(水) 21:44:43 ID:8HjKeYrg
>>96
うーむ…。
たしかにデバッグは大変そうですね。
探索を中断・再開かぁ。
とりあえずは今のままで開発を進めていって
「デバッグ大変だー」ってなったときに考えようと思います。
A* 探索は今のままであまり問題ないような気がするので。


ところで、AI が動き回るだけじゃさびしくなったので
マップの中に家を建てていくようにしてみた。
建築場所の探し方がまだあまり賢くはないけど
ワラワラと押し寄せてマップ中を家だらけにできるようになった。
98名前は開発中のものです。:2008/06/21(土) 18:37:09 ID:bqd1b7Jj
質問なんだが rubyで作ったゲームをexeにしたいんだがexerbでできないんだが・・・
SDL対応してないん?  もし他の方法あるならおしえてくだしあ
99名前は開発中のものです。:2008/06/21(土) 21:52:00 ID:7I10kcIl
作れたはずだけど、ダメそうならスターターキットから適当に拝借するとか
http://mono.kmc.gr.jp/~yhara/w/?RubySDLStarterKit
100名前は開発中のものです。:2008/06/21(土) 22:12:30 ID:bqd1b7Jj
まさか一日でレスかえってくるとは・・・ありがとうございました
101名前は開発中のものです。:2008/06/21(土) 22:59:50 ID:J+b403eZ
102名前は開発中のものです。:2008/06/22(日) 13:49:36 ID:YJ7ypR7c
基本を説明して終了っぽいね。>>101
103名前は開発中のものです。:2008/06/22(日) 16:23:50 ID:wTGmZ5+2
Star Rubyの発表を聞いてちょっとやろうかなと思った。
が、ページを見て、チュートリアルをもう少し書いてくれといいたくなり、
やめた。

せめて、もうひとつキー入力のとり方くらい書いててほしかった。
104名前は開発中のものです。:2008/06/22(日) 18:52:44 ID:YJ7ypR7c
>>103
samplesフォルダ、マジお奨め。
正直、チュートリアルするほどAPI多くないから
サンプル見て全部理解できるよ。
SDLから速度を稼ぐのための工夫を全部抜いて簡単にしたらStarRubyになる感じ・・・
説明にあった全部テクスチャもその成果だと思う。
105名前は開発中のものです。:2008/06/22(日) 20:32:27 ID:wHRGMMP8
チュートリアルを書かないせいで、結構なユーザーを取り逃がしてそうな気はする。
106名前は開発中のものです。:2008/06/24(火) 08:49:23 ID:LfqfoG4M
チュートリアルを書かないなら書かないで、
samplesフォルダを参照して下さいという一節は欲しいかもね。

でも書くとすると何があるといいんだろう。APIの使いどころ?ゲームの作り方を1から解説?
それとも横アクションとか縦シューティングとか、サンプルゲーム自体を増やすべきなんだろうか。
107名前は開発中のものです。:2008/06/24(火) 16:42:10 ID:zm+U4rjq
ああ、それはあるかも。
添付サンプルのシンプルさは素敵だけど、webだけ見て不安になる人少なくなさそうね
108名前は開発中のものです。:2009/11/18(水) 01:52:46 ID:2NTHAGK/
バイト募集中です。内容は宿題の代行(提出課題の代行)です。
Rubyのプログラミング課題で、内容は初心者用なので比較的優しいと思われます。
拘束期間は12/15迄、課題数は4回で、問題数は一回につき一題。計4題です。
謝礼金は5000円〜10000円 の予定です。
人助けだと思って、どうかよろしくお願いします。

連絡先:white_knight2あっとまーくlivedoor.com
109名前は開発中のものです。:2009/11/20(金) 21:31:26 ID:nirCwV6d
マジで金くれるならやっても良い。
110名前は開発中のものです。:2009/12/03(木) 16:27:37 ID:S3zoWyCK
一問10000円?
111名前は開発中のものです。:2009/12/07(月) 00:22:54 ID:DRTUC3a7
いま誰か作ってる人はいないのヶ
112名前は開発中のものです。:2009/12/07(月) 21:16:05 ID:cV0izVto
DxRubyで一画面アクションを作っててあたり判定をつけるところで止まってる
んで別のゲームを作りたくなってきてる

使いやすくて作り出せばスルスルいくけどやる気が出ない
113名前は開発中のものです。:2009/12/07(月) 23:58:44 ID:DRTUC3a7
DxRubyは使いやすいよね
ちゃんと更新されてってるし
最近ようやくだけど、文字描画のバグが消えた
114名前は開発中のものです。:2009/12/08(火) 17:12:18 ID:feD2TaiO
拾い物てとりす
画像1.bmp 2.bmpを適当に用意、 サイズは縦横20px

require"dxruby"
b=[[-1,0,0,0,1,0,0,-1],[0,0,0,1,0,2,1,1],[0,0,1,0,2,0,1,1],[0,0,0,1,0,2,-1,1],
[0,0,0,1,0,2,1,2],[0,0,1,0,2,0,0,1],[0,0,1,0,1,1,1,2],[0,0,1,0,2,0,2,-1],
[0,0,1,0,2,0,2,1],[0,0,0,1,0,2,1,0],[0,0,1,0,2,0,0,-1],[0,0,0,1,0,2,1,2],
[0,0,1,0,1,1,2,1],[0,0,1,0,0,1,1,-1],[0,0,1,0,1,1,2,1],[0,0,1,0,0,1,1,-1],
[0,1,1,0,1,1,2,0],[0,1,0,0,1,1,1,2],[0,1,1,0,1,1,2,0],[0,1,0,0,1,1,1,2],
[0,0,0,1,0,2,0,-1],[1,0,2,0,3,0,0,0],[0,0,0,1,0,2,0,-1],[1,0,2,0,3,0,0,0],
[0,1,1,1,1,0,0,0],[0,1,1,1,1,0,0,0],[0,1,1,1,1,0,0,0],[0,1,1,1,1,0,0,0],]
g=[Image.load("1.bmp"),Image.load("0.bmp")];z=Input;
t=b[(c=rand Y=5+X=8+x=y=2)%27];q=(0..Y).map{(0..X).map{0}}
def n(q,t,x,y,o=1)4.times{|i|q[x+t[i*2]][y+t[i*2+1]]=o}end
def v(q,t,x,y)4.times{|i|return nil if q[n=x+t[i*2]][m=y+t[i*2+1]]==1||m==Y||n==X||n<0};1 end
Window.loop{c+=1;n(q,t,x,y,0);(a=(b.index(t)+1)%28)%4<1?a-=4:0
v(q,b[a],x,y)?z.keyPush?(57)?t=b[a]:0:0;n=z.keyPush?(205)?1:z.keyPush?(203)?-1:0
v(q,t,x+n,y)?x+=n:0;v(q,t,x,y+1)?z.keyDown?(208)&&c%3<1?y+=1:0:(n q,t,x,y;t=b[c%27];x=y=2)
c%50<1?v(q,t,x,y+1)?y+=1:0:Y.times{|i|f=1;X.times{|k|f=nil if q[k][i]==0}
X.times{|k|q[k].delete_at i;q[k].unshift 0}if f};n q,t,x,y
X.times{|i|Y.times{|k|2.times{|u|q[i][k]==u ?Window.drawEx(i*20,k*20,g[u]):0}}}}
115名前は開発中のものです。:2009/12/08(火) 17:13:27 ID:feD2TaiO
画像0.bmoと1.bmpだ
116名前は開発中のものです。:2011/03/29(火) 20:37:42.54 ID:ch8fG0VU
あwsqhwqj
117uy:2012/06/18(月) 13:14:43.72 ID:njhZk0rp
急激に冷めてるよね

require"dxruby"
b=[[-1,0,0,0,1,0,0,-1],[0,0,0,1,0,2,1,1],[0,0,1,0,2,0,1,1],[0,0,0,1,0,2,-1,1],
[0,0,0,1,0,2,1,2],[0,0,1,0,2,0,0,1],[0,0,1,0,1,1,1,2],[0,0,1,0,2,0,2,-1],
[0,0,1,0,2,0,2,1],[0,0,0,1,0,2,1,0],[0,0,1,0,2,0,0,-1],[0,0,0,1,0,2,1,2],
[0,0,1,0,1,1,2,1],[0,0,1,0,0,1,1,-1],[0,0,1,0,1,1,2,1],[0,0,1,0,0,1,1,-1],
[0,1,1,0,1,1,2,0],[0,1,0,0,1,1,1,2],[0,1,1,0,1,1,2,0],[0,1,0,0,1,1,1,2],
[0,0,0,1,0,2,0,-1],[1,0,2,0,3,0,0,0],[0,0,0,1,0,2,0,-1],[1,0,2,0,3,0,0,0],
[0,1,1,1,1,0,0,0],[0,1,1,1,1,0,0,0],[0,1,1,1,1,0,0,0],[0,1,1,1,1,0,0,0],]
A=205;B=203;C=208;D=27;g=[(I=Image).new(D,D,[A,B,C]),I.new(D,D,[A,C,D])];z=Input;
t=b[(c=rand Y=5+X=8+x=y=2)%D];q=(0..Y).map{(0..X).map{0}}
def n(q,t,x,y,o=1)4.times{|i|q[x+t[i*2]][y+t[i*2+1]]=o}end
def v(q,t,x,y)4.times{|i|return if q[n=x+t[i*2]][m=y+t[i*2+1]]==1||m==Y||n==X||n<0};1 end
Window.loop{|w|c+=1;n(q,t,x,y,0);(a=(b.index(t)+1)%28)%4<1?a-=4:0
v(q,b[a],x,y)?z.keyPush?(57)?t=b[a]:0:0;n=z.keyPush?(A)?1:z.keyPush?(B)?-1:0
v(q,t,x+n,y)?x+=n :0;v(q,t,x,y+1)?z.keyDown?(C)&&c%3<1?y+=1:0:(n q,t,x,y;t=b[c%D];x=y=2)
c%50<1?v(q,t,x,y+1)?y+=1:0:Y.times{|i|f=1;X.times{|k|f=nil if q[k][i]==0}
X.times{|k|q[k].delete_at i;q[k].unshift 0}if f};n q,t,x,y
X.times{|i|Y.times{|k|2.times{|u|q[i][k]==u ?w.drawEx(i*D,k*D,g[u]):0}}}}
118名前は開発中のものです。
ruby2.0がかなりすごいらしい