トップページgamedev
981コメント382KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/04/23(木) 08:11:08ID:iAS0afeL
無料Windows用2Dゲーム作成ツール"Game Maker"について、色々と語り合うスレッドです。

●本家(英語)
 ttp://www.gamemaker.nl/
●GameMaker Japan - 非公式情報サイト(日本語)
 ttp://gamemaker.main.jp/(現在一時閉鎖中)

前スレ
【2D】ゲーム作成ツールGameMaker part3【マンセー】
ttp://pc11.2ch.net/test/read.cgi/gamedev/1210437707/
0429名前は開発中のものです。2009/09/16(水) 20:12:26ID:SEBaUMKZ
>>428
自分自身を一時的にdeactivateするか、
うんと遠くまでどかしてからinstance_nearestを使う方法がある。
(後者だとインスタンスが1つしかない場合に穴がありそうだけど
距離が10000くらい離れてるとなぜか認識されなくなるらしい)
当然、instance_nearestした後で元に戻さなくちゃいけない。

ちなみに海外フォーラムでもよくあがる話題で、
instance_nth_nearestってスクリプトが作られてたりするね。
0430名前は開発中のものです。2009/09/16(水) 20:34:13ID:Yx5Euy68
>>429
ありがとうございます。
0431名前は開発中のものです。2009/09/19(土) 20:53:49ID:5S7IAZYd
image_indexの画像なのですが

0以上1未満が0のスプライト
1以上2未満が1のスプライト
2以上3未満が2のスプライト
……

という風になっていくのでしょうか?
0432名前は開発中のものです。2009/09/19(土) 21:04:46ID:hGqWeT/Y
>>431
Drawイベントに何も書かずに自動描画させる場合はその通り
(image_indexの説明にも切り捨てと書いてある)
draw_spriteとかで描画する時は四捨五入なので気をつけれ
0433名前は開発中のものです。2009/09/19(土) 22:37:36ID:5S7IAZYd
>>432
失礼
マニュアル完全に見落としてました
0434名前は開発中のものです。2009/09/22(火) 04:26:50ID:w/Ku3kIC
ヘルスバーって縦には出来ないのか…
色変化着きで自作するとしたらどんな感じ?
0435名前は開発中のものです。2009/09/22(火) 05:39:11ID:2EKdsgud
draw_healthbar(x1,y1,x2,y2,amount,backcol,mincol,maxcol,direction,showback,showborder)
のdirection

自作するならまず長方形の頂点のうち、固定させる点と動く点を考える。
色は
  緑→ 黄→ 赤
R000→255→255
G255→255→000
B000→000→000
つまり、まずR:G:B=0:255:0から始めてRを伸ばし、
Rが最大になったらGを減らす。
0436名前は開発中のものです。2009/09/22(火) 06:08:24ID:w/Ku3kIC
アクションの方しか見ていなかった…
朝早くからありがとうございまうす
0437名前は開発中のものです。2009/09/22(火) 10:45:10ID:sLIwRJKt
GM8はいつごろでるのかなー
7をそのままか、多少の作業で移行できるなら8にするんだが・・・
あと6の日本語ヘルプがそのまま使えるならいいけど
誰か新しいヘルプ、変更部分だけでも翻訳してくれないかな
0438名前は開発中のものです。2009/09/23(水) 10:09:09ID:MsIgK8QF
そうそうw
てゅーかGM8ってどんな機能?
日本語化は出来れば欲しいなww
0439名前は開発中のものです。2009/09/23(水) 12:49:51ID:NmL6fvhc
これか? >>139
アルファチャンネル完全対応はありがたいな
いまでも出来ないことはないけど、完全対応してくれれば作業が結構らくになる。
現状だと、ちゃんとやらないとスプライトの周りに白いのが残っちゃうんだよね
0440名前は開発中のものです。2009/09/23(水) 15:13:37ID:stBFqZnk
エフェクトソフト試したことあるけど、アルファ使えないからしょぼいのしか作れなかったことあるなー
手書きと変わらないようなの
0441名前は開発中のものです。2009/09/24(木) 17:00:08ID:O67grr7X
オブジェクトを回転させることってできますか?
0442名前は開発中のものです。2009/09/24(木) 18:02:00ID:Zjeeh2M9
余裕でできる
0443名前は開発中のものです。2009/09/24(木) 18:45:33ID:O67grr7X
>>442
あらかじめ回転させたスプライトを一個一個作らないとやっぱりだめですか?
0444名前は開発中のものです。2009/09/24(木) 20:17:06ID:XWhm4CP8
image_angle この値に応じて、スプライトが回転します。値は左回りの度(0-360)で指定し、0 で通常です。 この機能は、レジストバージョンのみ有効です。
0445名前は開発中のものです。2009/09/25(金) 09:06:01ID:mgX8NLYW
うむ、draw_sprite_extにデータ構造、sprite_add_alphaだけでもレジスト買う価値はあるな。
ちょっと凝ったことしようと思ったらLiteじゃきつい
0446名前は開発中のものです。2009/09/25(金) 12:33:15ID:DzBOtpuu
ホ!RCはセカンドβのデータ読み込めるじゃないの!
0447名前は開発中のものです。2009/09/25(金) 17:58:26ID:a1fJdlo4
ところで8のベータやってみた人っている?
7までで使えて8で使えなくなってた関数とか結構ある?
0448名前は開発中のものです。2009/09/25(金) 18:38:19ID:T1K9b3DK
>>444
ありがとうございます。……レジストバージョン買おうかなぁ。
0449名前は開発中のものです。2009/09/29(火) 22:30:39ID:DIDYZoHj
これってコンパイルしたゲームでも、起動時にエラーチェックとかしてるんですかね?
ゲームが複雑になると起動が遅くなるような気がするんですが
もちろんPrelordは全部はずしてます
0450名前は開発中のものです。2009/09/30(水) 20:22:37ID:BfOX1zJg
オブジェクトAにオブジェクトBとの接触イベントを設定すると
オブジェクトAがオブジェクトBの子オブジェクトに接触しても作動するんだね
これは便利でもあるけど不便でもあるな
0451名前は開発中のものです。2009/09/30(水) 22:50:00ID:U6bB5JnZ
前スレにあったのが、

