【2D】ゲーム作成ツー ..
[2ch|▼Menu]
2:名前は開発中のものです。
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のリンク先、上から二つ目
A当然ながらポーズキーを実装している場合は書き出すオブジェの書き出しも停止してやらなくてはならない。まぁポーズに限らず
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用のしか置いてないな


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

5017日前に更新/242 KB
担当:undef