トップページ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/
0879名前は開発中のものです。2009/03/29(日) 22:36:14ID:CdUYnV/Q
>>878
ありがとう。これで何かと便利に作業できるわ。
0880名前は開発中のものです。2009/03/31(火) 00:58:37ID:9inYrVEs
スプライトにサブイメージを追加して、任意のタイミングでサブイメージを表示させることって出来ないんですかね。
サブイメージを追加すると表示したときに勝手に画像が切り替わっちゃうんで困ってます。
スプライトのspeedを0にしても、赤くなって適用されてないみたいですし。
0881名前は開発中のものです。2009/03/31(火) 01:53:49ID:vhB+70FJ
スプライトエディタのところのはな、あれはプレビューするだけで実際のスピードには関係ないんじゃ。

GM6以上だったら「Set the sprite」アクションのspeedの欄に0を入れる。
GM5だったら「Set the variable」使ってimage_speedを0にするか
image_singleにサブイメージの値を設定すればアニメーションが止まる。
0882名前は開発中のものです。2009/03/31(火) 19:50:31ID:jf9BJ086
初めまして。
ゲームメーカーは好きな絵をゲームに使えるんですか?
マタ自分で絵を作るには何か必要ですか?
作るに当たり嫉妬いたほうがいいこと歯なんですか?プログラミングとかは必要ですか?
0883名前は開発中のものです。2009/04/01(水) 00:51:50ID:frr6TtlC
まずは日本語かな
0884名前は開発中のものです。2009/04/01(水) 01:01:35ID:4Ky2XYpv
>>882
>好きな絵をゲームに……
可能。次の質問内容から、自分で描いた画像を使えるかどうかだと思われるが、それも勿論可能。
ただ、別の誰かが描いた画像を使うことについては、その画像を描いた人に訊こう。

>自分で絵を作るには……
絵があればいい。絵を描くのには使い慣れているもので十分。
jpg、png、gif、bmp等いろいろ形式は対応している。
詳しいことはヘルプでも読んでみるといい。

>当たり
当たり判定のことだと思うが、チュートリアルに沿ってゲームを作ってみろ。

>プログラミング
>>2

※個人的な助言
「こういうゲームを作りたい」という意思はあるに越したことは無いが、
もしあるとしてもその気持ちは一度抑えておいて、一度はチュートリアルに沿ってゲームを作るべき。
理由は慣れ。
基本的に、扱い方がよくわからない状態でゲームを作ろうとすると、
自分が何をやっているかがわからなくなり、そもそも何をすればいいのかもわからなくなり、
最終的にパニクって適当に放り込むようになるから。


……そして投稿前に一度は読み直せ。
0885名前は開発中のものです。2009/04/01(水) 01:07:02ID:4Ky2XYpv
……あー、当たりって書いてあるから当たり判定だと思ったわ。

何をどんな風に作りたいのかという明確なデザイン。
ゴールなくして製作は進まん。
0886名前は開発中のものです。2009/04/01(水) 04:39:49ID:4Ky2XYpv
【a×room_speed ≠ a秒】
上の方で時間についての話があったときに出てきた「秒数×room_speed」だが、
あくまでこれは『1秒間に「room_speed」の回数だけ更新されるルーム内においての「秒数×room_speed」のフレーム数』である。
確かに式の上で割れば秒数になるものの、これは実際の秒数にはならない。

例えばGMでクイズを作ったとしよう。
(単なる例えなので、GMでクイズなんて作るかなんて突っ込みはなしだぞ
 例えがクイズで納得いかないなら、麻雀にでも置き換えてくれ)
「以下の問いに答えよ。制限時間10秒」なんてものを作りたいとする。
秒数×room_speedを使おうとすると、room_speedが60fpsだとしてstep数は600になる。

だが、この600フレームは「60fpsで600フレーム」というだけであり、6秒ではない。
処理落ちというのがあるからだ。
「何だよ処理落ちかよ。処理落ちならどうせ大した差にならねぇだろ」等と侮る無かれ。
『ウインドウをドラッグすることで、ゲームの処理が止まる』からだ。