├亀
│├緑亀
│└赤亀
└ブロス
 ├ハンマー
 └ブーメラン
みたいな感じの構造だった。
敵、亀、ブロスはゲーム内では使わないダミーで子オブジェクトを纏めるためのもの。

共通の物は親オブジェクトに持たせて、
子オブジェクト別に違うものは子オブジェクト内で個別に設定する。
不便に感じるのは構造のデザインがよくないからじゃないかな?
親と子の使い分けをはっきりさせるといいよ。
0452名前は開発中のものです。2009/10/01(木) 01:33:38ID:u1Abds+1
基本的にparent objectはゲーム内では登場させないなー
0453名前は開発中のものです。2009/10/01(木) 13:49:05ID:qHL8GpNO
ttp://www.freegameclassic.com
コンテストに出そう。
小さくまとまってしまってはいけない。
3分で世界を革命しろ。
0454名前は開発中のものです。2009/10/02(金) 17:21:46ID:fJ33Az8T
くだらない質問で申し訳ないが
change instance (赤パックマン)をGMLでやろうとするとどう書くんだろう?
ちなみに自分は未レジストGM7です
0455名前は開発中のものです。2009/10/02(金) 20:54:18ID:IQUjtfJL
赤パックマンのアイコンはインスタンスの変更じゃなくて、スプライトの変更だと思うよ。
スプライトの変更は、そういう関数があるわけではなく、sprite_index を直接変更する。
変数をいじるだけでも結構いろいろ出来ることがあるから、調べてみるといいよ。
0456名前は開発中のものです。2009/10/04(日) 15:47:28ID:p8OhbyR+
横の壁とぶつかった時だけhspeedを0にしたいのですが
壁とのコリジョンイベントで

if place_meeting(x-1,y,block) == true{hspeed = 0;}

これではダメなのでしょうか?

while (place_meeting(x-1,y,block) == true){x +=1}
で反対側への押し戻しはできているのですが、なぜかhspeedだけは0になりません。
0457名前は開発中のものです。2009/10/04(日) 17:07:03ID:5U/WE5aW
先に while の方が実行されるように書いてあると予想
0458名前は開発中のものです。2009/10/04(日) 17:53:38ID:p8OhbyR+
それはないですねぇ

while (place_meeting(x-1,y,block) == true)
 {
 hspeed = 0;
 x +=1;
 }

ためしに↑のようにしてみましたけど、それでもダメでした
0459名前は開発中のものです。2009/10/04(日) 20:04:46ID:5U/WE5aW
それなら他の場所で速度関係をいじっているんじゃないかい
その式でxの代入だけが実行されるというのはありえない

0460名前は開発中のものです。2009/10/04(日) 20:52:41ID:Wb+bZ9wM
壁がsolidだった場合、collisionイベント実行前に前の位置に戻されるから
abs(hspeed)>1 だったら、壁と自分との間は1以上空いていることになる。
だからplace_meeting(x-1)ではヒットしないと予想。
place_meeting(x+/-hspeed)にしてみたらどうよ?

