08/05/11 01:43:10 PRhlwPyW
《Game Makerの特徴》
@ コリジョン(当たり判定)/スプライト/マップ/サウンド再生など、2Dゲーム作成にかかせない機能が充実
@ なにかと便利なイメージエディタを内蔵
@ プログラミングの知識はあってもなくてもよい
@ *.exe(単体実行可能)形式でゲームを出力できる
@ 作ったゲームは自己責任の元で自由に配布できる(作ったゲームを売る場合のライセンス料さえ不要!)
@ キーボード、マウス、ジョイスティックからのキー・ボタン入力をサポート
@ イベントドリブン型なのでスマートにゲームを構築できる
@ 組み込みスクリプト言語"GML"により、さらに細かい処理が可能
@ エンジンはDirect X
※有料登録(15ユーロ)するとゲーム起動時のロゴ表示が消えて3Dやエフェクト機能などが追加されますが、基本的に無料で充分使えます。
《Game Makerの欠点》
@ 英語ソフトなので、英語が読めないととっつきにくい
@ ツクール類とは違い、ゲームの"動き"から設計しなければならない(それがまた長所でもある)
3:名前は開発中のものです。
08/05/11 01:43:51 PRhlwPyW
《豆知識》
Game Makerの作者であるMark H. Overmars氏はオランダの超名門大学"Utrecht"大学の教授で、主にゲームデザインについて研究されています。
参考: URLリンク(www.cs.uu.nl)
《このスレの掟》
・Game Makerの略称はGMとする
・いきなり、「こんな素材ありませんか?」系の書き込みは避ける → 素材スレに行きましょう
・質問する場合には、「Game Makerのバージョン」「GMLを使えるか否か」をなるべく記す。
(必要に応じて、「ビデオメモリ容量」や「DirectXのバージョン」などを書くとなおよい)
現在主に使われてるGame Makerのバージョンには5.3Aと6.xがありますが、
5.3AはGame Maker 5.x系列の最終安定リリース版で、Game Maker 6.xは今のところ開発段階にあります。
●Game Maker 5.3A ダウンロード先:
URLリンク(www.gamemaker.nl)
●Game Maker 6 ダウンロード先:
URLリンク(www.gamemaker.nl)
5.3Aと6.xの詳しい相違点については以下を参照のこと:
URLリンク(gamemaker.main.jp)
4:名前は開発中のものです。
08/05/11 01:49:44 PRhlwPyW
【Gamemaker 6 日本語ヘルプファイル】
URLリンク(www.geocities.jp)
5:名前は開発中のものです。
08/05/11 01:51:35 PRhlwPyW
ごめん、前スレがそのままだった
前スレ:【2D】ゲーム作成ツールGameMaker part2【マンセー】
スレリンク(gamedev板)
前前スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】
スレリンク(gamedev板)
6:名前は開発中のものです。
08/05/11 01:57:21 ngsHwQAh
>>1-3
乙っす、自分もスレ立てしようとか思ってて追加情報とか書いてたら立ってたようなので・・・
んで、なんというか・・ちょこっと追加
初代スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】
スレリンク(gamedev板)
前スレ:【2D】ゲーム作成ツールGameMaker part2【マンセー】
スレリンク(gamedev板)
●Game Maker まとめWiki
(過去ログから質問をジャンル別にまとめてあったり、関数ヘルプなど)
URLリンク(www.wikihouse.com)
7:名前は開発中のものです。
08/05/11 01:59:26 ngsHwQAh
>>5
あうあうでしゃばってすません
8:名前は開発中のものです。
08/05/11 02:10:15 ngsHwQAh
とかいいつつもう一つ追加
○現在主に使われてるGame Makerのバージョンには5.3Aと6.1A及び7.xのいずれか
現状の最新バージョンは7.0です。
●Game Maker 7 ダウンロード先:
URLリンク(www.yoyogames.com)
ダウンロードにはサイト登録が必要
9:名前は開発中のものです。
08/05/11 15:38:01 cmOvm32X
前スレ終わりました。
なので、ここで続きの質問をさせていただきます。
ゲームオプションでマウスを消すとはどういう風にすればいいのでしょうか
なお、7を使ってるので英語で読めません。。
Global Game settingsって奴の中にあるのでしょうか?
具体的にご教授お願いします。
10:名前は開発中のものです。
08/05/11 16:01:38 /qP9TRX5
Global Game Setting > Graphicsタブ の Display cursor のチェックボタンをはずす。
11:名前は開発中のものです。
08/05/11 18:11:22 cmOvm32X
>>10
了解です。ありがとうございます。
12:名前は開発中のものです。
08/05/11 18:39:07 cmOvm32X
マウスの方は上手くいきました。
しかし、マウスカーソルの位置に向かって銃を構えた画像に変更するのが、
上手くいきません。。
レジストしてない場合、コードを書く必要があるけど
向きごとに別々にスプライトがあるのかそれともフレームが分かれてるのか、
全部で何方向あるのかとかで対応が違う。
まあ、何方向でも構わないからなるべくスムーズにしたいというのなら
>1. スプライトエディタで Animation > Rotation Sequenceの機能を使って
>360°分回転させたイメージを作る(36フレームくらいがおすすめ)
>2. StepイベントでVARアクションを使って次の変数を設定
>image_single = direction / 360 * image_number
これをすると一度はその方向を向きますが、後はまったく反応してくれません
13:名前は開発中のものです。
08/05/11 19:26:43 cmOvm32X
追記
一応自分なりにこれなら出来るんじゃないだろうかっと思う程度まで考えて、
その銃を構えるキャラクターのSpriteを45度の角度づつ計8個(1.270°2.235°3.180°4.135°5.90°~方向に銃を構える)
マウスポインタの位置がキャラクターに対してどの角度内にいるかでSpriteを変更したいと思います。
あと、Test Expressionで一文ぐらいなら出来ると思います。。
よろしくお願いします。
14:名前は開発中のものです。
08/05/11 22:15:44 cmOvm32X
Step Event:
if at position (1 <= x <= 333,-3 <= y <= -999) there is object obj_p001
set the sprite to spr_k001_08 with subimage 0 and speed 1
else
if at position (0,-1 <= y <= -999) there is object obj_p001
set the sprite to spr_k001_01 with subimage 0 and speed 1
else
if at position (-1 <= x <= -333,-3 <= y <= -999) there is object obj_p001
set the sprite to spr_k001_02 with subimage 0 and speed 1
else
if at position (-333 <= x <= -1,0) there is object obj_p001
set the sprite to spr_k001_03 with subimage 0 and speed 1
else
if at position (-333 <= x <= -1,1 <= y <= 999) there is object obj_p001
set the sprite to spr_k001_04 with subimage 0 and speed 1
else
if at position (0,1 <= y <= 999) there is object obj_p001
set the sprite to spr_k001_05 with subimage 0 and speed 1
else
if at position (1 <= x <= 333,3 <= y <= 999) there is object obj_p001
set the sprite to spr_k001_06 with subimage 0 and speed 1
else
if at position (1 <= x <= 333,0) there is object obj_p001
set the sprite to spr_k001_07 with subimage 0 and speed 1
この形に組みました。
(GMLでなく普通にです)
何となく、自分のしたいことは表せたのですが、一切反応してくれませんでした。。
間違っている所やこうしたらいいと言う意見をお待ちしております。。。
何度も何度も度々すみません。。
15:名前は開発中のものです。
08/05/11 23:56:50 AX4c16UA
スプライト8枚じゃなくて、1枚のスプライトでサブイメージ8枚にする
(1番目が右向き、2番目が右上、3番目が上、……と0°から反時計回りに並べる)
で、Stepイベントで
image_singe = point_direction(x, y, mouse_x, mouse_y) / 45
と設定すればいけるはずだけど。
(厳密に言えば、image_singleはGM6以降では廃止されているので、
image_indexを設定してimage_speedを0にするのが正しい)
ちなみにどうしてもスプライト別々でやりたいなら、
変数を一つ設定しておいて
set the variable direction to point_direction(x, y, mouse_x, mouse_y)
if expression (direction < 22.5 || direction >= 337.5) is true // 8角形に「?」のアイコンを使う
set the sprite (右向きのスプライト)
if expression (direction >= 22.5 && direction < 67.5) is true
set the sprite (右上のスプライト)
if expression (direction >= 67.5 && direction < 112.5) is true
set the sprite (上向きのスプライト)
……(中略)
if expression (direction >= 292.5 && direction < 337.5) is true
set the sprite (右下のスプライト)
みたいな感じに判定していく。ここまでくるとGML書いてるのとあまり変わらんけど、
アクションだと複数条件の組み合わせはうまく表現できないからね。
16:名前は開発中のものです。
08/05/12 00:15:01 Nz3aygB6
条件文が意味不明だ。なぜ、Check Object を使うのか。
条件にあるxとyの値が決め打ちなのも意味不明。
君がやりたいことは、
・マウスの方向によって画像を変更する
なのだろう?
なら、「マウスの方向」が条件になるはずではないか。マウスの座標は mouse_x mouse_y で知ることができる。
そして、自キャラから見たマウスの方向は、point_direction() という関数で知ることができる。
アイコンによる設定の説明は面倒なので、コードだけ書いとく。(Varアクションと TestExpression でできるけど)
ステップイベントにExecute Code アクションを追加して、中身を下のやつをコピペしてみ。
spr_k001_xx は向きにあわせたものに直してくれ。
direction = floor(point_direction(x,y,mouse_x,mouse_y)+22.5);
if (direction>=0 && direction <45) { //右向き
sprite_index = spr_k001_xx;
} else if (direction>=45 && direction <90) { //右上
sprite_index = spr_k001_xx;
} else if (direction>=90 && direction <135) { //上
sprite_index = spr_k001_xx;
} else if (direction>=135 && direction <180) { //左上
sprite_index = spr_k001_xx;
} else if (direction>=180 && direction <225) { //左
sprite_index = spr_k001_xx;
} else if (direction>=225 && direction <270) { //左下
sprite_index = spr_k001_xx;
} else if (direction>=270 && direction <315) { //下
sprite_index = spr_k001_xx;
} else if (direction>=315 && direction <360) { //右下
sprite_index = spr_k001_xx;
}
17:名前は開発中のものです。
08/05/12 00:15:38 Nz3aygB6
おわ、リロードすればヨカタ.... orzorz
18:名前は開発中のものです。
08/05/12 01:16:43 ikz1QGUi
>>15 >>16
返答ありがとうございます。
おお、出来ました
お二人ともありがとうございました。
ではまたいじってきます^^
19:名前は開発中のものです。
08/05/12 01:30:34 RmZAj2l+
プリミティブでテクスチャを綺麗に台形に表示するってのはできないのかね……
三角形単位だとやっぱ辛いか
20:名前は開発中のものです。
08/05/12 02:07:25 TpSXp6LY
>>19
三角形単位だと歪むね・・・。
64x64で、上辺32、下辺64、高さ64の等脚台形で、力技でこんなのやってみた。
比較的ゆがまないが、多数表示するのには向いていないだろうね
draw_primitive_begin_texture(pr_linelist,texid);
for (i=0;i<64;i+=1) {
draw_vertex_texture(16-i*16/63,i,0,i/63);
draw_vertex_texture(47+i*16/63,i,1,i/63);
}
draw_primitive_end();
21:名前は開発中のものです。
08/05/12 02:38:35 ikz1QGUi
>>16さんの文章を応用して、弾もマウスの方向によって変えたいのですが、
どう書き換えたらいいでしょうか。。書き換えていただけませんか?
22:名前は開発中のものです。
08/05/12 02:41:29 ikz1QGUi
あ、あとしっかりとマウスの方向に向かって回るようにしたら中心を動かすことになったので
動かしたのですが、そしたら弾の出る場所がおかしくなりました。。
どうしたら前のように銃口の座標から撃てるでしょうか
23:名前は開発中のものです。
08/05/12 03:03:27 4cPaCS6e
>>ID:ikz1QGUi
いいかげんにしろ。
「書き換えていただけませんか?」とか、失礼すぎ。人をツールのように扱うなよ。
あと、基本的なことが理解できてないようだから、
>>1の非公式サイトを読みながら、最低一ヶ月試行錯誤しろ。
今までの質問を解決する材料は、全て書いてあるし。
24:名前は開発中のものです。
08/05/12 09:26:48 RmZAj2l+
>>20
やっぱり簡単にはいかないのかな
弾幕シューティングの背景にするには軽くないといけないし……
四角面を張れれば簡単なんだけどなぁ
もうちょっと研究してきますです
25:名前は開発中のものです。
08/05/12 15:43:35 ikz1QGUi
>>23
すみません。。。以後頑張ってきます。。
26:名前は開発中のものです。
08/05/12 20:15:49 3BNN/6ib
>>25
こいつアホだろ
27:名前は開発中のものです。
08/05/12 20:18:50 5kQyHDOM
>>26
・・・何いってんの?
28:名前は開発中のものです。
08/05/12 20:57:52 IGlYgd9c
こんな過疎板って、無闇な批判が飛んでくるとは
GMもそれなりに知名度を上げてきたって事かねぇ、TonyuやZGE出し抜いてよくまぁ…
29:名前は開発中のものです。
08/05/13 00:13:26 jNkfDGaf
すいません、空気を読まずに質問させてください。
特定のボタンを押すと、前オブジェクトの動作が止まって
メニューが表示され、メニュー画面操作のみ受け付けるような
動作をさせたいと考えているのですが
いまいち、簡単な方法が思いつきません。
何か良い方法はありませんでしょうか?
30:名前は開発中のものです。
08/05/13 00:14:04 jNkfDGaf
>>29
「前」じゃなくて「全」の間違いでした…
31:名前は開発中のものです。
08/05/13 10:25:49 yM+gChpv
>>29
ポーズメニューみたいな感じなのかな。
それなら私が良く使う方法を一つ。
元のルーム(ゲーム部分)のルーム設定を「持続する」にしておいて、背景色を描画してないルーム(ポーズ部分)に移動する。
再描画されないのでメニューの後ろにだけウィンドウか何かを描画しておかないといけないけど。
元のルームに戻ればそのまま動作するのでそれっぽく見えるはず。
わかりにくくてゴメン。
32:名前は開発中のものです。
08/05/14 01:04:12 +oaQcg1C
direction = floor(point_direction(x,y,mouse_x,mouse_y)+22.5);
if (direction>=0 && direction <45) { //右向き
sprite_index = spr_k001_xx;
} else if (direction>=45 && direction <90) { //右上
sprite_index = spr_k001_xx;
} else if (direction>=90 && direction <135) { //上
sprite_index = spr_k001_xx;
} else if (direction>=135 && direction <180) { //左上
sprite_index = spr_k001_xx;
} else if (direction>=180 && direction <225) { //左
sprite_index = spr_k001_xx;
} else if (direction>=225 && direction <270) { //左下
sprite_index = spr_k001_xx;
} else if (direction>=270 && direction <315) { //下
sprite_index = spr_k001_xx;
} else if (direction>=315 && direction <360) { //右下
sprite_index = spr_k001_xx;
}
前に教わったこの文章を応用して、プレイヤーキャラクターを追うキャラが、
プレイヤーキャラクターのいる角度によって画像を変えたいのですが、どこをどう返ればいいでしょうか。
あと、前は何度も何度も質問してすみませんでした。挙げ句の果てに、書き換えて欲しいなどと。。
以後頑張りますは以後自分で頑張りますの間違いです。
色々すみません。。
33:名前は開発中のものです。
08/05/14 02:17:22 0kVdrtr1
「マウス」が「プレイヤー」になっただけだろ。
どこがそれに当たる場所なのか、それぞれの文が何をしているのか分かってる?
自分で原理を理解しないと、何から何まで人に作ってもらうことになるよ。
34:名前は開発中のものです。
08/05/14 07:44:37 +PP6HbGL
>>31
なるほどぉ、そんな方法が。。。
ありがとうございます。
35:名前は開発中のものです。
08/05/14 09:38:29 +oaQcg1C
>>33
floor(point_direction(x,y,mouse_x,mouse_y)+22.5);
ここだと自分は思ってます。
ただ、どう文章をおけばいいのかわからなくて。。
36:名前は開発中のものです。
08/05/14 10:10:14 +oaQcg1C
direction = obj_k001_01;
if (direction>=0 && direction <45) { //右向き
sprite_index = spr_k002_07;
} else if (direction>=45 && direction <90) { //右上
sprite_index = spr_k002_06;
} else if (direction>=90 && direction <135) { //上
sprite_index = spr_k002_05;
} else if (direction>=135 && direction <180) { //左上
sprite_index = spr_k002_04;
} else if (direction>=180 && direction <225) { //左
sprite_index = spr_k002_03;
} else if (direction>=225 && direction <270) { //左下
sprite_index = spr_k002_02;
} else if (direction>=270 && direction <315) { //下
sprite_index = spr_k002_01;
} else if (direction>=315 && direction <360) { //右下
sprite_index = spr_k002_08;
}
これで一応できました。
ありがとうございました
37:名前は開発中のものです。
08/05/14 15:15:31 jcqbfyhB
direction : インスタンスの方向をあらわすローカル変数 0~360に丸められる。
floor(x) : x を超えない最大の整数を返す。 例 : floor(3.5) だったら3 floor(-2.5) だったら-3
point_direction(x1,y1,x2,y2) : 座標(x1,y1)から座標(x2,y2)を見たときの角度。 例 : point_direction(0,0,1,-1) だったら 45
floor(point_direction(x,y,mouse_x,mouse_y)+22.5)
っていうのは、floor() の中に point_direction(x,y,mouse_x,mouse_y)+22.5 っていうの入っている。
さらに、point_direction(x,y,mouse_x,mouse_y)+22.5 で角度を表しているということになる。
つまり、インスタンスのいる位置(x,y)から、マウスの座標(mouse_x, mouse_y)を見たときの角度を求めていて、 それに22.5度を加えている。
で、その角度を floor()によって整数にしているわけ。なぜ22.5を足すのかは、22.5を消して試してみればわかる。多少感覚とズレるはずだ。
どうしてズレるのかは自分で考えろよ?わからなければ、数学の勉強をしろ。
で、下に続くif文は全て、 directionの値で場合分けして、表示するスプライトを指定してるものが書かれているだけ。
>>36でやってる一行目の
direction = obj_k001_01;
っていうのは、そのインスタンスの direction を obj_k001_01 と同じにするっていう意味になってるの。
それで解決したなら別にいいんだけど、俺にはぜんぜんトンチンカンに見えるのだが。
お願いだから>>1の非公式情報サイトを読んできてくれ。サイト内の「検索」で全てでてくる。
今書いたことも。ドキュメントのところを探せ。
38:名前は開発中のものです。
08/05/14 17:56:24 +oaQcg1C
>>37
色々とすみません。。
ある程度ましになるまで見てきます。
39:37
08/05/14 19:29:18 koT5HTYt
すまん、訂正させてくれ…
>>37 で「direction を obj_k001_01 と同じにする」
とか書いてるけど、間違ってるな。
obj_k001_01 のdirectionと同じな値になるとか勘違いしてた…。 obj_k001_01.direction と書けば、そういう意味になるが。
正確に言うと、obj_k001_01 っていうのはオブジェクト名なんだろうが、
これはある数値の定数になっている。(そのオブジェクトをリソースに追加したときに決まる)
この数値がそのまま direction に代入されているので、direction の値はそのまま固定値になってしまっている。
40:名前は開発中のものです。
08/05/16 01:14:43 a1mpKMyg
レジストしたいと考えてるんですが、簡単な方法ってないものでしょうか?
41:名前は開発中のものです。
08/05/16 22:37:09 mTen8rcq
金払う
42:名前は開発中のものです。
08/05/17 11:05:14 iuDmkXQZ
過去スレにそれっぽいのなかったっけ?
43:名前は開発中のものです。
08/05/17 13:11:22 4t7O5zMm
URLリンク(www.ice.ci.ritsumei.ac.jp)
ここのChapter14 ゲーム配布に売ってもかまわないと書いてあるが、これ本当?
44:名前は開発中のものです。
08/05/17 13:25:09 iuDmkXQZ
>>43
ライセンス読む限りでは制作したゲームは使用素材の規定を守っている限り、配布方法の制限は一切ないみたい。
プロジェクトファイルは販売してはいけないみたいなこと書いてあるけど、exeで出力したファイルならいいと思うよ。
45:名前は開発中のものです。
08/05/17 13:30:23 4t7O5zMm
>>44
なるほど。調べてくれてありがとう。
46:名前は開発中のものです。
08/05/17 16:19:00 mUIUdkzk
特定のタイミングのみ、特定のOBJだけ壁に対するsolid判定を
しないようにしたいんですが、方法はないでしょうか?
壁自身のsolid属性を変えると、他のOBJが落っこちてしまうし・・・
どうすればいいでしょうか?
47:名前は開発中のものです。
08/05/17 20:20:00 iuDmkXQZ
>>46
特定のタイミングでだけ別のオブジェクトに変更するとか……
駄目だこれくらいしか浮かばないにゃー
48:名前は開発中のものです。
08/05/17 20:37:37 WkeQkIH/
solidOBJのほうでナントカするのではなく、特定のOBJのほうで対処するべきだろうね。
キーイベントやステップイベントでsolidオブジェクトに対する処理をしているなら、
無効にしたいときのフラグをたてて、条件分岐で処理を振り分ければいいと思う。
衝突イベントのところを変えたいとなると、ちょっと難しいかな。
solidオブジェクトとの衝突イベントでは、双方のインスタンスがそのステップで移動していたとしても、
インスタンスの位置がステップ開始時の座標(xprevious, yprevious)に自動で戻されてしまうから。
壁を無効にしたいときには、衝突イベント内で移動し直さないといけないことになる。
・・・いろいろ書いたあとにリロードしなおした。>>47のほうがスマートにできるかもね・・・。まあ、参考になればorz
49:名前は開発中のものです。
08/05/17 22:25:09 mUIUdkzk
>>47、48
レスありがとうございます。
「Stepイベント」とかではなく、「衝突イベント」を作って動作させています。
ということは、やるべき事はSolid云々を考えるのではなく
「Stepイベント」内で「衝突イベント」と同じことをさせないといけないということですね…
いろいろ試してはみたんですが、Stepイベント内で条件指定すると
「衝突イベント」のようにうまくいかず、めり込んでしまいます・・・
多分、条件指定の方法がいけないんだと思います…
「Stepイベント」内で「衝突イベント」とまったく同じ動作をさせる条件ってありますでしょうか?
50:48
08/05/18 02:22:11 eCUFmfOE
>>49
>「Stepイベント」内で「衝突イベント」とまったく同じ動作をさせる条件ってありますでしょうか?
instance_place(x,y,obj)
っていう関数が一番近いかな・・・。
この関数を実行しているインスタンスが(x,y)に置かれたとき、objと重なっている状態なら真を返す関数だよ。
これをif文の条件に使うといいかもしれない。
えっと質問とは別に、さっき考えた自分ならこうするかもっていう方法も書いておくよ。
solidの衝突イベントでは、>>48で書かれているとおり
>インスタンスの位置がステップ開始時の座標(xprevious, yprevious)に自動で戻されてしまう
っていうのがあるんだけど、これを逆手にとって、
壁をすり抜けさせたい場合のみに、すり抜けさせるオブジェクトの通常ステップイベントの最後で、
xprevious = x;
yprevious = y;
とする。
そして、衝突イベントのところで、通常とすり抜けの条件分岐させて、
すり抜けのときは何もしないようにする。
この方法が汎用的かどうか不明だから、わからなかったら聞き流して。
51:46
08/05/19 06:37:21 lUKR9rqp
>>50
なるほど!
衝突イベントについて、分かってきた感じです。
いろいろと試してみようかと思います。
ありがとうございました。
52:名前は開発中のものです。
08/05/20 00:44:21 34XojH21
Share it代行やってなかった…
他にレジスト購入代行してくれるところってありませんかねぇ?
海外サイトのクレジット決済、日本のと違って、どこにどう入れればいいのかサッパリっすorz
53:名前は開発中のものです。
08/05/20 03:24:54 D4oicTQ3
つPaypal
54:名前は開発中のものです。
08/05/20 09:13:24 3IvwgtXZ
シューティング作ってる人でリプレイ機能作ってる人いる?
とちょっと聞いてみる。
55:名前は開発中のものです。
08/05/20 12:28:50 D4oicTQ3
俺も便乗して質問。
みんな背景はどうしてるんだ?
バース効かせた640×480のとか、どれくらいの規格が主流なのか参考の為に教えてもらえるとありがたい。
特にアクションゲームの分野で…
56:名前は開発中のものです。
08/05/20 14:45:32 3IvwgtXZ
>>55
私はどのゲームでも基本的に各編が128か256か512とかになるようにしてる。
あまりメモリ潰さなきゃ好きなサイズでいいと思うけど……
57:56
08/05/20 14:47:41 3IvwgtXZ
間違えた
各編→各辺
58:名前は開発中のものです。
08/05/21 07:20:16 tP4UvCEO
>>54大雑把でわるいが、
・ステップごとに十字キー(レバー)と各ボタンの入力をチェックしてファイルに書き出すオブジェ作成。
・リプレイモードで保存したファイルから記録したデータをプレーヤーキャラにコントロールデータとして送るオブジェを作成。
(書き出すオブジェと統合でもいいと思うけど煩雑になるかもしれないので分けたほうがいい)
・プレーヤーキャラオブジェは「通常プレーモード時では、コントローラー入力で作動する」「リプレイモード時では、もらったコントロールデータで作動する」を
切り替える仕組みを作ってやればいい。
要は「不定なのはプレーヤーの入力のみとし、それを記録する」こと
リプレイ実装を考えてるゲームに、ゲーム側で不定要素を抱えている時はそれを不定でなくすようにする。例えば
①ランダム要素、random()関数や「With a change perform next」アクションを使っているオブジェがあって、
それがゲーム進行を左右しているなら「乱数の種」付きランダム関数にし、リプレイモード開始時「乱数の種」をリセットすればランダムも使用可能となる
「乱数の種」付きランダム関数はhogehige氏が作ってくれています。(この場を借りて感謝)>>4のリンク先、上から二つ目
②当然ながらポーズキーを実装している場合は書き出すオブジェの書き出しも停止してやらなくてはならない。まぁポーズに限らず
ROOMの移動とかもあるので「記録停止」「記録開始」も必要になってくるし、リプレイモードもそのタイミングで「コントロールデータ送出停止」とかも必要になってくる
と・・・まぁこんな感じかな・・・ほんとに大雑把なので回答になってないかもしれないが、これぐらいでかんべんしてください。
59:名前は開発中のものです。
08/05/21 09:28:39 wqIERWKF
>>58
わざわざ調べて返答してくれたのなら申し訳ない(^^;
単純にリプレイ機能作ってる人ってどのくらい居るのかな~ってのを知りたかっただけだったのだが……
でも自作の今のリプレイ機能よりすっきりまとまる感じがするのでちょっとシステム洗練してきますです
現時点ではなぜか一面でだけ絶対ずれるし……
60:名前は開発中のものです。
08/05/21 11:47:10 khQhl2Eo
自分もレジスト考えてるのですが、
>>53のPaypalってのは何ですか?
コンビニとかに払ってくるような物?
61:名前は開発中のものです。
08/05/21 21:25:07 j5bhpnBL
文章的に分かりにくいかもですが
上からは乗れて、下からジャンプすると貫通して通れるような足場を作りたいのですが
何か良いアイディアはありませんでしょうか?
62:名前は開発中のものです。
08/05/22 07:57:22 dVs71+g+
>>61
やっぱり文章的にアレだったので訂正・・・
足場OBJを作るとして
プレイヤーが足場OBJに上から衝突した場合は、Solid属性みたいに乗る事が出来
ジャンプ等で下の方から足場OBJに衝突した場合は、すり抜けて通れるように
したいと考えております。
instance_place(x,y,obj)を条件に、Gravityを0にする動作をさせてみても
すり抜けてしまうし、なかなか難しいものです。
ご教授いただきたく、お願いしますm(__)mペコ
63:名前は開発中のものです。
08/05/22 17:46:59 QlDRy8fj
>>62
実際に試してないのでどうかわからないがこんな感じのを考えてみた。
プレイヤー側の床とのコリジョンイベントで、
床に対し、自分が完全に乗る高さ以上に居る&vspeedが0以上なら、
vspeedと重力を0にし、自分の高さを床に乗るように合わせる。
かなりわかりにくくて申し訳ない……
64:名前は開発中のものです。
08/05/22 20:36:05 dVs71+g+
>>63
なるほど。vspeedですね。
試してみたんですが
>>自分の高さを床に乗るように合わせる。
これをやらないと衝突判定があっても、沼に沈むように下降する現象が発生
(↑原因不明・・・なんでだろう)
vspeedだけじゃ駄目なんですね。
位置を合わせるって部分はまだ微調整が必要ですが
おかげで、実現に近づける事ができました
ありがとうございました。
65:名前は開発中のものです。
08/05/22 21:17:29 QlDRy8fj
>>64
位置を合わせないと沈んでいくのはvspeedが0になったあと1フレーム分下に加速度がかかっているからで。
まあ、お節介かも知れないけど補足(^^;
66:名前は開発中のものです。
08/05/22 21:36:47 A9Tj0djs
前のスレあたりで
ポーズの作り方で
ゲーム上のインスタンスを動かなくさせる(反応しなくさせる)
っていうのがあった気がするんですけど
誰か詳しく覚えてませんか?
67:名前は開発中のものです。
08/05/22 21:39:49 F+pyFRDi
Show informationでポーズは満足してる俺は明らかにやる気が無い
68:名前は開発中のものです。
08/05/22 21:45:49 QlDRy8fj
全ての該当オブジェクトを非アクティブにするってのだったっけ?
69:名前は開発中のものです。
08/05/22 21:50:14 bh5bHg1Z
ダウンロードとかは不要っで作ったゲームをホームページ上で起動させる方法はありますか?
日本語がおかしくてすみません。。
70:名前は開発中のものです。
08/05/22 21:54:35 QlDRy8fj
>>69
残念ながらできません。
ブラウザで遊べるゲームが作りたいのならFLASHかJavaで作りましょう
71:名前は開発中のものです。
08/05/22 21:59:29 bh5bHg1Z
>>70
そうですか、わかりました。
ありがとうございました。
72:名前は開発中のものです。
08/05/23 00:31:35 IwtfC0JS
日本語描画スクリプトで変数の現在の数値を表示したいんですけど
{
n=0;
mbtext_setfont(spr_zen20,spr_han20,20);
mbtext_draw("n",x,y,0,0,0)
}
これだと0ではなく、nが表示されて困っています
どうすればnではなく代入されている数値が表示できるのでしょうか?
73:名前は開発中のものです。
08/05/23 01:03:30 9mBFsqkn
>>72
""で囲むとそれは文字列として扱われてしまう。
しかしnとだけ指定しても内容が文字列ではなく数値なので、文字列にしてやる必要がある。
"n"をstring(n)に書き換えればオーケー。
74:名前は開発中のものです。
08/05/23 01:49:02 IwtfC0JS
>>73
なるほど!
助かりました、ありがとうございます
75:名前は開発中のものです。
08/05/23 02:01:25 smnTR4WN
飛び道具にオーラをつけるような表現をしたいんですが
表現の方法がサッパリ分からない状態です。
何か良い方法は無いものでしょうか…?
※以下の動画で使われてる飛び道具のような表現です
URLリンク(www.nicovideo.jp)
>>ニコ動嫌いな人
URL出してしまい、すいません…
76:名前は開発中のものです。
08/05/23 03:26:40 d1WY1tem
>>75
cの攻撃みたいなやつ?
77:名前は開発中のものです。
08/05/23 05:21:17 6Q5daQ7y
質問です。
execute_program(prog,arg,wait)
execute_shell(prog,arg)
この二つはexeファイルも起動させることができる。
argumentを一つ使うこともできる。ここまではわかりました。
GMで作ったゲームにargumentを使って実行させることはできますか?
言い直すと、「GMで作ったゲーム1」がexecute_programで「GMで作ったゲーム2」を起動させたとき、
ゲーム2は、execute_programのargumentを参照することができますか?
78:名前は開発中のものです。
08/05/23 07:15:28 OhG93FRY
>>77
parameter_count()
起動時パラメータ(コマンドライン引数)の数を取得する。パラメータなしで0となる。
parameter_str(n)
n番目の起動時パラメータ(コマンドライン引数)の文字列を取得する。0番目はexe本体のフルパス名となる。
この二つの関数が使えそうだね。
たとえば、ゲーム1から
execute_program("ゲーム2.exe", "arg1 arg2 arg3", 0);
を実行すると、
ゲーム2において、
parameter_count() ← 3を返す
parameter_str(1) ← 文字列"arg1"を返す
ってなるんじゃないかな。
79:名前は開発中のものです。
08/05/23 07:20:51 smnTR4WN
>>76
cの攻撃みたいなやつのことです
80:名前は開発中のものです。
08/05/23 10:22:58 6Q5daQ7y
>>78
parameterを使ってみたら見事にできました。
ありがとうございました。
81:名前は開発中のものです。
08/05/23 11:06:03 9mBFsqkn
>>79
飛び道具から丸くて小さくなっていくスプライトのオブジェクトを置き続ければいいんじゃないか?
レジスト版なら加算合成とか使えて綺麗になるが、通常版だとちとイマイチかもしれないが……
82:名前は開発中のものです。
08/05/23 14:43:02 EGcliZhu
URLリンク(www.ice.ci.ritsumei.ac.jp)
ここの37にマルチプレイヤーゲームが出来ると書いてありますが、
書いてあることが凄すぎてよくわかりません。。
誰か上手く教えていただけませんか?
83:名前は開発中のものです。
08/05/23 15:56:41 9mBFsqkn
>>82
要はネット対戦機能とかを作れるって事だけど、マニュアルに書いてある事を理解できる位のネットワークに関する知識がないと辛いんじゃないかな……
出来たら面白そうだなとは思うけどね
84:名前は開発中のものです。
08/05/23 18:31:26 EGcliZhu
>>83
わかりました
85:名前は開発中のものです。
08/05/26 21:09:52 K7Gb+EE1
マリオのような感じのゲームを作りたいのですが、
横に移動して、ジャンプも出来て、重力をつけたら画面外まで落ちていきました。
何かオブジェクトに乗っかるにはどうすればいいですか?
86:名前は開発中のものです。
08/05/27 01:16:07 il/v0kgX
>>85
1、衝突検知→wallに衝突した場合、衝突フラグをオン
//↓四角範囲指定でキャラの足元の座標を指定
if collision_rectangle(x+10,y+55,x+30,y+60,wall,true,false){wall_flag = 1}
//↑「wall」っていう名前の壁OBJを用意
else {wall_flag=0}//それ以外の場合は空中判定
//2、衝突フラグオンの場合、足元のOBJを調べて、重力とvspeed(縦速度)を0
// 更に、足元OBJのy座標に自OBJの座標を合わせる(こうすることですり抜け現象を回避)
if wall_flag ==1
{
col_id = (collision_rectangle(x+10,y+55,x+30,y+60,wall,true,false))//足元の足場OBJのID取得
if vspeed >= 0//落下、もしくは直立時のみ、座標を合わせる
{
vspeed = 0; //縦速度0
y = col_id.y-1;//足元の足場OBJの1マス上のy座標に合わせる
}
gravity = 0//条件がなんであろうと、とりあえず重力0
}
超大雑把だけど、↑のコード調整すればいけると思うよ
無駄に手順が多い気がするけど、これ以上スマートな方法知らないんです。。。
ちなみにこのまま使うと>>62みたいな足場になります。
87:名前は開発中のものです。
08/05/27 06:04:21 8CURxQUf
悪魔城シリーズみたいに、雲のテクスチャを使って遠方から
雲が流れてく様な演出ってできないかな…、あまり無茶をするとガクガクになるからアレかも。
88:名前は開発中のものです。
08/05/27 22:54:16 6Xhx1kD4
drawイベント、使い方がよくわからない・・・
一度draw呼び出した後の消し方も分からないし
非公式読んでもわからなかった・・・
オブジェクトいっぱい作って表現するよりも軽いらしいから
使いこなせたらベストなんだけど、うーm
89:名前は開発中のものです。
08/05/28 12:32:20 xSCQjZ2e
>>88
drawイベントは呼ばれている間ずっと描画するからifとかで描画する条件を付ければいい。
そんな重いものを作るんでなかったらオブジェクトを複数に分けた方が良いと思う。
ずっと描画する背景やメニューなら別だけど……。
>>87
悪魔城やったことないからイメージできないや……
奥から手前に雲が向かってくるのなら、雲を描画するオブジェクトを作って、拡大しながら移動したりアルファをいじればいいと思うんだが……
90:名前は開発中のものです。
08/05/29 02:36:12 DHizXfG5
88です
>>89
>>drawイベント
なるほど!ありがとうございます!
91:名前は開発中のものです。
08/05/31 00:39:40 rrtVSSkL
セーブデータ関係って皆さんどうされてます?
ファイル生成とかいろいろありますが
データが外部から操作されないようなセーブデータって可能でしょうか?
92:名前は開発中のものです。
08/05/31 08:51:13 ZVZLgF9M
物理的に不可能。
暗号化するなどで操作されにくくするのが関の山。
93:名前は開発中のものです。
08/05/31 09:10:26 rrtVSSkL
>>92
暗号化って、難しそうですねぇ。
うーん・・・
94:名前は開発中のものです。
08/05/31 12:15:42 zJdP1EEF
暗号化といっても、ビットシフトとXORの組み合わせならそんなに難しくないし、それなりに弄られなくなると思うけど。
95:名前は開発中のものです。
08/05/31 13:34:09 ou8RstaY
無茶苦茶分かりにくい並び方でデータを並べるとかしか浮かばないなぁ。
あとは保存された数値の内容でパスワードみたいなのを生成して一緒に保存して、読み込むとき整合性がとれなかったら不正なデータと見なすとか。
96:名前は開発中のものです。
08/06/02 15:17:04 /RuiniIL
蜃気楼の表現ってどうするんだろうな…、2Dじゃ無理臭い気が…。
97:名前は開発中のものです。
08/06/02 22:26:22 Epu/dM/T
>>96
重いけどできなくはないよ。
画面を細かく水平方向に区切って、サインカーブに沿ってずらしながら描画する。
そのカーブを時間と共に変えれば、ゆらゆらと揺れる感じが出せる。
GM6以降ならテクスチャやサーフェス使えばいいかな。
98:名前は開発中のものです。
08/06/03 06:54:11 OlF/LjGi
>>97
できるのかw、流石GMだ…
っていうか、サインカーブ…。テクスチャはまだわかるけど、サーフェスとか
まだ使い始めて間も無いんで、一見しただけではパッとこないが…
とりあえずレスサンクス、97のレスを元に色々やってみるよ。
99:名前は開発中のものです。
08/06/04 10:49:46 JdoODmgp
GM初心者で格ゲーみたいなのを作りたいんだが全くわからない。とりあえず、 ・簡単なCPの作り方(近づいてパンチと移動だけでよい) バージョンは5.3レジスターはしてません。GMLは少しなら
100:名前は開発中のものです。
08/06/04 11:32:43 YZVoGHHf
Backgroundやroomにマウスクリック等のイベントを追加することはできますか?
背景画像(あるいはroom背景色の領域)をクリックした時にクリック座標を取得しインスタンスを生成するのが目的です
具体的には画面をクリックした場所に地雷を設置するというゲームを作ってます
今は背景色で塗りつぶした画像を用意しオブジェクトとしてAddEvent>Mouse>LeftButton>Code
という方法でやりたい事は実現はできているのですが上手い方法じゃないと自覚しとります
GM6未レジスト、フォーラムとHelpは読んだつもりですが過去ログは見落としてるかもしれません
101:名前は開発中のものです。
08/06/04 12:37:58 TGP/82mE
>>99
私が以前作った格ゲーのサンプルを提供してあげたいが、いかんせんPCにネット環境がない……。
格ゲー作るならそれなりに複雑な処理になるから、
ボタンが押される→キャラの状態により攻撃実行
の仕組みを作って、CPUの動作は位置によって複数の連携テーブルから適当なものを選んで行動、とかそんな感じにしなきゃ辛い。
何が言いたいかというと、私は応援してるよ、と(^^;
102:名前は開発中のものです。
08/06/04 19:59:47 JdoODmgp
格ゲーはとりあえず試行錯誤しときます。
これかもアドバイス頂けると嬉しいです。
応援ありがとうございます。
103:名前は開発中のものです。
08/06/04 20:17:36 JdoODmgp
早速質問です、すいません(-_-;)
CPの動きはプレイヤーが近くにいるとパンチするようにしたんですが、そうするとCPが永遠にパンチしてきます。
パンチのランダム性(?)てどうやるんでしょう。あとCPのプレイヤーの位置認識にxyを使ってるんですがそうすると特定の距離の時しかパンチしてきません。
104:名前は開発中のものです。
08/06/04 21:00:11 s7z6oTUx
>>100
Mouse > Global mouse event(GM6以降)
またはcontrolの中にある「If a mouse button is pressed」
>>103
あるアクションをランダムで実行したいなら「With a chance」アクション
(controlにあるサイコロの絵のアイコン)
あと、サンプルに付いてくる1945っていうシューティングを見ると
一定間隔でしか弾を撃てないようにする制御をしているので参考になるかも。
基本的に格闘ゲームは変数を使って「今キャラクタがどんな状態にいるか」
を管理するのが重要になるよ。
後半の質問は意味がよくわからん。自分と相手の距離を計算して
「100より大きくて120より小さい」とか大小判定すればいいと思うんだけど、
そういう話じゃない?
105:名前は開発中のものです。
08/06/04 23:33:38 LluC3sBJ
スクロールの対象を現在「主人公A」にしてます。
「主人公B」に変身すると、スクロールの対象が失われエラーになるのですが、
どーすればいいのでしょうか?教えて下さい。
{
//
new_view_left = min(max(0, (主人公A.x+10) - view_width[0]/2), room_width - view_width[0]);
view_left[0] += (new_view_left - view_left[0]) / 4;
}
106:名前は開発中のものです。
08/06/04 23:51:42 5xx8K1a2
AとBを同じParentに設定して、そのParentを追尾すればいいんじゃない?
107:名前は開発中のものです。
08/06/04 23:56:56 LluC3sBJ
お答えいただいたのにすいません・・・
プログラムとかが分からないので、
(主人公A ? 主人公B.x+10)
?の所に何か書き込めばいいのでしょうか?
or とかandとか入れてみたんですが駄目でした。
108:名前は開発中のものです。
08/06/05 01:30:34 Cu6N54BP
新しいオブジェクトを作る。命名「主人公の素」
主人公Aのプロパティを開いて、「Parent」の欄で今しがたつくった「主人公の素」を選ぶ。
主人公Bも同じようにParentを「主人公の素」に設定する。
さっきの式を「主人公の素.x + 10」に変更。おわり
109:名前は開発中のものです。
08/06/05 05:40:07 SxCz6ZJb
丁寧な回答
ありがとうございます!!
エラーが出ず、スクロールできました。
110:名前は開発中のものです。
08/06/06 00:51:41 J8O2ZYG8
自分も以前から台形の立体表示を
作りたいと思っていました。
テクスチャの変形が平行四辺形的な
変形になってしまうため、変形率の異なる
三角形二つの組み合わせでは不可能と
思っていたのですが…
力押しでこんなの作ってみました。
キャラや背景その他は適当です。
URLリンク(www.h6.dion.ne.jp)
キー左右で移動のみです。
映像の繰り返しパターンを1枚のテクスチャで2回設け、
それを台形にしておき、変形する。
移動時は、テクスチャ上の各点を移動させる。
ということです。
111:110
08/06/06 00:57:58 J8O2ZYG8
書き忘れました。
obj_bg_earth01が、地面の部分のオブジェクトです。
112:名前は開発中のものです。
08/06/06 11:05:29 4VD34WHe
>>110
うぉぉぉぉ……!
せっかくサンプル用意してもらったのに今PCにネット環境がないから見れない……。
……でも凄い嬉しいです。
113:名前は開発中のものです。
08/06/07 14:55:19 5IJUQrYD
>>110
キャラ素材の作りに感動しました!
3Dっぽいですけど、素材は何で作ってます?
114:名前は開発中のものです。
08/06/08 13:41:45 T6BCIG1y
クリックした瞬間に存在してる「オブジェクトA」を削除して
クリックした地点に新しく「オブジェクトA」を作成し、
Step towards pointでその「オブジェクトA」の地点まで「主人公」を移動させる。というゲームを作っているのですが
「主人公」のスプライト(GIF動画)を移動している方向によって変えるにはどうすれば良いでしょうか?
If an expression is trueで「0<=direction<=45」みたいな風にやったのですが
一番最後に書いた方向(315<=direction<=360)のスプライトに固定されてしまい何処に移動しても画像が変わりません。
解りにくい説明ですみませんが、どうかご教授お願いします。
115:名前は開発中のものです。
08/06/08 14:54:45 utQhd3oj
0<=direction && direction<=45
でも両方<=だと、たとえばdirectionがちょうど45.0の時に条件がかぶるから
0<=direction && direction<45
の方がいい
116:名前は開発中のものです。
08/06/08 16:42:58 T6BCIG1y
>>115
ありがとうございます。
その様にした所、時々横向きになるのですがやはり画像はほとんど変わりません。
この様な感じに作っているのですが
URLリンク(www2.uploda.org)
もしかして根本的な何かを間違えているのでしょうか?
再度質問で申し訳ありませんが、よろしくお願いします。
117:名前は開発中のものです。
08/06/08 17:50:32 eax+1E9y
さぁ、早くそのifのnotについているチェックボックスを外す作業に戻るんだ。
そりゃ0<=direction && direction<=45「ではないとき」なんて書き方をしてたら、
一番最後の【270~360「ではないとき」】が高確率で反映されるわな。
余談だが、0<=directionって書き方に違和感を感じて仕方が無い。
ま、問題なく動いていればいいのかもしれないけどね。
118:名前は開発中のものです。
08/06/08 17:55:53 eax+1E9y
チェックボックスを外すって何だよ俺……。
どう頑張ってもボックス自体は外せねぇだろ。
notのチェックボックスのチェックを外す、だ。
119:名前は開発中のものです。
08/06/08 20:02:45 T6BCIG1y
>>117
ウボアァアァァァありがとうございます。気付きませんでしたorz
おかげでちゃんと移動先を向いてくれるようになりました。本当にありがとうございます。
何度も何度も質問ですみませんがgifの1フレーム目から動かないのですが何か設定が必要なのでしょうか?
本当に申し訳ありません。よろしくお願いします。
120:名前は開発中のものです。
08/06/08 23:36:33 NJgDJbX1
マリオみたいなジャンプアクションは
どうすればいいのでしょうか?
たとえば走りながらジャンプ等
初心者すぎる質問で申し訳ありません
121:名前は開発中のものです。
08/06/09 00:17:01 QzRxZbxD
>>120
ジャンプアクションの要素を羅列してみる。
・空中に居ると下に落ちる
・床の上にキャラが乗れる
・左右にキーを入れると加速する。ダッシュボタンを押すと最大速度が上がる
・床に乗っている状態でジャンプボタンを押すとジャンプする。
とりあえずダッシュしながらジャンプは、ジャンプの際は横のスピードはいじらずに上にだけ速度を加えればいいと思うよ
122:名前は開発中のものです。
08/06/09 00:42:40 ekIBUZL+
>>113
みるべきところはそこじゃなす
Edgeかなにかで描いたんだろ?
123:名前は開発中のものです。
08/06/09 15:28:48 N/jbPRoy
>>120
素人の俺が考えて見たサンプルをどうぞ
URLリンク(www2.uploda.org)
中身がゴチャゴチャしてスマン。
124:120
08/06/09 20:00:05 2DlmJVHk
>>121 >>123 回答ありがとうございます
後>>123のファイルは解凍した後のファイルが読めないのですが
どうしたら読めるようになりますか?
このファイルを読み込むプログラム~と言われてしまいます
125:名前は開発中のものです。
08/06/09 20:03:20 N/jbPRoy
>>124
言い忘れてたけど>>123のはgm6で作った奴だ
126:名前は開発中のものです。
08/06/09 20:30:48 MbRvBo5s
ということもあるので使用バージョン、レジストの有無はなるべく書いてね
公式のチュートリアル(Platform Gamesってやつね)眺めるだけでも
けっこう参考になると思うんだが、あれも今はGM7用のしか置いてないな
127:名前は開発中のものです。
08/06/10 02:44:02 S3IlP6Mt
上位互換性はあったような。
互換というよりは、古verのものを新verの形式に書き直す、とかだったような気がするけど。
ファイルを直接ダブルクリックとかでは開けられないだろうから、GMから開くとかDrag&Dropとか……。
何にせよ、話が噛み合わないとどうしようもないので、情報は書いておいて欲しいもの。
128:名前は開発中のものです。
08/06/10 08:16:48 WKUtiVJV
実際5から6では殆んどエラー吐いて起動しない場合が多いよ。
6から7なら大丈夫だろうけど。
まあ567全部インストールしておけば問題ないんだろうけどね
129:名前は開発中のものです。
08/06/10 12:07:20 1Irexyd7
BGMやムービーを安易に見れないようにできる?
130:名前は開発中のものです。
08/06/10 13:37:08 WKUtiVJV
>>129
BGMやムービーを別々にして配布したいなら、拡張子を変更しつおいて、使う時だけリネームして読み込み、使い終わったら戻すって方法位かなぁ。
別々にしたい訳じゃないけど読み込みに時間かけたくない!ってのなら、6以降限定だが、Global Game SettingのIncludeで本体に含めてから実行時に展開するようにすればいいよ。
131:名前は開発中のものです。
08/06/10 14:29:23 1Irexyd7
>>130
thx
132:113
08/06/10 20:08:22 6sraZo9R
>>110
うーm。。。答えてもらえないか
スレ違いだけど、素材作りにEdge管理で行き詰まり感じてて…
でもどこに質問しにいけばいいか分からなかったので質問させていただきました。
「3D→2D素材化」って流れで作られたものに見えたんで
この行き詰まりから脱せるんではないかって希望を見てしまったんでs
133:名前は開発中のものです。
08/06/11 16:39:10 EVNflJcn
ダウンロードしてみようと思ったがyoyoに繋がらない、自分だけ?落ちてる?
134:名前は開発中のものです。
08/06/11 21:49:55 5ZX5tJO/
>>133
今は大丈夫みたいだが、どう?
135:133
08/06/11 22:29:57 ++rYAqEK
>>134
今やったらできた~どうもです
136:名前は開発中のものです。
08/06/12 00:56:25 4EAhP+NE
未レジストだから出来ない、、、。orz
137:名前は開発中のものです。
08/06/12 08:09:28 9TqDsi5l
>>136
ダウンロードが?
ダウンロードなら特に何も問題なく出来るはずだが……
138:名前は開発中のものです。
08/06/12 10:22:01 zGKrtRU4
日本ユーザーを増やして
yoyoに日本語対応してもらうのだ
139:名前は開発中のものです。
08/06/13 15:58:32 tjeMHdYO
TPSは流石に作れないよな・・・
140:名前は開発中のものです。
08/06/13 17:37:16 8tjP+W25
>>139
5.3で作られたFPSがあったから、工夫次第では未レジストでも疑似3Dで作れると思う。
海外の作品で、doomとかいうタイトルだったような
ただプレイしてて激しく酔った記憶が……
141:名前は開発中のものです。
08/06/14 11:38:27 4m4S8SwE
テスト
142:名前は開発中のものです。
08/06/15 19:59:47 n3ZqdSRd
5.3より後のバージョンって公式・非公式ともに日本語化の予定ないの?
143:名前は開発中のものです。
08/06/18 10:02:15 0+3MnSWl
GM7のsprite_add_alpha()等のアルファチャンネル関連はレジスト版のみの機能ですか?
未レジスト版ならGM7でもGM6でも大差無いのかな
144:名前は開発中のものです。
08/06/20 18:49:05 Xt39fvZ+
>>143
レジスト版だけみたい。
未レジストなら基本6と変わらないかも。
それと、6で同じ効果音が重なる場合、うまく再生されないんだけど、これって何が原因かね?
他の効果音ならどんなに重なって鳴っても大丈夫なのに、一つだけうまく鳴らない音があるんだけど……
145:名前は開発中のものです。
08/06/21 06:42:13 j/kRwP45
情けないほど初歩的な部分で躓きました
配列の長さ(サイズ)を取得する方法を教えて下さい
ヘルプとフォーラムには目を通したのですが初歩的すぎるのか見つかりません
146:名前は開発中のものです。
08/06/21 11:32:20 NtqmRukW
信じられねぇが、ないんだよそれ。<配列サイズの取得法
というか、変数を定義した瞬間、特に制限無く配列として使用できてしまうし。
サイズ情報を管理する変数を自分で用意するとかしか思いつかん。非常に面倒だが。
それか、配列として扱う論理的なオブジェクトを作って、インスタンス数を数えるとか、か・・・?
147:名前は開発中のものです。
08/06/21 12:59:26 j/kRwP45
なるほど・・・
残念ではありますが逆にスッキリいたしました
無いと分かれば割り切って強引なコーディングに踏み切れそうです
スマートに書きたいならレジストしてスタックやキューを使えということでしょうかね
勉強もかねてもう少し頑張ってみます
ありがとうございました
148:名前は開発中のものです。
08/06/21 19:29:15 S/Uv8sSk
メモリの使用量が気になってきたのですが
メモリ使用率削減のテクニック教えてもらえないでしょうか?
149:名前は開発中のものです。
08/06/22 00:34:10 3YikmJWj
前wikiのログがあったのでwikiにはっときました
150:名前は開発中のものです。
08/06/22 09:10:47 NRn4PvdD
とても困ってる事がございます。
連結された文字列の名前の変数、インデックスを作りたいと
考えております。
str ='var_'
str +='100'
//str='var_100'
//これを変数var_100として使用したい
//例えば
//SPRスプライトをvar_100に割り当てる
//sprite_assign(var_100,spr)
sprite_assign(??????,spr)
この??????が連結された文字列と同じ名前のインデックスになるような
指定をしたい場合、どうすればいいでしょう?
151:名前は開発中のものです。
08/06/22 10:21:52 9BAqCfGF
variable_global_set(name, val)
variable_global_get(name)
variable_local_set(name, val)
variable_local_get(name)
が使えそうですね。たとえばこんな感じで・・・。
/* インスタンス内の変数var_0 ~ var_100 に、0~100をセットする */
for (i=0;i<=100;i+=1) {
str = 'var_'+string(i);
variable_local_set(str,i);
}
/* 変数var_100で示すスプライトインデックスに、スプライトsprを割り当てる */
sprite_assign(variable_local_get('var_100'), spr);
ただし、sprite_assign()の第一引数は、存在する(存在していた)スプライトインデックスで無いとエラーを起こすんで、注意してください。
152:名前は開発中のものです。
08/06/24 03:08:54 +uYxoItW
mbTextScript使ってる人って居る?
6.1で縦16横8ピクセルの半角文字を1080字程描画すると、
それだけで20FPSくらいになるんだけど、普通なのかな?
153:名前は開発中のものです。
08/06/24 04:23:32 SW9HLMt8
それは仕方ないんじゃないか?
1文字1文字スプライトから切り貼りして表示しているんだし・・・。
1080字も一度に書くとかなりの負荷なんじゃないかな。
サーフェスとか画面から見えないところで描画して、
描画したものをスプライト登録してそれを画面表示する、
とかするとよいかもね。この方法はレジスト版でしか出来ないけど。
154:名前は開発中のものです。
08/06/24 12:28:37 +uYxoItW
>>153
うーん、レジストはしてあるんだけど、肝心の描画したい物がデータリスト的な物で、
ちょこちょこ切り替えるからなぁ。
とりあえず色々試してみます。
ありがとうございましたー
155:名前は開発中のものです。
08/06/25 21:39:01 4PLXCLdL
ヤフーのフリーメールで登録できないorz
おまいらどこのフリメ使ってる?
156:名前は開発中のものです。
08/06/26 08:07:08 ZUCsxIUu
bGMで曲を流してる時にフルスクリーンに切り替えると曲が止まるのは何故だ……?
>>155
hotmail。ただし.comで。.co.jpは知らん。
157:名前は開発中のものです。
08/06/26 21:10:56 +fAgrEGQ
hoge = instance_create(0,0,objHoge);
hoge.sprite_index = "spr_" + "piyo";
こんな感じでsprite_indexを変数で指定したいのですが上手くいきません
piyoの部分は100種類ほどあり増減の可能性もあるため逐一条件分岐で書くのは避けたいです
hoge.sprite_index = 4;
と、直接indexを数値で指定するというのも考えたのですが
画像と数値の管理が面倒そうで試してません
何か良い方法ないでしょうか
158:よこしま
08/06/26 21:27:15 ls1Ls4j4
>>156
ウィンドウモードを切り替えたときに、bGMが親ウィンドウを見失うために終了していたようです。
以下の対策で解決すると思います。
1. bGM_play()スクリプトの下から約14行目をコメントアウトする。
「" -w " + string(window_handle()) + 」
↓
「// " -w " + string(window_handle()) + 」
2. ゲーム終了時には必ずbGM_close()関数を呼び、bGM.exeを確実に終了させる。
159:名前は開発中のものです。
08/06/26 23:23:46 4NwLrBZ+
>>157
execute_stringが定番だけど遅いのは覚悟すること。
名前とインデックスの対応をmapで管理する方法もある。
最初にmapに入れるところが面倒だけど
(名前に規則性があるならループで回しながらexecute_stringで可)
一度作ってしまえば後のアクセスは速い。
後はスプライト別々にするのをやめて、subimageで分けるようにするとか。
160:名前は開発中のものです。
08/06/26 23:56:05 +fAgrEGQ
>>159
ありがとうございます
execute_stringの方法で上手くできました
実行速度に関しては大丈夫そうです
余談ですが実はまだレジストしておりません
この関数ってヘルプ「リソースの変更」の項にあるのに未登録でも使えるのですね
教えて頂かなければ一生気付かなかったかもしれません
161:名前は開発中のものです。
08/06/26 23:58:49 ZUCsxIUu
おぉ、ありがとうございます。
今まで原因がわからなかったから、いっそのことオプション画面用のroomでも作ってそのroomを抜ける時に、ウィンドウモードを切り替えていたらゲームを再スタートさせようかなと思っていました。
それでもbGMがどうなっているのかが不明だったため、この方法を使ってもいいのかと悩んでいて……。
GameEndイベント用のpersistentのオブジェクトを作ろうかと思います。
ありがとうございました。
162:名前は開発中のものです。
08/06/27 11:46:16 aoPSnAYi
6.1って5.3と違って数値をINIに書き出すとおかしくなるのね……
これは困った
163:名前は開発中のものです。
08/06/27 22:07:01 IOoyzN5t
悪名高い精度バグですな。
stringで文字列化してini_write_stringで書き出すと直るよ。
164:名前は開発中のものです。
08/06/28 17:16:03 MGJMVRVB
>>163
なるほど!
でも全箇所直すのめんどいなぁ……
ぼちぼちやりますか……
165:名前は開発中のものです。
08/06/29 16:00:15 0XhC6Ln6
チャットできるようにしようと考えてみた。
get_stringではポップアップボックスが出ている間ゲームが止まるのでこれは避けたい。
ゲーム内でIMEをどうにか使えるようになれないか。
とまで考えてみて、結局解らず仕舞orz
166:名前は開発中のものです。
08/06/29 19:41:43 lhyc/F0c
オンラインゲームも作れる、と聞いたことがありますがやはり難しいのでしょうか?
マリオのような横アクション対戦ゲームを作りたいのですが・・・
167:名前は開発中のものです。
08/06/30 08:01:32 XJvv+Gn/
作るなら、共有データという一つの大きな配列にデータを書き込んだりそこから読み込んだりすればいい。
物によってはメッセージと使い分けるといいかもしれない。
とまぁGM的に作れるには作れるけど、実際にオンラインプレイできるかは別。
ポート開放が必要になるから。LAN内ならポート開放とかその他細かい設定は無しでプレイ可能。
まあ>>83が結論かな。
168:名前は開発中のものです。
08/07/03 18:30:58 1ilwX3ov
gm6ですが不思議のダンジョンとかみたいなターン制のゲームを作るにはどうすれば良いでしょうか?
主人公の移動後に主人公のオブジェクトを変更して・・・って感じだと敵が複数の場合相当長くなってしまいます。
ちなみにダンジョンの自動生成は考えてません。
169:名前は開発中のものです。
08/07/03 23:07:04 PDxRGKbt
>主人公の移動後に主人公のオブジェクトを変更して
主人公の移動後に敵のオブジェクトを変更して、と勝手に解釈した
とりあえず具体的に何がどう長くなるのか分からないけどコードは大して長くならないかと
描画処理もビュー内外で処理分ければ重くなることもないと思う
170:名前は開発中のものです。
08/07/03 23:20:15 PDxRGKbt
言うだけなのもなんなので大雑把な案
UserDefined0イベント:1ターンの行動をした時に発生するイベントとして定義
Alerm0:1ターン分の行動を見せるためのタイマー(再帰はしない)
objEnemy:全ての敵オブジェクトの親
objZako1~n:それぞれのユーザ定義イベント(UserDefined0)にターンごとのアルゴリズムを記述
だいたいの流れは
プレイヤー行動決定→全敵にUserDefined0発生→全敵が行動を決定→それぞれの行動を描画(ビュー外なら結果だけ)
→行動の結果を反映→最初に戻る
主人公オブジェクトが1ターン分の行動を決定するたびに以下のコードも実行
with(objEnemy){event_user(0);}
この時点で敵も味方も動いてないけど全ユニットの行動は決まってるので
ビュー内なら移動や行動アニメーションも見せる(Alerm0をONにしてゴニョゴニョ何かする)
UserDefined0で決定したアクションに従って移動や行動のアニメーション描画
ビュー外なら結果だけ反映(座標に直接ジャンプしたりパラメータだけ変更したり)
厳密にやるならビュー内に侵入してくるタイミングだけ多少デリケートにコーディングしないとダメ
でも面倒だからビュー外であろうが境界線の近くなら上記処理に振り分けてしまったほうが楽かも
171:名前は開発中のものです。
08/07/07 07:50:41 Er6IyJrw
軌道を描写してそれに沿ってオブジェクトを動かしたいのですがパスの使い方が今一つ理解できません。
パスの使い方を教えていただけないでしょうか。5.3です
172:名前は開発中のものです。
08/07/07 10:31:24 Rye0/4Uv
>>171
まず「File」→[Advanced Mode」にチェックする。
「Add」→「Add Path」メニューがでるので前もってパスを作成しておく
パスに沿って動かしたいオブジェクトで自分が思っているタイミングのイベントに
(最初からパスで動かしたいのならクリエイトイベントにいれる・・・など)
MOVE2タブの[set a path for the instance]アクションで作ったパスを指定してあげる。パラメーターは
path:オブジェクトに割り当てたいパスの名前
speed:1ステップで動くピクセル数
at end:パスの終点についたらどうするかを指定stopはその位置停止continue from startはスタートした座標に戻ってパス動作を続ける
continue from hereは今の座標を始点として同じパスでパス動作を続けるreverseはパスをさかのぼる
relative:パスを絶対位置か相対位置かを指定 relativeで相対位置(アクションが動作した時の座標を始点にする)
absoluteは絶対位置(パスエディットで書いたとおりの座標)
てな感じ。 もち途中でパスを変更するとかも可能。GMLで書くならpath_start()関数をどぞ
173:名前は開発中のものです。
08/07/07 13:12:20 0oCVVzY6
シューティングのテスト版みたいなの作ったんだけど、ここで晒してもいいですかね?
ソースはないけど……
174:名前は開発中のものです。
08/07/08 15:07:42 w93aKpMp
>>172
遅れましたがありがとうございます。
175:名前は開発中のものです。
08/07/11 15:45:47 3T+5hIa7
行き詰ってるので質問させてください。
オブジェクト自体が光っているような表現をしたいのですが
イマイチやりかたが分かりません。
AfeterEffectとかでいうグローみたいな表現がしたいです。
環境はGM7でレジストしてあります。
176:名前は開発中のものです。
08/07/12 14:05:25 03hji2U+
PCの再インストールしてGamemaker入れなおしたら
既に使われているライセンスってはじかれてしまった…
どうすれば・・・orz
177:名前は開発中のものです。
08/07/12 16:10:08 u3M0JlwI
私も以前、そのような状態になりましたが、
ライセンスを管理してるところ(softwrap)に問い合わせたら、無事に認証できるようになりました。
support@softwrap.com宛てに、
つたない英語でしたがこんな文面でも大丈夫でしたw
----
Dear, softwrap staff
I am Japanese Game Maker7.0 Pro user.
I upgraded GM7 Pro version by upgrade license key form resisted GM6 lisence key ,
and after a time the software reverted to Lite mode,
because ,a few days ago, WindowsXP was re-installed in my PC.
My license key of GM7 Pro is invalid in online activation.
Please reissue it...
Information:
First name : xxxx
Family name : xxxx
E-Mail address: xxxx@xxxx.xxx.jp
My license key:
License Holder xxxxxxxxxxx
Purchase Ref xxxxxxxxxxxxxxxxxxxxxxxxx
-----
windows 再インストールもですが、GameMaker 7.0 のアンインストール後、
再インストールしてもその状態になるから注意です。
178:名前は開発中のものです。
08/07/12 16:20:43 u3M0JlwI
あ、私はGM6からのアップグレード組みで、
上の文中にもそういうことが書いてありますので、
GM7を購入されたのなら適当にアレンジしてくださいです・・・
179:名前は開発中のものです。
08/07/17 00:02:23 Oo/SM1Ep
2Dの狙撃ゲームを作っているのですがスコープをのぞいた時の画面処理に困っております。
背景を縮小した画像にし、スコープのアイコンが重なった場所だけ元のサイズに戻す、というのはどうすれば良いでしょう?
そもそも画像を縮小表示出来るのでしょうか?質問ばかりで申し訳ありませんがよろしくお願いします。
180:名前は開発中のものです。
08/07/17 21:29:15 /JbdlJ3v
ビューを二つ重ねる、画面からスプライト作って縮小表示する、サーフェイス使うなど
四角い領域でよければ色々と手はあるが、丸くしたいとかだったらサーフェイス一択だな。
> そもそも画像を縮小表示出来るのでしょうか?
とりあえずはバージョンによる。
181:名前は開発中のものです。
08/07/18 19:31:51 WqsSplQ2
>>180
申し訳ありません、バージョンは6です。
出来れば丸くしたいのですが、難しそうですし四角でも構いません。
背景と同時にその背景にいる敵オブジェクトも縮小、拡大したいのです。
182:名前は開発中のものです。
08/07/18 21:13:39 Qaaz25IZ
ではお手軽なところでビューを使う方法。
・View 0
ビューの大きさ(View in roomのWとH)を画面の表示領域より大きくする。
ビューポート(Port on screen)は画面と同じ大きさ。
これで全体が縮小表示される。
・View 1
ビューポートの大きさを画面より小さくする。
ビューはビューポートと同じ大きさ。
これで画面の一部が元のサイズで表示された状態になる。
あとはビューの位置(view_xview[1], view_yview[1])と
ビューポートの位置(view_xport[1], view_yport[1])を
スコープに合わせて動かしてやればいい。
183:名前は開発中のものです。
08/07/23 14:55:27 JbMdXvhr
Unexpected error occured when running the game.
以前からこのエラーに悩んでます。
使用しているのはGamemaker6.1Aです。
毎回製作を進めるとこのエラーが起きる人がちらほら出てきます。
自分の環境では起こったことが無く、また自分よりもスペックの高い人でも
このエラーが起こることもあるようで、原因が特定できずに困っています。
184:名前は開発中のものです。
08/07/23 18:57:15 7Xl6aY+A
>>183
原因不明だからこそUnexpected errorなわけだけれども
経験的に言うと、でかいグラフィックスがあるとかでメモリ不足になっているか
Createイベントなどゲーム開始前のところにエラーがあるかのどっちか。
環境によって出たり出なかったりということだと前者の可能性が高い。
もしそうだったら極力Preload外すとか、外部リソース使うようにしてみたらどうかな。
185:名前は開発中のものです。
08/07/23 19:03:17 JbMdXvhr
外部にデータを置いてreplaceさせた方がいいかなぁ。
うーん、でもpreloadは全部外してあるし、
自分のPCのメモリは1.5Gなんですが、
2G超のPCでもエラーが起きているケースもある模様・・・悩。
186:名前は開発中のものです。
08/07/23 23:25:06 6M8uaVJP
・インスタンスの生成が無限ループになってる
・変数の値の計算が異様に大きい数値になったりしている
・インスタンスを生成時、同時に破棄の命令もしている
・生成時に衝突イベントでごにょごにょ
とかの時でも原因不明のエラーがよく出るね。
シューティングでホーミングのショットを撃っている時にもなった。
187:名前は開発中のものです。
08/07/26 18:51:42 3aZInE48
質問なんですが、衝突した相手を今の速度のまま移動させるっていうのはそうすればいいんでしょうか?
ドキュメント見る分にはselfにチェック入れればいいみたいなんですが、より良い速度で自分がかっ飛んでいってしまうのです・・・。
URLリンク(www1.axfc.net)にアップしてみましたが、画像が選り抜きの流用なので、なので、違反なら削除します。
どうしたものでしょうか・・・
188:名前は開発中のものです。
08/07/26 19:48:55 3aZInE48
ごめんなさい、とんでもない日本語ですね。
要はパンチした相手を吹き飛ばしたいのです。
URLリンク(www1.axfc.net)
エラーがあったので修正しました。一応説明するとボタン3で腕生成、ボタン1押しっぱなしでチャージした速度で腕が斜めに飛んでいきます。
パスはyoyoです。
189:名前は開発中のものです。
08/07/27 12:30:50 jZNgq52V
Collisionイベントの中では衝突した相手はotherで表される。
相手を吹き飛ばすには、自分のスピードを相手に与えてやればいい。
自分側のCollisionイベントでやるなら
other.hspeed = hspeed;
other.vspeed = vspeed;
相手側のCollisionイベントでやる場合は立場が入れ替わる(自分がotherになる)から
hspeed = other.hspeed;
vspeed = other.vspeed;
のようになる。
190:名前は開発中のものです。
08/07/28 00:21:09 qT4QHlYG
LINUX版ねえの??
191:名前は開発中のものです。
08/07/28 20:06:10 Q9pdWDQ9
>>189
おおーっ!!ありがとうございます!!
オブジェクト別に設定しなければならないのですね。
stepイベントでcheck コリジョンを使ってやってみたら反応なしでした・・・。
192:名前は開発中のものです。
08/07/28 20:21:36 OrZq3/Gb
>>189じゃないけど、これはオブジェクト別というかどちらか片方だな。
要は、「殴った相手を吹っ飛ばす」とするか「殴られたら自分が吹っ飛ぶ」とするか。
どちらも同じ結果が出る。つまり片方で十分。別に両方やってもいいけど、片方が無駄になるよね。
193:名前は開発中のものです。
08/07/28 20:23:53 OrZq3/Gb
何という絶望ID
194:名前は開発中のものです。
08/07/28 21:54:47 uk2OCtlG
質問があります。
GamaMakerで外部のファイルを読み込むにはどうしたらいいのでしょうか?
GameMakerのver7です。日本語版のver6のヘルプを見て、<file_text_open_read(fname)>
を色々いじってみたのですが、できませんでした。
またBulletML4GM.DLLというプラグインを使ったことのある方がいましたら、
BML_LoadBMLFileで行うBulletMLファイルを読み込むという方法を教えてください。
195:名前は開発中のものです。
08/07/31 00:13:59 eckrADRs
>>182
遅くなりましたがありがとうございます。
View0とView1の設定は出来ました。
ですが(view_xview[1], view_yview[1])と(view_xport[1], view_yport[1])というのをどうすれば良いのか分からないのです。
スコープのオブジェクトに関する何かの座標に入れるのでしょうか?
申し訳ありませんが何方か教えては頂けませんでしょうか
196:名前は開発中のものです。
08/07/31 00:58:45 t+mxlfep
>>195
とりあえずスコープの座標と同じにして動かしてみて
そうすれば何となく仕組みがわかるから適当に+αして調整する。
基本的にxviewとxport、yviewとyportはそれぞれ同じ値にしとけばいい。
>>194
file_text_open_readが返すIDをちゃんと使ってる?
一般的にはこんな感じのコードになる。
file_id = file_text_open_read(...)
while (!file_text_eof(file_id)) {
text = file_text_read_string(file_id);
file_text_readln(file_id);
}
file_text_close(file_id);
197:195
08/07/31 01:25:05 eckrADRs
>>196
レスありがとうございます。
もしかして(view_xview[1], view_yview[1])という入力欄があるのでしょうか?;
198:名前は開発中のものです。
08/07/31 01:48:43 t+mxlfep
いや、コードで。
view_xview[1] = x;
view_yview[1] = y;
199:195
08/07/31 02:14:47 eckrADRs
何度も何度もすみません・・・
此方低脳な物で・・・いまいちどういう事だか理解出来てません;
URLリンク(www.uploda.org)
この様になっているのですが座標指定が解らず適当な事をしております
とりあえずオブジェクトのコードで
view_xview[1] = x;
view_yview[1] = y;
を入れてみましたが間違ってるようです
200:名前は開発中のものです。
08/07/31 22:01:23 YwgqYDQL
>>196
有難うございます。
読み込むファイルは作っているゲームと
同じところに保存しておけばいいんですか?
201:名前は開発中のものです。
08/07/31 22:13:33 t+mxlfep
>>199
流れてて見えん。
サンプル作ってみたけど座標変換が案外めんどくさい件について
URLリンク(www1.axfc.net)
202:名前は開発中のものです。
08/07/31 23:15:28 eckrADRs
>>201
おお、ありがとうございます。
まさに私が求めていた物です。何度も何度も本当にありがとうございました。
203:名前は開発中のものです。
08/08/02 21:26:50 PyhBkTjg
横スクロールアクションを作っています。
悪魔城ドラキュラのように、しなる鞭を表現するにはどうすれば良いでしょうか。
204:名前は開発中のものです。
08/08/04 02:57:32 vO+Y6NBD
始めてみようと思うのですが、6と7の違いってどれほどのものでしょう?
特に考えずに7にしちゃっていいでしょうか。
過去の遺産を活用するため、6にしといたほうがいいでしょうか。
205:204
08/08/04 03:21:04 vO+Y6NBD
とりあえず7をインストール。
URLリンク(gamemaker.main.jp)
を作ってみた。
昔のとは言い回しがちょこちょこ違うけど、どれも問題なく発見できるな。
206:194
08/08/04 17:13:18 MNtmNm76
やっぱりファイル読み込み方がわからないです。
(fname)にファイル名を入れたんじゃだめなんですか?
それと読み込むファイルはどこに保存しておけばいいのでしょうか?
207:名前は開発中のものです。
08/08/04 21:33:43 hTqrWaBF
>>206
文字列は引用符でくくる
× file_text_open_read(test.txt)
○ file_text_open_read("test.txt")
そういう問題でなかったら、何をしてどううまくいかないのか
きちんと説明してくれないと困るよ。
実際に使ったコード貼るなりエラーメッセージ貼るなり。
ファイルの場所は、原理的にはパスちゃんと指定すればどこでも可。
パスって何?というレベルだったら素直にゲームと同じ場所に置いとけばいい。
>>204
5→6でけっこう大きく変わってるけど、6→7はほぼ完全互換。
大きなところでは、6であった精度バグが7では直ってる。
(かわりに再現性低い正体不明のバグがいくつか出てるみたいだけど)
細かいところで色々強化されてるし、総合的には7でいいと思う。
208:206
08/08/05 14:08:09 7PHkksrL
有難うございます。
引用符でくくってませんでした。
それと説明が下手ですいません。
以後気をつけていきたいと思います。
209:名前は開発中のものです。
08/08/06 06:59:52 e0Lc+IfT
ドロゥで描いた図形やオブジェクトのスプライトを「最も前面」に表示するにはどうすれば良いでしょうか?
ほかのオブジェクトやドロゥ、ビューよりも前に表示したいのです。
210:209
08/08/06 07:00:36 e0Lc+IfT
ちなみにGM6です
211:206
08/08/06 17:33:23 q0Kkjdvg
ゲームを起動しようとすると「Unexpected error occured when running the game」
というエラーが出てしまいます。
エラーの原因と解決法がわかる方教えていただけませんか?
URLリンク(www1.axfc.net)
212:名前は開発中のものです。
08/08/06 21:12:23 8PxMb9eX
>>209
オブジェクトのdepthをうんと小さくする。
depthは負の値にもできるので-999999とかにするとよい。
「ビューよりも前」ってのは意味がわからんけど
複数のビューを使ってるなら、番号の大きいビューが上に重なって描画される。
>>211
よくある要因については>184参照。
ゲーム開始前にエラーが出てるケースなら、
最初のルームの前にダミーのルームを一つ入れてやることで
本当のエラーメッセージを確認できる。
なんかtekiオブジェクトが呼んでるBML_localUPDATEでエラーが出てるから、
初期化の順番の問題ではないかな。
たぶんtekiの初期化(BML_SetBMLCtrl)が
kanriの初期化(BML_Init)より前に呼ばれてるので失敗してる。
213:212
08/08/06 21:21:49 8PxMb9eX
追記しとくと、初期化処理については
・複数のオブジェクトがCreateイベントを持っている場合、
どれが先に実行されるかは不定
・Game StartやRoom StartはCreateより*後*に実行される
ということに注意する必要がある。
今回のケースだと、tekiを最初からルームに配置せず
他のオブジェクトから時間を置いて生成させればいいと思われる。
一般的には、タイトル画面を作っておいて
BML_Initみたいな「他の何よりも先に必要な初期化」は
タイトル画面で済ませてしまうというのが確実。
214:209
08/08/07 00:10:10 JeoCPzcW
>>212
ビューよりも前というのは現在作ってるゲームではビュー0の中にビュー1とビュー2を表示させてます。
ビュー2の方はズームで表示させてるので普通のオブジェクトはそこを通過するとズームされてしまいます。
ですのでそのビュー2よりも前面に、つまりズームの影響を受けないオブジェクトを作りたいのです。
説明が下手で申し訳ありません。
215:名前は開発中のものです。
08/08/07 02:02:35 ED5p3ZS0
上にもあるように、ビューは番号の大きいものほど上に重なって描画される。
その状況だと、もう一つビューを作って重ねるしかないんじゃないかな。
ルームを広げて、余った領域をビュー3用の内容として使うとか。
216:209
08/08/07 09:28:36 JeoCPzcW
>>215
私は>>195さんじゃ無いのですが、勝手に>>201さんのサンプルを弄らせて貰ってるのでいまいちビューの使い方に慣れていません。
ルームの一部分を表示してる様なのでルームの大きさを弄ってみたりしたのですがどうも上手くいかず・・・。
こんな感じなのですがob_2が中央付近の四角内でも拡大されない様にしたいのです。
URLリンク(www1.axfc.net)
217:名前は開発中のものです。
08/08/07 12:57:56 ED5p3ZS0
>>216
ob_2が見当たりませんぜ旦那
特定のオブジェクトだけ拡大されたくないなら、逆にそいつを縮小描画する手もある。
drawイベントの中で
if (view_current == 2) {
//draw_sprite_extで縮小描画
}
else {
//draw_spriteで普通に描画
}
218:名前は開発中のものです。
08/08/07 17:21:05 JeoCPzcW
>>217
申し訳ありません、ファイルを間違えてしまいました。
URLリンク(www1.axfc.net)です。
それですとifの時は全体が縮小されてしまうのでは無いでしょうか・・・。
触れてる部分のみを縮小させる事も出来るのでしょうか?
219:名前は開発中のものです。
08/08/07 21:50:47 ED5p3ZS0
>>218
Drawイベントは各ビューごとに1回ずつ呼び出される
(どのビューに対して呼び出されたかはview_currentでわかる)。
そして、どこに描こうがビューの領域の内部だけが実際に画面に転送される。
自分のスプライトしか描画してないんだから、全体が縮小されるなんてことにはならない。
まあ論より証拠ってことで、ob_2のDrawイベントで
if (view_current == 1) {
draw_sprite_ext(sprite_index, image_index, x, y,
(view_wview[1] / view_wport[1]) / (view_wview[0] / view_wport[0]),
(view_hview[1] / view_hport[1]) / (view_hview[0] / view_hport[0]),
0, c_white, 1);
}
else {
draw_sprite(sprite_index, image_index, x, y);
}
ってやってみ。
220:名前は開発中のものです。
08/08/07 21:57:29 ED5p3ZS0
補足、実際にやりたいことは「カーソルがビューの境界にある時に
両方にまたがって描画されるようにしたい」ってことだろうけど、
ビューごとに座標系が違うからxとyも別々に管理する必要がある。
Drawイベントの頭で
x = window_view_mouse_get_x(view_current);
y = window_view_mouse_get_y(view_current);
と置き換えてやればいけるかな。丸め誤差の関係で微妙にふにゃふにゃするけど。
221:名前は開発中のものです。
08/08/08 03:41:55 t78+5+2+
>>219,220
ありがとうございます。
色々と試してみましたが「draw_sprite_ext(sprite_index, image_index, x, y,」で毎回エラーが出て起動出来ないのです。
コードの意味も良く分かってないので直しようが無く・・・
222:名前は開発中のものです。
08/08/08 12:16:04 9r+m0jPt
エラーが出てるならエラーメッセージを(ry
ヘルプ見ればわかるけどそれってレジストしてないと使えない関数だから。
エラーメッセージもそう言ってない?
もしレジストしてないんだったら、やっぱりビュー重ねるしかないと思う。
ルーム広げるとおかしくなるって言ってたけど、コードの中で使ってる
room_widthとroom_heightはそのままルームの大きさだから
実際に使いたい領域の大きさに合わせて置き換えてやる必要がある。
あと、背景を指定してると当然下にきたビューが塗り潰されちゃうから
背景はなしにしておいて、別のオブジェクトに必要なビューだけ
draw_background_tiledで背景を描画させるといい。
223:206
08/08/08 22:55:06 Dp8hyxp4
遅れてすいませんが
有難うございます。
224:名前は開発中のものです。
08/08/13 16:38:52 9U93GJPn
>>192
ありがとうございます。
それにしてもアクション作るのは大変ですね……埋まらず歩くのがいまだに無理です
gamemakerのスプライトエディターが実に便利ですね。痒いところだけ手が届くみたいな。
ものが伸びる動きを考えてみました。
URLリンク(www1.axfc.net)
のpliiiです。(キーワード・yoyo)
vmissでは下キーや上キーでロリータがミサイルを打ちますがそれだけです(笑)
生暖かく見守っていただきたくて。ちなみにvmissはproじゃないと動かないと思います。
ところで質問なんですが自分に重なっているオブジェクトの、重なっている範囲だけ透明にする、色を変えるっていうことはできますかね?
ヘンな日本語で申し訳ありません。あ、自分は7のproを使っています。
225:名前は開発中のものです。
08/08/14 01:58:12 OGCepjkd
描画APIとしてOpenGL使えないのか?
226:名前は開発中のものです。
08/08/14 22:09:11 y+Gl/YHW
うっわ今気づいた……ペアレント設定スゲエ便利……
うわあ・・・・・・・・・・かなり時間無駄にしてたきが・・・うわあ・・・・
227:名前は開発中のものです。
08/08/14 22:10:41 SEYmkdw0
ぺあれんと設定?
どんな感じなのかkwsk
228:名前は開発中のものです。
08/08/14 23:19:00 SyKT2EHY
このソフトを使ってこれからゲーム作ろうと思うのですが、
バージョンはどれがいいのでしょうか?
パソコンでゲームを作った事はありません。
やっぱり日本語化できる5,3Aがいいでしょうか?
229:名前は開発中のものです。
08/08/14 23:59:01 fWCjSQKb
>>228
最新バージョン用の日本語辞書ファイルがこのスレにあがってたよ
230:名前は開発中のものです。
08/08/15 01:40:43 YYg607kj
Linuxの、diff -u > に気づいたときと同じ衝撃を味わう
パッチ作成、それまで手書きだったからな
まさかdiffで簡単にできるとは
231:名前は開発中のものです。
08/08/15 14:49:00 05Tah5Zi
>>229
レスどうもです。
今このスレ全部見てきたんですが・・・
最新バージョンって7,0ですよね?
探しても見つからないです・・・
どこにあるのでしょうか?
232:名前は開発中のものです。
08/08/15 15:15:52 oWA1flsm
ゲーム中にゲーム画面に日本語を表示する事は出来るのでしょうか?
英語でしか表示出来ず、今まで文字毎のスプライトとオブジェクトを作って表示してたのですが
スプライトとオブジェクトの数が凄い事になってしまいました。
233:名前は開発中のものです。
08/08/15 21:17:31 b4foDt54
>>232
そんな時こそ非公式情報サイトで配布してる日本語描画スクリプトですよ
234:名前は開発中のものです。
08/08/16 15:12:50 phIiQvcL
gmlで衝突相手を判別するのはどうすればいいんでしょうか?
弾を跳ね返す盾をチュ食っているのですが、
あらかじめグローバル変数を決めて、
instance_positionでぶつかってきたオブジェクトの速度を調べ、グローバル変数に代入して
一定以上ならとび道具として速度を反転させる、というつもりで掻いてるのですがうまく言ってるのかどうかもわかりません。
あと大砲とか撃ったときの反動ってどういう現し方がありますかね?
自分はアラームで速度を半分にして反転させて……というのを繰り返してやってるんですが……あんまりスマートじゃないですよね?
235:名前は開発中のものです。
08/08/16 17:05:03 59E6GChr
衝突判定はAddEvent > Collision
衝突相手はotherで参照できる(ただしCollisionイベント内のアクションでのみ)
反動の件はイマイチやりたいことが理解できん
撃った反動で射撃方向とは逆方向に砲身が吹っ飛んだ後、ゆっくり元の位置に戻るってことかな
読んだ感じだと反動というより振動って感じだろうか
それと余談だけどゲーム設定などを除いてグローバル変数は極力使わない方がGMっぽいかもよ
もともとのオブジェクト指向的な作り方を徹底した方が色々と管理しやすいと思う
具体的には
×神の視点に立って弾が跳ね返るのを見守る→ぶつかったらボールの方向を変えてやる
○弾オブジェクトに「盾に衝突する」とか「跳ね返る」という振る舞いを教えておく→あとはボールに任せる
○盾オブジェクトに「弾が衝突する」とか「跳ね返す」という振る舞いを教えておく→あとは盾にまかせる
3番目のは他オブジェクトのプロパティを弄ることになるから少し気持ち悪いけど1番目のよりは分かりやすい
HSPとかBasicの経験が長い人なら逆に1番目の方が分かりやすいかもしれん
236:名前は開発中のものです。
08/08/20 18:29:52 iPH66y54
あるレイヤーに置いたタイルをみんな同じようにアニメーションさせる、って出来ないかな……
RPGの水面みたいな。
237:名前は開発中のものです。
08/08/20 19:25:06 Rn6yFU9D
・別々のレイヤにタイルを置いといてtile_layer_show/hideで切り替える
(手動で同じ場所にタイル配置するのが大変なら、
ルーム開始時にコードでコピーする手がある)
・タイルが使っているイメージ自体をbackground_assignで入れ替える
(荒技だしパフォーマンス的にもおすすめできない)
・あきらめてスプライト+オブジェクトを(ry
ざっと思いつくのはこんなところかな。
238:名前は開発中のものです。
08/08/20 19:43:07 iPH66y54
>>237
アニメーションが20枚もあるんで、やはり最後の方法しかないかな……。
ありがとうございました!
色々試してみます
239:名前は開発中のものです。
08/08/21 12:45:05 G8dr1p1s
>>233
遅くなりましたがありがとうございます。
こんな便利な物があったのですね
240:名前は開発中のものです。
08/08/22 01:37:31 OJ1IYSd5
>>236
変数の計算用のオブジェクト
{
global.image_num+=1
if global.image_num>20{global.image_num=0}
}
水面のオブジェクト
{
image_index=global.image_num
image_speed = 0
}
こんな感じで出来そうだけどどうだろう
241:名前は開発中のものです。
08/08/22 04:20:26 mbzREpFo
>>240
オブジェクトで描画する分には問題ないので……
わざわざありがとうございます
242:名前は開発中のものです。
08/08/22 18:34:03 M3lU0P0b
このソフトで作られたフリーゲームのBGMを取り出したいんだけど
保存したexeを展開したりとかできたりする?
243:名前は開発中のものです。
08/08/23 03:36:04 CfFt4xoC
>>242
そんな事は止めて下さい
244:名前は開発中のものです。
08/08/23 20:25:33 KXs72kwh
>>242
基本的に、データを抜き出してどうこうっていうのはご法度。
245:名前は開発中のものです。
08/08/24 17:57:02 MJZApYif
キャラ毎にライフ設定は出来ないのでしょうか?
各キャラにライフを設定して常に各キャラの下にバーを表示して起きたいのです。
246:名前は開発中のものです。
08/08/24 19:27:30 wkT+Zen9
GMver7の日本語化ってまだできないんでしょうか?
247:名前は開発中のものです。
08/08/24 21:17:25 T5dkUX6n
>>245
自分で答えを言ってる!
オブジェクトごとにライフを設定すれば良いだけよ
まずCreateイベントに
MAX_HP = 100
hp=random(MAX_HP)
//普通は体力満タンで生まれるだろうけど
//今回はサンプルということで100以下のランダムな値をいれとく
次にDrawイベントに
draw_sprite(sprite_index, image_index, x, y)
//手動でスプライトを表示する
draw_set_color(c_red)
//描画色を赤に設定
draw_rectangle(x,y-10,x+sprite_width,y,false)
//スプライトの幅と同じ長さの赤い棒を描く
draw_set_color(c_green)
//描画色を緑に設定
draw_rectangle(x,y-10,x+sprite_width*life/MAX_LIFE,y,false)
//緑の棒を描く。棒の長さは、スプライトの幅×現在HP÷最大HP
さらにちょこっと工夫すれば色々な表現ができるよ
棒の長さを一瞬で変えるんじゃなく、アニメーションさせて伸ばしたり縮ませたり、とか
格ゲーみたいに直前に食らったダメージの部分は違う色にする、とか
普段は非表示でHPが増減した時だけ数秒だけ表示する、とか
248:名前は開発中のものです。
08/08/24 21:47:18 MJZApYif
>>247
ありがとうございます。
GM6なのでコードとかは良く分からないのですが・・・頑張ってみます
249:名前は開発中のものです。
08/08/24 22:35:27 T5dkUX6n
GM6でも7でも5.3でもGMLというスクリプトを使ってゲームを作ることができます
もちろんGameMakerはマウスでアクションを選ぶだけでもゲームは作れます
(例えば上のレスの内容はVarableアクションやDraw系アクションを使えば同じことができます)
なので無理に使う必要はありませんが簡単かつ便利なので少しずつ覚えていくと後々役に立ちます
GMLは比較的オーソドックスな言語なので将来他のプログラムで製作する時にも理解の助けになると思います
はじめは教材やサンプルが少なくて泣けてくると思うけど頑張れ!
250:248
08/08/25 06:32:19 bHYCWqjA
>>249
なんとかHPを表示する事が出来ました。本当にありがとうございます。
二度も申し訳ないのですが敵と当たった時に誰のライフがどらくらい減るか、というのはどうすれば良いのでしょうか?
251:名前は開発中のものです。
08/08/26 19:09:24 8PREyaa3
格闘ゲームみたいなキャラクターセレクト画面を作りたいのですが
セレクトしたキャラクターのオブジェクトを戦闘用の別ルームに出現させるにはどうすれば良いでしょうか?
キャラクターセレクトのルーム内のオブジェクトをキャラデータ以外消去して
セレクトマップにマップを構成するオブジェクトを直接置いて行く・・・という風なのならなんとか出来たのですが
それだと物凄く面倒で新しく追加するのがとても大変です。
252:名前は開発中のものです。
08/08/26 20:42:28 KqN2Dkl3
>>250
既に解決してましたらスルーしてください
上の方で書いたオブジェクトに防御力と攻撃力を追加し衝突するとダメージを受けるようにしてみます
まずCreateイベントに追加(7とか18って数字は適当に変更してOK)
bougyo=7
kougeki=18
あとはCollisionイベントにHPの増減を記述します
例1.敵と衝突した時に、自分のHPが18減る
hp = hp - 18
例2.敵と衝突した時に、相手の攻撃力の分だけHPが減る
hp = hp - other.kougeki
例3.敵と衝突した時に、相手の攻撃力と自分の防御力の差だけHPが減る
hp = hp - max(0, (self.bougyo - other.kougeki))
例4.敵と衝突した時に、相手のHPが30減る
other.hp = other.hp - 30
1行だけのコードなら、controlタブにあるVariablesアクションを使っても同じことが出来ます
GM付属のサンプル(例えば1945.gm6)でも機能説明ということでcontrolタブのアクションだけで作ってますね
253:名前は開発中のものです。
08/08/26 21:06:11 KqN2Dkl3
>>251
単純にグローバル変数を経由して別ルームに情報を渡すというのはどうでしょう
例えば
自キャラの識別番号は「global.plyaerID」という変数に格納
敵キャラは「global.enemyID」という変数に格納しときます
もちろんこれらはセレクト用のルームでプレイヤーが自由に変更できるようにしときます
戦闘ルームにはRoomCreatorというオブジェクトだけを配置しておきます
RoomCreatorはルーム開始時など任意のタイミングで上記のグローバル変数を参照してキャラクターを生成します
// playerIDが1ならガイル、7ならダルシムを生成
if(global.playerID==1){instance_create(0,0,obj_GAIRU)}
if(global.playerID==7){instance_create(0,0,obj_DARUSIMU)}
その他にも戦闘ルームの背景画像やBGMのセレクト状況なども渡せるようにすれば変更や管理が楽になるかと思います
これらはRoomのCreationCodeでも可能かもしれません
ただし管理の容易さや再利用性などを考えるとルーム管理オブジェクトを別に作った方が便利そうです
254:名前は開発中のものです。
08/08/26 22:53:57 8PREyaa3
>>253
ありがとうございます。
つまりキャラアイコンをセレクトした時、変数に任意のキャラ識別番号を入れて
他ルームで識別番号によって呼び出すオブジェクトを変えるという感じでしょうか?
難しいですが大体分かるような気がします。
変数はルームを越えても大丈夫なんですね
255:名前は開発中のものです。
08/08/26 23:05:57 3+A0dz+L
というか、起動してから消すまでずっと使えるメモリとしてグローバルという概念がある
256:251
08/08/27 18:07:00 JyCTdSQ7
アイコンをセレクトしたイベントで
コード「global.plyaerID=1」と入れたのですが
他ルームで「if(global.playerID==1){instance_create(20,10,OB_1)}」のようにしたのですが
ルーム移動した瞬間にエラーが出てしまいます。
また、「global.plyaerID」というのもコードの一種なのでしょうか?
「global.plyaerID2」みたいにしてはいけない物なのですか?
257:251
08/08/27 18:13:46 JyCTdSQ7
なんか普通にプレイヤーのスペル間違ってました。ありがとうございました。
258:248
08/08/28 23:55:55 Q7MQ5kTN
>>252
遅くなりましたが分かり易い説明ありがとうございました。
これは簡単に色んなパターンが楽しめて良いですね。
259:名前は開発中のものです。
08/09/04 22:36:49 4hJjzvVJ
GMphysics使ってる人います?
5のサンプルがうまく動かないんですよね……
記述をみるかぎりポリゴン作るのがめちゃくちゃ楽そうなんですけど。
PCのスペック不足は自覚しているので、もし4より格段に便利ならPC買い換えようと思ってるんですけど……
どうでしょうか?
260:名前は開発中のものです。
08/09/08 07:25:08 VEQWn8iA
なんか、GOTOと同じで
グローバル変数を使うのは悪いこと!
みたいに教育受けてきた者は
グローバル変数にはアレルギーがあるだろう
261:名前は開発中のものです。
08/09/11 19:18:27 px4WAX7A
標準のセーブ機能って、scriptいじってからロードすると読み込めなくなったりするけど、
RPG等のセーブにも耐えられるものなのだろうか……
262:名前は開発中のものです。
08/09/12 14:57:50 WTW/QyVX
ファイナルファイトのような横スクロールアクションを作るのは難しいですか?
素材などの作成時間は除いたとして
263:名前は開発中のものです。
08/09/12 16:36:54 Es/bcu2J
>>262
素材の制作を考慮しないのなら、基礎を組むのにはあまり時間かからないと思う。
でも、攻撃のあたり判定や、敵の吹っ飛び方、攻撃の連携など難しい所もいくつか。
264:名前は開発中のものです。
08/09/13 21:33:52 pOLwDEz8
STGで自機の周りを回るオプションを作ろうと思い
回るところまでは出来たのですが
オプションが2つの時は180度あけて、3つの時は120、4つの時は90度
とゆうように自機の周りのオプションの間隔を均等にするには
どうしたらいいのでしょうか?
265:名前は開発中のものです。
08/09/13 22:17:09 y3l90inF
増える度にオブジェクトを変えるとか
266:名前は開発中のものです。
08/09/14 00:18:40 gN9mQ7cX
N個目のオプションの角度=N*360/(オプションの個数)
ここからがんばれ
267:名前は開発中のものです。
08/09/14 11:14:40 A6sMZm51
有難うございます。↑の方法についてなのですが
オプションを4つ作りたい場合は
4種類のオブジェクトを作る必要があるんですか?
それとも1種類のオブジェクトを4つ作るだけでできますか?
268:名前は開発中のものです。
08/09/14 12:29:14 gN9mQ7cX
普通はオブジェクト1つ。敵が100機出るからってオブジェクト100個作らんでしょ?
各オプションに自分が何番目のオプションか教えてやる方法もあるけど、
このケースだと配列使って自機に全部管理させた方が楽。
今どうやっているのかわからんからあくまでも一例だけど
/* Createイベント */
count = 0; // 今あるオプションの数
angle = 0; // 回転の管理用
/* どこかのイベント(オプション1個増やす) */
option[count] = instance_create(x, y, obj_option);
count += 1;
/* Stepイベント(オプション回す) */
angle += 1; // 適当に
for (i = 0; i < count; i += 1) {
option[i].x = x + lengthdir_x(100, angle + i / 360 * count);
option[i].y = y + lengthdir_y(100, angle + i / 360 * count);
}
269:名前は開発中のものです。
08/09/14 13:21:59 y4Lx9aKy
あまりメリットは無いけどあえてオプション自身にやらせると・・・
1.生成時にinstance_numberで自分が何個目かを記録
2.ついでに現在オプションが何個あるかを把握する
3.上で把握した数を全てのオプションに教えてやる
4.現在のオプション数、自分が何個目か、この2つの情報から位置を修正する
修正のタイミングや必要になる情報は同じだけど
3と4の「全てのオプション」を制御する部分が268氏の方法より面倒
・コード記述欄の右上チェックボックスでObjectを選んで全てのオプションインスタンスに通知する方法
・オプションが増減するタイミングでユーザ定義イベントを発行して全ての(ry
・ヘルプに載ってる方法、つまりinstance_id配列を使って全ての(ry
自機側は全く管理しなくて良い代わりにオプション側が同じかそれ以上に面倒そう
しかもどの方法もオプション自身のアクションとして記述するとややこしくなる
と、色々考えてみたけどやはり268氏のやり方が管理しやすいです