トップページgamedev
996コメント482KB

【2D】ゲーム作成ツールGameMaker part3【マンセー】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。2008/05/11(日) 01:41:47ID:PRhlwPyW
無料Windows用2Dゲーム作成ツール"Game Maker"について、色々と語り合うスレッドです。

●本家(英語)
 ttp://www.gamemaker.nl/
●GameMaker Japan - 非公式情報サイト(日本語)
 ttp://gamemaker.main.jp/
●初心者向けチュートリアル
 ttp://gamemaker.main.jp/modules/articles/index.php?cat_id=1


前スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】
http://pc8.2ch.net/test/read.cgi/gamedev/1087068523/
0946名前は開発中のものです。2009/04/12(日) 22:35:33ID:BC+Eu9Rz
>>944
バージョンが分からないから7で答えると
未レジストならstep event あたりでimage_alphaを操作して
draw event には何も置かない
レジストしているならdraw_sprite_ext()で自由に設定できるよ

>>945
たぶんコードに関しては
if()
{
 //コード内容
}
else if()
でおkだと思う
@でコードが終わってもいいなら@にexitを置いてもいいような気もする

>@の部分に・・・
はキーマップやデバイス状態がクリアされても、hensuuはクリアされるわけではないから
2回目のif文が次回のstepで呼ばれる
0947名前は開発中のものです。2009/04/12(日) 22:51:51ID:BTylIN/l
>>946
あ、すみません5.3です。
GMLは良く分かりません…辛うじて〜extで描写スプライトを透過表示することはできたのですが
ステップごとにalpha値を増減させる方法がちょっと良く分かりません。
0948名前は開発中のものです。2009/04/12(日) 23:05:49ID:yJ6RnAza
>>945
key press イベント内で処理するのが簡単かな。
key press イベントは、キーが押されて無い状態から押された状態になったときだけ呼ばれるんで、
押しっぱなしで連続入力されるってことがない。

キー情報の取得をGML関数でやりたいのなら、
前ステップのエンターキーの入力情報を記録しておいて、
現ステップのエンターキーの入力情報と見比べる、ということをすればよい。
どういうことかというと、前ステップでエンターキーが押されていない状態でかつ、
現ステップでエンターキーが押されている状態のときのみ処理する、っていう風にする。
ので、前ステップのキー入力状態を表す変数が必要になる。

キー入力の回数で条件分岐させたかったら、カウントする変数を用意して、
入力されたときに加えるようにし、その値をif文で利用すればよい。
0949名前は開発中のものです。2009/04/12(日) 23:12:46ID:BC+Eu9Rz
>>947
アイコン形式でほとんど書かないから細部が微妙だけど、流れだけ
create event で variable set (例 変数名myalpha; 値 1 relative チェックなし)

step event でvariable set(例 myalpha; 値 -0.02 relative チェック有)
if文で完全に透明になった後の処理 if(myalpha < 0) 略

draw event でext関数のalpha値の引数にmyalphaを設定

こんな感じ?
0950名前は開発中のものです。2009/04/12(日) 23:16:30ID:BTylIN/l
なるほど、数値のところに変数名を入れて代入する形でやればいいんですね…
ありがとうございました。
0951名前は開発中のものです。2009/04/12(日) 23:54:51ID:vbfiXVRM
>>948
できました。ありがとうございます。
0952名前は開発中のものです。2009/04/13(月) 08:14:52ID:upr0fieL
step毎に今の向きとかの指定のスプライトを表示させてると
そのスプライトのアニメの1枚目ばかり表示されてしまうのだが…

って、向きが前ステップと変わった時だけ表示変更の処理にすればいいのか
0953名前は開発中のものです。2009/04/13(月) 11:40:44ID:A8YoijIx
他のオブジェクトのユーザ定義を呼び出すにはどうすればいいんでしょうか
0954名前は開発中のものです。2009/04/13(月) 14:30:30ID:Vxj2zKsa
ユーザ定義イベントを呼び出すといっても、2種類あるから困る。

呼び出したいユーザ定義しているオブジェクトのインスタンスを操作したいのか、
それとも、呼び出し側のインスタンスに、他のオブジェクトのユーザ定義のコードを適用したいのか。