whileの押し戻しもたぶん成功してないと思うな(単にxpreviousに戻されてるだけ)
厳密にやるなら x = other.bbox_right + 1 + sprite_xoffset とかの方が良さそう
0461名前は開発中のものです。2009/10/04(日) 20:59:07ID:Wb+bZ9wM
よく考えたら place_meeting(x-abs(hspeed)-1) とかにしないとダメだな

ついでに補足。仮にblockって名前のスプライトとかスクリプトがあった場合
そっちのインデックスが使われて、違うオブジェクトをチェックしてる可能性もある。
GML使うんだったら、obj_block とか spr_block みたいにして
名前がかぶらないように設定しないとトラブルの元になるよ。
0462名前は開発中のものです。2009/10/04(日) 21:18:26ID:p8OhbyR+
>>460さんの通りにしたら解決しました。ありがとうございます。
「プレイヤーだけが通れない壁」と「全キャラ共通の壁」というのを考えていたのですが
プレイヤーだけが通れない壁はsolidをはずして、普通の壁はx-abs(hspeed)にすることで解決しました。
0463名前は開発中のものです。2009/10/08(木) 19:54:56ID:XLYZZ1sh
image_blendのように「色を混ぜる」のではなく、なにか一色で「塗りつぶす」ことは出来ないのでしょうか?
敵がダメージを受けた時、一時的に赤くさせたいのですが、元が黒っぽい色のため
赤を混ぜても黒にしかなりません。
0464名前は開発中のものです。2009/10/09(金) 00:27:24ID:2lodFe32
真赤にぬったスプライトを別に用意するしかないんじゃない?
0465名前は開発中のものです。2009/10/09(金) 02:01:41ID:m1aFnmHw
ステージエディット機能を持ったSTGをつくろうとしているんですが、
ステージを配列で表現してexecute_fileでステージ開始時に読み込んで、
敵を記述したタイミングで生成させたいのですが、
適切なコードがうまく思いつきません。
配列以外で何とかする?処理方法でなんとかなる?

全部走査して現タイムラインと発生タイミングが一致すれば生成
--------------------------------------------------------------
for(敵番号=0;敵番号<敵数;敵番号++){
if(stage[敵番号,敵発生タイミング]==timeline){
create(stage[敵番号,敵各種ステータス]);
}
}
timeline++
--------------------------------------------------------------
→1ステージにおける敵数が増えると1ステップ内でどんどん処理が重くなる

指定したグリッド番号になったら生成
--------------------------------------------------------------
create(stage[グリッド番号,敵各種ステータス]);
グリッド番号++
--------------------------------------------------------------
→ステージが長くなるとどんどん配列が増える&発生しない間の配列は無駄領域
→1グリッド1体しか出ない

現在は全部走査して現タイムラインと発生タイミングが一致すれば生成という方法で
行っていますが、敵の数が300をこえたあたりからゲーム速度が落ち始めます
(step内でforループしているので当然といえば当然ですが)
0466名前は開発中のものです。2009/10/09(金) 02:08:26ID:v0opj/4E
>>465
そもそも画面外の敵まで処理するのが無駄なわけで。

最初に全インスタンスを作成し、
画面外のインスタンスを非アクティブに、
画面内のインスタンスをアクティブにする。

領域の微調整はお好みで。
04674652009/10/09(金) 02:13:21ID:m1aFnmHw
あぁ・・・なるほど、確かに言われてみれば
いちいちリアルタイムに生成する理由がなかった・・

回答ありがとうございました。
製作頑張ろうと思います。
0468名前は開発中のものです。2009/10/10(土) 16:56:18ID:+ewObIUy
>>464
やっぱりそれしかないですか
ちょっと画像枚数が多いので、全部にそれをやるのはちょっと厳しい……
これは諦めざるを得ませんかね
0469名前は開発中のものです。2009/10/10(土) 18:30:40ID:BwUsupN7
日本語サイトが復活しないのでbGMとjfontmakerの使い方を教えて欲しいのですが
0470名前は開発中のものです。2009/10/10(土) 19:31:46ID:UjbbZPTx
前上げてあったの貰わなかったのかよ・・・>フォント
0471名前は開発中のものです。2009/10/10(土) 20:21:53ID:xlBokYU2
>>463
d3d_set_fog(true, c_red, 1, 0);
draw_sprite(...);
d3d_set_fog(false, c_white, 0, 0);
という手法があるけど、ビデオカードによっては動かないものもあるとか
0472名前は開発中のものです。2009/10/11(日) 00:53:20ID:yhSo2Kg3
bGMは俺も教えてほしいな
保存してくれてる人が居ればだけど
0473名前は開発中のものです。2009/10/11(日) 09:45:59ID:gVfZj0xn
Preload textureってあくまでビデオメモリに読み込ませるかどうかで
これにチェックがついてようがついてまいが、GMの中に入ってるファイルはすべてメインメモリに読み込まれてしまうんですね。
メモリに落としたくない場合は、sprite_addなどで、外部から取り込ませるしかないのでしょうか?

