トップページ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/
05855832008/12/13(土) 16:21:59ID:K75p9U8G
>>584
wwww
そうでしたね
修正します
0586名前は開発中のものです。2008/12/14(日) 22:59:58ID:VLzMeB5w
>>585
>wwww
とか
>バグでしょうか?
言い出す前に、テメーの無能を疑えよな
0587名前は開発中のものです。2008/12/15(月) 14:09:14ID:VQe5+xHL
>>586には同意としても
なんとなく高圧的な人増えたな。嫌味っぽく言ってもなんもならんのに
0588名前は開発中のものです。2008/12/15(月) 18:09:05ID:6p1v9SNR
質問する側もちょっとは考えろという事でしょう
0589名前は開発中のものです。2008/12/16(火) 11:54:03ID:Pj6nrR98
RPG的なものを作っているのですが、手に入れたアイテムをアイテム欄などで取得順に表示したり
カーソルが合わさっているとき使用するとそのアイテムの効果が現れたりするにはどうすればいいのでしょうか。
アイテム自体は全部完成しており、アイテム名のスプライトやシステム上の番号等は割り振ってあります。5.3です
0590名前は開発中のものです。2008/12/16(火) 12:21:24ID:KxWOE/yV
オブジェクト(例えば、主人公のオブジェクトとか)に取得したアイテムを管理する配列を用意して、
取得したアイテム番号を代入していく感じにすればイイのでは?

get_item[0] = 取得したアイテム番号
[]内は取得するに従い数値を上げていけばよい。
配列の長さを調べる術はないので、自分で管理しないといけない。

もしくは、データ構造で map が使えるなら、それを使ってもよい。
たとえば、キーネームをアイテム名、値に所持数とやると管理しやすい。
ただし、mapはキーネームでソートされてしまうんで、取得順となると工夫しないといけないね。

アイテムメニューのシステムは面倒だが地道にやるしかないのでは。
カーソルの操作処理とかも、いちいちオブジェクトを用意してやらないといけない。

アイテム効果を発動させるには、
メニュー欄に表示されるアイテムオブジェクトに、
使用するときのキー入力イベント(mouseクリックボタン等)を持たせて、
そのイベント内で、
・アイテム効果発動
・アイテム消費
の処理を記述していく感じかな。

概念的なことしか書いてないが、参考になれば。
0591名前は開発中のものです。2008/12/17(水) 08:18:19ID:BlN9VESD
アイテムAを取った時にグローバル変数に1をプラスして、アイテムAの変数にグローバル変数+1を代入。
アイテムを使用した時はグローバル変数から1マイナスする。

ってな感じでどうかな?
0592名前は開発中のものです。2008/12/18(木) 00:08:00ID:A6CnLTdh
instance_id[] のインデックス使えないかなと思ったけど
これ自体キューになってるんだね。そりゃそうか
0593濱田2008/12/18(木) 18:33:59ID:5x5AGIoL
 ゲーム作成ツールGameMaker で商業ソフトを作成、販売することは合法でしょうか?
 またファイナルファンタジータクティクスのようなクォータビューのSRPGは製作可能でしょうか?
0594名前は開発中のものです。2008/12/18(木) 18:49:28ID:zjRT977K
>>593
課金版なら可能。それと理論上はどんなゲームでも作れる。
0595名前は開発中のものです。2008/12/18(木) 19:00:44ID:AtKHrczp
えーと変数を使用したアクションを実行すると
ERROR in .....posution 1:UnKnown variable {変数名}
ってでるんですけど原因わかる人いたら教えてください
0596名前は開発中のものです。2008/12/18(木) 19:06:15ID:uRYQk5PQ
>>595
初期値定義してないんじゃね?
0597名前は開発中のものです。2008/12/18(木) 20:00:57ID:AtKHrczp
>>596
ゲーム作り初心者ですみません・・・
初期値定義ってなんですか?
0598名前は開発中のものです。2008/12/18(木) 20:23:37ID:9UDCWn2j
変数に最初の値を定義するってこと
0599名前は開発中のものです。2008/12/18(木) 20:34:28ID:AtKHrczp
>>599
ありがとうございます。
何とかできました。
0600名前は開発中のものです。2008/12/18(木) 22:15:12ID:BD5z/Zcu
>>594
非レジスト(Lite)版でも商用利用可だよ。EULA見た限りでは、商用不可のはβ版だけ。
レジストしてないと「GameMakerで作りました」ってロコが出るからカッコ悪いことになるけど。