前者の場合は、
with(obj) {event_user(0); }
と記述する。
こうすると、objオブジェクトのユーザ定義0番が、
ユーザ定義されているオブジェクトのそれぞれのインスタンスに適用される。
(objはインスタンスIDでもよい)

後者の場合、
event_perform_object(obj, ev_other, ev_user0);
と記述する。
こうすると、objオブジェクトで定義されているユーザ定義0番のコードが、
呼び出したインスタンスに対して実行される。

前者はあるインスタンスが他のインスタンスに命令を下すイメージに対し、
後者はスクリプトを呼び出したようなイメージに近い。
0955名前は開発中のものです。2009/04/13(月) 22:30:25ID:A8YoijIx
後者の方です。有難うございます。

もう一つ、自分はそれを「前方のオブジェクトを調べる、話しかける」時に使いたいのですが、
調べる側のオブジェクト(=主人公)にそのイベントを入れる場合上記のobj名を毎回変えないといけません。
objに変数名を入れておいて処理する前に後から代入すればいいのでしょうが、objの名前を取得するにはどのようにすればいいのでしょう?
今回の場合は「向いている方向にある調べられるオブジェクト」を取得したいのですが…
方向については主人公を動かす際に数値(上向きなら8のようなテンキー配置)で決めているのでそこは大丈夫です。
0956名前は開発中のものです。2009/04/14(火) 00:35:14ID:5P0slkG/
>>952
GM6以上で「Change the sprite」アクションを使ってるんだったら、
subimageを0じゃなくて-1にすればいいでよ。

GMLでやってるんだったら、「sprite_indexを変更するとそのたびに
サブイメージの枚数を超えないようimage_indexが調整される」ことに注意。
イベントの中で何度もスプライトを割り当て直していて、もしその中に
フレーム数が1のスプライトがいたらimage_indexが常に0に調整されてしまう。

>>953
使うのは名前じゃなくてインデックスだべ。
(相手のインスタンスID).object_index
向いている方向のインスタンス調べるのはinstance_placeとかで。
0957名前は開発中のものです。2009/04/14(火) 01:02:49ID:GPS2DXGY
パスでIDの分かってる任意のインスタンスを動かすにはどうすればいいんでしょうか。
path_start(path,speed,endaction,absolute);を使うとこれを呼んでるオブジェクトが動いちゃいます。
0958名前は開発中のものです。2009/04/14(火) 02:37:49ID:5P0slkG/
with (ID) { path_start(...); }
0959名前は開発中のものです。2009/04/14(火) 08:46:36ID:YttNmD/l
bGMスクリプトのループポイント設定機能は是非欲しい
0960名前は開発中のものです。2009/04/14(火) 15:17:30ID:d9KopV2m
非公式サイトが落ちっぱなしだけどどうしたの
あそこがないと、bGMスクリプトとか日本語スクリプトが手に入らない
0961名前は開発中のものです。2009/04/14(火) 15:41:29ID:JVweFrbX
海外スパムにやられて荒らされてたからねぇ。
管理人さんが一時的に落としてるのか、
レンタルサーバー側から強制的に落とされたか分からん。
いずれにしても、早期復帰が望まれますなぁ・・・。
0962名前は開発中のものです。2009/04/14(火) 19:07:31ID:eDOQ4eLr
bGMスクリプトで二つの音を同時に鳴らそうとすると音が変質してしまうんだけど
これはやはりどうしようもないことなのかな?
1フレーム差で鳴らさないとダメか
0963名前は開発中のものです。2009/04/14(火) 19:58:36ID:kBnf35Th
audiereのAPIリファレンス見てみたら、まんまaddLoopPointメソッドってのがあってできそうな気もするんだが
bGM.exeはオープンソースにしないのかな
よこしま氏生きてるか〜?
0964名前は開発中のものです。2009/04/14(火) 20:58:29ID:eDOQ4eLr
あとbGMスクリプトで音を鳴らすと、常にマウスカーソルの隣に砂時計マークが出るのですが
これって自分だけですかね?
他の人が作ったものをプレイしてみてもそのようなことにはならないのですが
(もちろんプレイしたのは同じPCです)
普通にbGM_playスクリプトを使うだけでいいんですよね?
他の画像とかで容量使いすぎてるのかな?
0965名前は開発中のものです。2009/04/14(火) 23:20:25ID:edegRGxj
ただいま、サイトを一時的にクローズしております。
原因は、2009/04/10 早朝(日本時間)に受けた、サウジアラビアのハッカーらしき人物からの手動荒らし行為です。