あと実験で、1000*1000の1.7KBのgif画像を10枚ほどいれてみたのですが
そうしたらメモリ使用量が一気に80MBくらい増えました。
もちろんPreload textureは未チェック、ゲーム中は使用せず、ただGMの中に入れただけです。
元の画像がgifだろうがpngだろうがbmpだろうが関係なく、ただ画像の縦横のサイズだけで
使用するメモリ量が決まってしまうのでしょうか?
0474名前は開発中のものです。2009/10/11(日) 10:29:22ID:gVfZj0xn
追記
bmpの画像を10枚追加してみたり、256色フルに使ったgifを10枚追加してみたり実験しましたが
白一色1000*1000のgif画像を10枚追加した場合と、メモリ使用量はまったく変わりませんでした
GMは減色や画像の軽量化などまったく無意味で、ただ画像の縦横のサイズのみに依存するのでしょうか
0475名前は開発中のものです。2009/10/11(日) 18:10:28ID:yhSo2Kg3
検証乙
俺は仕組とかわからんが、本当ならイベント絵とか入れにくくなるなぁ
0476名前は開発中のものです。2009/10/11(日) 18:43:47ID:rJ+6eFS4
元の画像形式が何であろうと、内部には独自形式で格納されるからね。
簡単なランレングス圧縮はしていると聞いたから、白一色と複雑な画像では
gmファイルやexeのサイズに差が出るかもしれない。
でも、実行時にはメモリ上にベタのビットマップで展開されるはずだから
結局メモリ使用量は変わらんと思う。
0477名前は開発中のものです。2009/10/11(日) 19:02:33ID:gVfZj0xn
んー、やっぱりそうですか
チマチマと減色しても、メモリ的にはまったく意味がないということですね。
容量的には数十KB軽量化させたところで大した違いはないし
気にせずPNGでも使っちゃった方いいのかな

GM8ではPNGが完全サポートされるそうだけど、せめてBMPではなくPNGにしてくれれば
かなり軽量化されると思うんだけどなー
そこらへん早く8の情報が欲しい
0478名前は開発中のものです。2009/10/11(日) 19:08:05ID:gVfZj0xn
ああ、PNGはメモリ上ではBMPと変わらないから意味ないのか・・・
0479名前は開発中のものです。2009/10/11(日) 22:40:21ID:9H0VFjWv
ttp://web.archive.org/web/20080528024340/http://gamemaker.main.jp/modules/articles/article.php?id=25

bGMの使い方
画像は表示されんがまぁなんとかなるだろう
0480名前は開発中のものです。2009/10/12(月) 00:43:46ID:Yf0rwGMO
激しく乙
デフォでogg対応せんかのぉ…(´・ω・)
0481名前は開発中のものです。2009/10/13(火) 11:39:19ID:k4QiVC+d
>>473
検証乙。
俺は数百枚の画像ファイル使ってるから、スプライト系は殆ど外部で管理してる。
スプライトのロードと破棄でもメモリ食うけど、大きい画像一枚GMに入れることに比べれば誤差の範囲だ。

それで思ったけど、100程度のインスタンスに200程度の変数を定義すると
理論上は100*200*8 = 160kのメモリを使うのか。
今まではこの変数全部txtファイルに書き込んでおいて、
特定のインスタンスが必要なときのみそれを読み込んでたけど
これってもしやかなり無駄だよな…。
画像ファイル一枚節約した方が全然効率的そうだ。
配列がどの程度容量食うかはテストしてないけど。
0482名前は開発中のものです。2009/10/13(火) 12:29:36ID:cOJqt8LB
どうせGIFだからたいしたことないだろと思って、スプライトがんがん追加してきたんだが、これが原因でメモリバカ食いしてたんだな
俺もspriteaddで画像読み込みしないとダメか

ところで、スプライトのロードと破棄でメモリ食うってどういうこと?
スプライトを破棄してもメモリのなにか残るの?
0483名前は開発中のものです。2009/10/13(火) 15:07:47ID:lHAcX872
(スプライトを使った)オブジェクトの破棄でメモリは開放される
と思ってたが違うのか
0484名前は開発中のものです。2009/10/13(火) 17:44:59ID:KdDxZr1F
メモリ解放されても、普通は断片化してるから、ガベージコレクションしないとダメで、
ゲームだと実行中にガベージコレクション発生すると、そのとき速度が落ちるから、
普通は自動的にガベージコレクションされない仕様なのが多い。
GameMakerがどういう仕様かは知らないけどね。
0485名前は開発中のものです。2009/10/13(火) 21:29:42ID:4QV/eOoe
実験で仮にこんなの実行してみたけど、特にメモリは増えなかったよ