どういうことかというと、600から0に向かってカウントダウンが始まったとしても、
ウインドウをドラッグ、というより、マウスの左ボタンを押し続ける限りゲームの処理が止まるので、
カウントダウンを500で止めたまま考え続けることができる。
そしてマウスの左ボタンが離されたときに、また500からカウントダウンが再開されるわけだ。
つまり実質的に時間に制限はなくなるのである。これは開発側としては避けたい。

これを回避するには、ステップ数ではなく時間で処理するべき。
処理を止めても時間は止まらないので、時間を取得して、カウントダウンを開始した時間との差で経過時間を求めればいい。
時間が過ぎていたのならユーザーからの入力を受け付けずに「時間切れ」とする等、その辺の工夫は省略。
0887名前は開発中のものです。2009/04/01(水) 08:57:30ID:qofncwoB
とはいえ、スタンドアローンのシューティングとかアクションゲームなら
時間本位じゃなくフレーム本位でもいいような気がするけどね。
チート回避できないじゃないか、という話なら、
より根本的なところから自分で実装すべきで、GMは使わない方がよい。使うなって話になってくるし。
0888名前は開発中のものです。2009/04/01(水) 09:24:49ID:4Ky2XYpv
いやいや、常に時間で処理しろとは言わないって。
>>887の言う通り、シューティングやアクション、というより、一般的にはフレームの方がいいだろう。
俺はただ、時間を気にする必要がある場合はフレームではなく時間で、と言いたいんだ。
0889名前は開発中のものです。2009/04/01(水) 21:04:56ID:Ji2nf9I9
GMLでタイムラインを呼び出すことはできないのでしょうか?
timeline_indexとは違いますよね?
たとえば「player_attack」というタイムラインを呼び出すにはどのように書けばよろしいのでしょうか
0890名前は開発中のものです。2009/04/01(水) 21:34:44ID:gM0k17ZG
timeline_indexで合ってる。でもtimeline_position戻すの忘れるのってありがちだよね。
あと、他にplayer_attackってスプライトとかオブジェクトとかあったら名前変えとくように。
0891名前は開発中のものです。2009/04/01(水) 22:02:59ID:Ji2nf9I9
>>890
まさにドンピシャ
その二つとも問題でした。
名前を変え、timeline_positionを0に戻したら正常に動きました
ありがとうございます。
0892名前は開発中のものです。2009/04/01(水) 22:15:19ID:oibkad4v
>>881
おお。ありがとう。
インスタンス生成時に毎回speed0にすればしたいことは出来るかな。

と、思ったんだけどうまくいかないです。
生成時にspeedを0にして、ルームをクリエイト時に以下のコードを実行させてもうまくいかない。
testid=instance_create(x,y ,obj_char)
testid.sprite_index =1
testid=instance_create(x+10,y ,obj_char)
testid.sprite_index =2
testid=instance_create(x+20,y ,obj_char)
testid.sprite_index =3

obj_charは同じサイズで見た目は違う画像を数枚セットしたスプライトを設定したオブジェクト何で設定したスプライトの1,2,3枚目を横並びに表示させたいんだけど、
それぞれobj_char設定したスプライトと全く関係ないスプライトが横並びに表示されるんだよね。
表示されてる関係ないスプライトは他のスプライトのスプライトでなんでobj_charとは何の関係もないはずなんで全く意味が分かりません。
原因は何なんでしょうか?分かりにくくてすいません。
0893名前は開発中のものです。2009/04/01(水) 22:53:07ID:SJGNEKec
sprite_index は、スプライトリソースの番号だよ。
あるスプライトリソースの一枚目、二枚目を表示させたかったら、それは
image_index だ。
間違えやすいんで、気をつけて。
0894名前は開発中のものです。2009/04/01(水) 23:09:56ID:oibkad4v
スプライトとイメージは別なんだね。ありがとう。
0895名前は開発中のものです。2009/04/01(水) 23:37:01ID:oibkad4v
すいませんもう1つ教えてください。
roomのCreatinCodeで宣言した変数は他のコードからどうやって参照するんでしょうか。
例えば名前がroom0のroomのCreatinCodeでtest = 10 として、
オブジェクトでkekka = room0.test;とするとUnknown variable testと怒られてしまいます。
一応roomのあたりのヘルプを読んだのですがやり方が書いてなくて解決できません。
よろしくお願いします。
0896名前は開発中のものです。2009/04/02(木) 00:04:54ID:12Xo24fn
たぶん、roomで設定した変数は記憶されない。
global ならグローバル変数として残るだろうけどね。