>>595
その「.....」の中にも割と重要な手がかり(イベント名とか)が含まれてることがあるので
今後はなるべく省略なしで頼む。
0601名前は開発中のものです。2008/12/18(木) 23:23:16ID:gWEUu2RB
初心者とか変に短文にしようとするから困る

・長文でもいいから情報を小出しにするな
・現在どうなってるのか提示
・目的を明確に

この3つそろそろテンプレに入れた方がいいんじゃないか?
0602名前は開発中のものです。2008/12/18(木) 23:35:13ID:9UDCWn2j
まあ正論だけど
もう解決したからいいんじゃない
0603名前は開発中のものです。2008/12/19(金) 00:51:49ID:AK9HTeCg
何がわからないのかわからないもんさ
0604名前は開発中のものです。2008/12/19(金) 01:06:57ID:QZODxzKf
ゲーム起動時のローディングの時に出せる画像ですが、
あれをアニメ(gif)にしたり複数用意した画像の中からランダムで一枚を表示、などということは可能でしょうか?
0605名前は開発中のものです。2008/12/19(金) 11:57:53ID:OJi6EA5S
http://www.uploda.org/uporg1866564.txt.html

使えるかどうかわからないけど
ポーズのスクリプト書いてみた。

初期値 global.move=0 のあと
このスクリプト読めばば動くはず。

カウントや時間を使ってる、またオブジェクトの生成、消去の部分は別途、

if (global.move =0)
{
  〜〜〜〜〜
}

でくくってあげればいいはず。
06066052008/12/19(金) 12:03:25ID:OJi6EA5S
書き忘れてたけどスクリプトの読み込みはkeypress時ね
0607名前は開発中のものです。2008/12/19(金) 20:40:28ID:7ZgwG0BV
消えるのはや!
ありがたく貰おうと思ったらもう404…
0608濱田2008/12/19(金) 21:11:16ID:sOxi3S7i
Game Maker 5.3A で作成したゲームをVistaでする事は出来ますか?
0609名前は開発中のものです。2008/12/19(金) 21:12:39ID:7ZgwG0BV
できるよ。
0610名前は開発中のものです。2008/12/20(土) 10:28:38ID:rZvj3mwD
>>607
その1
if (global.move = 0)
{
global.move = 1;
global.pause = instance_count;
for(i=0; i<global.pause; i+=1)
{
array_a[i,1] = instance_id[i].gravity;
array_a[i,2] = instance_id[i].gravity_direction;
array_a[i,3] = instance_id[i].hspeed;
array_a[i,4] = instance_id[i].vspeed;
array_a[i,5] = instance_id[i].path_speed;
instance_id[i].gravity = 0;
instance_id[i].gravity_direction = 0;
instance_id[i].hspeed = 0;
instance_id[i].vspeed = 0;
instance_id[i].path_speed = 0;
}
for(i=0; i<8; i+=1)
{
array_b[i,1] = background_hspeed[i];
array_b[i,2] = background_vspeed[i];
background_hspeed[i] = 0;
background_vspeed[i] = 0;
}
}
0611名前は開発中のものです。2008/12/20(土) 10:29:35ID:rZvj3mwD
その2
else
{
global.move = 0;
for(i=0; i<global.pause; i+=1)
{
instance_id[i].gravity = array_a[i,1];
instance_id[i].gravity_direction = array_a[i,2];
instance_id[i].hspeed = array_a[i,3];
instance_id[i].vspeed = array_a[i,4];
instance_id[i].path_speed = array_a[i,5];
}
for(i=0; i<7; i+=1)
{
background_hspeed[i] = array_b[i,1];
background_vspeed[i] = array_b[i,2];
}
}

書ききれないから2つに分けたけどこれだけ
0612名前は開発中のものです。2008/12/20(土) 21:00:05ID:4d+YUfVI
ゲームの遷移状態を管理するオブジェクトに
ポーズ状態をループさせるほうがいいと思うんだけどなあ