for (i = 0;i <=1000; i+=1)
{
test[i] = sprite_add(...);
sprite_delete(test[i]);
}
0486名前は開発中のものです。2009/10/13(火) 21:32:50ID:4QV/eOoe
>>483
sprite_delete();を使わない限り、スプライトのメモリは開放されないよ
sprite_addでローカル変数にスプライトを入れてたなら別かもしれないけど
0487名前は開発中のものです。2009/10/13(火) 23:15:10ID:lHAcX872
>>486
てことは
sprite_addじゃなくエディット画面でオブジェクト作ってるヘタレな俺は
sprite_deleteをちゃんと実行しないといかんわけか

でもGML(sprite_add)を使う人もsprite_delete使うよね?あれ?
すまん、混乱してきたorz
0488名前は開発中のものです。2009/10/14(水) 00:41:38ID:bv2mAVIJ
最初からGameMakerのファイルにスプライトを入れてる場合は
起動時にすべての画像がメモリにロードされて、終了するまで開放されることはない。
よく言われるPreloadはあくまでビデオメモリに落とすかどうかで
これにチェックが入っていようがいまいが、メインメモリにはすべて落とされる

使わないスプライトをメモリに落としたくない場合は、exeの外に画像ファイルを用意しておき
必要なたびにsprite_addなどで読み込ませるしかないみたいだ
そして、もちろん必要なくなったらsprite_deleteでスプライトを削除してやることを忘れずに

これらの一連の作業は、ある程度GMLを理解してないとキツイね。
ただ、小規模なゲームならば、メモリはそんな気にしないでガンガンスプライトを作っちゃっていいと思う。
GMLを使わないなら、そんな大規模なゲームじゃないでしょ。
0489名前は開発中のものです。2009/10/14(水) 00:42:51ID:bv2mAVIJ
あ、もちろん最初から入れてあるスプライトも、sprite_deleteで消すことは可能だよ
ただ、また使う際にはsprite_addで入れ直してあげないといけないけど
0490名前は開発中のものです。2009/10/14(水) 00:51:50ID:GGZRIxG7
>>488
なるほど、何となく分かったかも
丁寧な説明ありがとです
頑張ってGML勉強しようかのぉ
0491名前は開発中のものです。2009/10/14(水) 05:29:38ID:RnMcuV0D
ちょっと言葉が足りなかったようですまん。
スプライトのロードと破棄でメモリを食うってのは、sprite_add(...)で外部からメモリ内にスプライトを読み込んだ後、
数ステップ後にsprite_delete(...)でそのスプライトを破棄すると
スプライトを読み込む前よりメモリ使用量が若干(16kBほど?)増える現象のことを指してた。
上昇量はテストする度に異なったりするから、環境依存なのかもしれないけど。
詳しい仕組みは知らないけど、>>485のテストは1ステップ内で行ってるから状況が少し異なるのかも?
検証してみる価値はあるか。
0492名前は開発中のものです。2009/10/14(水) 07:48:51ID:YxYD41xX
スプライトそのものは消えても、衝突判定などの設定情報が残ってるとかか?
0493名前は開発中のものです。2009/10/14(水) 17:24:39ID:GGZRIxG7
何か皆詳しいなぁ
てか皆の話色々平均すると、台詞表示するときって

「全台詞スプライト用意」より
「a〜z、あ(ア)〜ん(ン)、あと諸々分の小さなオブジェクト沢山作って台詞作り」のがいいのかな
(台詞量にもよると思うが)

前日本語ファイルで「オブジェクトは少ないのがいい」だけ鵜呑みに
してたからそうしようとは思わんかったのよね
0494名前は開発中のものです。2009/10/14(水) 18:48:17ID:133VTP3G
>>491
メモリを解放しても、そのメモリがすぐシステムに返却されるとは限らない
(次にメモリが必要になったとき再利用するためにとっておくから)
add→delete→add→delete…と繰り返しても使用量がどんどん増えたりせず
一定範囲でとどまるようなら、ちゃんと解放されていると思っていいんじゃないかな

>>493
スプライトを文字数分用意するにしても、オブジェクトは一個でいいだろ。
Drawイベントでスプライト組み合わせて文字列描画させればいい。
もちろんスプライト一個描画するよりは遅くなるし、
文字数分のスプライト用意する分手間がかかるから
(パフォーマンス+開発効率)とメモリ消費のどっちをとるかのトレードオフになるな。
0495名前は開発中のものです。2009/10/14(水) 21:42:30ID:GGZRIxG7
>>494
文字列組み合わせるつもりではいたけど、
それが沢山のオブジェクトである必要はないのか
gifとか忘れてた俺アホスwww
そうだよね、エディット画面でできることだよねorz >一個

