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

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

■ このスレッドは過去ログ倉庫に格納されています
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/
0717名前は開発中のものです。2009/01/22(木) 01:21:53ID:6+qogCmD
>>714
差し支えなければそのサンプルを提供してもらえないでしょうか…

レジストはしてあるので構造体についても教えて下さるとありがたいです
0718名前は開発中のものです。2009/01/22(木) 01:30:11ID:v3lR0sWo
>>715
>またhpを削ったり増やしたりする方法を教えてください
これはGMのコードの書き方が分かれば苦もないのでwikiでもhelpでも見るべし
全然プログラムの書き方が分からないというなら、C++やjavaだとかの入門書やサイトを見たほうがいいよ

ターン制というか戦闘システムとかは、作るゲームの設計図を自分でかけないと難しいと思うよ
例えばドラクエっぽいのを考えるとして、
画面上にキャラクターのHPとかMPとかを表示したいから
メニューを描画するオブジェクトはキャラクターステータスを管理するオブジェクトにアクセスできないといけないとか
この辺が面倒ならRPGツクールを使ったほうがいいんじゃないかと
0719名前は開発中のものです。2009/01/22(木) 01:34:07ID:bughZtr5
上に書いたものです。一応hp増減する方法はわかりますた。
0720名前は開発中のものです。2009/01/22(木) 01:50:30ID:bughZtr5
>718
返信ありがとうございます。ツクールはとりあえず考えてません。
難しそうですがまあ今日インストールしたとこなので色々試してみようかと思います。
0721名前は開発中のものです。2009/01/22(木) 02:42:37ID:v3lR0sWo
>>716
>>717
構造体の発言はなったことにorz
あるものとばかり思ってたら今確認したらなかった・・・dll側で対処のも今一ですからね

ソースは7.0の未レジスト版でもよければ明日内役っぽいのを書いてうpします
0722名前は開発中のものです。2009/01/22(木) 02:45:15ID:v3lR0sWo
×内役
○内訳
なんだよ内役ってorz
0723名前は開発中のものです。2009/01/22(木) 18:46:49ID:egdmvXcF
構造体ないか

リスト構造ってのがよくわからない
0724名前は開発中のものです。2009/01/22(木) 21:31:41ID:5F5IMtdt
>>723
それぐらいカスれググ

さてここからは独り言
たぶん単純な双方向連結リスト(リンクリスト)だと思う
最近の言語だと配列として実装されてたりするのであまり耳にしないのかも

大まかな構造は配列と同じ
ただし隣り合った要素同士が互いにポインタを持ってるから
(末尾以外の要素の)削除や挿入にかかるコストが配列よりずっと低い
詳しくはwikipediaやデータ構造の本を読むをどうぞ
ついでにキューやスタックも似たような概念だからついでにどうぞ

以上の独り言は単なる独り言であって別にあんたのためじゃないんだからね
0725名前は開発中のものです。2009/01/22(木) 23:06:37ID:egdmvXcF
>>724
結婚してください

なるほどなー
配列でいいやと思ってたが改めます
RPGなどの所持品管理に良いんだろうか?
0726名前は開発中のものです。2009/01/23(金) 00:56:04ID:YF0WjU+D
>>717
とりあえずうpっておきました
ttp://www.dotup.org/uploda/www.dotup.org24218.zip.html

要素の挿入削除がなければ(FFのような最後の一個を使ったとき空白ができるようなタイプ)
配列タイプのほうがいいし
その都度詰めて表示するやつ(不思議なダンジョンのトルネコのようなタイプ)はリストが向いていると思う
どちらがいいということもないような
0727名前は開発中のものです。2009/01/23(金) 03:21:07ID:JG56DCPd
>>724
俺とも結婚してください
0728名前は開発中のものです。2009/01/23(金) 13:39:03ID:er9V4Ijx
>>726
ありがとうございます。
色々試行錯誤してみます
0729名前は開発中のものです。2009/01/23(金) 14:10:29ID:XrOlLLRq
GameMakerって要はクラス(構造体)設計をGUIでできるってツールなんだよなぁ。
GMLバリバリ使う人はそのままプログラム出来ちゃう気が。
0730名前は開発中のものです。2009/01/23(金) 21:48:14ID:er9V4Ijx
>>726
ええと、
・現在の画面上にメニューを出せるようにしたい(後ろにプレイ画面が出るような)
・説明してくれている「詰めて表示するリストタイプ」にしたい
・アイテムごとに内部で定めた番号順に自動ソートできるようにしたい
 (内部番号が4,2,8のアイテムをその順で拾ったらアイテム画面を開いたとき2,4,8の順で整理されている)
としたいのですがどのようにすればいいのでしょうか?
0731名前は開発中のものです。2009/01/23(金) 23:49:09ID:YF0WjU+D
>>730
・現在の画面上
メニュー表示がRoom切り替え方だったらbackground_create_from_screen()で
元の状態を複製。使えないって言われたから要レジストらしい
切り替えないタイプだったらそのまま画面上にメニューを描画。