各インスタンスの変数を一括処理するのは思わぬバグが出るときがあるから
できるだけ避けたほうがいいよ
現にアラーム処理が抜けているような
0613名前は開発中のものです。2008/12/21(日) 11:14:37ID:PzRsHlBP
instance_activate...とinstance_deactivate...を使う方法もある。
あと、>>31にルーム移動を使ったポーズがある。
0614濱田2008/12/21(日) 13:39:17ID:OMCEofD9
GMver7で日本語表示するにはどうすればいいでしょうか?
初めてGMでゲーム作成する者ですがバージョン5,3A. 6. 7 .どれを使えばいいでしょうか?
0615名前は開発中のものです。2008/12/21(日) 14:13:03ID:susUXEb/
あるオブジェクトAにオブジェクトB(いくつもある)が重なった時にEnterを押すと
重なっているBだけが消えるようにしたいのですがどのようにアクションを組めばいいのでしょうか
0616名前は開発中のものです。2008/12/21(日) 15:46:08ID:xad+zz/A
音ゲーチックな物を作ろうとしているのですが、soundに音楽を入れ再生した場合ズレが生じたりはしないでしょうか。
するとしたらできるだけ軽減する方法はありますか?
0617名前は開発中のものです。2008/12/21(日) 16:03:49ID:J97WFZEv
>>615
アクションの中にIf there is an objectみたいなのがある。
BのEnterキーアクションの中でそれを使って、Aと重なっていたら自分を消せばいい。

>>614
>1の非公式情報サイトへGo
っていうか、その質問だとすでに7使うこと前提じゃないの?
とりあえずバージョンごとの違いとか、今まで聞いてきたことも
このスレ内にちゃんと情報があるのでまずは頭から読んできて。
0618名前は開発中のものです。2008/12/22(月) 01:31:06ID:FUN2QKHC
なんか、大雑把な質問になりますけど、

変数を用意していない状態などで
relative用いて変数増やそうとしたり、分母0の割り算とかすると、
エラーメッセージが出て、プレイが中断されますよね?

テストプレイ中、エラーメッセージが出ずに、OS巻き込んで
フリーズしたり電源落ちたりしてしまうことの原因で
考えられることって何があるでしょうか…。
0619名前は開発中のものです。2008/12/22(月) 02:11:18ID:UfdezWih
OSの種類もGMのバージョンもどんな状況でなるのかも分からず姉妹
0620名前は開発中のものです。2008/12/22(月) 13:45:56ID:VIUd8eyr
OS:windows xp sp2
CPU:pen4 3Ghz
Memory:2G
GM7 pro
処理落ちなどはなく、いきなりフリーズもしくは電源落ちします。

状況…なんですが、これが分からないんですよ。
1度起きた状況を再度再現しようとしたら、何回やっても全然問題なく動いたりするし。

2Dアクションゲームで、ボス敵が岩を投げるんですが、そのときその岩に対し
主人公キャラがジャンプ斬りをあてた時(その時ボスは防御していました)
フリーズしました。
岩は「敵の攻撃」を親オブジェクトに持っていますが、
それまで何百回と出てきた「敵の攻撃」に対して同じ攻撃を当てた時はそのようなことはなかったです。
何らかの変数がオーバーフロウした時、似たようなことになった気もしますが、
そういうコードもなさそうです。

フリーズしてしまう原因として挙げられる要因(例えばオーバーフロウ等)、
どなたかご存知の方おられないでしょうか…。。
0621名前は開発中のものです。2008/12/22(月) 21:09:57ID:Ff2Oxw5o
>>620
その処理の中でオブジェクトの生成・削除・変更などしているとしたら
イベントの無限呼び出し(Createイベントの中で同じオブジェクトをCreateするとか)
が原因でスタックオーバーフローすることはあり得る。
あるいはコード的な無限ループとか。それで電源落ちるとまでは考えにくいけどね。
何らかのエフェクトを生成しているとしたら、ビデオドライバとの相性かもしれない。
06226202008/12/24(水) 13:52:00ID:j2sRIJLR
遅レスすいません。
無限呼び出しもないと思います。

そうですよね、、コード無限ループの場合、ゲームアプリのみが
シャットダウンするに留まる程度だったような記憶があります。

未だ解決されていないのですが、起こる確率がかなり
低い様子ではあるので、この問題は一旦置いておくことにします。