確かに台詞自体を用意する方が早いねぇ、楽だし
まぁ自己満クオリティな間は効率をとるのがいいかなぁ
とりあえず完成させるのが大事だし
0496名前は開発中のものです。2009/10/14(水) 22:00:33ID:GGZRIxG7
間違えた。俺が言いたかったのは
「台詞一個」と「台詞内の文字数分のオブジェクト(がroomに存在)」の比較だ
ま、でも後者は管理・労力が大変だし、結局前者が無難か・・・
0497名前は開発中のものです。2009/10/14(水) 22:27:53ID:bv2mAVIJ
たしかになんか不安定な気がするね>sprite_delete
試してみたけど、追加→削除前に比べてメモリが増えたと思ったら、今度は減ったりした
そして同じ動作を何回も繰り返していくうちにメモリの変動が安定してくる
0498名前は開発中のものです。2009/10/15(木) 02:52:17ID:LmGjEFod
俺も試してみたけど、確かにメモリが一向に上昇し続ける傾向はないみたいだからとりあえず大きな問題はないか。

>496
よこしまさんのmbtextを使えば?
台詞を後で推敲することを考えると、stringで台詞を用意してそれをmbtext_drawで描画する方が遥かに楽
台詞ごとにスプライトを用意していると、台詞が増えたときに挫折しそう
ここで少し時間を投資してmbtextの使い方を覚えた方がいいと思う(使い方って言っても簡単だし)

それと、>494の言っていることはgifともエディット画面とも関係ない
0499名前は開発中のものです。2009/10/15(木) 10:25:42ID:qb9kY2ep
一つのスプライトに複数文字を格納することを理解したんだから
別に関係なくはないだろ
0500名前は開発中のものです。2009/10/15(木) 15:40:28ID:Wyrl5rE9
8はwindows7に対応させてからの発売になるのかなー
0501名前は開発中のものです。2009/10/19(月) 21:40:12ID:IlnPQ80k
GM、6以降のバージョンなら現在のPCでは普通に動くのだろうか……
新しいグラボだと、5.3AはDirectXの機能オフにしないと15フレームしか出ないんだよなー。
0502名前は開発中のものです。2009/10/19(月) 22:50:53ID:FNTjSUVF
Direct3D 11 は、凄まじく面倒になる可能性がある。

ただでさえ今まで固定でやってたブレンディングやアルファテストがシェーダになっているのに
固定機能を廃して全部シェーダになってしまった


効率よく働いてくれることを期待しないほうがいい
むしろ悪化する
0503名前は開発中のものです。2009/10/20(火) 09:38:45ID:c6RaFjAq
音楽をfpsとかに合わせてきっかり流す方法ってないですか?
流したいところで音楽が微妙にずれたり画面が処理落ちしてるのに音楽が平常に流れるせいでずれが発生して困ってます。
0504名前は開発中のものです。2009/10/20(火) 15:25:37ID:6YHJoqlj
処理落ちに合わせて流れている音楽をいじる、ってのはまず無いわな。
そういうわけで、いじる対象を逆転させてみた。

音楽の再生云々をいじるのではなく、
まず音楽を再生させて、
再生開始からの経過時間を利用してゲーム内の動作を処理する。

処理落ちに対応できる方法と考えると、こうしか思いつかなかった。

時間を利用してゲーム内の動作を処理するとは言ったが、別に全てを時間基準にする必要はない。
ただこの方法を使うときは、時間を基準に処理するものとフレームを基準に処理するものとを明確にわけること。

まぁこれは再生時間に合わせて流れるスタッフロール的な物をイメージして考えてみたんで、
複雑なものになると、どこまでできるかはデザイン次第、かな?
ちなみにこの例だと、時間を基準に流れているので、
例え処理落ちしても、ゲームの処理がしばらく止まっても、
再生開始から5秒経過したのなら5秒後の位置、10秒経過したのなら10秒後の位置に動かす、という仕組み。
0505名前は開発中のものです。2009/10/20(火) 20:57:37ID:SLMjJuQO
RC出てるな。
ソースエディタ、draw_txtともに日本語通らないの確認した
(バグトラッカでも今後の非対応明言されてた)