なもんで、そのルームの設定変数を保持するオブジェクトを作りルームに配置して、
そのオブジェクトのローカル変数を参照するような仕組みにするしかないと思う。
0897名前は開発中のものです。2009/04/02(木) 00:49:29ID:pBMNv8u+
roomの変数にアクセスできないんじゃあroomで初期設定を行うのはやめたほうがよさそうですね。
オブジェクトを使ってみます。ありがとうございました。
0898名前は開発中のものです。2009/04/02(木) 09:15:37ID:MtqD7NS7
ERROR in
action number 1
of Step Event
for object HangBlock:

Error in code at line 1:
if (follow_screen.y < y-0)=true

at position 19: Unknown variable y

と出るんですが僕だけでしょうか?
0899名前は開発中のものです。2009/04/02(木) 10:31:22ID:YmJRLumx
>>898
follow_screenオブジェクトがルームに確実に存在しているか?
follow_screenというリソース名がオブジェクトのほかにかぶってないか?
を確認してみてね。
0900名前は開発中のものです。2009/04/05(日) 23:34:45ID:HB4rPORP
絵をかくソフトはありますか?できれば無料で
GM7はどこで無料DLできますか?
0901名前は開発中のものです。2009/04/06(月) 00:55:18ID:F0Bg928K
GM5やGM6で作ったEXEってVistaやWindows7で動く?
極力、過去のOSにも対応したいのと、低スペックVRAMでも動作させたいから古いGMを使ってるんだが、
これから現役のOSに対応しないのであればGM7を使わざるを得ないのかな・・・
GMバージョン毎の出力するEXEの最低動作環境をまとめた情報が欲しい
おまいらはGM7使ってんの?
0902名前は開発中のものです。2009/04/06(月) 01:33:15ID:Gz7Bqozn
>>901
つttp://www.wikihouse.com/GameMaker/index.php?GameMaker

これじゃ駄目なん?
0903名前は開発中のものです。2009/04/06(月) 19:15:31ID:F0Bg928K
Game Startイベントってそのオブジェクトがあったらroomに関係なくゲーム起動時に全部呼ばれるの?

あと日本語描画のmbtextで相変わらず下が途切れるフォントがあるんだけど・・・
あとピクセル毎にアルファ値もったフォント画像の出力と、7.0でアルファブレンドってできないの?
0904名前は開発中のものです。2009/04/06(月) 23:39:29ID:dy3rqE98
>903
Game Startは一番最初のルームにいるインスタンスにしか呼ばれない。
Advanced Use>More about rooms>Advanced settings で詳しく解説してある。