サイト復旧作業後に、安全のためサーバー移転を行う予定です。
日程などが決まり次第、ここでお知らせ致します。

ご不便をおかけして大変申し訳ありません。

管理人:よこしま
0966よこしま2009/04/15(水) 04:12:08ID:GNlkvOra
>>903
>ピクセル毎にアルファ値もったフォント画像の出力
常にそのような画像を出力するバージョンを作ってみました。
ttp://gamemaker.main.jp/dlfiles/jFontMaker2.3.0-alpha.zip
しかし、

var z, h;
z = sprite_add_alpha(working_directory + "/Zenkaku_20px.png", 22, false, true, 0, 0);
h = sprite_add_alpha(working_directory + "/Hankaku_20px.png", 1, false, true, 0, 0);
mbtext_setfont(z, h, 20);

と実行すると2行目(全角画像の読み込み)で、
「Unexpected error occured when running the game.」 が出て終了してしまいます(GM 7.0 Pro)。
このエラーが出なければ使えるかもしれません。

>>962
すみませんが、bGMの仕様上どうしようもありません。
ただ、bGMスクリプトをいじってexecute_program()の実行をキューイングすると改善するかもしれません。

>>963
生きてます!
bGM.exeはソースを公開しようと思っていたのですが、ソースを消失してしまいました。

>>965
早速のご転載ありがとうございます。
0967名前は開発中のものです。2009/04/15(水) 07:40:48ID:qqM6dRq4
>>966
あ、生きてた
乙であります

>bGM.exeはソースを公開しようと思っていたのですが、ソースを消失してしまいました。

なん・・・だと・・・?
0968名前は開発中のものです。2009/04/15(水) 08:40:35ID:7eoiNWlx
>>966
お疲れ様です。

>z = sprite_add_alpha(working_directory + "/Zenkaku_20px.png", 22, false, true, 0, 0);
>と実行すると2行目(全角画像の読み込み)で、
>「Unexpected error occured when running the game.」 が出て終了してしまいます(GM 7.0 Pro)。

外部から画像を取り込むときは、画像が横一列に並んでいるものと想定しているようです。
jFontMakerで作られた画像は22枚の画像が縦一列に並んでいます。そこが問題だと思われます。

jFontMakerの方で修正なさるか、以下の方法で解決できます。

1) jFontMakerで画像を作る。
2) Create from Stripで読み込み、22分割する。
3) Save as Stripでbmpとして保存する。(横並びの画像として保存される)

アルファチャンネル付きpngにしたい場合は、アルファチャンネルを差し込むソフトが必要になります。
0969名前は開発中のものです。2009/04/15(水) 08:46:54ID:7eoiNWlx
(追記)
アルファチャンネル付きpngにしなくても、
GM内で、通常の画像とアルファチャンネル用の画像を用意して、
sprite_set_alpha_from_spriteを使うことでも解決できると思います。
0970名前は開発中のものです。2009/04/15(水) 09:27:42ID:wdjWF5fj
ttp://www.freegameclassic.com
コンテストに出そう。
小さくまとまってしまってはいけない。
3分で世界を革命しろ。
0971名前は開発中のものです。2009/04/15(水) 09:30:47ID:Df+UInj6
bGM.exeってWinMainエントリポイントからaudiere.dll呼んでるんですか?
GMから外部プログラムに引数渡す方法とか書いてあるドキュメントあります?
指針が分かればこちらでも作れるかも
情報plz
0972名前は開発中のものです。2009/04/15(水) 11:15:11ID:53Rcwwsm
つ execute_program(prog,arg,wait)
prog : 実行ファイル名
arg : コマンドライン引数
wait : プログラム実行終了まで待機するかどうかのフラグ
0973名前は開発中のものです。2009/04/15(水) 12:04:50ID:Df+UInj6
1音に対して1プロセスってこと?
exe内の関数呼び出しとかできないのかな
0974名前は開発中のものです。2009/04/15(水) 14:51:48ID:qxRyiiJT
exe内の関数を直接呼び出すっていうか、
そういうことしたいならDLLを直接叩けばいい。