ありがとうございました。
0623名前は開発中のものです。2008/12/24(水) 19:15:30ID:Je0ZC97P
前に変数のエラーを書いたものです。
変数の初期値定義のやり方がわからないんですけど、教えてください。
0624名前は開発中のものです。2008/12/24(水) 19:27:04ID:Xm8ZsJDZ
>>599は何だったんだ
0625名前は開発中のものです。2008/12/25(木) 00:32:19ID:lTYGyE3i
非公式情報サイト10回読破して来い
0626名前は開発中のものです。2008/12/25(木) 01:47:33ID:LZR7eQes
何も置いてない部屋で「そのボールを四つ『A』って書いてある箱に入れといて」なんて言われても困るでしょう。
カラの入れ物を前もって用意しておかなきゃいけない
初期値定義なんて難しく(?)いうと混乱するかもしれないけど、
要は使いたい変数があるなら数値代入とかする前に数値0で変数を用意しておけ、ってこと。

オブジェクト「箱」の変数Aに+2とかしたいんだったら
「箱」のクリエイトイベントかどこかに「変数Aを0として用意」しておかないとAが見当たらないなんてことになってエラーが起きる。
0627名前は開発中のものです。2008/12/25(木) 19:40:35ID:wKjFbyzV
>>624
前は何故かGM5から7に変えたらできるようになったから
解決と思ってました・・
>>626
オブジェクトが作られたときに発生するイベントに変数のアクションで
変数を0にして入れたら
解決しました。 教えてくれて助かりました。
ありがとうございます。
0628名前は開発中のものです。2008/12/25(木) 23:16:41ID:FQPSIRUG
イベントとアクションで書いたものをGMLコードとして見ることはできますか?
0629名前は開発中のものです。2008/12/25(木) 23:56:07ID:lTYGyE3i
ObjectのShow Informationってボタンで見れたような気がする
0630名前は開発中のものです。2008/12/26(金) 15:57:01ID:PhPwcMia
これってコンピューター言語を使って自分でプログラム組めたりするの?
それと他のソフトとリンクしたりできる??
そういうのを後々やっていきたいんだけど
0631RMT-WM2008/12/26(金) 16:33:47ID:K4aSBGcm
<a href="http://blog.rmt-wm.com">RMT−WMのブログ</a> ページへようこそ!
0632名前は開発中のものです。2008/12/26(金) 19:46:25ID:KU6Gan+K
>>629
やっぱそれぐらいしかないすか
0633名前は開発中のものです。2008/12/26(金) 21:37:08ID:L5Xtp1pR
>>630
GameMaker だけでは、Windows APIやプログラミング言語用のライブラリを直接使うようなプログラムは無理。
あくまでゲーム製作用ツールだからね。
ほかのソフトというか、ほかの言語(C++とか)で作ったDLLを呼び出すことは可能なので、
自作プログラムや、自作DLLで制御可能な他のソフトとの連携は可能。

なもんで、WindowsAPI とリンクさせることももちろん可能で、
例えばダイアログボックスをつくって、
そこからGameMakerでつくった自作ゲームに制御を加えるなんてことも出来る。

もちろん、Windowsプログラミングの知識がそれなりに必要。
流行の(?) .NET との連携は難しそうだね。
0634名前は開発中のものです。2008/12/26(金) 21:38:56ID:L5Xtp1pR
追記。DLLを扱える機能は Pro バージョンのみです。
0635名前は開発中のものです。2008/12/26(金) 22:56:29ID:SuoE1taa
MPのようなゲージを作って、MPが10以上の時にボタンを押すと
MPを10消費して飛び道具が撃てるという設定を作りました。
その結果、何故か描写されているMPゲージが10以下にならず(もちろん内部も)、打ち放題になってしまう現象が起きました。
これのほかにはMPは以下にならない程度しかMPに関連する変数を弄っていないのですが何がいけないのでしょうか。
0636名前は開発中のものです。2008/12/26(金) 23:11:14ID:SxF5ePcK
>>635
普通そういうのは実際のソース見なけりゃ答えられん。が、もし

If MPが10以上なら
 MPを10減らす
飛び道具を撃つ

みたいに組んでるなら

If MPが10以上なら
 ▲<Start of block>
 MPを10減らす
 飛び道具を撃つ
 ▼<End of block>