画像の出力はそもそもビットマップ形式しかできないからアルファ値なんてない。
入力の方ならsprite_set_alpha_from_spriteなりsprite_add_alphaなりでできる。
0905名前は開発中のものです。2009/04/07(火) 12:44:13ID:R0Vs8A35
質問ですがdirection系のコマンドを使って
直接、あるオブジェクトの方向を向かせることは出来ますか
例えば敵に弾を撃たせる時、
「direction(自機の居る方向)」と指定出来ると命令を組むのが楽になるのですが
0906質問ならまず「バージョン/GMLを使えるか否か」2009/04/07(火) 17:01:23ID:SLVCHpzp
image_angle = point_direction(x,y,object.x,object.y);
0907名前は開発中のものです。2009/04/07(火) 17:41:38ID:w5DdDAUZ
そういや、グラボ変えたら5.3で作ったゲームが目茶苦茶重くなったな
0908名前は開発中のものです。2009/04/07(火) 18:36:56ID:nTAUo5oY
>>906
それだとスプライトの向き変えてるだけだから
direction = point_direction(...)とするべき
でステップでimage_angle=directionてすればいい
09099052009/04/07(火) 20:05:09ID:R0Vs8A35
おお、ありがとう、上手く動いた。
次から活用させて貰います。
もうちょっとヘルプにも目を通しておいた方がよさそうですね…
0910名前は開発中のものです。2009/04/10(金) 14:16:55ID:sPx7R60Y
これ、タイル(バックグラウンド)をひとつずつ選択して置いていくのが面倒だなぁ。
範囲選択して一気に複数のタイルオブジェクトを置けると、作業効率が上がって便利なんだが。
誰か英語饒舌な人、本家YOYOGAMEに要望出してください。7.1として。
0911名前は開発中のものです。2009/04/10(金) 18:02:42ID:8Y2ZXsLp
フォルダの整理がうまくできない
フォルダとフォルダの間に移動させようとしても、どうしてもフォルダの中に入ってしまう
上手いフォルダ整理の方法ありませんかね
0912名前は開発中のものです。2009/04/10(金) 18:13:26ID:sPx7R60Y
たしかにあのリストのUIも微妙に使いづらいね
0913名前は開発中のものです。2009/04/10(金) 19:08:28ID:4dRwYguD
>>910
shiftだかctrlだかを押しながらドラッグで連続で置けたと思う、がやはり手作業は面倒。
俺はバックグラウンドもオブジェクトの配置も、全てRoom Creation Codeで済ませている。
GMLを使い慣れている人には使える方法かもしれない。

>>911
確かにあれは使いづらい。仕方が無いので↓の方法で無理矢理並び替えている。

□Scripts
├□FolderA
├□FolderB
├□FolderC
└Script0

↑のScript0を、FolderAとFolderBの間に置いて
↓のようにしたいとする。

□Scripts
├□FolderA
├Script0
├□FolderB
└□FolderC

1) 最終的に、下からどういう順番になるかを考える。
    下からFolderC、FolderB、Script0、FolderA

2) 1の順番で、並び替えたい階層のフォルダ(例で言う□Scripts)にドラッグする。
    1.□FolderCが一番上にくる。
    2.□FolderCの上に□FolderBがくる。
    3.□FolderBの上にScript0がくる。
    4.Script0の上に□FolderAがくる。並び替え完了。
0914名前は開発中のものです。2009/04/11(土) 00:47:40ID:7HFwgsR3
そうじゃなくてtileの話。
例えば16x16設定のtileで、4つのtileを合わせて配置するものを
これは右上これは左下と、ひとつずつ配置するのは手間ということ。
32x32で範囲選択してガンガン配置していきたいでしょ。シフトで連続配置とかも当然。
要するに、自分が実際にゲーム作ってみようとした時に、使いにくくないかということ。

規則的ではないデータのtileマップを
GMLではなくGUI上で視覚的に行いたいというのがそもそものツールの意義であって。

あと、いい加減UNICODE対応もしてほしい。
フォントも画像リソース埋め込みだと著作権が面倒っつーか、すぐ問題になるんで
フォント情報指定してGDIでレンダリング出来るようにしてほしい。
おまいらちゃんとフリーフォント使ってる?
MSゴシックとかそのまま画像埋め込んだらアウトだよ。

マジで誰か英語できる人いないか?要望まとめて出そうぜ。
0915名前は開発中のものです。2009/04/11(土) 00:55:17ID:eB/zw6to
えっと・・・・
編集画面でtileサイズ指定を変更してガンガン配置していけばいいんじゃない?
連続配置もできるし。

ごめんだけど俺と同じで説明下手で何言いたいのかよく伝わってこない。