日本語化はできないんだっけか。
0506名前は開発中のものです。2009/10/20(火) 22:59:14ID:Rv9BzQJ5
昨日このソフトを発見し、こちらでゲーム作りを試みている者です
凄く初歩的な質問で申し訳がないのですが
大まかな動きのつけ方や操作方法はチュートリアルで理解する事はできたのですが
それ以上のものを作ろうとするとそれ以降は自分で虱潰し的にアクションを試すしかないのでしょうか
たとえばexe形式となっているソフト等を参考にしようとしても、開けませんよね

>>336で「公式のPlatformで検索すると参考になるものが〜」とありますが、確かに
このソフトにおける可能性は見出せましたけども、やはりexe形式で挙げられているから中身を見て参考にする事はできませんよね・・・
0507名前は開発中のものです。2009/10/21(水) 01:33:15ID:Q98BhYv9
>>506
まずマニュアルをじっくり一通り読もう!
そして小さい規模でもいいから自力でなにか作ってみること
だんだん出来ることが広がっていくはず。
0508名前は開発中のものです。2009/10/21(水) 01:51:14ID:bzUL/ied
暇な時にヘルプを眺めながら、色々試していくのが一番だね
急がば回れだ
0509名前は開発中のものです。2009/10/21(水) 21:01:14ID:K7bGjyPl
何かに合わせるのは、普通イベントで判断する。
まあOSや言語、インターフェイスによってはフラグとかも言うが

何かを始めるときは、イベント元にする。
フラグを立てる。でもいい

こうすると、処理が始まってから別の処理が行われることが保証される。
最初の処理が遅れれば、後の処理もそれに合わせて遅れるだけだ。
0510名前は開発中のものです。2009/10/21(水) 21:06:06ID:K7bGjyPl
サウンドと画面を連動させたいならば、
サウンドファイル再生をやめること。

昔ながらのサウンドプログラミングなら
メインスレッドとサウンドスレッドは平行して処理されるから
どちらかが遅れるともう片方も遅れる。
サウンドプログラミングは、インタープリタのように逐次発声だからだ

サウンドファイルだと、最初に読み込んでから鳴らすだけなので
それほどの負荷でないから遅れる・止まるってのは余程の負荷がかからないと起こらない。

昔は、サウンド構築のためだけのプログラマ、サウンドプログラマなんて職があったのだ
それと同じことをやればよい。
05115062009/10/21(水) 22:53:42ID:7kid7kXI
レスありがとうございます
一通りヘルプを見てみます
0512名前は開発中のものです。2009/10/21(水) 23:30:57ID:K7bGjyPl
一番真っ当なやり方は

・負荷を減らす
・動作必須環境を上げる

これくらいだろう
負荷を減らすのは以外に単純
 別に走らなくてもいいような変なルーチンが走ってないか
 妙に割り込まれてないか
 ルーチンが走る順番は正しいか
 無駄に複雑なルーチンでないか

これを完璧にこなしてもダメなら最低動作環境を上げるだけ
0513名前は開発中のものです。2009/10/22(木) 03:15:18ID:QcCk0qNG
横スクロールアクションを作っているのだが
プレイヤーをカメラが追っていく設定にして、そのカメラの座標?とか設定してやると
32,32以外でやると地震がおきたかのように画面がガクガクになるんだが
スクリプトとか必要なのか?
0514名前は開発中のものです。2009/10/22(木) 03:17:32ID:QcCk0qNG
悪い 自己解決した
0515名前は開発中のものです。2009/10/22(木) 18:07:09ID:9bnTpD/d





いつになったら


サイトは復活するのか。




0516名前は開発中のものです。2009/10/22(木) 23:07:47ID:QcCk0qNG
俺もサイト復活してほしい、プログラムとかスクリプトに対してほとんど無知だと壁が多い
今2Dアクション作ってて手探り状態なんだけども

・左の壁にぶつかるとなぜかバウンド?して一歩ほど戻る
・向いてる方向に攻撃ができるようにしたい(現状だと一方方向、X+の方面にしか玉が打てない)
・ニコ動の解説動画みたけど、変数関係の応用方法がわからない
何が何発あたれば敵が死ぬとかのイベントの配置場所(弾のオブジェクトだとか敵のオブジェクトにだとか)がいまいちはっきりしてない

3時間ほど粘ってるんだけどもしかして俺がマニュアル見落としてたりするのかな
このスレ眺めててそういう類の質問を見ないから畏れ多い・・・
0517名前は開発中のものです。2009/10/23(金) 01:25:24ID:x6bl6P0C
>>516
公式で.gmkなりぐぐると幸せになるかも
俺はそれでどうにかしてる
0518名前は開発中のものです。2009/10/23(金) 03:48:20ID:QbMhH9cO
3時間ならよくあること
それを半年続ければこのスレで言われていることは理解できるようになるんじゃないか