こう囲め。
0637名前は開発中のものです。2008/12/27(土) 00:34:43ID:zgTmgbXH
スプライトを透過させたい時に透過を選ぶとドット絵に穴があいたような感じになりますが
ああではなく後ろの色が映るいわゆる半透明にしたいのですが可能でしょうか
0638名前は開発中のものです。2008/12/27(土) 01:12:00ID:Glw8dwT3
>>637
単純に画像全体を半透明にしたいならどのverでもOK(未レジストでも)
スプライトのalphaプロパティを弄れば良い

ピクセルごと透明度が異なるような表現(例えば輪郭にアンチエイリアス)がしたいなら
ver6以降のレジスト版か、あるいは外部DLLを使えばver6以前のGMでも可能かも
ついでに確かver7レジスト版から32bitPNGが扱えたはず
0639名前は開発中のものです。2008/12/27(土) 15:43:46ID:bMiIzurr
アクションゲームを作っています。
フォーラムなどを参考にしてジャンプして地面に着地などはできるようになったのですが、
ジャンプ中やダッシュ中に障害物に当たると(毎回起こるわけではないのですが)コリジョンの設定が悪さをしているのか遥か上空に吹っ飛んだりあらぬところにワープしてしまいます。
障害物は上に乗れるので親を地面と同じにしています。
横移動やジャンプ中の接触(上や横)に対するコリジョンはどう設定すればいいのでしょうか。バージョンは5.3です
0640名前は開発中のものです。2008/12/27(土) 19:56:55ID:zgTmgbXH
>>638
できました、ありがとう

ついでにもう一つ質問です
キーボードを押しっぱなしの時にアクションを起こしているのですが
特定状況下で「プレイヤーはキーを押しっぱなしだけど内部ではそのキーは押されていない」と言う処理を行いたいのです。
これは可能でしょうか。
0641名前は開発中のものです。2008/12/27(土) 21:54:29ID:mqdpfh1K
>>639
ソース見なきゃわからん
0642名前は開発中のものです。2008/12/27(土) 21:58:58ID:mqdpfh1K
>>640
理解力が無いから俺の想像だけど
例えば変数1の時はAキーを押すとアクションが発生するけど、変数が2の時はAキーを押しても発生しないって事で良いかな?

もしそうならキーを押すイベントでIf an exprssion is trueを使えば良いと思う
0643名前は開発中のものです。2008/12/28(日) 01:10:46ID:lQUrTnBK
ついに登場!アクションゲームツクール
http://www.famitsu.com/blog/tkool/2008/09/post_52.html

アクションゲーム制作の決定版!Multimedia Fusion2 国内販売推進委員会
http://www7a.biglobe.ne.jp/~bp-827z/mmf2/
http://hp.vector.co.jp/authors/VA036419/game.html
0644名前は開発中のものです。2008/12/28(日) 05:48:32ID:1w+FYaO/
なんか使ってるうちにアクションは全部スクリプトで処理になるよね?
管理と編集が楽になるよね?
0645名前は開発中のものです。2008/12/28(日) 15:22:43ID:cZXYtdqt
あえてアイコン方式で記述する意味がないからなあ
コードがかけなくても作れるってのを謳い文句にしてるけど
制約の中アイコン記述を覚えてもしょうがないんだよな
0646名前は開発中のものです。2008/12/28(日) 17:21:40ID:LlMEzWDN
ただ、スクリプト記述するよりもアイコンの方が処理が早い罠w
0647名前は開発中のものです。2008/12/28(日) 19:00:32ID:fT956MDj
アクションゲームで左右キーを押すとキャラが左右に動くのですが
坂道などでは段差でカクカクしたりしてしまいます。
なめらかに動かすには当たり判定や動きをどう設定すればいいでしょう。
0648名前は開発中のものです。2008/12/28(日) 20:37:31ID:cZXYtdqt
>>646
Scriptsは呼び出し自体が重いから差が顕著に出るけど
piece of code だとほとんど変わらないような気がする

>>647
ピクセル単位で当たり判定を取っていたりしないかな
矩形や簡易図形で当たり判定を取るようにすればよくなるんじゃないかと