>フリーフォント使ってるか
使ってる。
売る前提の奴は気にするのが普通だ。
0916名前は開発中のものです。2009/04/11(土) 01:40:43ID:Cu+YkeYB
>>914
以前同じ様なことを思った。GMはエディタまわりがすこぶる弱いんだよな
選択範囲とかできないし、透過処理や任意のidを割り当てるとかいったこともエディタ側からはムリだし

あくまでもGMは小規模向けだからしょうがないといえばそれまでだけど
0917名前は開発中のものです。2009/04/11(土) 03:02:22ID:P+A6z2ZS
これって起動時にすべてのソースをチェックしてるのか
あまり肥大化させると起動にものすごく時間かかりそうだね。
0918名前は開発中のものです。2009/04/11(土) 03:39:43ID:weOOsaiW
>914
一応本家のフォーラムにも要望集めようぜってスレは立ってる。
ルームエディタの改善やUnicode対応も提案されてたはずだよ。
ちゃんとまとめて開発チームまで届ける気があるのかは疑問だけど。

>917
ソースのチェックならコンパイル時(.exe作る時)に済ませてるはずだが……
リソースのことだったら、必要になるまで読み込まないように指定することも
外部ファイルから読み込むように作ることもできる。
0919名前は開発中のものです。2009/04/11(土) 09:49:47ID:P+A6z2ZS
そうなの?
バグつきのオブジェクトを作ってやってみたらコンパイルできちゃったけど
0920名前は開発中のものです。2009/04/11(土) 10:07:45ID:eL+URyfF
>>915
こういうことじゃないっすかね。
16*16のtile4つで32*32にしたいけど
現状はこうしたかったら16*16のA,B,C,Dを1個ずつ置かなきゃならない。
AB
CD
それよりこの配置を指定して1クリックでA,B,C,Dを配置したいってことじゃないかな。

0921名前は開発中のものです。2009/04/11(土) 11:44:43ID:Ex0Hf7qa
>>914のようなことをするには、
>>915の指摘しているように、Backgroundリソースでタイルサイズを変更しながらやるか、自前でルームエディタツールを作るしかないかも。
前者はそうとう計画性を持ってタイルを作らないと、オフセットとか弄りまくりになるからやはり面倒。
後者は自前ツールでマップデータをデータファイルなりにして、GMLでデータを読み込むようにするのだが、
ルーム開始時で一気にタイルを配置するのに時間がかかったりするし、一長一短。
これ以上の解決方法は無い・・・かな?




0922名前は開発中のものです。2009/04/11(土) 12:52:22ID:7HFwgsR3
>>920
その通りです。丁寧な説明サンクス。
32x32tileに設定すると本来の16x16粒度のtileが置けなくなりますし。

自前ツール&データ読み込みも一考の価値があるかもですが、
それで得られるコストのトレードオフを考えると、GMタイルエディタで完結してくれたほうが利便性は良いのかなぁ、と。

あとMr0氏のbGMスクリプトのogg再生でループポイントって設定できないんですかね?
垂れ流しループ曲ではなく、
イントロ→メロ→(ループ)→メロ→って感じに再生したいのですけど。
0923名前は開発中のものです。2009/04/11(土) 16:05:56ID:Ex0Hf7qa
いまやってみたら、タイル選択のとこで
シフトキー押しながらドラックすると複数タイルを選択できた。しらなかった・・・;
よく読んだらマニュアルにも書いてあった。
>>921はわすれてくらさいorz
0924名前は開発中のものです。2009/04/11(土) 20:14:52ID:7HFwgsR3
>シフトキー押しながらドラックすると複数タイルを選択できた。

orz

情報ありがとう・・・。
マニュアル読んだ後、首吊ってきます。