だけど、DLLを利用するはPro版である必要があるんで、
Liteでも使えるように bGM はDLLにしなかった経緯がある。
多分bGMは、2重起動したときに後から起動した側が前のプロセスに対して
命令を送っているような感じで動いていると思う。
0975名前は開発中のものです。2009/04/15(水) 15:38:57ID:Df+UInj6
なるほど、ありがとう

あともうひとつ聞きたいんだけど、Game Settingでウィンドウスケール200%にしたり
フルスクリーンにしたりすると、自動的にバイリニア補完されてピクセルがボケたようになるんだけど
補完しないポイントサンプリングみたいにできないんですかね?
下のチェックボックス外しても機能しないし
0976よこしま2009/04/16(木) 01:25:39ID:Ui8U3b4r
>>968
>外部から画像を取り込むときは、画像が横一列に並んでいるものと想定
その通りでした!
おかげさまで直すことが出来ました。ありがとうございます。

ttp://gamemaker.main.jp/dlfiles/jFontMaker2.3.1-alpha.zip

使い方:
ゲーム起動時に1回、>>966のGMLコード(4行分)を実行すれば、
アルファチャンネル付きの全角文字が描画できます。


>>971
bGMの仕組みについては、以下をご参照ください:
・ Googleにある http://gamemaker.main.jp/modules/articles/article.php?id=25 のキャッシュ
・ bGMの説明画像 ttp://gamemaker.main.jp/dlfiles/img125-bGM.png
・ bGMスクリプト

説明画像にある青のbGM.exeは、Audiereを呼んで音声再生を行っているプロセスです。
この青のbGM.exeは、非表示で空のウィンドウを持っていて、
そのタイトルかウィンドウクラスが、bGM_private_generate_pid()で生成されたユニーク文字列になっています。
緑のbGM.exeは、その非表示ウィンドウをFindWindow()で探して、PostMessage()でパラメータを渡して即終了します。
変な実装ですみません。
0977名前は開発中のものです。2009/04/16(木) 06:27:39ID:FlZQEOy3
もしできるのなら、bGMで、再生する準備をするだけの関数があるといいな。
playだとそのまま再生してしまうところを、そこで再生せずに後からすぐに再生できるような関数。
GMLでいうsound_restore(index)みたいなもの。
これがあると、あらかじめBGMをロードさせておいて、(若干の遅れはあっても)曲を開始させたいタイミングで再生できるようになるので。
0978名前は開発中のものです。2009/04/16(木) 06:44:07ID:sC/2txZV
ソース紛失したって言ってるんだから要望出すなよ。
やりたきゃ自分で調べて一から作れ。
0979名前は開発中のものです。2009/04/17(金) 08:35:51ID:1Yx1rF1j
GameMakerで作られた一番面白いゲーム教えろ
0980名前は開発中のものです。2009/04/17(金) 08:40:45ID:1Yx1rF1j
http://www.yoyogames.com/browse?sort=top-rated
http://www.yoyogames.com/make/browse/?beta=1&sort=top-rated
http://www.yoyogames.com/make/browse/?incomplete=1&sort=top-rated

やりたくなるようなゲームがひとつもない
質より量か
0981名前は開発中のものです。2009/04/17(金) 12:02:11ID:eamDi3au
ルームに関わらずゲーム起動時から終了まで一貫してシステムを制御するようなオブジェクトって作れないの?