少し上にもあったけど、当たり判定処理がうまくいかないとかは
○○のエラーがでますというのと違って、プログラムは良くも悪くも書いた通りにしか動かないから
周辺の情報を出さないと条件式を見直せぐらいしか答えようがなくなってくるよ
0649名前は開発中のものです。2008/12/28(日) 21:00:33ID:fT956MDj
正確な当たり判定を取るとキャラクターの足が動くたびに判定がおかしくなるのでとりあえず大きさに合わせて四角にしています。
足場も同様ですが斜めの床を作る際斜めにすると三角でマスクしても微妙なドットのせいでかくかくしてしまうのです。
06506462008/12/28(日) 23:34:43ID:LlMEzWDN
>>648
昔、timeGetTime()を呼び出すDLLを作って実験してみたことがあったんだ。
今また試しにやってみたところ、変数の代入なら varアイコンを使うより piece of code の方が早かった。
が、instance_create() の呼び出しは、アイコンの方が早かった。

即効作ったソース。
ttp://www3.uploda.org/uporg1890827.zip.html

06516462008/12/29(月) 00:02:49ID:gdKazmBS
ああ、忘れてた。
>>650 の受信pass : gamemaker
スレ汚しごめんなさい。
0652名前は開発中のものです。2008/12/29(月) 01:21:50ID:PIejyGZB
床のコリジョンを作っていますが
今の段階だと床に当たった時に起きるアクションと空中にある床に頭から接触したとき、
壁に横から接触したときのアクションが同じになってしまいます。
コリジョンを方向によってわける方法を教えてください
0653名前は開発中のものです。2008/12/29(月) 03:11:36ID:p4VZEUac
vspeed > 0 && y < other.y+18
ってんでどうかな
これは上からね
06546452008/12/29(月) 13:44:03ID:T1r41zQH
>>650
404・・・自分でも確かめられることなのでやってみた
repeat loop 20000 回でinstance_create()をGMのcurrent_timeで比較してみた
確かにアイコンの方が早いみたいですね。平均20msぐらい差が出ました
一応環境
XP SP3
Celeron M 1.3 GHz
GMのcurrent_timeの精度もあるので相対比較という感じです
0655濱田2008/12/29(月) 20:51:48ID:hLjua+tb
日本語訳の手に入れ方が分かりません。どうすればいいでしょうか?
0656名前は開発中のものです。2008/12/29(月) 21:44:28ID:quafeWvW
みんな買ってんの?
PROだとエフェクト楽しいのかな
0657名前は開発中のものです。2008/12/30(火) 02:43:25ID:Q8ag+4iF
やっぱり起動時のロゴ消えるのは大きいよな
俺も課金しようか悩んでる
0658名前は開発中のものです。2008/12/30(火) 13:00:28ID:u3BsZPuH
無料でプロ手に入れる方法なんていくらでも…
0659名前は開発中のものです。2008/12/30(火) 14:57:33ID:Q8ag+4iF
偽善とかそんなんじゃなく純粋に割れ厨は氏ね
0660名前は開発中のものです。2008/12/30(火) 19:05:51ID:21if5Swa
質問でもないのにageてる程度の奴だからな
0661名前は開発中のものです。2008/12/30(火) 20:10:04ID:8yR978O1
色々調べてみたのですが
5.3のレジストは6よりやれることが少ないんですね。
日本語パッチがあるからこっちで作り始めてしまったのですが・・・
0662名前は開発中のものです。2009/01/01(木) 09:23:17ID:jS882HBI
5.3Aと7は起動するのに6は何故か起動できない(エラーも起きずクリックしても何も起きない)
vistaには対応してないのかな…
0663名前は開発中のものです。2009/01/01(木) 10:46:03ID:Pq+98cZJ
どうせ日本語ヘルプばっか見ることになるから7でおk
0664名前は開発中のものです。2009/01/01(木) 11:38:55ID:5u1JBYki
上の方すいません、バージョン7でも日本語ヘルプが見れるのでしょうか?初心者なのでよく知らないのですが。
0665名前は開発中のものです。2009/01/01(木) 12:39:45ID:V+gx/at8
>>664
上の方じゃないけど

5.3→6: 言語仕様や名前が一部変更になった
6→7: 機能が追加されただけで関数・プロパティの名称は同じ