フォントのGDIレンダリングとbGMループポイントの件は頼んだ・・・。GM万歳
0925名前は開発中のものです。2009/04/11(土) 22:18:49ID:eB/zw6to
おまえら>>913の1行目を何回か声にだしt(ry
0926名前は開発中のものです。2009/04/11(土) 22:38:59ID:weOOsaiW
>>919
文法的なエラー(括弧の数が合わないとか)はコンパイル時にチェックされる。
変数が設定されていないといった実行時に起きるエラーは
そのコードが実行されるまでは何も起こない。
「起動時にすべてチェックする」ってことはないです。
何にしても、起動が遅くなるのはスプライトとかのリソースの影響がよほど大きい。
0927名前は開発中のものです。2009/04/11(土) 23:17:53ID:Cu+YkeYB
>>925
それは敷き詰めて置くような場合。
基本的にタイルエディタは任意の位置のタイル同士を選択して複製することはできないよ
0928名前は開発中のものです。2009/04/12(日) 00:59:49ID:JmTcdYfV
非公式情報サイトが荒されてグロ注意なページになってる…
0929名前は開発中のものです。2009/04/12(日) 01:05:15ID:HCybsZXA
4方向移動、移動中は歩行のアニメパターンでキーを離すと絵も立ち止まる
ってのが作ろうとすると意外と難しいな
2つ同時に押すと斜めに行ってしまったり、
歩いてる途中に別のキーを押すと絵だけ横向いてしまったり
0930名前は開発中のものです。2009/04/12(日) 01:53:55ID:BTylIN/l
キャラクターを斜めに動かす時、
↑→同時押しで右上を向いているスプライトにして右上に動かしているのですが、これら二つを離したとき上か右を向いてしまいます。
上や右単体ならキーを離したときにその方向を向いた静止画を表示させればいいのですが
複合入力は離す際に完璧に同じタイミングと言うのは難しく上か右かを離したとみなされてしまうので上記のようになってしまうのです。

どうにかしてななめ移動の後二つのキーを離したらななめを向いたまま静止するスプライトを表示させたいのですがどうすればいいでしょう?
Gmは5.3です
0931名前は開発中のものです。2009/04/12(日) 02:15:47ID:31fdbBGh
キー判定処理を毎ステップじゃなくすればいいんじゃないかなぁ。
その場合は、キー判定をキー入力イベントで処理するのではなく、
GML関数によるキー判定スクリプトを定期的に呼び出すような仕組みにしなければならないが。
0932名前は開発中のものです。2009/04/12(日) 08:45:06ID:HCybsZXA
キーを離した時に、タイマーで「離しました変数」を2ステップくらい残して、
毎ステップにその変数を元にスプライトを表示させるとか
0933名前は開発中のものです。2009/04/12(日) 12:40:44ID:GE0xp6XR
押した瞬間(Key Press)や離した瞬間(Key Release)はこういう場合には向いていない。
キーイベントを使うのなら、押している間(Keyboard)を使うべき。
(自分はBeginStepでキー判定を処理しているが。)

そして、キーが押されていれば動き、押されていなければ動かないとする。


<Begin Step>
// キーのフラグ
up = 0;
down = 0;
left = 0;
right = 0;

<Keyboard - UP>
up = 1; // キーが押されていたらフラグを書き換える

<Keyboard - DOWN>
(以下略)
0934名前は開発中のものです。2009/04/12(日) 12:41:37ID:GE0xp6XR
>>934の続き)
<Step>
/*
* まず、up down left rightを組み合わせたときの方向を決める。
* upとdown、leftとrightが同時に押されていたとき、どちらを優先させるか等を
* if文等を使って好きなように組む。(つまり、同時押しの処理を決める)
* (↑ >>929の同時押しによる動作は、斜めに行かせることもさせないことも、ここで決めることができる)
*
* 方向は全部で上下左右斜めの8方向+押されていないときの9種類。
* 8方向の時はスプライトをその方向を向いているものにする。(← >>929の移動方向と画像の方向のすれ違いはこれで解決)
* 押されていないのなら何もしない。(← >>930の「斜めを向いたまま静止」はこれで解決)
*/

// ここで同時押しの処理