アイテム関連はリストでアイテム種類ごとのインスタンスを保持すれば楽かも
other イベントかScriptsでソート関数をつくる。その例だと番号を比較すればおk
アイテム番号をキーに検索して、拾ったアイテムがリスト中にあって同一の状態ならアイテム個数を増やす
そうでなければ、インスタンスを新たに作り適切なリストの場所に挿入
とかかな
0732名前は開発中のものです。2009/01/24(土) 15:39:35ID:RSxQwKZ0
>>707
これは5.3ではできないんですね・・・
6yら7でやる必要があるんでしょうか。
0733名前は開発中のものです。2009/01/24(土) 19:40:57ID:SbF+au3X
>>732
5.3ではfont_alignという変数になってる。こういうこともあるから最初にバージョンを(ry
ちなみに文字列の幅を測る関数(string_width)もあるから
自分で計算すれば「できない」ってことはない。
0734名前は開発中のものです。2009/01/25(日) 22:39:01ID:Ihe3tos+
ユーザ定義というのはどのような時にどう使うのでしょう?
0735名前は開発中のものです。2009/01/26(月) 00:55:11ID:rypvl5e0
>>734
これは自分の場合だけど、たとえばシューティングゲームで、敵に攻撃パターンをランダムで選択させるときなどに使ってみてる。

ユーザーイベント側で攻撃パターンを記述したスクリプトを用意しておいて、
if (isAttackBegin) {
pattern = floor(random(5)); // 攻撃開始時にパターンを決める(userイベント0〜4のどれかを選択)
}
...
event_user(pattern);
等とすることで、攻撃パターンを選択させることが出来る。

自作スクリプトを使って、switch - case で分岐させても同様のことが出来るけど、
ユーザ定義イベントの方法は、それに比べてオブジェクト内で完結出来る点が有利、かな。
(自作スクリプトは、どのオブジェクトからも呼び出せてしまうため)

・・・うーん、もっといい例があるような気もするんで、参考にならないかもなぁ。
0736名前は開発中のものです。2009/01/26(月) 01:14:42ID:RHbshgiW
ユーザ定義イベントが威力を発揮するのは、上で説明してるParentと組み合わせたとき。

例えば、敵が何種類かいるとして、敵Aを倒すとお金を落とす、
敵Bは分裂して別の敵になる、敵Cは自爆して反撃を受ける……など
倒した時に敵の種類ごとに違った出来事が起こるとする。

こうした出来事をそれぞれの敵のユーザ定義イベント0番に書いておき、
敵を倒した時には一律でそいつのイベント0を呼び出すようにする。
言ってみれば「敵を倒したイベント」を新しく定義するということ。
こうするとすっきりした作りになるし、後から敵の種類を増やすのも簡単になる。
ある系統の敵はすべて同じ反応をする、というのも継承で自然に表現できるしね。
0737名前は開発中のものです。2009/01/27(火) 16:56:40ID:pQHnQheZ
アイテムってものは通常、配列で実現するものなのですか?
配列だとメモリの確保が膨大になりませんか。

たとえば600コあるうちの1つが今求められているのに
配列全部のメモリが必要になりゃしませんか。
0738名前は開発中のものです。2009/01/27(火) 17:42:16ID:7ENg20mL
>>737
なりゃしませんぜ
何となく誤解や勘違いがありそう
アイテムを管理するのに配列を使うということ
アイテム自体はオブジェクトとして実装するのが普通だと思う

それにGMは元から画像関連でメモリを大量に使うから
たった600程度の配列を節約しても大して変わらないと思う
要素に入れるのはアイテムのID、性能、所持フラグ程度でしょう
これを配列やリスト無しで管理するとなると方法が思いつかない
0739名前は開発中のものです。2009/01/27(火) 18:19:56ID:sD1xAdJP
>>737
まず、アイテムの所持リストってのは、最低限、種類(ID)とその所持数が分かればいい。
で、アイテムの種類(ID)から、アイテムの名前や性能とかを『別途に』取得する。

そういうわけで、所持リストなら一次元配列でも十分管理できる。
アイテムの所持数を管理するのに必要な要素は、種類と所持数の2つ。
種類をインデックス、所持数を値とすればいい。
名前は? 性能は? それは「詳細リスト」から取得すればいい

itembag[0] += 1;
// アイテムID 0 を1個拾った!!
// アイテムID 0って何だ? アイテム詳細リストを見てみる。
// ↓
itemlist[0, 0] = "ポーション"; // 0: 名称
itemlist[0, 1] = "HPを30回復"; // 1: 説明(アイテムを選択してるときとか、店で購入するときとか)
itemlist[0, 2] = 30; // 2: 性能(ゲーム内で実際に計算とかに使われる数値)
// ↓
// 拾っただけだから、いちいち説明はいらん。名前さえわかりゃいい。
// っつーわけで、itemlist[*,0]の値を取得する
// ↓
// ポーション を1個拾った!!

と、ざっと書いてみたがこんなもんだろうか。
レジスト版なら、配列ではなく>>703にあるMapとか使うのもあり。
0740名前は開発中のものです。2009/01/27(火) 18:29:16ID:sD1xAdJP
あー、*ってワイルドカードって意味があったんだっけ。
拾ったアイテムのIDって言いたかったんだ。

// っつーわけで、itemlist[アイテムID ,0]の値を取得する
// itemlist[0, 0] を拾った!!
// ポーション を拾った!!
0741名前は開発中のものです。2009/01/27(火) 18:48:52ID:vXU/UZvg
参照に使うだけやね
0742名前は開発中のものです。2009/01/27(火) 20:09:36ID:pQHnQheZ
なるほロケット


っていうか、配列とは
一度にサイズぶんだけ一気に確保し、
それから参照していくものだと思っていたので
多次元配列だと100MB以上も食ってしまいかねない、
と危惧しました!
事情により、アイテムどころか様々な技など含めて5000コ、それを最悪でも16MBに収めたいので
0743名前は開発中のものです。2009/01/27(火) 20:38:48ID:7ENg20mL
>>742
配列に回すリソースが16MB以下ってことなら余裕で収まると思うよ
ざっと計算して1個あたり3000バイトかな
よほど長いアイテム名でもない限り100バイトもあれば十分

もしゲーム全体で16MBってことになると厳しいな
処理系で喰うメモリよりスプライトや効果音を減らす努力をした方が良いかも

>一度にサイズぶんだけ一気に確保しそれから参照していくもの
いや、まさにそうだよ
データとメモリ(サイズ)の関係について認識がおかしい気がする
多次元配列だからメモリを喰うなんてことはないし・・・
ってか自分でテストして確かめるのが良いと思う
適当に巨大な配列を作ってタスクマネージャで比較するだけでも大雑把なテストにはなるでしょ
0744名前は開発中のものです。2009/01/28(水) 01:16:03ID:MXEjvXvx
>>739
一次元配列でも管理できるといっておきながら
itembagも合わせたら三次元分も使ってるじゃないかwというつっこみは置いておいて

構造的にも役割的にもリストじゃないのに変数名になんとかlistを使わない方がよさげ
0745名前は開発中のものです。2009/01/28(水) 04:15:12ID:DtItU4Js
>>744
その場でいい表現が思いつかなかったからlistって書いたけど、他に何かあるかな。
itemtable? itemdetail? itemdata? まぁ製作者自身が分かればいーんだ。

「所持リストなら」一次元配列でも十分管理できるって書いたつもりだったんだ。
「名称、説明、性能、所持数」を全て一つで管理するより、
不変のデータ「名称、説明、性能」を一つにまとめて、
所持数は別途に管理する方が構造上いいのではと思


そうか、使用するメモリの話か。
0746名前は開発中のものです。2009/01/28(水) 05:02:50ID:oP92b7pR
1次元3000バイトで3次元配列作ったら
3000 * 3000 * 3000
0747名前は開発中のものです。2009/01/28(水) 10:26:16ID:LWUNhc76
GMLでは、1次元配列、2次元配列を使用することが出来ます。
変数名の後ろに[]をつけ加え、その間に添字(インデックス)を1個(1次元配列)
または、カンマ,で区切って2個(2次元配列)入れてください。
この添字を指定すると配列が自動的に作成されます。
配列の先頭番号は0です。大きい配列を使うとメモリを消費してしまうので気をつけてください。
添字にマイナスの値を使用してはいけません。
各配列で32,000個までのインデックスを使用でき、全体で1,000,000サイズの配列を管理できます。
0748名前は開発中のものです。2009/01/29(木) 01:42:29ID:9p/g/bvg
二次元配列とか使ってるけど、一次元でやるとしたら
item[]っていう配列に[個数][名称][説明][性能]の順で格納して
アイテムID*4 + a (a = 0 〜 3)で参照すればできるけど・・・

問題はメモリじゃなくて設計上よろしくない。
アイテムの内容をそのまま配列に記述して、さらに直接アイテムIDで参照していると
アイテムの種類を増減させたときそのアイテム以降のデータを全て直さなければならなくなるっていう
アイテムIDを個別に振るタイプでは同じ問題をはらんでいるけど
このやり方だと連番になっているので修正量が半端じゃない
0749名前は開発中のものです。2009/01/30(金) 09:46:51ID:Dxz4sk1v
1個あたり3000バイトって、アイテム1個あたり3000バイトってことだよな?
名称とか性能とか全部含めて。

……何でそれを三乗するんだろ?
0750名前は開発中のものです。2009/01/31(土) 01:05:21ID:/v1G/0Es
次元だろ
1次元にアイテムに求められるもの全部入るとは限らない。

「表」なら、一次元で完結することはあまりない。
たいてい2次元必要だろ

名前だけが必要なら1次元で済むかもしれないが、
誰が何を持っているか、というような個人の情報を格納するとなると1次元では足りない。

複数次元なら、そのぶんかかるのは自明。
n次元 n乗
0751名前は開発中のものです。2009/01/31(土) 02:25:37ID:rlXWUIoU
3次元配列だろうが、各次元の要素数をそろえる必要はないだろうに。
アイテムの話なら、
必要な配列の要素の総数 = アイテムの個数 x アイテムのステータス
で済む話だし。
0752名前は開発中のものです。2009/01/31(土) 04:49:01ID:Fymynsm1
>>746,>>750
つまり、アイテム5000個の名称、説明、性能の表を記述するのに、
5000*3じゃなくて、5000の2乗だけ必要、ということ?
5000*4997が空白になるんだが、そういうことなのか?
0753名前は開発中のものです。2009/01/31(土) 18:11:05ID:zdMDroAq
管理のしやすさ、検索のしやすさで2次元ぐらいでわけときゃいんじゃね
アイテムと装備でわけるとかさ
GMの配列はサイズ宣言しなくていいんだし>>752みたいに考えなくていいだろ
>>747ってヘルプのやつだよな
これみると2次元までしか使えないんじゃないだろうか
0754名前は開発中のものです。2009/01/31(土) 20:52:47ID:dFEgAXD4
いや普通に「アイテムの数×ステータス数」で十分でしょ?
0755名前は開発中のものです。2009/01/31(土) 23:16:19ID:+Qm7r/E2
ver7 だけど、背景をタイルで描くとRoomエディット画面がすごく重くなるなあ
このカクカク具合は嫌だな
0756名前は開発中のものです。2009/02/01(日) 02:09:16ID:VioXBIy7
>>753
次元で分けるとか、次元という言葉に拘っているみたいだけど、
そもそも次元というものを正確に理解していないんじゃなかろうか。

例えば>>739がitembagとitemlistを合わせたら三次元だという発言があったが、あれはどう見ても二次元だ。

   アイテム0 アイテム1 アイテム2 ……
名称
説明
性能
個数

↑の表の最下段、個数の行を切り離して個数の行をitembag、残りの表をitemlistと呼んでいるだけ。
このときの表の軸は(アイテムID、ステータスの種類)の2本。だから二次元。
切り離した行を見ると、軸は(アイテムID)の1本。これは一次元。
この二つをあわせたとしても、同じ軸が一本あるために、単純に数字の上での計算「一次元+二次元=三次元」の様にはならない。
「要素が増えた→次元が増えた」ではない。
もし仮に三次元になるのなら、>>744の発言からみて(アイテムID、ステータスの種類、個数)という表現になるな。
それがどういう意味か、わかるだろうか。例えば、同じアイテムIDなのに違う個数を持つ等。

ちなみに、本来アイテムのデータを管理するのに、↑にあるような表を書くと思うのだが。
次元で分けたがっているようだが、試しに好きなアイテムを5つくらい、
どう管理するかを一度excelか何かで表を作ってみたらどうか。
0757名前は開発中のものです。2009/02/01(日) 02:16:41ID:VioXBIy7
……まさか、アイテムをオブジェクトと見なし、オブジェクトごと管理する、とか?
もしそうだとしても、そうするよりは表を作るほうがいいかと。
その方が共通の項目(名称、説明など)で管理できる。
0758名前は開発中のものです。2009/02/01(日) 10:46:25ID:KYsF1WeA
RPGで各装備に変動するレベル(補正)や耐久値などをつけたいのですが
各変数を設定できるデータを100個ほど常時保持させ、装備入手に伴い空いている(数値が0である)データにその装備が持つ値を代入、
あとは増減をその内部で行い、装備が破壊や破棄された際に数値を0に戻す
などという方法でできるのでしょうか。
もっと簡単な方法があればご享受賜りたいです。
0759名前は開発中のものです。2009/02/01(日) 12:39:25ID:0y6Ohlui
>>756
同一人物でないんでない?

配列の中の配列を多次元配列と同一に扱ってるだけじゃないかな
これはグラフィクハンドル格納して使ったり便利だけど
アイテムなら素直にデータ構造でいいと思う
0760名前は開発中のものです。2009/02/01(日) 17:38:16ID:lUYLBl6P
>>758
>各変数を設定できるデータを100個ほど常時保持
データがインスタンスidで、100個保持っていうのがidを保持する配列100要素分だというのなら
できると思うよ

レベルや耐久値とかをもったオブジェクトのpersistent属性インスタンスを
アイテム種類ごとに生成するのが一番楽
0761名前は開発中のものです。2009/02/02(月) 09:06:58ID:JsXKtbu0



とりあえず言えることは


ゲームに限らず、配列をマスターできない奴はダメだということ。
必然的にポインタもわからないことになるからな



物理で言う、質量とエネルギーの関係に似ている。
[見え方が違うから別物]として捉えていたら永遠に理解できない
0762名前は開発中のものです。2009/02/02(月) 23:39:28ID:X4zxDIqi
同じオブジェクトの複数のインスタンスを重ねて表示する時に、
重ねる順番を思い通りにすることってできないでしょうかね?
0763名前は開発中のものです。2009/02/03(火) 00:11:12ID:H3sg+kjO
個々のdepth をかえる
もしくは思い通りの順番にインスタンスを生成していく
0764名前は開発中のものです。2009/02/03(火) 22:36:47ID:vsV0s/4n
すいません、タイムラインによるイベントって
どのタイミングで起こるかご存知の方おられますか?
0765名前は開発中のものです。2009/02/03(火) 23:02:40ID:b4FG0ycn
デバッグメッセージ突っ込んでみりゃわかるんじゃね?
とか言うとお前がやれと言われそうなのでやってみたら
Begin stepとStepの間だった

Timeline内で描画したいとかいう質問だったら追加料金いただく
0766名前は開発中のものです。2009/02/03(火) 23:27:42ID:KjRNw6lQ
確認者その2。
もっと正確に言えば、
Begin step イベント→ timeline の呼び出し → alarm イベント→...→ Normal step イベント ...
って感じみたいだ。
07677642009/02/04(水) 00:41:01ID:28umjKE8
>>765 >>766
ありがとうございます。むしろ自分こそ自分でやれよと
いう感じですね、、アホな質問すいません…。


>618 >620あたりでこのスレにカキコしたんですが
なんでゲーム中でハングアップするのかわからないまま2ヶ月が過ぎました…

原因の最有力候補たるオブジェクト
(このオブジェクトがある時必ずエラーがおきる)を1から
作り直したのに、また同じようにハングアップしてしまいます。。

そろそろ個人で作るのが限界かもしれません…

自分がメッセアド晒したら連絡して原因を一緒に究明してやるぜ、、という
素敵なお方とかいませんか…。。
07687642009/02/04(水) 00:43:25ID:28umjKE8
すいません、言葉足らずかも。。
メッセでgmkファイル送るので、ということです。
0769名前は開発中のものです。2009/02/04(水) 02:38:04ID:WYUwJI4p
世間にはな、Uploaderというものがあるのだよ。
0770名前は開発中のものです。2009/02/08(日) 08:03:23ID:stZQzW20
わからないところが出てきたからここに来て質問する、ってのは別にいいんだけど、
ただただ問題投下するだけだと……。
例えば、数レス前で話してたことに関してまた質問が来るとかって阿呆みたいだろ?
質問するなとは絶対言わん。けど、とりあえずスレ内を読むとかはして欲しいよね。

で、何が言いたいのかというとだな。
>>116>>188>>211とかで、ファイルへのURLを載せて『こんなのを作っているけどこんなエラーが出る。どうしたものか』系な発言があるよね。
つまり、スレ内を読んでいれば、『メッセアドを晒して……』なんてことをせずに、
『アップローダーを使って作ってるゲームを公開し、助言を貰う』っていう選択肢が見つかるはずなんだ。

Q&Aが殆どのこのスレだが、そのQ&Aから得るものもある。
他にも、このスレ内で紹介されたダンジョン自動生成のアルゴリズムとかは凄く興味深かった。
今作ってるゲームとは一切関係がないのが残念だが、SRPGを作るときがあったら参考にするかもしれない。

自分には関係ないと思わずに、とりあえず読んでみようよ。な?
0771名前は開発中のものです。2009/02/08(日) 09:24:36ID:VSHKfWuS
秘匿したいとか、馴れ合いたいとか、びっちり組み合って作っていきたいのなら他所でやった方がいいよ
サイトで募るとか手はあるはず、2chで開発仲間募集しても閑古鳥
0772名前は開発中のものです。2009/02/08(日) 21:01:44ID:aA7Dywq5
非常に初心者な質問なのですが、
ボタンを押したときに「剣を振る」といったアクションをさせたい時は
どうすればいいのでしょうか?
オブジェクトを変更させるともとのオブジェクトと違う場所から
新しいオブジェクトが発生して、永遠にアニメーションを繰り返してしまいます。

(5.3Aでプログラムは分かりません)
07737642009/02/08(日) 21:40:37ID:10++XKjl
>>770
確かに具体的にどこがどう、というのを考えるには
うpろだに晒して中身を見てもらうのが一番いいとは思います。

ただ、若干規模・容量が大きめなせいで
知人に直でオブジェクトの関係などを説明しても
未だ全て把握しきれていないくらいなので、ただうpして
「さぁ問題解決してみてください」
「質問は受け付けます」
という形でバグ探しを要求しても投げっぱなしみたいで
逆に不親切かなぁ、と思ったりもしました。

また、>>771さんの言うとおり、確かに
秘匿・びっちり組み合って〜なら
他所で誰かを募るほうがいいですね。

スレ汚し失礼しました。
0774名前は開発中のものです。2009/02/08(日) 22:51:59ID:bDfrOQQn
>>772
オブジェクトではなくスプライトだけを変更すればよろし
そのスプライトのアニメーションが終わったら元の状態に戻るようにすれば良い
0775名前は開発中のものです。2009/02/08(日) 23:29:57ID:aA7Dywq5
>>774
素早い回答ありがとうございます。

他のスプライト変更のようにうまくいかないのですが、
何か原因があるのでしょうか?
ぷるぷるします
http://down11.ddo.jp/uploader/download/1234103282/attach/hya_090208out.gmd
DLpass:1234
0776名前は開発中のものです。2009/02/09(月) 11:56:14ID:glL4u7ly
何とか解決しました

>>774
ありがとうございます
0777名前は開発中のものです。2009/02/13(金) 20:46:15ID:2BdHArDo
777!
0778名前は開発中のものです。2009/02/15(日) 06:26:36ID:9tua18qR
グラディウスのオプションの作り方は?
0779名前は開発中のものです。2009/02/15(日) 06:41:58ID:04uArqny
>>778
>>264くらいから読んどけ
0780名前は開発中のものです。2009/02/15(日) 16:16:36ID:fXtXHYNb
>>779ありがとう
GM初心者です。
自機移動の場合、オプションは自機過去の軌跡を追う
自機静止の場合、オプションも静止状態にする
そんなオプションの作り方は?
0781名前は開発中のものです。2009/02/15(日) 18:05:30ID:THPaUHHy
>1の非公式情報サイトの質問フォーラムにあったべ
0782名前は開発中のものです。2009/02/15(日) 19:38:41ID:WsRH8hUT
オブジェクトがふわふわ上下に漂っているような動きを作りたいのですがどうしたらいいのでしょう。
スプライトで作ってもいいのですが若干容量がかさんでしまうので…
0783名前は開発中のものです。2009/02/15(日) 20:07:47ID:oFgirjli
座標をゆっくり動かすだけでふんわり感は出ると思うんだけど
もし極値に近いところほどゆっくりにしたいとかなら
三角関数を使って座標を決めればいいかと
0784名前は開発中のものです。2009/02/15(日) 20:54:16ID:KuC38cSs
>>782
重力加速度的に動かせばいいと思うよ。

create eventにて初速をdirection 270 もしくは90に
速度2か3くらい設定しておいて、
更にcreate時のx,y座標をx_start,y_startという変数に覚えさせておく。

あとは数フレームごとに
gravity_directionを
point_diection(x,y,x_start,y_start)とすれば、ふんわり
初期位置に向かって動くと思う。

gravityの値は0.1か0.2くらい?
0785名前は開発中のものです。2009/02/15(日) 23:18:47ID:WsRH8hUT
えと、
>gravity_directionを
>point_diection(x,y,x_start,y_start)とすれば、
これはどうやればいいのでしょう?
set the gravityのdirectionに入れるだけだとやっぱり駄目なのでやり方をお願いします。
0786名前は開発中のものです。2009/02/16(月) 17:25:30ID:ILNE3Tn0
>>785
784じゃないけどステップイベントに「Execute a piece of code」アクションをおいて

gravity_direction = point_diection(x,y,x_start,y_start);

とかいてやればいいんでね?
0787名前は開発中のものです。2009/02/16(月) 22:38:37ID:bdIz0Orh
set the gravityのdirectionに入れるのと原理的には同じことだから
たぶんどこか他のところミスってるべ。
というか、そのやり方だとスタート地点から離れられないし
素直に>783でよくないかい?

三角関数といっても別段難しく考える必要なくて
/* Createイベント */
a = 0;
/* Stepイベント */
a += 0.1;
y += sin(a) * 0.5;
これだけでそれらしく動く。後は数字を色々変えてみて調整すればいい
0788名前は開発中のものです。2009/02/26(木) 17:16:38ID:V4sqiU4f
アクションゲームで地面に着いたとき着地音を出したいのですが
コリジョンで設定すると上にある足場にぶつかったときや壁にぶつかった時も音が出てしまいます。
下方向に着地した時だけの設定を作りたいのですがどう設定すればいいのでしょうか
0789名前は開発中のものです。2009/02/26(木) 20:12:16ID:NIFAUqfl
>>788
>>420から抜粋
「行き詰ったら原点に返れ」
詰まったらまず、何をしたいのかを明確にする。それから、したいことを分析しよう。

何をしたいのかは明確。『地面に着いたとき着地音を出したい』
んで、ここからしたいことを分析するわけだ。
>コリジョンで設定すると上にある足場にぶつかったときや壁にぶつかった時も音が出てしまいます。
そりゃそうなるよな。コリジョンってのは単に接触したときのイベントなんだから、
『足場のオブジェクトと接触したとき』に音が鳴るわけだ。
プログラム的にはおかしくない。けど、やりたいのはこれじゃない。

さて、ここでGMやらプログラムやらは横に置いといて、理論的に考えてみよう。
『地面に着いたとき』ってのはどういうときだ?
「前まで空中にいて、今足場に触れた」ってのは?
いや、それだとジャンプ中に壁にぶつかったときにも音が鳴ってしまう。
ついでに、上にある足場にぶつかったときも鳴るな。
「降下中に足場に触れた」なら?
これも、降下中に壁にぶつかったときに音が鳴ってしまうことになる。
『地面に着いたとき』という状況を別の言葉で言い換えるとどうなるんだろう?

……と考えていくのも分析の一つ。勿論別のアプローチもある。例えば、似た状況を探すとか。
着地音を出したいってことなら、『ジャンプ後、足場に乗ったときに降下が止まる』というのは実現できてるのが前提だよな?
それは『地面に着いたとき』という状況のはず。そこから何かヒントが見つからないかな?
また、その降下を止めたときに音を鳴らすという考え方もある。


生憎これから用事があるので、考えられるだけ並べてみた。
何かヒントになれば幸い。これ抜きで解決法が見つかればさらに幸い。
0790名前は開発中のものです。2009/02/26(木) 20:36:54ID:lirPt0Cs
ご苦労!
0791名前は開発中のものです。2009/02/27(金) 12:58:14ID:7UDXTjXQ
イベントでステップごとに変数を1ずつ増加させていって特定の数になったとき一つアクションを起こしたいのですが、
5の時にA、20の時にA〜と一つずつやるのでなく5、20、40の時にA〜など複数を一括で設定するのはどうやればいいのでしょう。
0792名前は開発中のものです。2009/02/27(金) 17:03:38ID:QoamVV9D
ユーザ定義イベントを使う。

ステップ内で
a+=1;
if (a == 5 || a == 20 || a == 40) event_user(0);

等と書いておき、起こしたいアクションをUser 0イベントの中に入れる。

ユーザ定義イベントの場所は
Add Event
>Other
>User defined
>User 0

ユーザ定義が何かわからなければ>>734辺りやヘルプを参照。
0793名前は開発中のものです。2009/02/27(金) 17:30:52ID:QoamVV9D
……いや、もしかしてGML使えないのか?
だったら、Execute Codeの中に

event_user(0);

とだけ書いたもの(Aと呼ぶ)を

〔VAR〕 If a is equal to 5
 A
〔VAR〕 If a is equal to 20
 A
〔VAR〕 If a is equal to 40
 A

と置いて、起こしたいアクションをUser 0イベントの中に入れとけ。
0794名前は開発中のものです。2009/02/28(土) 17:47:00ID:gTDyAg6K
主人公がプレイ中に操作も外見も完全に別のキャラクターになる状況で
各主人公オブジェクトの親に「主人公カメラ」を設定しました。
ビューが「主人公カメラ」を追うようにしたのですがキャラクターが切り替わる際に
カメラがしっかり付いていかず画面ががくっとなります。
どうも切り替わる際に一瞬だけ「主人公カメラ」を見失っているようです。
動いているものがその場で別のオブジェクトになってもビューがスムーズにそれを追ってくれる方法はありますか?
0795名前は開発中のものです。2009/03/01(日) 01:28:59ID:FK5vDD5W
親子関係にしなければいいんじゃないかな
それで自分でビューが追うべきインスタンスをカメラ側で設定すればいいと思う
0796名前は開発中のものです。2009/03/01(日) 03:20:11ID:n7LRNs7y
基本的な質問で申し訳ないのですが
「save game」
で保存されるものの詳細って
何処かに記載されているでしょうか?

>保存されるデータは基本的な情報しかないことに注意してください。
>再生中の音楽や、音楽再生中の正確な位置などは、保存されません。
>また、変更されたリソースも保存されません。
>データ構造のデータや、パーティクル、マルチプレイヤの設定なども保存されません。
とは書いてあるのですが、具体的に何が保存されて
何が保存されないのかが気になりまして。
0797名前は開発中のものです。2009/03/01(日) 18:36:17ID:KiSfn/LG
>>796
そのヘルプのが一番詳しい説明なんだけれど。
そこに書いてあるもの以外は全部保存されると思っておけばいい。
そいつら除いたら残るのはグローバル変数(組み込みとユーザ定義含めて)、
ルーム内のインスタンス、それぞれのローカル変数、
あとはpersistentなルームの状態くらいかな。
0798名前は開発中のものです。2009/03/01(日) 19:20:12ID:n7LRNs7y
>>797
ありがとうございます。

保存したい情報が、まんまだと保存されていなければ
一時的にグローバル変数に保持しておくように
してみます。

逆に保存したくない情報がロードによって復帰してしまう場合は
ロード直後に初期化してしまうとかですかね?

セーブしたい内容、したくない内容
セーブ/ロードのタイミング等、複雑になりそうであれば
自前で作るのも検討します。

0799名前は開発中のものです。2009/03/01(日) 19:45:16ID:U/3M/kF8
gravityの使い方がわからないので教えてください。
gravityを使おうとすると実行時にgravityを使ったオブジェクトとその行とVariable name expectedというエラーが出ます。

用はそんな変数ねえよ。ってことなんでしょうが、
Draw a textで
'加速度 ' + string(bear.gravity )
'加速度方向 ' + string(bear.gravity_direction )
(bearはオブジェクト名です。)

とすると上はエラーになりますが下はエラーが出ず表示されます。
ヘルプを見てもgravityとgravity_directionで引数の数が違ったり書き込み禁止の違いがあったりするわけではないので、
変数の呼び出し方は間違ってはいないとと思うのですが、何が間違っているのでしょうか?

バージョンは5.3aです。
オブジェクトで生成時にオブジェクト名をいれずに、gravity=0としたり、ボタンが押されたときgravity=0としても同様のエラーが出ます。
bear.grまで入力して入力補正でbear.gravityと入力することも試したのでスペルミスもないと思います。
0800名前は開発中のものです。2009/03/01(日) 20:04:57ID:KiSfn/LG
「変数名が必要です」 = 「gravityが変数の名前ってありえないよねー」
つまりgravityは何か別のもの、例えばオブジェクトだとか
スプライトだとかの名前なんだよ!
といった理屈で、変数名とリソース名がかぶってるとそのエラーになります。

そういうことを避けるために、スプライト名にはspr_とかオブジェクト名には
obj_とかプレフィクスを付けて区別することが推奨されてるわけで。
0801名前は開発中のものです。2009/03/01(日) 20:28:59ID:U/3M/kF8
確かにスプライトとオブジェクトが同じ名前だったのでなるほどと思ったのですが、エラーが解決できません。
名前をそれぞれspr_bearとobj_bearに変えて、下の二つをそれぞれ試してもやはり上だけエラーになります。
'加速度 ' + string(obj_bear.gravity)
'加速度方向 ' + string(obj_bear.gravity_direction)

エラー内容も同じですし、他にbearというリソースはないです。
よろしければもう一度ご指摘をお願いします。
0802名前は開発中のものです。2009/03/01(日) 20:30:28ID:Y4TCiCmT
パーティクルだけを加算合成して、
後は普通にするというのはできないでしょうか?
0803名前は開発中のものです。2009/03/01(日) 20:32:52ID:KiSfn/LG
いや、gravityって名前のリソースがあるでしょってこと。
コードエディタで「gravity」って単語が青じゃなくて紫になったら100%それ。
0804名前は開発中のものです。2009/03/01(日) 20:40:00ID:ab64wVb2
>>802
パーティクルを使ったことがないので実際どうなるかわからんが、ヘルプによると、

>Normally particles are blended with the background in the same way as sprites.
>But it is also possible to use additive blending.
>This gives in particular a great effect for explosion.

>part_type_blend(ind,additive)
>Sets whether to use additive blending (1) or normal blending (0) for the particle type.

(訳)
通常、パーティクルはスプライトと同じように描画されます。
しかし、加算合成を使うことも可能です。
(次の一文必要なさそうなので略)

part_type_blend(ind,additive)
additive
1:加算合成
0:通常

ということで、part_type_blend(ind,additive)を使ってみては?
0805名前は開発中のものです。2009/03/01(日) 20:40:55ID:U/3M/kF8
分かりました。
gravityというスクリプトを作ってたのでそれの名前を変えたら実行できるようになりました。
本当にありがとうございます。
0806名前は開発中のものです。2009/03/01(日) 20:42:08ID:Y4TCiCmT
>>804
ありがとうございます。
早速やってみます。
0807名前は開発中のものです。2009/03/02(月) 09:51:07ID:uDCLfBnj
カットインのようなものを作りたいのですがdrawで表示するスプライトを半透明にすることはできませんか?
もしくはオブジェクトをビューのyと基点を合わせながら横に加速させる方法があれば教えてください
0808名前は開発中のものです。2009/03/02(月) 22:47:21ID:UrY5j/m3
draw_spriteで半透明にならないって意味だったらdraw_sprite_extの方を使え。
後半は意味がよくわからんが、何かを加速させたいならスピードを一定量ずつ増やせばいい。
0809名前は開発中のものです。2009/03/03(火) 19:46:03ID:4PMDwMZy
横スクロールアクションを作りたいのですが、gmdやgm6で配布されていて中身の見れるゲームはありますか?
0810名前は開発中のものです。2009/03/03(火) 22:47:02ID:CEgL9EGt
>>809
公式のフォーラム行ったらチュートリアルから中身見れるのまで色々あるよ。
日本人が作ったのは閉鎖的な国民性から察するにどこにもなさそうだけど。
0811名前は開発中のものです。2009/03/04(水) 00:48:18ID:q7VrZUsH
gamdev wikiが機能してたころはいろいろうpされてたんだけどね。
うpロダごと消失して、資産が無くなった。

一部は手元にあるが、補完していいものなのだろうか・・・。
0812名前は開発中のものです。2009/03/04(水) 00:48:53ID:q7VrZUsH
あ、gamdevは現行のでなく、旧gamdevね。
0813名前は開発中のものです。2009/03/04(水) 20:14:05ID:TCZrRgAQ
んー、公式かー
英語苦手なんだけど探してみます
0814名前は開発中のものです。2009/03/05(木) 01:32:36ID:UPJSPUse
なにー、しばらく見てないうちにgamdev消えてたのか!
まいったなぁ・・・
0815名前は開発中のものです。2009/03/06(金) 01:25:31ID:fiR1q+Tb
アクションの跳ね返りを使うと入射角が反射角と等しくなったり垂直に当たると垂直に跳ね返ってしまいます。
壁に当たった時垂直なら少しずらすようにする、あるいはある程度ランダムに跳ね返るようにしたいのですがどうすればいいでしょう?
0816名前は開発中のものです。2009/03/06(金) 09:57:33ID:LhdGRRlv
特殊な跳ね返りは自前でするしかないよ。
ローカル変数の speed と direction (もしくは、hspeed と vspeed)をいじって、
自分の思うような跳ね返り制御を作るべし。
ランダムは、GML関数 random() を使用するとよい。
■ このスレッドは過去ログ倉庫に格納されています