なので、7を使うにしてもver6の日本語ヘルプを見ることが多い
ver7の英語ヘルプを読むのは新しく追加された機能を使う時くらい

ちなみに今でも5.3が使われる理由は
・特定の環境では6以降より動作が軽い
・未レジストでも日本語が表示できる
0666名前は開発中のものです。2009/01/01(木) 13:32:58ID:jS882HBI
5.3レジストでも3Dゲームは作れますか?
0667名前は開発中のものです。2009/01/01(木) 13:55:53ID:Pq+98cZJ
>>664
>>665が全部説明してくれた、thx

Scriptsは製作中は便利だから使うとして
最終的にはpiece of codeにするのがいいのか
0668名前は開発中のものです。2009/01/01(木) 17:20:51ID:KI4xLbpe
Scriptsをどうするかはゲームや状況によりけり。重くならなければそのまま使って問題ないよ
最後にScripts部分をpiece of code に置き換えるとかは
GMでマクロが使えないからバグが増えるのでやっちゃらめぇ

Scriptsのように実態を伴わないで関数だけ使いたいならObjectをクラスのように扱って
event_perform_object()で目的のイベント関数だけ動かせば
管理しにくいけどScriptsよりは早くなる
0669名前は開発中のものです。2009/01/03(土) 05:35:49ID:DeK5ZSwj
二人同時以上もので、複数のプレイヤー(オブジェクト)から
同一のinstance_create使うときってどうしてますか?
例えばSTGで各自機からの固有の情報を参照する弾を生成する場合
1プレイヤーのみならglobalや、インスタンス参照したりしてできるのですが
複数プレイヤー同時となると、どうすれば良い方法になるのかわからないです

{
nnn = instance_create(100,100,ball);
nnn.speed = 8;
}

これも上手くいかなかったのでプレイヤー1とプレイヤー2でglobal変数を1個ずつ用意して
弾側でそれを参照してif文でわけています

何か良い方法があればご教授お願いします
0670名前は開発中のものです。2009/01/03(土) 11:35:14ID:oLIty3o+
そういう時こそ配列を使うといいよ
0671名前は開発中のものです。2009/01/03(土) 13:09:48ID:3LsZl9GN
>>669
よくわからんけど、自機が発した弾が発射元の自機の情報を得たいってこと?

自機弾の発射するイベントで、instance_create()が返す弾のインスタンスIDが使えるから、
{
bullet = instance_create(x,y,objBullet);
bullet.status1 = status1; // bulletインスタンスにstatus1変数を用意し、値に自機の情報である status1 を代入。
bullet.status2 = status2;
...
}
とやって、自機インスタンスのステータスを弾のインスタンスに設定したりするのもいいし、
上記と同様の箇所で
{
bullet = instance_create(x,y,objBullet);
bullet.myShipID = id; // id は自機のインスタンスID
}
とやって、自機インスタンスのIDを、弾側のインスタンスの変数に教えてあげるもの手。
弾側で自機のインスタンスIDが分かってれば、ステータスを参照するのが可能になる。

ただし、上記のいずれの方法も、弾側の生成イベントが終わってから変数が設定されるので、
弾側の生成イベント中でこれらの値を利用しようとするとエラーになる。
これを解決するには、弾の自機情報を元に行う初期化をユーザーイベント(下記例では0番)に記述し、
変数設定後にユーザーイベントを呼び出す方法がある。
{
bullet = instance_create(x,y,objBullet);
...(bulletインスタンスの変数に発射もとの自機の情報を設定する)
with(bullet) {
event_user(0); // 生成した弾に、ユーザーイベント0番を呼び出す
}
}
実装サンプル : ttp://www.mediafire.com/download.php?jhyy1yju1mt
0672名前は開発中のものです。2009/01/03(土) 14:38:31ID:ycNKPUB6
save gameのアイコンで保存したデータを
ロードしたら、どうもリスト構造は保持されない?みたいなんですが
これ、どうにかする方法ってないでしょうか。。

セーブ時別個にリストファイル作って
ロード時呼び出させないとダメなのかな?
06736692009/01/03(土) 14:55:46ID:DeK5ZSwj
>>671
丁寧な解説にサンプルまで用意して下さってありがとうございます

>ただし、上記のいずれの方法も、弾側の生成イベントが終わってから変数が設定されるので、
>弾側の生成イベント中でこれらの値を利用しようとするとエラーになる。