ちなみに向いている方向に攻撃をするには、弾を発射するオブジェクトのimage_angleと弾のdirectionを一致させればいい
弾の衝突判定イベントは敵オブジェクトに設定して、衝突ごとに敵オブジェクトのlifeを減らす
んでlife <= 0の時にオブジェクトを破壊、って感じだろう
このあたりは過去ログも参照するといい
0519名前は開発中のものです。2009/10/23(金) 08:55:04ID:wQYLsPFR
向いてる方向に弾が…
ってよく聞くけどそんなに難しいかなぁ〜?
            とりあえず俺はExample内ので幸せになった    2Dアクションのやつ
0520名前は開発中のものです。2009/10/23(金) 16:11:44ID:vXjEA+RQ

最初は、誰もが効率の悪いコードを書く。
if()
 if()
  if()
   for()

のように。

例えるなら、ifの数を減らすのが上級者である。
また、if( Fuckintosh == 0 )とかは論外。

上級者は

 if( !(Fuckintosh) && ((FuckOSX >> 3) += FuckMac) << 6 || (FuckMac & FuckJobs) >> 2 )

などというように書く。
激しく読みづらいが。
0521名前は開発中のものです。2009/10/23(金) 19:08:08ID:BKp0y/1T
>>520
そこまで出来るようになったらGameMaker卒業してC++に行ってると思うぞw
C++やってて息抜きでGM使ってる自分が言うのもアレだが
0522名前は開発中のものです。2009/10/23(金) 19:13:04ID:wEq8MK8l
>>520
他の言語だったら正しいと言いたいところだが、GMLだとifの数を減らすことが必ずしも効率がいいとは言えないかな。

ヘルプ>The Game Maker Language (GML)>GML Language Overview>Expressions から抜粋
Please note that, contrary to certain languages, both arguments to a Boolean operation are always computed, even when the first argument already determines the outcome.

例として、if (false && true && true && a)を使う。

他のプログラミング言語が上のコードを処理するとき、
最初のfalseを見た瞬間に他を見ることをやめる、ということがある。
何故なら、他の変数が何であれ結果はfalseと決まっているから。

だがGMLの場合は他の言語と違って常にチェックされる。
例え、最初のfalseの時点で結果はfalseと決まっているとしてもだ。
(まさに「even when the first argument already determines the outcome」の部分)

従って、
@if (a && b)
Aif (a)
  if (b)
の二つを比べた場合、
@の場合は、aもbも常にチェックされるが、
Aの場合は、aを満たさないとき、bのチェックが省かれるため、
Aの方がいい、ということになる。
よりわかりやすくすると、if (a && b && ......)と条件が大量にある場合を想定してみれば、
大量の条件を全てチェックするのと、最初の条件を満たさないときに処理をやめるのと、
どちらが効率がいいかがわかるだろう。

勿論、処理よりも行数の効率を重視したいというのなら話は別だが。
まぁ、効率を考えるレベルのプログラマが処理の効率を捨ててまで行数に拘るとは思えないけど。
0523名前は開発中のものです。2009/10/23(金) 21:42:14ID:aDXhBeYl
>>522
やっぱGMって直感的な構成がやり易いな
俺のような初心者にはありがたいことだ
0524名前は開発中のものです。2009/10/23(金) 22:32:30ID:x6bl6P0C
今更だけど、このツール国内じゃあまり普及してないのかな
もしかして国外じゃめっちゃ使われてるとか?
俺の比較してる対象がHSPだからそう思ってるのかもしれないけど
もしかしてHSPに比べると自由度がめっちゃ低いのかな・・・
このツールで作成されたゲームとかアイワナビーザガイとニコニコアクションくらいしかしらない
0525名前は開発中のものです。2009/10/24(土) 00:37:14ID:/xeTG7ka
Gameメーカーのスレッドあったんだw
敵オブジェクトを地面に着かせたいのと、左の壁あたってもはじかれないようにしたいんだがどうすればいいんだ
0526名前は開発中のものです。2009/10/24(土) 01:31:35ID:6tGvwTyZ
516と同じ質問かよ
だからサンプルで勉強しろとあれほど…
てか逆に何故バウンドするんだ
0527名前は開発中のものです。2009/10/24(土) 02:49:25ID:iUo6fmPV
バイナリ演算子を理解していないことが俺のレベルの上がらない原因なんだよなorz
今地道に勉強しているが、具体的な例を用いた言い換えがないとなかなか頭に入らない
誰かに>>520の例をifやforに戻してみて貰えるとすごく嬉しいんだが…
0528名前は開発中のものです。2009/10/25(日) 04:07:52ID:VVt17ygj
日本の非公式フォーラム復活しないかな・・・・・・・
■ このスレッドは過去ログ倉庫に格納されています