1 名前:名前は開発中のものです。 mailto:sage [2009/04/23(木) 08:11:08 ID:iAS0afeL] 無料Windows用2Dゲーム作成ツール"Game Maker"について、色々と語り合うスレッドです。 ●本家(英語) ttp://www.gamemaker.nl/ ●GameMaker Japan - 非公式情報サイト(日本語) ttp://gamemaker.main.jp/(現在一時閉鎖中) 前スレ 【2D】ゲーム作成ツールGameMaker part3【マンセー】 ttp://pc11.2ch.net/test/read.cgi/gamedev/1210437707/
460 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 20:52:41 ID:Wb+bZ9wM] 壁がsolidだった場合、collisionイベント実行前に前の位置に戻されるから abs(hspeed)>1 だったら、壁と自分との間は1以上空いていることになる。 だからplace_meeting(x-1)ではヒットしないと予想。 place_meeting(x+/-hspeed)にしてみたらどうよ? whileの押し戻しもたぶん成功してないと思うな(単にxpreviousに戻されてるだけ) 厳密にやるなら x = other.bbox_right + 1 + sprite_xoffset とかの方が良さそう
461 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 20:59:07 ID:Wb+bZ9wM] よく考えたら place_meeting(x-abs(hspeed)-1) とかにしないとダメだな ついでに補足。仮にblockって名前のスプライトとかスクリプトがあった場合 そっちのインデックスが使われて、違うオブジェクトをチェックしてる可能性もある。 GML使うんだったら、obj_block とか spr_block みたいにして 名前がかぶらないように設定しないとトラブルの元になるよ。
462 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 21:18:26 ID:p8OhbyR+] >>460 さんの通りにしたら解決しました。ありがとうございます。 「プレイヤーだけが通れない壁」と「全キャラ共通の壁」というのを考えていたのですが プレイヤーだけが通れない壁はsolidをはずして、普通の壁はx-abs(hspeed)にすることで解決しました。
463 名前:名前は開発中のものです。 mailto:sage [2009/10/08(木) 19:54:56 ID:XLYZZ1sh] image_blendのように「色を混ぜる」のではなく、なにか一色で「塗りつぶす」ことは出来ないのでしょうか? 敵がダメージを受けた時、一時的に赤くさせたいのですが、元が黒っぽい色のため 赤を混ぜても黒にしかなりません。
464 名前:名前は開発中のものです。 mailto:sage [2009/10/09(金) 00:27:24 ID:2lodFe32] 真赤にぬったスプライトを別に用意するしかないんじゃない?
465 名前:名前は開発中のものです。 mailto:sage [2009/10/09(金) 02:01:41 ID:m1aFnmHw] ステージエディット機能を持ったSTGをつくろうとしているんですが、 ステージを配列で表現してexecute_fileでステージ開始時に読み込んで、 敵を記述したタイミングで生成させたいのですが、 適切なコードがうまく思いつきません。 配列以外で何とかする?処理方法でなんとかなる? 全部走査して現タイムラインと発生タイミングが一致すれば生成 -------------------------------------------------------------- for(敵番号=0;敵番号<敵数;敵番号++){ if(stage[敵番号,敵発生タイミング]==timeline){ create(stage[敵番号,敵各種ステータス]); } } timeline++ -------------------------------------------------------------- →1ステージにおける敵数が増えると1ステップ内でどんどん処理が重くなる 指定したグリッド番号になったら生成 -------------------------------------------------------------- create(stage[グリッド番号,敵各種ステータス]); グリッド番号++ -------------------------------------------------------------- →ステージが長くなるとどんどん配列が増える&発生しない間の配列は無駄領域 →1グリッド1体しか出ない 現在は全部走査して現タイムラインと発生タイミングが一致すれば生成という方法で 行っていますが、敵の数が300をこえたあたりからゲーム速度が落ち始めます (step内でforループしているので当然といえば当然ですが)
466 名前:名前は開発中のものです。 mailto:sage [2009/10/09(金) 02:08:26 ID:v0opj/4E] >>465 そもそも画面外の敵まで処理するのが無駄なわけで。 最初に全インスタンスを作成し、 画面外のインスタンスを非アクティブに、 画面内のインスタンスをアクティブにする。 領域の微調整はお好みで。
467 名前:465 mailto:sage [2009/10/09(金) 02:13:21 ID:m1aFnmHw] あぁ・・・なるほど、確かに言われてみれば いちいちリアルタイムに生成する理由がなかった・・ 回答ありがとうございました。 製作頑張ろうと思います。
468 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 16:56:18 ID:+ewObIUy] >>464 やっぱりそれしかないですか ちょっと画像枚数が多いので、全部にそれをやるのはちょっと厳しい…… これは諦めざるを得ませんかね
469 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 18:30:40 ID:BwUsupN7] 日本語サイトが復活しないのでbGMとjfontmakerの使い方を教えて欲しいのですが
470 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 19:31:46 ID:UjbbZPTx] 前上げてあったの貰わなかったのかよ・・・>フォント
471 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 20:21:53 ID:xlBokYU2] >>463 d3d_set_fog(true, c_red, 1, 0); draw_sprite(...); d3d_set_fog(false, c_white, 0, 0); という手法があるけど、ビデオカードによっては動かないものもあるとか
472 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 00:53:20 ID:yhSo2Kg3] bGMは俺も教えてほしいな 保存してくれてる人が居ればだけど
473 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 09:45:59 ID:gVfZj0xn] Preload textureってあくまでビデオメモリに読み込ませるかどうかで これにチェックがついてようがついてまいが、GMの中に入ってるファイルはすべてメインメモリに読み込まれてしまうんですね。 メモリに落としたくない場合は、sprite_addなどで、外部から取り込ませるしかないのでしょうか? あと実験で、1000*1000の1.7KBのgif画像を10枚ほどいれてみたのですが そうしたらメモリ使用量が一気に80MBくらい増えました。 もちろんPreload textureは未チェック、ゲーム中は使用せず、ただGMの中に入れただけです。 元の画像がgifだろうがpngだろうがbmpだろうが関係なく、ただ画像の縦横のサイズだけで 使用するメモリ量が決まってしまうのでしょうか?
474 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 10:29:22 ID:gVfZj0xn] 追記 bmpの画像を10枚追加してみたり、256色フルに使ったgifを10枚追加してみたり実験しましたが 白一色1000*1000のgif画像を10枚追加した場合と、メモリ使用量はまったく変わりませんでした GMは減色や画像の軽量化などまったく無意味で、ただ画像の縦横のサイズのみに依存するのでしょうか
475 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 18:10:28 ID:yhSo2Kg3] 検証乙 俺は仕組とかわからんが、本当ならイベント絵とか入れにくくなるなぁ
476 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 18:43:47 ID:rJ+6eFS4] 元の画像形式が何であろうと、内部には独自形式で格納されるからね。 簡単なランレングス圧縮はしていると聞いたから、白一色と複雑な画像では gmファイルやexeのサイズに差が出るかもしれない。 でも、実行時にはメモリ上にベタのビットマップで展開されるはずだから 結局メモリ使用量は変わらんと思う。
477 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 19:02:33 ID:gVfZj0xn] んー、やっぱりそうですか チマチマと減色しても、メモリ的にはまったく意味がないということですね。 容量的には数十KB軽量化させたところで大した違いはないし 気にせずPNGでも使っちゃった方いいのかな GM8ではPNGが完全サポートされるそうだけど、せめてBMPではなくPNGにしてくれれば かなり軽量化されると思うんだけどなー そこらへん早く8の情報が欲しい
478 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 19:08:05 ID:gVfZj0xn] ああ、PNGはメモリ上ではBMPと変わらないから意味ないのか・・・
479 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 22:40:21 ID:9H0VFjWv] ttp://web.archive.org/web/20080528024340/gamemaker.main.jp/modules/articles/article.php?id=25 ↑ bGMの使い方 画像は表示されんがまぁなんとかなるだろう
480 名前:名前は開発中のものです。 mailto:sage [2009/10/12(月) 00:43:46 ID:Yf0rwGMO] 激しく乙 デフォでogg対応せんかのぉ…(´・ω・)
481 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 11:39:19 ID:k4QiVC+d] >>473 検証乙。 俺は数百枚の画像ファイル使ってるから、スプライト系は殆ど外部で管理してる。 スプライトのロードと破棄でもメモリ食うけど、大きい画像一枚GMに入れることに比べれば誤差の範囲だ。 それで思ったけど、100程度のインスタンスに200程度の変数を定義すると 理論上は100*200*8 = 160kのメモリを使うのか。 今まではこの変数全部txtファイルに書き込んでおいて、 特定のインスタンスが必要なときのみそれを読み込んでたけど これってもしやかなり無駄だよな…。 画像ファイル一枚節約した方が全然効率的そうだ。 配列がどの程度容量食うかはテストしてないけど。
482 名前:名前は開発中のものです。 [2009/10/13(火) 12:29:36 ID:cOJqt8LB] どうせGIFだからたいしたことないだろと思って、スプライトがんがん追加してきたんだが、これが原因でメモリバカ食いしてたんだな 俺もspriteaddで画像読み込みしないとダメか ところで、スプライトのロードと破棄でメモリ食うってどういうこと? スプライトを破棄してもメモリのなにか残るの?
483 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 15:07:47 ID:lHAcX872] (スプライトを使った)オブジェクトの破棄でメモリは開放される と思ってたが違うのか
484 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 17:44:59 ID:KdDxZr1F] メモリ解放されても、普通は断片化してるから、ガベージコレクションしないとダメで、 ゲームだと実行中にガベージコレクション発生すると、そのとき速度が落ちるから、 普通は自動的にガベージコレクションされない仕様なのが多い。 GameMakerがどういう仕様かは知らないけどね。
485 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 21:29:42 ID:4QV/eOoe] 実験で仮にこんなの実行してみたけど、特にメモリは増えなかったよ for (i = 0;i <=1000; i+=1) { test[i] = sprite_add(...); sprite_delete(test[i]); }
486 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 21:32:50 ID:4QV/eOoe] >>483 sprite_delete();を使わない限り、スプライトのメモリは開放されないよ sprite_addでローカル変数にスプライトを入れてたなら別かもしれないけど
487 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 23:15:10 ID:lHAcX872] >>486 てことは sprite_addじゃなくエディット画面でオブジェクト作ってるヘタレな俺は sprite_deleteをちゃんと実行しないといかんわけか でもGML(sprite_add)を使う人もsprite_delete使うよね?あれ? すまん、混乱してきたorz
488 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 00:41:38 ID:bv2mAVIJ] 最初からGameMakerのファイルにスプライトを入れてる場合は 起動時にすべての画像がメモリにロードされて、終了するまで開放されることはない。 よく言われるPreloadはあくまでビデオメモリに落とすかどうかで これにチェックが入っていようがいまいが、メインメモリにはすべて落とされる 使わないスプライトをメモリに落としたくない場合は、exeの外に画像ファイルを用意しておき 必要なたびにsprite_addなどで読み込ませるしかないみたいだ そして、もちろん必要なくなったらsprite_deleteでスプライトを削除してやることを忘れずに これらの一連の作業は、ある程度GMLを理解してないとキツイね。 ただ、小規模なゲームならば、メモリはそんな気にしないでガンガンスプライトを作っちゃっていいと思う。 GMLを使わないなら、そんな大規模なゲームじゃないでしょ。
489 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 00:42:51 ID:bv2mAVIJ] あ、もちろん最初から入れてあるスプライトも、sprite_deleteで消すことは可能だよ ただ、また使う際にはsprite_addで入れ直してあげないといけないけど
490 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 00:51:50 ID:GGZRIxG7] >>488 なるほど、何となく分かったかも 丁寧な説明ありがとです 頑張ってGML勉強しようかのぉ
491 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 05:29:38 ID:RnMcuV0D] ちょっと言葉が足りなかったようですまん。 スプライトのロードと破棄でメモリを食うってのは、sprite_add(...)で外部からメモリ内にスプライトを読み込んだ後、 数ステップ後にsprite_delete(...)でそのスプライトを破棄すると スプライトを読み込む前よりメモリ使用量が若干(16kBほど?)増える現象のことを指してた。 上昇量はテストする度に異なったりするから、環境依存なのかもしれないけど。 詳しい仕組みは知らないけど、>>485 のテストは1ステップ内で行ってるから状況が少し異なるのかも? 検証してみる価値はあるか。
492 名前:名前は開発中のものです。 [2009/10/14(水) 07:48:51 ID:YxYD41xX] スプライトそのものは消えても、衝突判定などの設定情報が残ってるとかか?
493 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 17:24:39 ID:GGZRIxG7] 何か皆詳しいなぁ てか皆の話色々平均すると、台詞表示するときって 「全台詞スプライト用意」より 「a〜z、あ(ア)〜ん(ン)、あと諸々分の小さなオブジェクト沢山作って台詞作り」のがいいのかな (台詞量にもよると思うが) 前日本語ファイルで「オブジェクトは少ないのがいい」だけ鵜呑みに してたからそうしようとは思わんかったのよね
494 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 18:48:17 ID:133VTP3G] >>491 メモリを解放しても、そのメモリがすぐシステムに返却されるとは限らない (次にメモリが必要になったとき再利用するためにとっておくから) add→delete→add→delete…と繰り返しても使用量がどんどん増えたりせず 一定範囲でとどまるようなら、ちゃんと解放されていると思っていいんじゃないかな >>493 スプライトを文字数分用意するにしても、オブジェクトは一個でいいだろ。 Drawイベントでスプライト組み合わせて文字列描画させればいい。 もちろんスプライト一個描画するよりは遅くなるし、 文字数分のスプライト用意する分手間がかかるから (パフォーマンス+開発効率)とメモリ消費のどっちをとるかのトレードオフになるな。
495 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 21:42:30 ID:GGZRIxG7] >>494 文字列組み合わせるつもりではいたけど、 それが沢山のオブジェクトである必要はないのか gifとか忘れてた俺アホスwww そうだよね、エディット画面でできることだよねorz >一個 確かに台詞自体を用意する方が早いねぇ、楽だし まぁ自己満クオリティな間は効率をとるのがいいかなぁ とりあえず完成させるのが大事だし
496 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 22:00:33 ID:GGZRIxG7] 間違えた。俺が言いたかったのは 「台詞一個」と「台詞内の文字数分のオブジェクト(がroomに存在)」の比較だ ま、でも後者は管理・労力が大変だし、結局前者が無難か・・・
497 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 22:27:53 ID:bv2mAVIJ] たしかになんか不安定な気がするね>sprite_delete 試してみたけど、追加→削除前に比べてメモリが増えたと思ったら、今度は減ったりした そして同じ動作を何回も繰り返していくうちにメモリの変動が安定してくる
498 名前:名前は開発中のものです。 mailto:sage [2009/10/15(木) 02:52:17 ID:LmGjEFod] 俺も試してみたけど、確かにメモリが一向に上昇し続ける傾向はないみたいだからとりあえず大きな問題はないか。 >496 よこしまさんのmbtextを使えば? 台詞を後で推敲することを考えると、stringで台詞を用意してそれをmbtext_drawで描画する方が遥かに楽 台詞ごとにスプライトを用意していると、台詞が増えたときに挫折しそう ここで少し時間を投資してmbtextの使い方を覚えた方がいいと思う(使い方って言っても簡単だし) それと、>494の言っていることはgifともエディット画面とも関係ない
499 名前:名前は開発中のものです。 mailto:sage [2009/10/15(木) 10:25:42 ID:qb9kY2ep] 一つのスプライトに複数文字を格納することを理解したんだから 別に関係なくはないだろ
500 名前:名前は開発中のものです。 [2009/10/15(木) 15:40:28 ID:Wyrl5rE9] 8はwindows7に対応させてからの発売になるのかなー
501 名前:名前は開発中のものです。 mailto:sage [2009/10/19(月) 21:40:12 ID:IlnPQ80k] GM、6以降のバージョンなら現在のPCでは普通に動くのだろうか…… 新しいグラボだと、5.3AはDirectXの機能オフにしないと15フレームしか出ないんだよなー。
502 名前:名前は開発中のものです。 mailto:sage [2009/10/19(月) 22:50:53 ID:FNTjSUVF] Direct3D 11 は、凄まじく面倒になる可能性がある。 ただでさえ今まで固定でやってたブレンディングやアルファテストがシェーダになっているのに 固定機能を廃して全部シェーダになってしまった 効率よく働いてくれることを期待しないほうがいい むしろ悪化する
503 名前:名前は開発中のものです。 mailto:sage [2009/10/20(火) 09:38:45 ID:c6RaFjAq] 音楽をfpsとかに合わせてきっかり流す方法ってないですか? 流したいところで音楽が微妙にずれたり画面が処理落ちしてるのに音楽が平常に流れるせいでずれが発生して困ってます。
504 名前:名前は開発中のものです。 mailto:sage [2009/10/20(火) 15:25:37 ID:6YHJoqlj] 処理落ちに合わせて流れている音楽をいじる、ってのはまず無いわな。 そういうわけで、いじる対象を逆転させてみた。 音楽の再生云々をいじるのではなく、 まず音楽を再生させて、 再生開始からの経過時間を利用してゲーム内の動作を処理する。 処理落ちに対応できる方法と考えると、こうしか思いつかなかった。 時間を利用してゲーム内の動作を処理するとは言ったが、別に全てを時間基準にする必要はない。 ただこの方法を使うときは、時間を基準に処理するものとフレームを基準に処理するものとを明確にわけること。 まぁこれは再生時間に合わせて流れるスタッフロール的な物をイメージして考えてみたんで、 複雑なものになると、どこまでできるかはデザイン次第、かな? ちなみにこの例だと、時間を基準に流れているので、 例え処理落ちしても、ゲームの処理がしばらく止まっても、 再生開始から5秒経過したのなら5秒後の位置、10秒経過したのなら10秒後の位置に動かす、という仕組み。
505 名前:名前は開発中のものです。 mailto:sage [2009/10/20(火) 20:57:37 ID:SLMjJuQO] RC出てるな。 ソースエディタ、draw_txtともに日本語通らないの確認した (バグトラッカでも今後の非対応明言されてた) 日本語化はできないんだっけか。
506 名前:名前は開発中のものです。 mailto:sage [2009/10/20(火) 22:59:14 ID:Rv9BzQJ5] 昨日このソフトを発見し、こちらでゲーム作りを試みている者です 凄く初歩的な質問で申し訳がないのですが 大まかな動きのつけ方や操作方法はチュートリアルで理解する事はできたのですが それ以上のものを作ろうとするとそれ以降は自分で虱潰し的にアクションを試すしかないのでしょうか たとえばexe形式となっているソフト等を参考にしようとしても、開けませんよね >>336 で「公式のPlatformで検索すると参考になるものが〜」とありますが、確かに このソフトにおける可能性は見出せましたけども、やはりexe形式で挙げられているから中身を見て参考にする事はできませんよね・・・
507 名前:名前は開発中のものです。 mailto:sage [2009/10/21(水) 01:33:15 ID:Q98BhYv9] >>506 まずマニュアルをじっくり一通り読もう! そして小さい規模でもいいから自力でなにか作ってみること だんだん出来ることが広がっていくはず。
508 名前:名前は開発中のものです。 mailto:sage [2009/10/21(水) 01:51:14 ID:bzUL/ied] 暇な時にヘルプを眺めながら、色々試していくのが一番だね 急がば回れだ
509 名前:名前は開発中のものです。 mailto:sage [2009/10/21(水) 21:01:14 ID:K7bGjyPl] 何かに合わせるのは、普通イベントで判断する。 まあOSや言語、インターフェイスによってはフラグとかも言うが 何かを始めるときは、イベント元にする。 フラグを立てる。でもいい こうすると、処理が始まってから別の処理が行われることが保証される。 最初の処理が遅れれば、後の処理もそれに合わせて遅れるだけだ。
510 名前:名前は開発中のものです。 mailto:sage [2009/10/21(水) 21:06:06 ID:K7bGjyPl] サウンドと画面を連動させたいならば、 サウンドファイル再生をやめること。 昔ながらのサウンドプログラミングなら メインスレッドとサウンドスレッドは平行して処理されるから どちらかが遅れるともう片方も遅れる。 サウンドプログラミングは、インタープリタのように逐次発声だからだ サウンドファイルだと、最初に読み込んでから鳴らすだけなので それほどの負荷でないから遅れる・止まるってのは余程の負荷がかからないと起こらない。 昔は、サウンド構築のためだけのプログラマ、サウンドプログラマなんて職があったのだ それと同じことをやればよい。
511 名前:506 mailto:sage [2009/10/21(水) 22:53:42 ID:7kid7kXI] レスありがとうございます 一通りヘルプを見てみます
512 名前:名前は開発中のものです。 mailto:sage [2009/10/21(水) 23:30:57 ID:K7bGjyPl] 一番真っ当なやり方は ・負荷を減らす ・動作必須環境を上げる これくらいだろう 負荷を減らすのは以外に単純 別に走らなくてもいいような変なルーチンが走ってないか 妙に割り込まれてないか ルーチンが走る順番は正しいか 無駄に複雑なルーチンでないか これを完璧にこなしてもダメなら最低動作環境を上げるだけ
513 名前:名前は開発中のものです。 mailto:sage [2009/10/22(木) 03:15:18 ID:QcCk0qNG] 横スクロールアクションを作っているのだが プレイヤーをカメラが追っていく設定にして、そのカメラの座標?とか設定してやると 32,32以外でやると地震がおきたかのように画面がガクガクになるんだが スクリプトとか必要なのか?
514 名前:名前は開発中のものです。 mailto:sage [2009/10/22(木) 03:17:32 ID:QcCk0qNG] 悪い 自己解決した
515 名前:名前は開発中のものです。 [2009/10/22(木) 18:07:09 ID:9bnTpD/d] いつになったら サイトは復活するのか。
516 名前:名前は開発中のものです。 mailto:sage [2009/10/22(木) 23:07:47 ID:QcCk0qNG] 俺もサイト復活してほしい、プログラムとかスクリプトに対してほとんど無知だと壁が多い 今2Dアクション作ってて手探り状態なんだけども ・左の壁にぶつかるとなぜかバウンド?して一歩ほど戻る ・向いてる方向に攻撃ができるようにしたい(現状だと一方方向、X+の方面にしか玉が打てない) ・ニコ動の解説動画みたけど、変数関係の応用方法がわからない 何が何発あたれば敵が死ぬとかのイベントの配置場所(弾のオブジェクトだとか敵のオブジェクトにだとか)がいまいちはっきりしてない 3時間ほど粘ってるんだけどもしかして俺がマニュアル見落としてたりするのかな このスレ眺めててそういう類の質問を見ないから畏れ多い・・・
517 名前:名前は開発中のものです。 mailto:sage [2009/10/23(金) 01:25:24 ID:x6bl6P0C] >>516 公式で.gmkなりぐぐると幸せになるかも 俺はそれでどうにかしてる
518 名前:名前は開発中のものです。 mailto:sage [2009/10/23(金) 03:48:20 ID:QbMhH9cO] 3時間ならよくあること それを半年続ければこのスレで言われていることは理解できるようになるんじゃないか ちなみに向いている方向に攻撃をするには、弾を発射するオブジェクトのimage_angleと弾のdirectionを一致させればいい 弾の衝突判定イベントは敵オブジェクトに設定して、衝突ごとに敵オブジェクトのlifeを減らす んでlife <= 0の時にオブジェクトを破壊、って感じだろう このあたりは過去ログも参照するといい
519 名前:名前は開発中のものです。 mailto:sage [2009/10/23(金) 08:55:04 ID:wQYLsPFR] 向いてる方向に弾が… ってよく聞くけどそんなに難しいかなぁ〜? とりあえず俺はExample内ので幸せになった 2Dアクションのやつ
520 名前:名前は開発中のものです。 [2009/10/23(金) 16:11:44 ID:vXjEA+RQ] 最初は、誰もが効率の悪いコードを書く。 if() if() if() for() のように。 例えるなら、ifの数を減らすのが上級者である。 また、if( Fuckintosh == 0 )とかは論外。 上級者は if( !(Fuckintosh) && ((FuckOSX >> 3) += FuckMac) << 6 || (FuckMac & FuckJobs) >> 2 ) などというように書く。 激しく読みづらいが。
521 名前:名前は開発中のものです。 mailto:sage [2009/10/23(金) 19:08:08 ID:BKp0y/1T] >>520 そこまで出来るようになったらGameMaker卒業してC++に行ってると思うぞw C++やってて息抜きでGM使ってる自分が言うのもアレだが
522 名前:名前は開発中のものです。 mailto:sage [2009/10/23(金) 19:13:04 ID:wEq8MK8l] >>520 他の言語だったら正しいと言いたいところだが、GMLだとifの数を減らすことが必ずしも効率がいいとは言えないかな。 ヘルプ>The Game Maker Language (GML)>GML Language Overview>Expressions から抜粋 Please note that, contrary to certain languages, both arguments to a Boolean operation are always computed, even when the first argument already determines the outcome. 例として、if (false && true && true && a)を使う。 他のプログラミング言語が上のコードを処理するとき、 最初のfalseを見た瞬間に他を見ることをやめる、ということがある。 何故なら、他の変数が何であれ結果はfalseと決まっているから。 だがGMLの場合は他の言語と違って常にチェックされる。 例え、最初のfalseの時点で結果はfalseと決まっているとしてもだ。 (まさに「even when the first argument already determines the outcome」の部分) 従って、 @if (a && b) Aif (a) if (b) の二つを比べた場合、 @の場合は、aもbも常にチェックされるが、 Aの場合は、aを満たさないとき、bのチェックが省かれるため、 Aの方がいい、ということになる。 よりわかりやすくすると、if (a && b && ......)と条件が大量にある場合を想定してみれば、 大量の条件を全てチェックするのと、最初の条件を満たさないときに処理をやめるのと、 どちらが効率がいいかがわかるだろう。 勿論、処理よりも行数の効率を重視したいというのなら話は別だが。 まぁ、効率を考えるレベルのプログラマが処理の効率を捨ててまで行数に拘るとは思えないけど。
523 名前:名前は開発中のものです。 mailto:sage [2009/10/23(金) 21:42:14 ID:aDXhBeYl] >>522 やっぱGMって直感的な構成がやり易いな 俺のような初心者にはありがたいことだ
524 名前:名前は開発中のものです。 mailto:sage [2009/10/23(金) 22:32:30 ID:x6bl6P0C] 今更だけど、このツール国内じゃあまり普及してないのかな もしかして国外じゃめっちゃ使われてるとか? 俺の比較してる対象がHSPだからそう思ってるのかもしれないけど もしかしてHSPに比べると自由度がめっちゃ低いのかな・・・ このツールで作成されたゲームとかアイワナビーザガイとニコニコアクションくらいしかしらない
525 名前:名前は開発中のものです。 mailto:sage [2009/10/24(土) 00:37:14 ID:/xeTG7ka] Gameメーカーのスレッドあったんだw 敵オブジェクトを地面に着かせたいのと、左の壁あたってもはじかれないようにしたいんだがどうすればいいんだ
526 名前:名前は開発中のものです。 mailto:sage [2009/10/24(土) 01:31:35 ID:6tGvwTyZ] 516と同じ質問かよ だからサンプルで勉強しろとあれほど… てか逆に何故バウンドするんだ
527 名前:名前は開発中のものです。 mailto:sage [2009/10/24(土) 02:49:25 ID:iUo6fmPV] バイナリ演算子を理解していないことが俺のレベルの上がらない原因なんだよなorz 今地道に勉強しているが、具体的な例を用いた言い換えがないとなかなか頭に入らない 誰かに>>520 の例をifやforに戻してみて貰えるとすごく嬉しいんだが…
528 名前:名前は開発中のものです。 mailto:sage [2009/10/25(日) 04:07:52 ID:VVt17ygj] 日本の非公式フォーラム復活しないかな・・・・・・・
529 名前:名前は開発中のものです。 mailto:sage [2009/10/25(日) 04:16:31 ID:VVt17ygj] もしくはニコニコの解説動画の人が生きてていつか続きうpってくれることを願う
530 名前:名前は開発中のものです。 mailto:sage [2009/10/25(日) 23:36:50 ID:Y6pUx3+I] しつこいぞ、気長に待つんだ
531 名前:名前は開発中のものです。 mailto:sage [2009/10/26(月) 19:35:46 ID:2tTUIu1T] 最近気付いたんだけど、GM6からはexeが圧縮されてるのね 5.3Aとか圧縮すると1/10になったりもするのに、6は再圧縮しても殆どサイズかわらないや
532 名前:名前は開発中のものです。 mailto:sage [2009/10/26(月) 23:08:40 ID:QL6sd3s/] どなたか不思議のダンジョン風ゲームのダンジョン自動生成についてヒントを下さい・・・ 移動可マスをランダム配置→上下左右に移動可が無い移動可マスは左右どちらかに移動→(ryとかもう書いてる内に混乱してきた まあそんなこんなで作ってますがどうしてもマジなランダムダンジョンになってしまい、 トルネコやシレンの様に曲がった道があってその先に部屋があって〜みたいなゲームらしい物になりません よろしくお願いします
533 名前:名前は開発中のものです。 mailto:sage [2009/10/26(月) 23:16:22 ID:58AaIO4i] ttp://d.hatena.ne.jp/Gemma/20070816 こことか参考にしてみたらどうだろう ローグライク、マップ生成とかで検索したら結構出るよ
534 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 00:39:03 ID:SmcAvcZx] >>524 あとはミックマンXとかナイトメアスフィアなんかが評価高い 両方とも同じ作者だけど
535 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 17:38:28 ID:XGT5kS6x] >>532 最初に部屋を配置して、それらをつなげるように道を作れば? 道自体も一見ランダムに見えて数パターンを組み合わせてるだけだと思う。
536 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 23:28:25 ID:mujP0Qvl] アクションゲームを作っているのですが 移動アニメーション作成する前は普通に移動しながらの攻撃ができたのですが 移動アニメーションをつけてからだと、移動しながら攻撃ができないどころか 移動してからだとなぜか攻撃のキーがきかなくなります、イベントに問題があるのでしょうか 左は <Left> Change sprite into (左向き立ちポーズ) else ifposition is collision free start of a block set the horizontal speed end of a block else start of a block set the horizontal speed end of a block release<Left> change sprite into (左歩き) Set the horizonal speed 右はこれの逆です
537 名前:名前は開発中のものです。 mailto:sage [2009/10/28(水) 02:17:22 ID:wMhLqr8I] アニメーション発動中は弾が撃てないってのがなんとなく理解できたのですが それをどうすれば撃てるようになるかなんですよね・・・ちなみに5.3です
538 名前:名前は開発中のものです。 [2009/10/28(水) 19:24:48 ID:W+fx9TAl] アニメーションをやってる間は他の事を受け付けない こういうとき、そこらにある売りモンのゲームなら 割り込みで受け付けるから、いついかなるときでもボタンを押したらそのとおりにできる。 もちろん、押しても受け付けられないようにもできる。 ダッシュから一定時間はボタン押しても何も出ない、なんてのはまさにマスキングによる割り込み無視だ GMが割り込みできるかどうかは知らん ただDirectInputは、常にボタン押したら割り込みとして受け付けている。 あとはゲームエンジンがそれを無視するかしないかだけだ
539 名前:名前は開発中のものです。 mailto:sage [2009/10/28(水) 21:07:01 ID:wMhLqr8I] >>538 なるほど、仕様な訳ですか・・・ 走りながら銃うつゲームあった気がするんだけどなー
540 名前:名前は開発中のものです。 mailto:sage [2009/10/28(水) 21:43:02 ID:Hbmt8JBN] スレチだが Multimedia Fusion(クリック&プレイの系列)の国内版が出るそうだ ttp://www7.atwiki.jp/mmf2/ GMもこういう展開あったらいいのに
541 名前:名前は開発中のものです。 [2009/10/28(水) 21:54:10 ID:W+fx9TAl] 仕様というか、ゲームエンジンが 「このアニメーションはここからここまでだから これを終えるまでは殴るのをやめない!」 などと頑固である場合は アニメーションを細切れにしてしまえばよいのだ。 それなら、アニメーションの合間合間でボタンの受け付けがなされる。 まあ本来こういうのはゲームプログラミングとしてあってはならないこと。 単純に負荷になるだけだからだ。 だから一番いいのは割り込み でもできない、そういう機能がないってんならしょうがない。 たいていは割り込みに相当する機能があると思う 組み方にクセがあるにせよ
542 名前:名前は開発中のものです。 mailto:sage [2009/10/28(水) 21:57:41 ID:Hbmt8JBN] >>536 攻撃ができないんだから、攻撃部分のスクリプトに問題があるんじゃない? うpしたらわかるとおも 少なくともアニメ中にイベントがキャンセルされるようなことはない。 そんななったらまともなゲーム作れんわ
543 名前:名前は開発中のものです。 mailto:sage [2009/10/28(水) 23:19:15 ID:HABZAlfr] 上げてる人は釣り・・・?
544 名前:名前は開発中のものです。 mailto:sage [2009/10/29(木) 00:53:02 ID:oT5avUlp] 書き方に問題があるんだろう 例えば全てキーボードイベントで処理すれば問題なく作れるはず if keyboard_pressed(vk_right) sprite_index = sprite_left; //左移動用のスプライトに変更 x += 5; //オブジェクトを右に5ピクセル移動 if keyboard_check_pressed(vk_enter) instance_create(x, y, object); //自機の位置にオブジェクト(弾とか?)を生成 みたいな GMLで書いたけど、そこは適当に翻訳してくれ
545 名前:名前は開発中のものです。 mailto:sage [2009/10/29(木) 00:53:50 ID:oT5avUlp] 間違えた keyboard_pressed(vk_right)じゃなくてkeyboard_check(vk_right)だ
546 名前:名前は開発中のものです。 mailto:sage [2009/10/29(木) 17:08:47 ID:WqxdblOH] そもそも悩むほど複雑な処理でも無い気はする
547 名前:名前は開発中のものです。 mailto:sage [2009/10/31(土) 21:46:27 ID:xSvTmVCN] 作ったsurfaceを描画するときに、余計なノイズが入ってしまうのですが、 surface_createした後にsurfaceを一度綺麗にする方法はありますか? 透明色を使用したいので、色で塗りつぶす方法は避けたいです。 バージョンは6.1Aです。 >>Note that the surface will not be cleared. >>This is the responsibility of the user. >>(Set it as a target and call the appropriate clear function.) 作ったsurfaceはちゃんと綺麗にしないとダメですよって書いてあると思うんですが、 透明色で塗りつぶす・・・ようなことは出来るのでしょうか・・? gmdev.xrea.jp/st/up/70.png mbtext_draw_test(Text); length = global.mbtext_textarea_width; surf = surface_create( length , 16); surface_set_target(surf); //draw_rectangle_color(0,0,length,16,c_black,c_black,c_black,c_black,0); mbtext_draw(Text); surface_reset_target();
548 名前:名前は開発中のものです。 mailto:sage [2009/11/01(日) 00:17:41 ID:NOlFRA2M] surfaceをdraw_surface()系の描画関数で描画するときには、透過情報は失われてしまう模様ですな。 で、まず思いついた方法。 ニ度手間になるけど、sprite_create_from_surface() を使って、 surfaceに作った画像をスプライト登録し、そのスプライトを描画させるようにするといける。この方法は当然単一色ででsurfaceをクリアしておく。 手前でちょこっと実験してみたら、うまくいった。 ただし、元のフォントスプライトリソースがアンチエイリアス無しで作られている場合だけどね。 この理屈だと、 元のフォントスプライトリソースがアンチエイリアス+透過情報有りで作られてる場合、 surfaceに描画した時点で透過情報は失ってしまうことになる。 元画像のアンチエイリアスの効果を残したかったら、 surface から取り込んだスプライトリソースに対して、 sprite_set_alpha_from_sprite()をうまく使うなりして、 再度透過情報も加えないと綺麗に表示されない。(3,4度手間になることに・・・)
549 名前:名前は開発中のものです。 mailto:sage [2009/11/01(日) 11:20:44 ID:NOlFRA2M] すまない、上でグダグダ書いた者だけど、 draw_clear_alpha() という関数があった。 これは、ターゲットのフィールドを指定した色とアルファ値でクリアするというもの。 >>547 のコードで、 mbtext_draw_test(Text); length = global.mbtext_textarea_width; surf = surface_create( length , 16); surface_set_target(surf); //draw_rectangle_color(0,0,length,16,c_black,c_black,c_black,c_black,0); // の代わりに ↓を追加 draw_clear_alpha(c_white, 0) // この場合アルファ値は完全透過でクリアするべきなので、色は何でも良いと思う mbtext_draw(Text); surface_reset_target(); とするとうまくいく。
550 名前:名前は開発中のものです。 mailto:sage [2009/11/01(日) 11:49:58 ID:/eF20zDt] 透明色で描画する関数あったのか・・・ surfaceとcolor周りの関数だけ見て そっちを見落としていた様です。 速度の面からもsprite_createは避けたかったので助かりました 日本語ヘルプだけじゃなく6.1のヘルプも読むようにしないとなぁ 回答ありがとうございました
551 名前:名前は開発中のものです。 mailto:sage [2009/11/08(日) 22:44:07 ID:5mg8aONh] なんだかんだあがいたけどSDLにしちゃったよ Linuxでも動かせるし じゃあな手前等
552 名前:名前は開発中のものです。 mailto:sage [2009/11/09(月) 08:18:16 ID:pkWhHVK8] いってら
553 名前:名前は開発中のものです。 [2009/11/20(金) 20:43:26 ID:WvDp0X0L] 非公式情報サイト復活age 長かった…
554 名前:名前は開発中のものです。 mailto:sage [2009/11/21(土) 13:25:52 ID:xPzj28Xc] 復活ktkr!!これで勝つる!! よこしまさん乙
555 名前:名前は開発中のものです。 mailto:sage [2009/11/21(土) 21:07:04 ID:p8joaSKx] すでにある程度わかってる人はいいけど 今度のGM人口の増加には重要なサイトだらかね
556 名前:名前は開発中のものです。 mailto:sage [2009/11/23(月) 14:39:30 ID:413ChW8D] あれだけ文句言ってた奴居たのに 復活しても反応が薄い不思議
557 名前:名前は開発中のものです。 mailto:sage [2009/11/23(月) 23:08:49 ID:6hXkMHG7] 元々人口少ないからな
558 名前:名前は開発中のものです。 mailto:sage [2009/11/24(火) 07:43:14 ID:KcyDZMVf] 32単位でランダムな数値を作りたいのですが32*random(x)だとどうも32の倍数になってくれません 例えば32、64、96のいずれかを作りたい場合random(3)に32をかければ良い筈ですよね random(10)の場合は1〜10までのどれか1つの数字になる、という考えはもしかして間違ってるのでしょうか? 是非とも解決法を教えて頂きたいです。よろしくお願いします。
559 名前:名前は開発中のものです。 mailto:sage [2009/11/24(火) 08:42:25 ID:1s+aAVax] 少数を忘れちゃいないかい? modを使って整数にして、それから32を掛ければいい。 ただ、random()から得られる数字は【0 ≦ X < 指定した数字】であることを忘れないこと。 つまり、32、64、96を作りたいのなら、 ・random(3) (0以上3未満の少数を含む乱数) ・mod 1 (得た乱数を整数に) ・+1 (0〜2を1〜3に) ・×32 (略) が必要。
560 名前:名前は開発中のものです。 mailto:sage [2009/11/24(火) 10:23:29 ID:3GFA5FP4] 自分はround(random(10))でやってる