まさにこれで、解決方法がわからなかったので助かりました
これですっきりして進めそう&今後がかなり楽になりそうです
本当にありがとうございました
0674名前は開発中のものです。2009/01/03(土) 18:33:34ID:zGDz8aqy
>>672
game_saveの説明に詳しく書いてあるけど、Data structureやパーティクルの設定、
動的に作成したリソースなどはセーブされないので個別に保存する必要がある。
安直な方法としては、配列は保存されるから
セーブ前に配列にコピーしといてロード時に戻すとか。

ただ、たしかロードすると次のステップの先頭から開始されるので、
game_loadの後にコードを書いても実行されないという問題があった気がする。
だからgame_saveの前に何か変数を設定しておいて、saveの直後にクリアする。
で、ステップの先頭でその変数が設定されたままだったらloadされたと判断する、
みたいな小細工が必要だったかも。
0675名前は開発中のものです。2009/01/03(土) 19:40:26ID:PewRp2L1
GMで変数のサイズや型を調べる方法ってないの?
いまいちfile_bin系の使用方法が分からないんだけど・・・
0676名前は開発中のものです。2009/01/03(土) 20:37:48ID:0rv8QzLZ
>>675
GMでは、変数の型は数値か文字列かの2種類。
数値は倍精度実数型(52bitまでなら普通の整数として扱える)、文字は文字列型。
DLL に渡すときには、C言語で言うと、数値はdouble型、文字列型はchar配列の先頭ポインタとなる。

一方、file_bin系の読み書きは 1バイトずつしか出来ない。
2バイト、4バイトの数値を扱うなら、それなりのGMLコードを記述しないといけない。
特に書き込み時は、数値の下位8bit(1バイト)しか書き込まれないので注意が必要。

バイナリファイルに数値変数であるvalueの2バイト分を書き込むサンプル(リトルエンディアン方式)。

{
fileid = file_bin_open(filename, 1);// 1 は書き込みモード

file_bin_write_byte(fileid, value);
value = value >> 8;
file_bin_write_byte(fileid, value);
file_bin_close(fileid);
}
0677名前は開発中のものです。2009/01/03(土) 21:56:58ID:PewRp2L1
>>676
double オンリーでしたかどうもです

データを1バイト分で扱う必要がない以上
この辺の関数は自作したものを使ったほうがよさげですね
file mode も定数定義じゃなかったりこの辺は使うなってことなんだろうか・・・
06786722009/01/03(土) 23:20:24ID:ycNKPUB6
>674
詳しい解説有難うございます。
配列で作り直そうとしていたので、凄く助かりました。

その方法で作ってみることにします。
06796722009/01/04(日) 02:27:45ID:dtYqEfVG
正常に動作しました!!
改めて助言ありがとうございました。。

以前どなたかが言われていましたが、
配列サイズ取得できないのってかなり面倒ですねこれ。
0680名前は開発中のものです。2009/01/04(日) 11:43:45ID:UuaWwAF/
普通は配列サイズ決めてから容量確保して、それを超えたらエラー処理ってするから
配列サイズなんて問題にならないけどなあ

GMの配列サイズに気を使わなくてもいいようで
実はちゃんと気にしないと駄目な仕様が面倒な気がする
0681名前は開発中のものです。2009/01/07(水) 23:44:20ID:2vM9o/wg
垣根の垣根の曲がり角
子ヌコだ 子ヌコだ モフいヌコ
モフろうか モフろうよ
ヌコさん ぴいぷう ふにゃふにゃり
0682名前は開発中のものです。2009/01/07(水) 23:55:02ID:2vM9o/wg
プログラミングレベルが一歩進むと、動的確保が必要になってくる

特に家庭用
0683名前は開発中のものです。2009/01/08(木) 17:07:55ID:L4Sbt73m


ランダムが偏るんですけど

どうにかなりゃせんですか。


俺たちがランダムだ!とキメさせたいのに
起動一発目が
ほぼそれなので
ランダムのランダムが活きないの
ですが。
0684名前は開発中のものです。2009/01/08(木) 17:54:17ID:+zF/ao/Y
種はどうしてるの?
■ このスレッドは過去ログ倉庫に格納されています