1read 100read
2011年10月1期ゲ製作技術Ruby でなんかゲームつくる
TOP カテ一覧 スレ一覧 削除依頼 ▼
・ 次のスレ
プレステのゲーム画像を抽出したい。 ハイビジョンの2Dゲーム RPGツクーらない 【みんなで】DQをツクールVXで【つくろう!】
Ruby でなんかゲームつくる
1 :08/03/10 〜 最終レス :11/03/29 Ruby でなんかゲームをつくろうと思います。 開発環境は Windows XP、Ruby 1.8.6 (MyGame) です。 ゲームの制作は基本的に一人でやるつもりです。 また、1 はあまりゲームを作った経験がありません。 今までに作ったことがあるのは ブロック崩しとかテトリスとかライフゲームくらいです。 なので面白いものができる保証はありません。 とりあえずのまとめサイト > http://www7.atwiki.jp/rubydenanka/
2 : さて、スレを立ててはみたけど何を作るかは全然決まってないという…。 まずはまとめサイトの形を整えようっと。
3 : ■自主製作ゲーム:開発状況報告スレVer0.9■ http://pc11.2ch.net/test/read.cgi/gamedev/1202473528/
4 : おわ。 >>3 はそっちに移動しなさいってことか。 たしかにゲーム制作の報告なら向こうのスレでやる方がよさそう。 Ruby でゲーム作ってる人ってあんまりいないみたいだから こういうスレがあってもいいかなと思って立てたんだけど それなら Ruby でのゲーム開発について話すとか そういうことを目的にしないとダメですよね。
5 : とりあえずスレをつぶすかどうかはまだ様子見でゲーム作りはじめた。 リアルタイムストラテジーが目標。 目標が高すぎるような気がするので色々けずった方がよさそうだ…。 キャラクター1人がクリックした箇所まで移動するっていう一番基本的なとことはできた。 MyGame のアニメーションの使い方も理解できた。たぶん。 次なんだろ…。落ちてるアイテムを拾えるようにしてみようかな。
6 : 落ちてるアイテム拾えるようになった。
7 : SDLか。クロスプラットホーム前提だと見守りたいスレ MyGameって実際どんな感じですか だんさんのだっけ サイロスさんのは全部作り直したくなる欲求で満たされて窓から投げ捨てちまった
8 : 配布は exe 形式で、と思っていましたが Ruby/SDL が動作する環境であれば UNIX などでも問題なく動くと思います。 サイロスさんのっていうのは Miyako のことですよね。きっと。 MyGame は Miyako よりずっとシンプルだと思います。 といってもおれもまだ使いはじめたばかりなのでこれは率直な感想です。 とりあえずできるところまで MyGame でやってみようと考えています。 そういえば MyGame の名前が出てるのにリンクがないのに気付いたので貼っておこう。 ttp://dgames.jp/ja/projects/mygame/
9 : 操作は基本的にマウスでする。 キーボード操作もそのうち追加するかもしれない。 複数のキャラを範囲選択できるようにした。 左ボタンを押してドラッグすると範囲選択できる。 そんで選択したキャラには吹き出しのアイコンが出るようにした。
10 : wktk
11 : そっか。 制作過程のリンクを貼っておけばいいんだ。 ということで今日から貼っていこうと思います。 あんまりここ見てる人いないと思うけど >>7 や >>10 のような方もいるみたいだしそれを励みに地道に続けていきます。 今日が2日目 http://www7.atwiki.jp/rubydenanka/pages/15.html
12 : のんびり継続してな ゲ製的にRuby需要がどんくらいあるか知らんけど、 潜在的需要は少なくないと思うよ
13 : >>12 はい。ありがとうございます。 リアルタイムストラテジーだと漠然としてたので ロードモナークを目標にすることにしました。 ロードモナークオンライン ttp://www.falcom.co.jp/monarch/index.html 研究がてらちょっと久しぶりに遊んでみようかな。 あとやっぱりマップエディタが必要になってくると思うので 自分用の簡単なエディタを作ろうと思います。 マップのサイズは最初は固定でいいや。
14 : 古いるびまにマップエディタの簡単なサンプルがあるよ http://jp.rubyist.net/magazine/?0003-RubyTkMovement tkによるサンプルだから汎用性高いとオモ 既にご存知でしたら失礼
15 : おっ、おお! そうか tk ですか。 ちょっと見てみますね。 ありがとうございます。 実はマップエディタも MyGame(Ruyb/SDL) で作ろうとしてました。 っていうか作りはじめてました。ほんの少しですが。 当たり前のことかもしれないですが、MyGame はそういう用途には全然向いてませんでした。
16 : 教えてもらった Tk のページ見てみました。 ソースもちょっとだけ読んだ。 あとそのままじゃ動かなかったから ActiveTcl 入れた。 参考ページ ttp://www4.ocn.ne.jp/~holmes17/html/rubytk.html tk84.dll が必要らしいので、ActiveTcl は 8.4.* の中で一番新しい 8.4.18 を入れた。 でもマップエディタのサンプルがうまく動かない。 それに期待していたものとけっこう違った。 Tk でマップエディタを作るには Tk の使い方を覚えないといけないけど その学習コストを考えたら、MyGame で作った方が早そうなのでやっぱり MyGame で作ることにした。
17 : >>14 ってことなのでせっかく紹介してもらったのに申し訳ないっす!
18 : いえいえ、参考にならんで申し訳ない ご健闘祈る
19 : マップエディタの仕様を大ざっぱに決めた。 左クリックでチップを選択したり置いたりする。 右クリックは基本はスポイト。 でもキーボードから機能切りかえができるようにするかも。 例えば D を押したら消しゴムになるとか。 実装はチップを選択するところまでできた。 ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=4
20 : マップにチップを置けるようになった。 でも重い! 原因として思い当たるところがあるので何とかしたい。
21 : Rubyと聞いて密かにwktk
22 : 漏れもちょっとずつMyGameでテトリスを作ってたりするけど ほんとシンプルというか機能が少ないというか。。 まあ足りないところはSDLを叩けばいいんだろうけど。
23 : お。住人が増えてる? こんばんは >>21 >>22 今 MyGame のソース読んでますがほんとに機能はしぼられてますよね。 MyGame では画像の一部を切り出すメソッドが用意されてないので MyGame の Image クラスを少し拡張しようかと思ってます。 マップエディタを作るのに画像の切り出しをアニメーション機能で代用させたら メモリをすごい喰ってしまうようになって困りました(´・ω・`) テトリスがんばって! まとめサイトのアップローダとかよかったら使って下さい。
24 : とりあえずすごいアドホックな拡張ができた。 おかしなところが出てこなければいいのだけど…。
25 : キャッシュにも対応させた。 たぶんこれでいける。 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
26 : うわダメだ! key がおかしい。 filename は #{filename} の間違いだ。
27 : やっぱりキャッシュちゃんと取れてなかった。 何回ミスってるんだ…。 今度こそ。 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
28 : 拡張はうまく機能しているみたい。 アニメーションで代用していたところを PartialImage を使って書き直したらメモリ使用量が半分以下になった。 それでも 20MB。多い…? あとチップを置いてるときに CPU 使用率が 90% くらいいく。 たくさんのチップイメージを render してるせいなのかも。 今度は画像の一部分を書きかえる拡張がいりそうだ。
29 : >>12 ゲームで継続が使えるケースってあるの?
30 : その継続ではなく。Rubyだからって。わかったよ言い換えるよ。 ゆっくり継承してな。 だからmix-inではなく。
31 : >>29 >>30 ん? 何を言ってるのかよく分かりません。 マップエディタを作ってたら細かいデザインなどが気になりだした。 後回しでいいようなものなのに…。 優先度を考えながらやるようにしなきゃ。
32 : >>30 なんだ。コンティニュエーションのことじゃないのか。 うっかり勘違いしてた^^
33 : そういや、しばらく前にもRubyのスレが立ったけど 全然レスがなくて、すぐ落ちちゃったな。 今回は1が頑張ってくれ。
34 : >>33 そうなんですか。 消えないようにがんばりたいです。 4日目 ttp://www7.atwiki.jp/rubydenanka/pages/19.html スクリーンショット ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=5
35 : CPU 使用率を 20% あたりにまで落とせた マップのナンバーの表示をプリミティブな描画とフォントの描画で 毎フレーム更新してたのが問題だったみたい。 今は自前で用意した画像になってる。
36 : マップをロードしたときの描画がうまくいかないよー。 更新が反映されてない。 なにがいけないんだろ。
37 : やっとなんでうまくいかないのか分かった。 MyGame::Image#load は新しいサーフェスを作るときに 自動的にキャッシュを取っていて 以降同じファイルを load する場合は前回作ったキャッシュを参照する。 そう、キャッシュなんだ…。
38 : 1のスペックについて詳しく・・・
39 : やっと必要最低限の機能をもったマップエディタができました。 セーブがおかしいなぁと思ったら単純な計算ミスだった… orz >>38 Windows XP SP2 Celeron M 360, 1400MHz メモリ 512MB VRAM 64MB
40 : いや、1自身のスペックについてなんだが・・・
41 : >>40 そんな恥ずかしいこといえません! 5日目 ttp://www7.atwiki.jp/rubydenanka/pages/20.html スクリーンショット ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=6
42 : すげー!
43 : >>42 どうもありがとう!
44 : スポイトの修正をしたり、消しゴム機能を実装してる間に マップエディタの操作方法は マウスとキーボードの両方でやりたいと思うようになった。 左手はフォームポジションで右手はマウス。 マウスの左クリックは "チップを置く" で固定で 右クリックの機能をキーボード入力で切りかえる。 右クリックに割りあてる機能は多くても 4 つまでにしたい。 今考えてるのは、スポイト、消しゴム、塗りつぶし、コピー。 スポイト … カーソル下のチップを左クリックで置くチップにする。 消しゴム … カーソル下のチップを削除。 塗りつぶし … カーソル下を含む閉ざされた範囲を塗りつぶす。 コピー … 範囲を選択して選択されたチップを全てコピーする。 以上が構想第一案なんだけど これに加えて、チップセットからチップを選ぶ操作も キーボードでできた方がいいかなぁとか思いはじめてる。 マップにチップを置いてるときに 他のチップを選びにチップセットまでカーソル動かすのがめんどくさそうなので。 いやスポイトがあるから別にいいのかなぁ。
45 : あ、書き忘れてた。 マウスの真ん中クリックはペースト専用にしようかと思ってる。
46 : 構想第一案は実装してみたら微妙だった。 モード切りかえが微妙。 スポイトだと思って右クリックしたら消しゴムだったとかの誤爆が多い。 一応視覚的に確認できるようなインターフェースにしたけどそれでも微妙だった。 こうなったら特定のキーを入力している間だけモードが切りかわるようにしようと思う。 あと、消しゴムとかは、右より左の方が使いやすかったので モードが切りかわるのは左にしようと思う。 右はスポイト固定にする。
47 : テトリス大体できた exe同梱(3MBくらい) http://www.dotup.org/uploda/www.dotup.org3608.zip.html ソースのみ http://www.dotup.org/uploda/www.dotup.org3610.zip.html パスはmygame
48 : とりあえずexe実行したらエラーになった。 「SDL_image.dllが蜜からなかったため、このアプリ(ry」 これって自分の環境にMyGameが入ってないと動かないの?
49 : >>47 おれの環境では動きました。 ちゃんとテトリスでした! でも同封されてる dll が足りないです。 >>48 さんがエラーになっちゃったのはそのためでしょう。 Ruby/SDL の dll を全て同封すれば動くようになると思います。 MyGame の本体から dll ディレクトリを丸ごともってきちゃうのがお勧めです。 参考 ttp://www7.atwiki.jp/rubydenanka/pages/12.html
50 : ちなみに、dll は全部で 15 個です。 全部あわせて 4MB くらいあります。 必要ないのは削れるかもしれないですが 全部入れてしまうのが無難だと思います。
51 : キーを入力しているときにマウスの左ボタンのモードが変わるようにした。 塗りつぶしモードも実装した。
52 : ああ、いらなそうなの削ってるうちに必要なのも削ったのか・・ ごめんなさい http://www.dotup.org/uploda/www.dotup.org3685.zip.html 必要(そう)なDLL全部同梱 5MBくらいでパスはmygame exerbでexe形式にできるのはいいけど、でかいな・・
53 : >>52 ですよね。 圧縮してもけっこうでっかい…。 dll と fonts は変わることないと思うので それだけパス通しておいてもらえたらお互い楽かもですね。
54 : >>53 そうですな。 まあ最近はみんな結構高速なネット環境を持ってるので、この程度なら まあ我慢してもらえる気もするけれど。
55 : >>54 そうだと信じたい! 6日目 ttp://www7.atwiki.jp/rubydenanka/pages/21.html スクショ ttp://www7.atwiki.jp/rubydenanka/?plugin=ref&serial=7 なんかコピー機能は別になくてもいいような気がしてきた。 もちろんあった方がいいけど。 アンドゥとかも欲しいけどそろそろゲームの方に取りかかりたいなぁ。 マップエディタは明日でとりあえず完成ということにして 不便を感じたときにチョコチョコ直していこう。
56 : Star Ruby 使ったらどう? ttp://starruby.info/
57 : ↑ 言い忘れた。サンプルにテトリスあるよ。見てみるといいかも。
58 : >>56-57 透視変換描画凄いなw せっかく詳細なレビュー書いてくれてるんだから、 Rubyに興味のある連中が集まってるスレに貼らないのは勿体無い。(という事で勝手に転載すr 各種ライブラリ紹介スレ2 ttp://pc11.2ch.net/test/read.cgi/gamedev/1177886529/247
59 : > 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でゲーム開発できるのは効率的」
60 : >>56- >>59 おー。紹介ありがとうございます! Star Ruby は試してみたことがあります。 ほんのちょっと触っただけですが。 テトリスのソースがあるのも知ってました。 MyGame での開発が行き詰まったら使ってみようかなぁ。 とかいって更新が2日空いてるわな…。 ちょっと他のことに時間をもってかれていて マップエディタが進んでない! 今日はがんばろーっと。
61 : マップエディターはひとまず完成ということで ソースと exe を同封した zip ファイルをアップしました。 http://www.dotup.org/uploda/www.dotup.org6174.zip.html 興味のある方は試しに動かしてみて下さい。 もし動かなかったらごめんなさい(´・ω・`) その場合はコメントで教えて頂けると助かります。
62 : あ、あ、パスワードは mygame です!
63 : おや?DLLは同梱されてるけどエラーが出るな。 dllフォルダを検索してないみたいなので *.dll を mapeditor.exe の所に持ってきて正常起動を確認。
64 : >>63 確認して頂いてどうもありがとうございます。 dll ファイルはディレクトリの中に入れていたはダメなようですね。 勘違いしていました。 exe と同じパスに移動させてアップロードし直しました。 http://www.dotup.org/uploda/www.dotup.org6433.zip.html
65 : なんかウイルス検査が反応しちゃうな Exerbが原因??
66 : exerbのコアを誤検知するときがあるみたいだね。
67 : 1はどうした?
68 : スレ主は飽きたのか
69 : 生きてるか?
70 : >>67 >>68 >>69 すみません。います。 でも開発は全然進んでいません。 他のことばかりしていました。(´・ω・`) TDD(BDD) のことが気になって 先にそっちを勉強しておこうと考えていたのですが 手があまり動いてないのでこれは言い訳ですね。 停滞していて申し訳ないです。
71 : いや、生きてるなら別にいい ただ、たまには近況とかも書いてね
72 : >>70 はい。分かりました。
73 : 今まで1つのファイルに全部書きこんでいたけど 今日確認してみたら1000行くらいになってたので 関連するクラスごとにファイルを分けることにした。 ついでにモジュールにもしてみた。すっきりした。
74 : いつのまにかお隣りさん的なスレが立ってますね。 【Ruby/SDL他】Rubyでゲーム制作・総合スレッド http://pc11.2ch.net/test/read.cgi/gamedev/1207069887/
75 : Rubyでゲーム製作ブーム到来か?
76 : >>75 それは面白いですね(・∀・)
77 : このまま過疎っていってしまうんだろうか。 何でもいいからレスしていくことにしよう。 最近 Starruby が気になってる。
78 : 大きな画像から小さな画像を切り出す処理は MyGame よりも StarRuby の方が使い勝手がいい気がする。
79 : StarRuby のサンプルコードを読みながら StarRuby の中の人と戯れるなどした。
80 : StarRuby の falling_blocks ってサンプルは MVC でできてていいなと思った。見習いたい。
81 : rubyでゲームを作ってみようと思った。 やはりGTKだろうか
82 : >>81 StarRuby がいいかもしんない。
83 : 1、元気?
84 : >>83 はい。落ち込むこともあるけど、元気です。
85 : 俺もRubyでゲーム作ってみようと思ってる
86 : >>85 がむばれ。 出来たらここでちょくちょく報告してくれるといいな。
87 : チップセットの各チップが歩行可能か否かを設定するための 簡単なツールを作った。 MyGame じゃなくて StarRuby で。
88 : ダンジョンの中をうろうろ動き回る AI を作った。 歩行可能なタイルをランダムに1つを選んで そこまでの最短経路を A* で探索して移動する。 AI はこの探索、移動のサイクルを延々と繰り返す。 AI たちがわらわら動き回る様は見ていて面白い。 でも1つ問題がある。 A* 探索を開始してから答えを得るまでには少し時間がかかるので 探索をはじめると AI の動きが一瞬ピタっと止まる。 AI が複数いると、AI たちのどれかが探索をする度に 他の AI まで動きが止まってしまう。 探索の影響を、なるべく他の AI には与えたくないのだけど こういうときってどうしたらいいんだろう? スレッドを使ってなんとかできるのかな。
89 : スレッド使うとか、コルーチン使って暇な時に計算させるとか?
90 : JavaScriptでゲーム作ってたときに同じ状況で悩んだなぁ スレッドないし、おれ頭悪いので 「処理終わらせる関数」として書くからそうなるのだと考えて 「処理を進める関数/終わった時に呼ばれる関数」に分離したらなんとかなった Rubyならスレッドかなぁ コルーチンってよく判らんけど言語機能で同じ事やってるだけなのかな
91 : >>89 >>90 ありがとうございます。 スレッドとコルーチンかぁ。調べてみよう。 ちなみに、件のプログラムは MVC で組んでいて AI の次の移動先を Model で計算しておいて View が Model の計算結果を見てその位置に描画、っていう感じになっています。 スレッドを使うってなると Model と View でスレッドを分けるようにするのかな。 なんだかまだ今一イメージが掴めてないですが 調べたり紙に書いたりしている内にうまくまとまるといいなぁ。
92 : View Modelの関係はそのままにしておき、 移動の計算は、ワーカースレッドに任せちゃうとかは? 1.Model:開始地点・目標地点など必要な情報を仕事依頼キューに積む 2.ワーカースレッド:仕事依頼キューから一つずつ取り出し計算し、結果キューに積む (全ての仕事が終わったら、新しく仕事が詰まれるまで待機) 3.Model:結果キューを確認し、結果が詰まれていれば取得 この辺参考になるかも [Ruby] Queueを使ったワーカースレッド ttp://d.hatena.ne.jp/unageanu/20071228 >>90 コルーチンは処理を細切れにして、ちょっとずつ実行していくやり方で >「処理を進める関数/終わった時に呼ばれる関数」に分離した ってのは結構近い考え方かも
93 : >>92 ありがとうございます。 ワーカースレッドというものをはじめて知りました。 参考先をちょっと見てみましたがよさそうですね。 明日以降また見てみます。
94 : 下記を参考にしてワークパイルを実装してみた。 ワークパイルはワーカースレッドみたいなものだろうと思っている。 イメージは掴めたし大体は意図した通りに動いている。 http://blog.s21g.com/articles/245 でもまだ完全じゃない。 A* 探索の結果として得られるのは ある地点 Start からある地点 Gall までの最短経路。 具体的な例を出すと、こんな感じの配列。 [[0, 0], [0, 1], [0, 2], [1, 2], [2, 2]] この配列は地点 (0, 0) から (2, 2) までの最短経路を表している。 だけどワークパイルを通して複数の AI の経路を探索させると、 たまにトンJンな配列が返ってくる。 ちなみにその配列の要素数は決まって 1、[22, 34] とかそんなの。 こういう結果が返ってくると (2, 2) から (22, 34) に AI がジャンプしたかのような動きをする。 たぶんワークパイルのどこかがおかしいんだろうな…。
95 : バグ取れた。 ワークパイルは問題なかった。 問題は A* 探索がマルチスレッドに対応できてなかったことだった。 何はともあれ解決できてよかった!
96 : マルチスレッドはデバッグが困難な茨の道だからあまりおすすめしないぞ。 A*探索を中断・再開できるような仕組みにしてちょっとずつ進めるとかしたほうがいいんじゃない。
97 : >>96 うーむ…。 たしかにデバッグは大変そうですね。 探索を中断・再開かぁ。 とりあえずは今のままで開発を進めていって 「デバッグ大変だー」ってなったときに考えようと思います。 A* 探索は今のままであまり問題ないような気がするので。 ところで、AI が動き回るだけじゃさびしくなったので マップの中に家を建てていくようにしてみた。 建築場所の探し方がまだあまり賢くはないけど ワラワラと押し寄せてマップ中を家だらけにできるようになった。
98 : 質問なんだが rubyで作ったゲームをexeにしたいんだがexerbでできないんだが・・・ SDL対応してないん? もし他の方法あるならおしえてくだしあ
99 : 作れたはずだけど、ダメそうならスターターキットから適当に拝借するとか http://mono.kmc.gr.jp/~yhara/w/?RubySDLStarterKit
100read 1read 1read 100read
TOP カテ一覧 スレ一覧 削除依頼 ▲
・ 次のスレ
プレステのゲーム画像を抽出したい。 ハイビジョンの2Dゲーム RPGツクーらない 【みんなで】DQをツクールVXで【つくろう!】