ゲーム中にウィンドウタイトルバーのキャプションを変える必要ない時でも、全ルームに同じの書かないといけないの?
0982名前は開発中のものです。2009/04/17(金) 12:12:18ID:iYbsMpo1
>>980
フォーラム見たらわかると思うけど、公式住人に洋厨が多くてセンスとスキルがアレなだけ。
(日本のゲームをパクってシレッとしている&アメリカ製だと思い込んでるあたり特に白んぼの本領発揮)
Ordos MachinaとかBlack War 2020なんかはゲーム的にも演出・グラフィック的にもかなりハイレベルだったけど、
どうもその手の人たちは公式を避けているように思われる。
それにしても公式のTDSはゾンビゲーとマンコ付きカラーボールのアリーナ戦多すぎ。もう少しひねればいいのに。
0983名前は開発中のものです。2009/04/17(金) 17:58:19ID:ek0aQOSe
開発中だけど、ナイトメアスフィアっていうエロゲがかなり面白そう
0984名前は開発中のものです。2009/04/17(金) 19:47:14ID:ra5yd6cO
>>981
持続イベントじゃダメなん?
0985名前は開発中のものです。2009/04/17(金) 20:05:48ID:ra5yd6cO
>>980
動画で見れば何か惹かれるかも
http://www.youtube.com/watch?v=bdgQyOIyWPY
http://www.nicovideo.jp/watch/sm5466744
DLリンク: http://gmc.yoyogames.com/index.php?showtopic=398405
0986名前は開発中のものです。2009/04/17(金) 20:31:56ID:eamDi3au
>>984
そうか
ルームの持続とオブジェクトの持続あるの忘れてた
0987名前は開発中のものです。2009/04/18(土) 11:06:58ID:KZWhRSDp
>>982
>Ordos MachinaとかBlack War 2020
ぐぐったけど、どちらも見つからないのだが。

ナイトメアスフィアもバージョン違いとかがありすぎて
全部落として試すのが面倒でやらなかった。一つに統一しろと。
0988名前は開発中のものです。2009/04/18(土) 12:05:37ID:WogbruK1
ナイトメアスフィアはまだ公開されてないけど・・・
ミックマンXのこと言ってる?
0989名前は開発中のものです。2009/04/18(土) 12:09:33ID:KZWhRSDp
>>988
ああ別物なのね。とりあえず情報が分かり難かった。
0990名前は開発中のものです。2009/04/18(土) 15:14:42ID:VRghyI0A
>>987
探してみたけどいつの間にか消えてたみたい。
去年はあったんだけどなぁ。
0991名前は開発中のものです。2009/04/18(土) 15:23:47ID:OzE2o7aU
GameMakerの良質なサンプルソースってないの?
特に国内で解説してるサイトとか
チュートリアルの挙動はしょぼいし
0992名前は開発中のものです。2009/04/18(土) 18:48:27ID:b3yfOL4i
良質っていわれてもなあ。何の解説が必要なんだろう
基本的な使い方は本家のチュートリアル見れば大体分かるし
関数はヘルプ引くのが一番手っ取り早いし
日本語関連だとかこまごましたことは非公式に割とよくまとまっていたと思うよ
0993名前は開発中のものです。2009/04/18(土) 22:02:09ID:A+bhoh22
良質じゃなくても他の人が作ってるのは見てみたい。
0994名前は開発中のものです。2009/04/18(土) 23:10:12ID:Iax/E2xq
アクションツクールみたいに、ひな形がほしいと思う時はいつもある。

皆でひな形を作ろう! と企画したいけど肝心の自分が何も提供できないから何もできないんだよね。
0995名前は開発中のものです。2009/04/19(日) 02:30:48ID:vpGW8IHj
ミックマンXも通常版と軽量版の2種類しかないぞ
0996名前は開発中のものです。2009/04/19(日) 08:45:21ID:1rgxu1oZ
>994
雛形を作る=結果的に自由度を下げる

ということになっちゃうから諸刃の剣

solid、direction、speed、gravityあたりの組み込み変数を
雛形と見る程度にしたほうが、最終的には楽になるかも。

ミックマンX2はバージョンいくつか分かれているが
ただ過去のものも一緒に置いてあるだけで
最新版2.02が2種類あるだけっぽいね
特に問題ないと思うんだが…
レス数が950を超えています。1000を超えると書き込みができなくなります。