if (↑で求めた最終的な方向が静止) // どれも押されていないときは
{
  image_speed = 0; // 止める
  // このままだと歩き途中(片足前)で止まることもある。
  // 立ち止まらせたいのならimage_indexをいじる。
}
else // どれか押されていれば
{
  image_speed = 0.2; // 歩かせる
}
0935名前は開発中のものです。2009/04/12(日) 12:52:57ID:GE0xp6XR
orz
>>934の一行目は、(>>933の続き)な。
0936名前は開発中のものです。2009/04/12(日) 13:14:11ID:BC+Eu9Rz
>>930
同時といっても通常であれば1 frame (60fpsなら1000/60ms)内でキー動作が同期していないと
同時に操作したとみなされないので、これに幅を持たせたらいいんじゃないかと思う

例えば、キーの入力処理は1 frame ごとで出力処理は3 frame ごとにするとか
0937名前は開発中のものです。2009/04/12(日) 14:23:37ID:GE0xp6XR
そういや少し前に出てきたフリーフォントのことだけど、
jFontMakerでIPAフォントから作った画像を使うのはいいんだろうか。
もし駄目なら、他にシンプルで使えるフォントはないだろうか。
0938名前は開発中のものです。2009/04/12(日) 14:37:56ID:GE0xp6XR
……いや、何か読んでいたら無理な気がしてきた。
jFontMakerやmbtext使っている人はどんなフォントを使っているか教えてほしい。
0939名前は開発中のものです。2009/04/12(日) 15:24:49ID:GE0xp6XR
あー、よく読んでなかった。
>>930は同時に離すときの判定がシビア過ぎるのをどうにかしたかったのか。
>>934じゃ>>930の解決にならんかった。失礼。

右上が押されている状態で右か上を離したとき、しばらく右上を向かせていなければいけない。
そう考えると、>>931-932しか思いつかん。
0940名前は開発中のものです。2009/04/12(日) 16:50:53ID:Y+HFv01V
スプライトを途中から繰り返させたいのですが、その際以下のようなコードじゃダメなのでしょうか?

if image_index == 7{
image_index = 5;
}
09419302009/04/12(日) 17:00:18ID:BTylIN/l
ありがとうございました、色々試してみます。
0942名前は開発中のものです。2009/04/12(日) 17:03:02ID:GE0xp6XR
>>940
image_indexは、image_speedの分だけ毎フレーム加算されていく。
image_speedが少数なら、image_indexも少数で加算されていって、画像表示にはその整数部分が使われる。

だから、image_indexがぴったり7になったとき、とするより、image_indexが7以上のときとするといい。
0943名前は開発中のものです。2009/04/12(日) 17:11:21ID:Y+HFv01V
>>942
ありがとうございます
おかげで出来ました
image_speedは整数だったので、=でも大丈夫かと思ったのですが
なにか問題があったみたいですね。
0944名前は開発中のものです。2009/04/12(日) 21:43:25ID:BTylIN/l
drawで描写したスプライトを徐々に透過(stepごとにalpha値を-0.02とか)させたいのですが
どのようにすればいいでしょう。
0945名前は開発中のものです。2009/04/12(日) 22:11:31ID:vbfiXVRM
キーの入力の処理なんですけど、同じキーを押しっぱなしにしたときに連続で入力されないようにするにはどうすればいいんでしょうか。
例えば

1つのスクリプトの中で
hensuu = 0かつエンターが押されたら、
{
hensuu = 1
@
}

hensuu = 1かつエンターが押されたら、
{
hensuu = 2
}

というのをエンターを押しっぱなしにしても2個めのif文で偽になってほしいんですがうまくいきません。
@の部分に、keyboard_clear(key) かio_clear()を入れてみると、
偽にはなるのですが、何故か1秒ほど押し続けると真になってしまいます。
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
ソース紛失したって言ってるんだから要望出すなよ。
やりたきゃ自分で調べて一から作れ。
レス数が950を超えています。1000を超えると書き込みができなくなります。