【2D】ゲーム作成ツールGameMaker part4【マンセー】
《Game Makerの特徴》
@ コリジョン(当たり判定)/スプライト/マップ/サウンド再生など、2Dゲーム作成にかかせない機能が充実
@ なにかと便利なイメージエディタを内蔵
@ プログラミングの知識はあってもなくてもよい
@ *.exe(単体実行可能)形式でゲームを出力できる
@ 作ったゲームは自己責任の元で自由に配布できる(作ったゲームを売る場合のライセンス料さえ不要!)
@ キーボード、マウス、ジョイスティックからのキー・ボタン入力をサポート
@ イベントドリブン型なのでスマートにゲームを構築できる
@ 組み込みスクリプト言語"GML"により、さらに細かい処理が可能
@ エンジンはDirect X
※有料登録(15ユーロ)するとゲーム起動時のロゴ表示が消えて3Dやエフェクト機能などが追加されますが、基本的に無料で充分使えます。
《Game Makerの欠点》
@ 英語ソフトなので、英語が読めないととっつきにくい
@ ツクール類とは違い、ゲームの"動き"から設計しなければならない(それがまた長所でもある)
5 :
名前は開発中のものです。:2009/04/25(土) 22:47:07 ID:SGqLCdQy
上下左右が自然につながってるループって出来ないかしら
プレイヤーキャラは動かさずに周りの物体の方を動かして移動してるように見せかけるとか…
>>7 Game Makerのループ機能だと
キャラがmapの右端から消えて左端から出現するという形式なんで
ドラクエの世界マップみたいに途切れなくずーっと続くように出来ればいいなと。
まぁそれで特に今何か作ろうって計画はないんだけど
>>8 キャラを中央に固定、で背景スクロール処理という単純な動作でできないか?
ドラクエはあくまで例えなんで
RPGなら簡単だけどアクションゲームとか
リアルタイムシミュレーション的な物とかだと
すべての物体を同じように動かさないといけないのが大変かなぁと
マップは固定。
キャラを動かし、カメラ(view)はキャラを追う。
マップの端は広く確保しておく。
わかりやすく、viewが200x100だとして、ワールドマップが1000x800だとする。
ここで、マップの端を上下左右にviewの半分程伸ばす(伸ばした部分は海の画像とする)
ワールドマップのサイズが1200x900になる。
マップx軸(100/ 1000 /100)
マップy軸(50/ 800 /50)
キャラでこんな感じのコードを実行する。
if (x<100) x+=1000;
if (x>1100) x-=1000;
if (y<50) y+=800;
if (y>850) y-=800;
(要は、本来のワールドマップからはみ出したときに反対側に移動させる)
すみません、ワニワニパニックっぽいゲームを作っているのですが、
マウスを動かすとハンマーが付いてくるようにしたいと思っています。
GMLを使うことと、座標はmouse_xで取得する(叩く場所は横一列)ことまでは分かったのですが、
ハンマーのオブジェクトに対してこのスクリプトを入れたら動くのでしょうか?
{
for(;;)
if(mouse_x=>10)&&(mouse_x<990) move_towards_point(mouse_x);
}
オブジェクト.x = mouse_x
オブジェクト.y = mouse_y
をハンマーのステップに入れるべし。
14 :
名前は開発中のものです。:2009/05/04(月) 11:18:26 ID:kApAJSCV
起動したときたまに↓こんな文章が出るんですが、なにか問題あるのでしょうか?
detected 17 old temp folders left over from earlier runs of game maker or games created with it do yo want me to remobe these
翻訳サイト使ってみたけどいまいち意味がつかめません
>>14 以前ゲームメーカーもしくはゲームメーカーによって作られたゲームを起動したときに使用した古い一時的フォルダが17個検出されました。削除しますか?
要は、何か古いファイルが見つかったけど消すか?ってことだ。
そのメッセージが出たからって問題があるってわけじゃない。
見つかったファイルも消して問題ないだろう。
ありがとうございます
テストプレイの時の使われたデータを消すかどうかだったのですね
gamemakerってマルチコア未対応ですか?
対応してないっぽい
ブロック崩しを作ろうと考えています。
GMLを必ず使わなくてはならないので、バーをマウス追従をGMLで実現させたいのですが、
>>12を参考にstepイベントで、コードの断片を実行というアクションで、以下のコードを入力しましたところ、
{
point = mouse_x;
if( (point>=16) && (point<=448) && (distance_to_object(object_wall) != 0) ){
move_towards_point(point, 0, 500);
}
}
確かに動作するのですが、
・バーが超高速で点滅する。
・バーとボールが衝突すると、動作が止まる(ボールを跳ね返さない)
・X座標しか取得していないのに、バーがY座標にも動いてしまう。
・外枠とバー、どちらもsolidなので、外枠とバーがぶつかったら止まるはずなのに、
バーが消えてしまう。
・マウスカーソルをウィンドウからはずすとバーが消えてしまう。
といった具合に問題だらけになってしまいました。
まとめサイトのサンプルプログラムも既に落ちてしまってますし、
グーグルのキャッシュによると非公式情報サイトにもデータが置いてあったようなのですが、
見ることが出来ません。海外サイトでもソースを探しているのですが、
殆どのブロック崩しはキーボード操作で実現されており、参考に出来るものが殆どない状態です。
これらはどのようなことが原因で引き起こされているのでしょうか?
なお、move_towards_point(point, 0, 500);のY座標を
0以外の固定値に変更すると、追従すらしなくなってしまいます・・・。
helpから
move_towards_point(x,y,sp) Moves the instances with speed sp toward position (x,y).
つまりこれは、座標(point, 0)に向かって500のスピードで進むということになる。
まずは
>>13を参考にしてみるといい。
>>20 小刻みに取得するX座標に対して500という超高速で移動しようとしたために点滅していたのですね。
まだ、正常にボールを跳ね返せる段階ではありませんが、もう少し考えてみようと思います。
ありがとうございました。
ついでに
>外枠とバー、どちらもsolidなので
動くオブジェクトをsolidにするのは禁物(ヘルプにも書いてある)
solidなオブジェクトは衝突すると相手と自分自身の両方を前の位置に戻すからね。
ゲーム実行中にロードしたい画像ファイルとかって全部includeしないと駄目なのかな?
datファイル一つにまとめるとか何かいい方法知ってる人いたら教えてくれ
>>22 ありがとうございます。
点滅については、stepイベントとmove_towards_pointを混ぜたことに
よって起きていたようです。
教えていただいたところ修正し、こちらについても修正したところ、
最初の不具合は全て解消されました。
moveじゃなくて単純にその座標を指定じゃだめなん?
>>23 フリーのLite版なら無理。Pro版ならゲーム実行中にリソースの管理が出来るから可能になる。
>>26 すまんPro版だからリソース管理は出来る。
問題はsprite_addで追加するファイルをユーザーから見れないようにしたいんだ。
だからファイルを別フォルダに格納して配布とかじゃなくてglobal game settingから該当する画像ファイルをincludeしてるんだけど、
それだと100ファイル以上includeしないといけないから何か良い方法はないものかと。
>>27 GameMakerは、基本的には一般的な形式のファイルを経由しなければ画像や音声をリソースに追加できないので、
リソースを独自形式のファイルにするとしても、何処か隠してファイルを展開して、こっそり追加する方法しかないと思う。
あと、GameMakerはバイナリファイル関連の制御(ファイル分割、暗号化など)は弱いので、DLLで行う方がよい。
海外でリソース制御のパッケージが何種類か公開されているので、本家GMCフォーラムとかで調べてみるといいかも。
たとえば、いまググってみた感じだと、
ttp://gmc.yoyogames.com/index.php?showtopic=353544 なんかは、1リソース=1ファイルだけど、リソースファイルは簡単な暗号化を施されてて、
関数一発呼び出しでリソースに追加できるようなものだった。
まだほかにもあったような気がするんで、自分で探してみてください。
GameMaker5.3Aと7.0って具体的にどれくらい性能に差があるのでしょうか?
ネット対戦できるアクションゲーを作ろうとして、
とりあえず4人同時にカーソルを動かすまでは出来たんだけど、
実際にゲーム含めて作ったとして通信の遅延ってどのくらい起こるもんなの?
環境によるって言われたらそれまでなんだけど、仮に良好な環境において、
Gamemakerのマルチプレイ機能でまともなリアルタイムネット対戦は可能なんだろうか。
mplay_data_write/readの速度はどのくらいなんだろう。
大変申し訳ないデス
今からゲームを(というかオリジナルパチンコ)を
作ろうかと画策しているんですけども、
誰か過去ログ残してる方はいらっしゃいませんか(ノД`)
英語は得意なので、ちっとガリガリやってみようと思います。
ちょっと聞きたいんですがver.7で、
あるときからルーム移動のFade out and inとか
オブジェクトのimage_alphaの値とかが無視されるようになったんだけど
どうやったら戻せますか?それとも終了?
別のgmkファイルで作ったらちゃんと反映されるんだけどなぁ・・・
>>33 あるときからおかしくなった、と言われても原因を特定するのは無理。
その二つの現象に関連性はないってこともあるしな。
gmkファイルをうpするとかしてもらわんと判断のしようがない。
今のファイルを参考にしながら新しく作り直すってのもある。
room transitionはビデオメモリが圧迫されてくると実行されないことがあるっぽい
リソースのサイズ減らすとか、preload外してみるとかするといいかもね。
image_alphaの方は、自分でスプライト描画してたりするんじゃないの?
ゲームスピードかボール(インスタンス)の速度が早すぎると、たまに壁があるのに無視して通り過ぎるんだがどうしたらいいのでしょうか?
外壁はともかくサイズ大きくしようがない内壁が困る…。
今30fpsで作ってるのなら、60に上げてかわりにspeedを半分にする
あるいはボールを大きくする
それが無理だったら、前回の座標との間でcollision_line使って判定するとか
移動にmove_contact系使ってみるとか
衝突判定はスプライトの重なりだけで判定しているので、
何も対策を講じなければ、インスタンスのスピードが速くなりすぎると「すり抜ける」状態になる。
ボールの軌道が分かっているならば、1ステップ間で通る座標をすり抜けない程度にちょっとずらしながら、
衝突判定を繰り返す必要がある。(forループとかで処理することになる)
39 :
名前は開発中のものです。:2009/05/18(月) 10:02:52 ID:a2nKWYl/
日本語ヘルプ一通り見て思ったのですが、これってもしかしてnullは使えないのでしょうか
>>39 どう使うつもりなのかは知らないけど、nullを-1と置く等代用は利くと思う。
41 :
名前は開発中のものです。:2009/05/18(月) 12:18:12 ID:a2nKWYl/
完全に完成してから公開するのではなく、開発中途中のものを段階的に公開していくので
そうすると古い前のバージョンのセーブデータを使おうとした時、それまでになかった変数があったりするよエラーになるんじゃないかなと
nullが使えればそうした問題も解決できるのではないかと思った次第です
>>41 Help
>The Game Maker Language (GML)
>Game play
>Miscellaneous variables and functions
variable_global_exists(name)
Returns whether a global variable with the given name (a string) exists.
指定されたグローバル変数が存在するかどうかを返す
variable_local_exists(name)
Returns whether a local variable with the given name (a string) exists for the current instance.
関数が実行されたインスタンス内に指定された変数が存在するかどうかを返す
変数が存在するかどうかは、これらの関数で調べることができる。
他にもいろいろあるので詳しくは該当箇所を見て欲しい。
そもそも、GM内臓のセーブデータのロード、新しい変数の有無に関わらず、セーブしたバージョンとロードしようとしたバージョンでゲームが違いすぎるとGMが判断した場合に、ロードが失敗したような気もする。
まぁこれは確かな情報じゃなくて悪いんだが、一つ前、二つ以上前のバージョンのセーブデータを問題なく読み込めるかってのは確かめておいた方がいいかと。
セーブデータを自前で作っているのなら問題はないだろうけど。
44 :
名前は開発中のものです。:2009/05/18(月) 17:49:24 ID:a2nKWYl/
>>42 これは配列でも大丈夫なのでしょうか?
あとで確認してみます
>>43 うっ、それだと厳しいかも
自前でセーブデータ作るスキルなんてもちろんありません
45 :
名前は開発中のものです。:2009/05/18(月) 22:50:31 ID:+hdy116l
ウイルスバスター使ってると、プレイ時にDLLの不正な変更っていうことで引っかかるのですが
これはもうプレイヤー側でウイルスソフトの設定を変更してもらうしかないのでしょうか?
また、他のウイルスソフトでもなにか不具合が出るようなことはありますか?
46 :
名前は開発中のものです。:2009/05/25(月) 07:29:18 ID:MF59dodD
ほす
設定厨無双
誤爆
49 :
初心者:2009/05/25(月) 23:46:01 ID:lzywA0Ki
いきなりですいません、GameMaker7をvistaで使おうとしてるんですが、
いつもGM7を起動すると
「Failed to set data for」というエラーメッセージが出てしまいます。
どうすればいいでしょうか?
(あとGamrMaker6も起動できない)
vistaじゃないからしらないけどvistaの互換モード設定とかしてもダメ?
俺は
>>50じゃないが補足しとくと、ver6はvista対象外だったような
GM7 Proだがexecute_stringが動作しない。
きちんとexecute_string(string, arg0, arg1, ...)と呼び出してるんだが、どうもargの部分を読み込んでない。
同じような現象に遭った人いる?
具体例がないと何とも言えんね。試しに
execute_string("show_message(string(argument0 + argument1));", 5, 10);
とかやったらちゃんと15って表示されたけど。
54 :
初心者:2009/05/28(木) 12:59:02 ID:um1T+wUq
回答してくれた人ども。
GameMaker5なら何にも起きなかったから
これからはこいつを使って生きていきます。
もともと変数として登録されている単語の場合反応しないことはあったな
argが何の意味かわしらないけど、そこまでわかってるんならarguとかに変えてみたら?
56 :
初心者:2009/05/30(土) 20:10:27 ID:NCREypVm
またまたいけないことが…
今度はGameMaker5.3Aをインストールした後にシャットダウンをして、
パソコンを起動すると、青い画面でエラーのメッセージが出てしまいました。
訳してみるとメーカーに聞けとかなんとか書いてありました。
じゃあメーカーに聞けよ。
起動してるんなら問題の切り分けをやってからまたこい
多分原因はGMじゃなさそうだし
それ今流行のGENOウィルスじゃないか?
感染したら対処法はクリーンインストールのみ
ご愁傷様
>>53 すまん、具体的には
var str; str = "set_status()"; //void set_status(level)はlevelに対応したステータス値を設定する関数
var level; level = 5;
execute_string(str, level);
とやると、levelの部分が0(デフォルト)として実行されてるようだ。
もしかして、
>>55に倣って
execute_string("set_status(argument0)", level);
ならうまくいくかも?試してみる。
>>55 argはargumentの意味だった
それだったら execute_string("set_status(" + string(level) + ")") でもいけるけどね。
いずれにせよ引数は括弧の中に入れないと。
ちなみに、呼び出すスクリプトを条件によって変えたいとかだったら
var scr = set_status; script_execute(scr, level); みたいな方法もあるよ。
ゲーム中でマウスで絵を描くようなことはできるでしょうか。
クリック中カーソル位置に1×1のスプライトを常時生成するようにすればいいのかな…
pro版ならsurfaceを使うといい
補足すると、前回のmouse_x、mouse_yを保存しておいて、
前回の座標から今の座標までの直線をsurfaceに描くといい。
65 :
初心者:2009/06/07(日) 23:47:47 ID:xZXdylHw
リカバリしてからインストールしたら何も起きなかった4
みんなありがと。
これ使ってゲーム作ってる人ってまだいるのかな?
なんか国内だとユーザが四散しすぎてどこが使ってるのか把握できない。
おかげでモチベ高める要因になる「ヨソの作品」が見れない・・・
まさかどっかのSNSに篭ってたりしないよね。
ツクールと違ってアプリ名がアプリ名だからね。
Gamemakerでググってもそうピンポイントにヒットはしないだろうし
ポータル的なところも無いので仕方ないのでは。
自己申告か登録制のリンク集でも作るしかないんじゃね?
まぁ、例えばだけど
東方2次創作系とかをGMで作ったとしても
ツール名よか東方という方が先に来るよね。
さらに両方のコミュに公開するのもいいけれど
マルチだ!なんて言われるのも嫌だし。
70 :
名前は開発中のものです。:2009/06/10(水) 23:28:59 ID:N2mUYF3L
ルイージみたいに、移動したあと滑るような設定がしたいんですけど???
移動するキーをはなすと滑るような感じにはできたけど、滑りが止まらなくて…
friction使うといいよ。
6月1日以降にGM7買った人は、GM8に無償でうpぐれしてくれるってさ。
GM8の最大の売りは32bitアルファ入りPNGの完全サポートみたいだけど
描画処理速度も改良してるのかな?
透過PNGなんか今までのアルファマスクで同じことできるから別にいいけど、日本語の描画ができるかどうかのほうが気になるなぁ。
例の日本語描画スクリプトがGM8でも使えるとは限らないし。
ライバル?なMMF2は日本語対応してるっぽいしねぇ。
GMにもがんばって欲しい。
MMF2はスクリプト言語みたいな奴が使えないんだっけか。
なんかどっちもオビに短し襷に長しだな……
MMFはあまりに逸脱したことやろうと思ったらCでプラグイン作ることになる
そこまでやるんだったら1からCで作ったほうがいいような
一般人が思いつくレベルのプラグインはどこかに転がってる。
主人公の名前などを入力させるときにキーボードを使いたいのですが、入力した文字を処理するようなのはどのようにすればいいのでしょうか。
80 :
名前は開発中のものです。:2009/06/13(土) 22:42:34 ID:S3sYVLNc
AIの様な物をくんでいるのですが
主人公のオブジェクトが一定範囲に入ると(たとえば他のオブジェクトからx0〜x100)
その、他のオブジャクトが攻撃をしてる来るようにするにはどうすればいいのですか?
距離を求めるには三角関数
そこはdistance_to系でなんとか
HelpのWithの一番下。
会話文というか台詞とかで文字を一文字ずつ表示したいのですが可能でしょうか?
スプライトで一文字ずつとかだと容量と労力的にあれなので…
そんなに面倒じゃないんじゃない?
表示したい文は変数にぶちこんでおいて、その内n文字目までをstring_copyで取り出す
そいつをmbtext_drawで描画
あとはstepイベントとかでnを1(全角文字だと2?)ずつ増加させればいい
最近一文字ずつってはやらないけどな
一文字ずつ表示させるときの利点は、表示スピードを調整することで台詞に表情をつけられること。
一文字ずつってのも使い方によってはいい表現方法だ。例えば逆転シリーズとか。
流行るとか流行らないとかってのは別として、作りたいものをどう作るかってのを考えるのが重要じゃないか?
取り出す文字数については、ord(str)を使ってアスキーコードが半角文字の範囲内かどうかを見ればいいかと。
88 :
名前は開発中のものです。:2009/06/18(木) 00:58:41 ID:wIJB7n7l
FPSを常に画面に表示したいのですが、変数描写でfpsと入力してもfpsと関係ない数字が出てきます(なぜか毎回12)。
クリエイトの瞬間しかfpsを獲得できていないのかな?と思ってステップイベントで「karifps = fps」などやってみましたが
デバッグのローカル変数でチェックしても読み取られている変数は相変わらず12のままぴくりとも動きません。
描写以前にリアルタイムでfpsの値を獲得する方法が知りたいのですかどのようにすればいいでしょうか。
バージョンは5.3Aです。
音割れバグってまだある?
>>88 fpsって名前のリソース(オブジェクトとかスクリプトとか)がいると思われる。
12ってのはそのリソースのインデックスね。
コードエディタでfpsって打ったら紫になってないか? 本来は青になるはず。
あと、fps知りたいだけならデバッグウィンドウの下に表示されてるけど。
91 :
名前は開発中のものです。:2009/06/18(木) 13:11:50 ID:wIJB7n7l
すみません、ありがとうございます。
ご指摘の通り以前何かの拍子で作って使われていないオブジェクト「fps」がありました。
削除して設定し直したところ無事表示されるようになりました。
>fpsが知りたいだけなら
音を指定した時にテンポよくならしたいのでなるべく画面上に目安としてfpsを表示しておこうと思いこうしました。
大量のアイテムを用意する場合、やっぱりマップ構造の方が良いのでしょうか?
二次配列との違いはソートが容易なことくらいでしょうか?
93 :
名前は開発中のものです。:2009/06/20(土) 19:53:34 ID:1YxSRwAF
すいません、i wanna be the engine ってツールあるんですけど、
茶色いブロックを置くにはどうすればよいでしょうか?
もちろん、このGameMakerを使用したツールですよ。
ツールじゃなくてGameMaker用のデータでしょ?
ツールはGameMakerのほうだろ?
ああそうでした、すいません、すいません。
で、どうやっても茶色いブロックが置けないんです。
それに、白いブロック消すと下から茶色いブロックがでてきて、
それを消すことも出来ません。
どうすればよいでしょうか?
茶色いブロックはオブジェクトではなくタイル。見た目をこれで作る。
白いブロックは、壁オブジェクト。
これはエディタ上で見えて、プレイ上では見えないようになっている。
つまり、見た目と実際の壁を別々にして配置するような仕組みになっている。
何でこんなことをするかというと、
見た目が変わっただけの壁オブジェクトを何種類も作るのは無駄だから。
(オブジェクトの種類が多いとコリジョン判定で時間がかかってしまうことになる)
これは壁の仕組みの基本みたいなんで、覚えておいておくとよいらしい。
じゃあそのタイルはどうやって配置すれば?
roomにはタブが5つある。
objects, setting, tiles, backgrounds, views。
そのうちのtilesを使って配置する。
objects settings backgrounds
の3つしかないぞ・・・
tilesとviewsがない!
あ!アドバンスモード(?)にしたらあった!!
これはひどい
ひどすぎて噴いた
>>96が悲しむ姿が目に浮かぶわ・・・
すごいわかりやすい説明してたのにね
もちろん
>>96には感謝してますよ。
ところで、タイトル画面ってどうすれば
これはひどい
質問の内容が成立していない
何を聞きたいのかわかりゃしない
タイトル画面は作れるのですか?
作れるとしたら、どうすればよいのでしょうか?
どうすればって、作りたいように作ればいいんじゃない?
ゲームを作っているのなら、何かゲームをプレイしたことあるだろ?
全部が全部同じタイトル画面だったか?
マウスで画面をクリックするとゲームが始まるとか、
画面にあるボタンをクリックするとゲームが始まるとか、
キーボードのあるキーを押すとゲームが始まるとかメニューを開くとか、いろいろある。
どうすればって聞く前にどうしたいのかを考えろ。
どう作りたいかもわからんのに何を言えと言うんだ。
何をしたいのかはっきりさせろ。話はそれからだ。
ついでに、○○みたいなタイトル画面、みたいな漠然としたアイデアじゃなくて、
何が起こったときにどうしたいのかを考えると、何をするべきなのかが自然と見つかる。
※注! ID:7yJhJEniはニコニコ動画の生放送で質問するような阿呆です!
※注意! ID:IeTSzOs/はニコニコ動画の生放送なんかを見ている低脳です!
まあ、おそらくツクール脳なんだろうな
どう見ても、ニコ生使って質問してるID:7yJhJEniがキチガイだな
>>108 では、具体的に説明します。
背景は黒。
タイトル文字は2列(上段太文字、下段小文字)
「START」と「CONTINUE」の項目が上下にあって、
マウスでクリックして選択。
キャラクターの絵を出す。
ついでに音楽も流れるようにする。
すいません、>114は取り消しでwwwwww。
ところで、ワープってどう設定すればよいのでしょうか?
普通にやっても、エラー画面が出て終わってしまうんです。
どうすれば次の部屋に行くようになりますか?
>普通にやっても
「普通」ってのは説明になってない。
具体的に何をしたのか書くこと。
>エラー画面が出て
エラー画面には何がエラーを起こしているのかが書かれている。
エラーが出たならエラー内容を書くこと。
せっかく
>>90の見事な回答を見ていい気分だったのに、なんだこれは新手の荒らしかw
まず、ID:gIps/Kzsにはマニュアルを読んで試行錯誤するという発想があるのか?
自覚があるのかわからんが、上で聞いていることはGMの中でも初歩中の初歩だ
その程度の内容ならマニュアルにそのまま答えが書いてある
こんな感じ
FATAL ERROR in
action number 1
of Collision Event with object player
for object roomChanger:
Unexisting room number: 0
存在しないルームに行こうとしてるのが原因と書いてある。
ルームの移動先は正しく指定したのか?
>>116に具体的に何をしたのか書くこととあるだろうが。
何で何度も同じことを言われないとわからんのだ。
ツクールと比べて自由度が高い分、何でも自己責任で作らなければいけない。
マニュアル読めないやつは、いきなり作りたいゲームから作ろうとするな。
まずチュートリアルに沿ってゲームを作るなり、Exampleを見ながらその通りに作ってみるなりしてGMに慣れるのが先だ。
自由に作るのは慣れてからにしろ。
worpのオブジェクトを選んでぽんと置いただけですwww。
これだけでは次のルームにワープするわけがないというのですね。
次のルームへ移動するためには、どう設定すれば良いのでしょうか?
>>120 それを自分で学習できないようじゃ
このツールを使うのは向いてないよ
自分で学習できないようじゃ、って言われてもね〜。
もう一つ気になってるんだけど、has code ってなに?
みんな分かってると思うけど
NGID:3z1JGY14
>>122 has codeだけでは…。その前後に文章は無かったですか?
ttp://kabocha.sakura.ne.jp/uploader/src/up0378.zip とりあえずルーム移動のサンプルを作りました。簡単なつくりですが、これと照らし合わせながらもう一度試行錯誤してみてください。
※GM6.1で作っています。
ただいろいろな方が言われているとおり、質問される前に一度インターネットで調べるであるとかいろいろ試してみるとかされるのが望ましいかと。
意外とGM利用者も多いみたいですので、「GameMaker 解説」等で検索すると参考サイトも見つかるかと思います。一度お試しください。
125 :
124:2009/06/23(火) 22:12:36 ID:NBD7UU/C
すいません。一点だけ書き忘れてました。
サンプル内のGame Informationに解説を書いていますので、それをお読みいただくと一層理解が深まると思います。
ルームエディタ内にインスタンス(オブジェクトを実際に配置したものをこう呼ぶと思いねえ)
を置いて、Ctrl押しながら右クリックするとポップアップメニューが出る。
その一番下の「Creation Code」というのを選んでみると、コード編集画面が現れる。
これはCreateイベントのようにオブジェクト単位ではなく、
インスタンスごとに個別に初期化コードを記述できるというすぐれもの。
例えば移動先ごとに別々のオブジェクトを定義しなくても、
Creation Codeで移動先を定義してやればオブジェクト一種類で済ませられる。
さて、再びルームエディタに目を戻そう。インスタンスの上にマウスを移動させるたび
下のステータスバーにIDなど色々な情報が表示されることに気付くはず。
ここで今しがたCreation Codeを定義したインスタンスの上にマウスを置くと、
idの隣に「has code」という文字が表示される。これはCreation Codeが定義済みですよと、
いちいちCtrl+右クリックで開いて確認しなくても済むように表示されているわけだ。
つまり122はこの初期化コードを利用して、一種類のオブジェクトで別々の部屋に移動するような
サンプルをいじりながら話をしていると推察されるわけだが、そんだけの情報でわかるかこんちくしょう
>自分で学習できないようじゃ、って言われてもね〜。
>>119にも何でも自己責任で作らなければいけないとあるだろうが。
自分で調べることを知れ。低脳。
>>122 とりあえず同じ質問を2ヵ所でするのはやめてくれ
折角答えてくれる人に失礼だ
あのさ、お前ら
>>122に、そんなまともな頭があれば、
そもそも、こんな頭の悪いゆとりレスをしてくるわけがないだろ
>>122みたいな白痴は、もうここ読んでないし、
そんなマジメに相手してやる事自体が無意味だよ
っていうか奴は
>>124-126読んでも理解できないと思うし、高確率ではなから読む気がない。
(とか書いておくと反抗期の小学生は頑張る)
すいません、数学の話なんですけど、draw_sprite_generalで描画すると四角形の左端を中心に回転しますよね?
縦辺の長さと横辺の長さをh,wとして角度が増えるたびx,yにh,wとθで計算した数値をいれれば、回転する点を変えられると思うのですが、どういう風に計算すればいいでしょうか?
回転の公式でググって、GMだとY座標が下向きだから適当に反転する
dx = w/2; dy = h/2; // 原点から回転の中心までの距離
dx' = lengthdir_x(dx, θ) - lengthdir_y(dy, θ)
dy' = lengthdir_y(dx, θ) + lengthdir_x(dy, θ)
これを中心点に足すなり引くなりすればいいべ
あーなるほど!lengthdirを使えばよかったのですね!
サインコサインをなんとかすんのかなあ…とずっと考えてました。ありがとうございます!
俺ならsprite_set_offsetで画像の中心を移動して、あとはsprite_draw_extで回転角をいじるかな
general使ってるってことは、一部分だけ切り出して回転させたいんじゃないの。
draw_sprite_part_extで回転もできればいいんだけど、ないんだよね。
>134 lengthdirも実体はsin・cosだよ。覚えやすいように名前と引数変えてるだけで。
>>136 一部分だけ切り出して回転させたいんじゃないの。
まさしくそうなんです。教えてもらって申し訳ないのですがいろいろ試してみたらsurfaceで思い通りのことできました!
surf = surface_create(w,h); //切り取りたいスプライトの幅,高さ
surface_set_target(surf);
draw_sprite(spr,sub,xx*-1,yy*-1); //切り取りたいスプライトのインデックス、サブイメージ,xx,yyの場所から横w縦h文だけ切り取ります
nspr=sprite_create_from_surface(surf,0,0,w,h,false,true,false,true,xo,yo)//各パラメータはお好きに!
surface_free(surf);
http://www.gmlscripts.com/script/sprite_desaturate ココ参考にしました!僕以外の役に立つかどうかわかりません!
スプライトを切り出して新たにスプライトリソースを作ってるわけか。
いちいちdraw_sprite_general()で描画に毎回切り出しながらやるよりは、
一度手間をかけてやることにより、後の処理が楽になるね。
で、分かってるかもしれないけど、念のために補足。
その nspr は、使わなくなったらしっかり sprite_delete() しておくこと。
そうでないとメモリを食いつぶすことになるから、注意してください。
GM8の新機能(暫定)が発表されてた
・イメージエディタを一新(アルファチャネルのサポート、フィルタなど)
・コードエディタを一新(コード補完、括弧の対応表示ほか色々)
・コリジョン設定の変更(サブイメージ毎のマスク、円形マスクなど)
・スクリプト以外のリソース(ルームとか)もImport/Export可能に
・スプラッシュスクリーンにWebページやHTMLファイルを表示
・タイムラインの機能強化(一時停止や逆再生など)
・トリガイベント(自分で条件を設定できるユーザイベント?)
・ロード時間の短縮、その他の細かい改善
ルームエディタとかフォント関係はやっぱそのままなのかな
7で作ってるゲームをそのまま移行できるんかな
突然だが、最近経験している問題2つについて誰かアドバイスがあったら教えてほしい
一つ目は、sprite_addとsprite_deleteを1ステップ間隔くらいで頻繁に行うとメモリ使用量が16kから48kほど増えていく問題。
sprite_add中のpreloadはfalseにしてある。
それと、突然iやjといった変数が機能しなくなる問題。
例えばfor(i=0; i<instance_count; i+=1){...}の...の部分で1行ごとにshow_message(string(i))でiの値を確認すると、
ある行で突然変な値になる
使ってるスクリプトの中にiという変数を用いたループを使っていないことも確認した
誰か同じ経験している奴がいるだろうか?
>sprite_addとsprite_deleteを1ステップ間隔くらいで頻繁に行う
そもそもそのスプライトの作成と削除を毎ステップ行うっていうデザイン自体がよくないんじゃないだろうか。
helpにも、スプライトの作成はメモリを食うってあるし。
何をしているのか知らないけど、別のアプローチはないの?
>i,j
そのスクリプトを呼び出しているインスタンスか何かがそのiとか持ってるんじゃないか?
有効範囲をスクリプト内だけに留めておきたいのならvarを使うといい。
っと、毎ステップじゃなかったか。
でもどっちにしろ、何か別のアプローチがあると思う。
それと、呼び出し元がiとかの変数を持っていなかったとしても、
varを使えば解消すると思う。
144 :
名前は開発中のものです。:2009/07/01(水) 18:32:23 ID:wsmIF7l0
GM5.3使ってんの俺だけかな〜?
一番安定してるしなあ〜
>>142 enterキーを押す → 必要なスプライトをロード → メニューを表示
escapeキーを押す → ロードしたスプライトをデリート → メニューを閉じる
という操作をしてる
だからenterとescapeを連続で押せば、最速1ステップ間隔でスプライトのロード・消去を行うことになる…って感じ
外部読み込みにした理由は、メニューに使う大量のスプライトを常にメモリに入れておきたくないから
別のアプローチとしては、メニューウインドウそのものではなくウインドウの枠のパーツのみメモリに入れておくとか?
それで、色んな大きさのウインドウはそのパーツから構成する、みたいな
するとあまり凝ったデザインが出来ないのが問題か…
varも常に駆使してる
i, jの件については、具体的な例が出てきたらまた書き込んでみるよ
ありがとう
>>145 常にメモリに入れておきたくないってのはわかる。
でも、Helpにも「基本的にゲームプレイ中にリソースの変更はしない方がいい」って書いてあるし、
特に頻繁に使うものなんかは、ゲーム中に作成&削除をしない方がいいと思う。
逆に、頻繁に呼び出すことがあるものを毎回外部からロードする、と考えると、
それこそ効率が悪いのではと思えてくるんだけどな。
確かにメモリは使うけど、その為のメモリだと思ってるから。
そんなわけで、リソースの作成や削除は基本的にルーム移動時に殆ど済ませるようにしているし、
ゲーム中でも、本当に必要なくなったものは削除するけど、
すぐに呼び出す可能性があるものは、出来るだけメモリに入れるようにしてる。
まぁリソースの簡略化(枠のパーツ化とか)もしているけど。
>確かにメモリは使うけど、その為のメモリだと思ってるから。
なるほど、納得
メモリ使用率は少ない方がいい、とばかり思っていたが
そういう理由なら無難にメモリに突っ込んでおいた方がいいかもしれない
外部読み込みの方が起動も早いかと思ってたけど、コンパイルが長いからあんまり変わらないしな
あとはやはりリソースの簡略化か、ふむふむ
ありがとう参考になった
スプライトを「曲げる」にはどうすればいいのでしょう?
デフォームで検索すればサンプルが見つかるかも、と思いましたがそうはいきませんでした!
d3dで丸いモデルにテクスチャをはっつければ曲がるかな、と思いましたがプリミティブ関連の記述がさっぱりわかりません。
何かいい方法ないでしょうか?
念力
3Dで考えてるのなら、
d3d_draw_cylinder()
d3d_draw_cone()
d3d_draw_ellipsoid()
あたりを使ってみれば。
1ラインずつずらしたり伸縮させたりしながら描画するなんて手法が昔あってのう
まあ、今ならプリミティブでいいんじゃない?GM6以降なら2Dでそのまま使えるよ
>>126さん感謝です!has codeが出て、ルームの移動が出来ました!!
あとこれだけ聞きたいのですが、今ボスを作成中なのですが、
以下のようにするにはどうすればいいのでしょうか?
・スプライトを上下に移動させたい
・何秒か毎に攻撃(レーザー光線)を放射させたい
・何発か攻撃するとスプライトが消えるようにしたい
153 :
名前は開発中のものです。:2009/07/05(日) 14:16:51 ID:8ABSewN9
ちょっとお聞きしたいのですが、
3体存在するボスのオブジェクトが全て消えたとき、
最終ステージへの門が開く、というようにしたいのです。
つまり、「複数のオブジェクトが消えたとき、ある特定の場所へワープさせる」
ということをしたいのですが、どうすれば良いのでしょうか?
154 :
名前は開発中のものです。:2009/07/05(日) 14:18:54 ID:8ABSewN9
すいません、sageて無かったですwwww
155 :
名前は開発中のものです。:2009/07/05(日) 14:20:18 ID:8ABSewN9
今度こそsage
何度もすいませんwwwwww
なんかsageって打ってもならない件
マルチ止めれ
非公式情報サイト、早く復旧してほしいな……。
8のbeta公開されてますぜ。
mbtextで使用できる日本語文字、第二水準まで拡張されないかな……
テキストの多いゲームを作ろうとすると、どうしても第二水準の漢字にぶち当たってしまう
今のところ必要な文字は手で挿して使ってるけどさすがに大変なんだよな……
古文か厨ノベルでもない限り、第二水準なんて使わないだろ
いや、そうでもない。
例えば登場人物の名前とか。
164 :
名前は開発中のものです。:2009/07/08(水) 01:26:11 ID:g9VlwgPm
以下カレーにするー
まぁ自分以外にも第二水準で四苦八苦している人がいるということは、
少しは需要があると思うんだ。
スクリプトの方は少し弄れば処理できるようになる。
勿論第二水準が必要ない人もいるので、
もしよければ、jFontMakerに第二水準のON/OFFの機能を追加してほしい。
緻密、彷彿、揶揄とかそのくらいの単語でも第二水準だからな。
テキストを書いてみると、案外文字化けが多いことに気づく。
でもサブイメージの数が2倍以上になるからな…ON/OFFも含めて追加されれば嬉しい。
オープンソースであれば、描画する文字コードの範囲の拡張くらいは出来るかもしれないが…
いや、普通に第2水準は、使うだろ。
第1水準だけとか言ってる奴、どんだけゆとりの低学歴なんだよw
頭悪いにも程がある。
GMJの移転日程が出てた。7月下旬だそうだ。
手榴弾の「榴」が第二水準なだけでもいろいろ苦労してるから、第二水準対応はあると大変ありがたい。
ひらがなとカタカナだけで満足な人からしたら不愉快だろうけど、やっぱり漢字使いたいんだよね。
なんだ、俺以外にも第二水準の問題持ってる人いたんだな……
GMJの移転作業とかで忙しいだろうし、いつか対応されれば感涙ものくらいの気持ちでいよう
第二水準対応はまさに悲願だよね。
あと、別のプラグインだけどMIDIをまともにループさせられるのが出てきてくれたらなぁ。
MP3やOGGのBGM素材はちと大仰過ぎるのが多いし、そもそもあんまりまとまった数が手に入らない・・・
(個人的にはピストンコラージュが使えるプラグインが登場しても面白いと思うけどまずMIDIだ)
>>150,151 ありがとうございます。
すいません、少しややこしい質問になるのですが、d3dの効果を特定のオブジェクトだけに適用するにはどうすればいいのでしょうか?
たとえばdraw_set_blend_modeなら_bm_addで始めてbm_normalで閉じれば内側のスプライトは加算合成になりますよね?
これと同じ具合に、d3d_set_projectionを使って、視点を動かすと重ねたスプライトがずれるような動きをしたいのですが、これって無理ですか?
解り辛い質問で申し訳ありません、突っ込んでいただければ、できるかぎり補足します!お願いします!
173 :
よこしま:2009/07/09(木) 22:53:50 ID:tDSIyShL
>>173 きたぁぁぁぁ!
本当に本当にありがとうございます、早速使わせていただきます!
まあいまどきのPCならそれくらい余裕でしょ
>>173 まじかよぉぉぉぉぉぉぉ!!!!
本当にありがとうございます、感謝してもしきれないです。
今同人ゲームを作っていて、漢字の問題に悩んでいたところなので……
お礼になるかはわからないが、日本GMユーザーの励みになるようきっと頒布まで持っていってみせる!
>>153のものですが、
別々のルームに存在するボスが3体消えたときに、
特定のルームへワープさせる、ということをしたいのですが、どうすれば良いのでしょうか?
簡単にいえば、i wanna be the fangameで例えるとのラストへ行く前のリフトは、3体のボスを倒すと現れる。
という感じにしたいわけです。
>>177 グローバル変数使えばいいんじゃないの?
ところで、出来た文字スプライトはPreload_textureをオンにした方がいいと思うんだけど
これをオンにしとかないとCPUの負荷がものすごいことになる
αチャンネルに対応してないのかー、と思ったけど
背景黒にしたフォントを加算で描画すればほぼ事足りることに気づいた
ニコニコアクションを作っているものです。
GM6.1Aでゲームを作成しているのですが、
キャラのモーションなどを描画する際、パーツの角度や
位置などの情報を大量の配列で扱っています。
(どういうものかは動画とかを見ていただけると分かりやすいかと)
「変数の宣言できる量などの上限などはスペック依存なのか、
あるいは仕様として上限が決まっているのか・・・。」
ヘルプを見たところ特に記述が無かったのでどうなのか知りたいです。
見落としでしたら申し訳ないです。
>>177 他の方も言っている通り、グローバル変数を使うのが簡単だと思います。
global.boss[0] = true;
global.boss[1] = true;
global.boss[2] = true;
とでもしておいてボスを倒したら各々ボスに対応した変数をfalseにして、
3つのグローバル変数がfalseになったら移動すればよいと思います。
変数はわからないけど、配列は上限があるみたい。
各配列のインデックスの上限は32,000まで、
全配列のインデックスの総数は1,000,000まで。
原文:The system puts a limit of 32000 on each index and 1,000,000 on the total size.
変数は多分、上限はスペック依存かもねぇ。
ただ、一度にそれだけの変数を使う場面ってあんまりないのでは?
ローカル変数で処理しておけば、
インスタンスが存在するときだけメモリが消費されるわけで。
(インスタンスが破棄されれば、そのインスタンスに使っていたローカル変数のメモリも開放されるはず)
184 :
182:2009/07/14(火) 17:57:23 ID:vUQ3woyL
回答ありがとうございした。
配列の項目に書いてありましたか・・・すいませんでした。
インデックスは上限が決まっているけど
配列の数そのものはスペック依存な感じですかね。
でも出来るかぎり少なく作らないといろいろ問題もでるので気をつけようと思います。
一応現在もローカル変数で作っているのですが、
今後も出来るかぎりメモリの浪費を抑える努力をしようと思います。
画面にポーズをかけて全てのオブジェクトの動きや変数の増減をその間ストップさせたいのですがそのようなことは可能でしょうか。
負荷的にどうなのかはわかりませんが
自分は特定ボタンを押すまでwhileループさせて
その中にscreen_redrawを入れてます
この方法だとポーズ中×を押しても
終わらなかったりするので
他に良い方法があればそちらの方が良いと思います
一番お手軽なのはshow_message("ポーズしたよ");
サンプルに付いてくる隕石ゲームではkeyboard_waitを使ってるな。
これをループで回してキーチェックを入れれば
簡単なポーズメニューくらいは実装できる。
他には、画面のスクリーンショットをとって背景に設定してから
他のオブジェクトをdeactivateする手法がよく使われるかな。
>>177 親切にもサンプル作ってもらって、「なんのこっちゃ、全て分からん」
その後、サンプルその2作ってもらって「分からんから俺の作ったのを改造してよ」
DQNもいい加減にしろ。sageてなかったり、忠告してくれた人に
「自分で学習できないようじゃ、って言われてもね〜。」だの酷すぎる
一度生まれ変われ
親切に教えてもらっても感謝の一言もないとかね
自分の力を育てなかった結果いつか損するのは
彼自身なんだし暖かく見殺せばいいんじゃないですかね
どうせそんな奴、誰にも相手にされずに朽ちていくさ
前にもいたなぁ。変わりに作ってくれとか言ってたやつ。
RPGツクールの売りはRPGを自分で作る楽しさ。
だったらGMの売りはゲームを自分で作る楽しさ。
何かを作る時には、どう作ればいいかという試行錯誤が必要なわけで、
逆に言えば、その悩む工程無しに物は作れない。
自分の頭を使えず、他人に任せ、作ることを楽しめない人には何も作れない。
アイワナ好きがワナビー君。自己愛の強いやつってわけだw
GM8感想
・アルファチャンネルネイティブサポートなんで透過PNG使うのがラク。超綺麗。
・イメージエディタも↑対応。
・ビルドが若干早くなってる。
・スクリプトも若干記述が簡易になったものが。
・トリガーイベントが地味に便利っぽい。
全体としてはマイナーチェンジの印象が拭えないけど、各所で地味に作りやすくなってるのは確か。
特に問題がなければ推奨かも。個人的にはアルファチャンネルサポートが一番嬉しい。
sprite_set_bboxが無くなっているという話を聞いたが
そこらへんはどんな感じだろう
Collisionイベントを使って特定のオブジェクトに衝突判定させたときは、
「衝突したその種類のすべてのインスタンス」に処理が行われますが、
collision関数を使って同じように行うにはどうすればよいでしょうか。
イベントではなく関数を使うのは、キャラの攻撃判定を
プレイヤーが任意に設定できるようにするためなので、
あらかじめ攻撃判定の大きさのマスクを用意するわけにもいかないのです。
現在は
var col;
col = collision_line(~,~,obj~);
with(col){・・・処理・・・};
で行っているのですが、これだと「衝突したうち一つのインスタンス」
しか衝突判定が行われません。
アクションゲームなどで重なった敵を攻撃する際に
非常にストレスになるらしく、出来れば改善したいところです・・・。
ご指摘の通り、collisionチェック系の関数だとか、
instance_place()で得られるインスタンスって一つしかないんだよね。
なので、一つ得られたらそれを deactive にして、さらに判定して、、、ということをすればいいのでは?
と思ってやってみたら出来た。
ttp://gmdev.xrea.jp/st/up/54.zip コリジョンイベントは使わず、collision_circle()をつかった手抜きサンプル。
デバッグモードでメッセージウィンドウを見れば、
同じステップの時点で当たり判定が行われているのがわかると思う。
こんな早く回答がいただけるとは・・・
さらには解説付のサンプルまで・・・
本当にありがとうございました。
なるほど・・・判定をループさせるのは考えてはいたんですが、
一時変数で判定したオブジェクトを記録することは思いつきませんでした。
今思えば当然といえば当然ですけどコロンブスのなんとやらですねぇ。
ということはコリジョンイベントの際にも裏でこういう処理をしているんだろうか・・・?
何はともあれこれで要求を満たせそうです。ありがとうございました。
>>196 プレイヤーが任意に設定したい攻撃判定の数だけダミーの不可視のオブジェクト作って、
これのx,y座標をプレイヤーキャラのx,yに同期して、
何かのインスタンスに当たったら、これの衝突情報を、プレイヤーキャラのインスタンス側で参照するとかは?
>>196 発想を逆にして
with (obj) {
if (collision_line(other.x, other.y, .., id, ...)) { 処理 }
}
みたいにする方法もある。withの中ではselfとotherが逆転するのに注意だけど
回答ありがとうございます。
>>199 んおお・・?
攻撃判定用のオブジェクトを先に作っておいて
プレイヤと同期させて、プレイヤーと目標物が当たったら
攻撃判定用のオブジェクトと目標物でコリジョンイベントを行うような感じです・・・かね?
>>200 なるほど。シンプルですね。
欠点としてはcollision_〜関数を実行するインスタンスが
場合によっては大量になる点でしょうか。
ちょっと質問いいですか?
スプライトのアニメの制御で、OtherイベントのAnimationEndとImage_Indexをif構文で制御する以外の方法ってありますか?
if構文で制御すると安定しないんです。
(インスタンスの移動スピードが速いと判定をすり抜けてしまうようような感じ)
キャラクターの向きや状態ごとに新規のオブジェクトとスプライトを設定してそこで制御すると安定するんだけど、
ソースがややこしくなってしまいました。
(雛形のオブジェクトを親、新規の空オブジェクトを子にして、スプライトやパラメーターで個性を出すと言うことが出来なくなってしまった)
if文で出来ないことなんてないと思うけど・・・。ifの条件文を見直してみたら?
確かに、image_speed に小数点以下の値を設定していて、かつ、条件を == (等しい) でやっていると
すり抜ける場合があるんで(丸め誤差による)、
>= (以上) とか、 <= (以下) で比較してみるとよいかも。
さんきゅです。
動作ごとにオブジェクトに分けて(親にデフォルト移動のオブジェクト)、
向きごとに空オブジェクト(スプライトはそれぞれの向きで親は元の向き)で設定完了しちゃったあとなんで
確認使用がありません。
うーん、マウスイベントに変なの仕込んじゃったかなぁ・・・。
マウスホイールの動作中にSTEPイベントが無視されてる気がしたんですよ。
このスレに書き込んでる奴って、どっかでゲーム公開してたりすんの?
そういうまとめサイトがあればGMユーザーの存在感も増すだろうけど
俺はまだ製作中で公開に至ってない。
あと、まとめよりは日本語フォーラムが欲しい。
フォーラムだと排他的になるぜ
目的が存在感アップなら向かない
似たような話が前出てたな
確かに日本での皆で公開する場所ができれば嬉しいかも
双葉のID板で、途中のやつを公開してみたけど。そのくらいかなぁ。
ゲーム開発自体は初心者だし。
GMユーザーの活動を広報したいのか、GMユーザーの裾野を広げたいのか。
そんな細かく目的を分ける必要ないだろ・・・
ま、やりたい奴がやりゃそれでいいんじゃね?
俺は別にGMでドーコーってのは無くて普通に公開するけど。
俺も普通に公開するかな
まだ体験版にすら至ってないが…
ここがもうちょっとにぎわってからだね
昔作りかけで飽きて投げたのを久しぶりにやったら面白かったんで、大規模に改良したのを作ってみてる。
ところで、国内でTDS(TopDownShooter,真上から見た視点のFPSみたいなの)作ってる人っているのだろうか?
公式フォーラムではアメリカや西欧だけでなく東欧や南米の人も作ってるみたいだけど、日本で作ってる人はいるかな。
みんなどういうもの作ってるのかというのは気になるね。
マイナージャンルで仲間見つけたら嬉しいってのもあるだろうし
他人のを見て色々と勉強になることもあるだろうし。
これ課金したらGMで作ったとわからなくなるの?
Cとか出来ないからGM6で結構時間かけてゲーム作ってるんだけど
いざ配布するとかなるとGMで作ったってのは何か恥ずかしい
なにが恥ずかしいのかワケワカメ
そんな恥ずかしいならCの勉強でもすれば
どんなツール使おうが名作は名作、駄作は駄作。
Cで基礎から必死こいて作ったショボいゲームと、GMで基礎に手間がかからない分他に手を掛ける余裕があったゲームなら当然後者のほうがいいに決まってる。
ただ、ファイルサイズを小さくしたりファミコン風音源を使おうってのなら不利かもしれない。
C++でRPG作って、そのマップエディタをGMで作ってる俺のようなのも居る
>>217 わからんでもないが、ライセンス書かなくも音割れバグとかで簡単にバレるよ
俺も
>>220に同意
まず基礎が出来てる状態でゲーム作りを学んで、余裕が出来たり不足を感じたら
C++なりなんなりに移行しようと思ってる
pro版でextensionとか使えば大体の用は足りるしな
日本語描画もよこしまさんのスクリプトで補完されたし
最初のロード画面をなんとかできないかな
非表示じゃ味気ないからバーじゃなくてgifアニメ表示できるとか
ゲーム中マウスでMSペイントみたいに自由に線をかくことはできますか?
あとその線を辿るようにオブジェクトを動かしたりすることはできるでしょうか?
グローバル変数の値のみを保存する方法ってありますか?
gamemakerのセーブを使うと丸ごと保存してしまうので・・・
ファイルに書き出す
>>225 自由に線を描くのは面倒。特に曲線となるとね。
ステップイベントで、マウスの左クリックが押されているときのルーム座標を配列で記録する、ということをして、
ドローイベントで、配列に入れた座標をたどるように直線を描く、ということをする。
MSペイントのような直線の描画の仕方をしたければ、
最初にクリックした座標を記録し、次にドラッグして離した座標を記録して、
その2点間を直線で描くようにする。
このあたりに必要な変数や関数は、
mouse_x mouse_y draw_line()
あたりか。あとは、配列(array)についての知識が必要だ。
つぎに、線を辿るようオブジェクトを制御したければ、
記録した座標を元に、move_towards_point()を実行してやればよいかと。
Pro版であれば、ゲーム実行中にもPathリソースを作ることが可能なので、
これを利用しても出来るはず。(調整とか難しそうだけど)
必要な関数は、helpの Changing Resource にある Path の項目にある。
これらを駆使すれば可能。結構むずかしめの内容だから、それ相応の知識と経験が必要。
>>226 iniファイルに書き出すのが一番簡単かな
プレイヤー簡単に書き換えられちゃうけど
>>229 できれば詳しく教えていただけませんか?
まとめwikiにもそれらしいのが見つからなかったです・・・
>>230 日本語版ヘルプの「ファイル、レジストリの操作、プログラムの実行」の中の「INIファイル」を参照
>>231 ありがとうございます!
じっくり読んで出直してきます
233 :
名前は開発中のものです。:2009/07/30(木) 00:27:39 ID:nNQ8sNDh
I wanna be the englineをもとにして作ろうとしているのですが、
trigger01に触れたら、上方向のトゲが飛び、
trigger02に触れたら、別の右方向のトゲが飛ぶ
このようにしたいのですが、trigger01に触れると上方向のトゲは飛ぶのですが、trigger02に触れても右方向のトゲが飛びません。
また、先にtrigger02に触れると逆のパターンになります。
上方向のトゲのイベント
Create:Execute a piece of code depth=1000002;
step:Execute a piece of code
if (vspeed==0) {
if (trigger01.triggered) {
vspeed=-8;
}
}
else {
}
Outside Room:Execute a piece of code instance_destroy();
右方向のトゲのイベント
Create:Execute a piece of code depth=1000002;
step:Execute a piece of code
if (hspeed==0) {
if (trigger02.triggered) {
hspeed=-7;
}
}
else {
Outside Room:Execute a piece of code instance_destroy();
trigger01のDepth:1000002 trigger02のDepth:1000002
たすけてください。お願いします。
sageるの忘れていました。すいません。
右方向ならhspeedはマイナスの値でなくプラスの値なんでないの?
hspeed=7
に変えてみ。
あ、すいません。左方向でした。
ご指摘ありがとうございます。
ああ、思い出した。これ、前に俺も嵌ったわ。
これはエンジン側のバグで、triggerParent の player との衝突イベントで、
with (instance_id) ...
ってあるけど、これを
with (object_index) ...
と直せば、トリガ別に反応するようになる。
…多分エンジン作者はこういう意図だったのではないかと思ってる。
238 :
名前は開発中のものです。:2009/07/30(木) 01:25:59 ID:nNQ8sNDh
nNQ8sNDhです。
そうなんですか!エンジン側のバグだとは・・・
今はちょっとパソコンが使えないのでまたあとでやって見ます。
どうも親切に教えて頂きありがとうございました。
>>229 txtファイルに書き出した後、ファイル暗号化のextensionを使う、とかどうだろう
俺も考えてはいるがまだ試してはない
ゲーム名変更ってどうやるのですか?
>>240 キャプションならルームの設定画面で変えられたはず
タスクバーに出る名前ならファイル名
日本でGM製のゲームを販売した人とかいるのかね(prolite問わず)
prolite?
俺のモニタじゃないか
今年の冬に体験版頒布する予定
冬コミ受かればだけど…
数字の描画で3桁ごとにカンマをつけるみたいな関数はないのか
Youさくっと作っちゃいなよ
var i, s; s = string(argument0);
for (i = string_length(s) - 2; i > 1; i -= 3) s = string_insert(',', s, i);
return s;
みたいにさ。え、小数点?マイナス?何それおいしい?
>>247 おお、なるほど
さっそく使わせてもらいます
コピペじゃなくて自分で考えながら打てよ
GM6.1Aを使用してます。
小さめのドット絵を使ったゲームで、
プレイするときには2倍に拡大して表示させたいのですが、
Scalingから200%を指定すると、補間がかかった状態で拡大されてしまいます。
個人的な好みではあるのですが、ドット絵は補間がかかっていないほうが好きなので、
補間をかけずに拡大する方法はあるのでしょうか?
Global Game Settings
>□ Interpolate colors between pixels
↑off
「ピクセル間の色を補間する」って意味。
これ試した?
試したんですが、どうやらそれは、
スプライトやタイルなどのの回転や縮小などを行った際に
潰れたピクセルの補間を行うかどうかのチェックのようで、
OffにしてScaleを200に設定しても補間がかかったままになってしまいます。
ラスタ画像だから拡大して読み込みしたら、そうなりそうな気がしないでもなかったけど
6持ってないから7で試した
7だと色の補間はデフォではされないな
素直に最初から2倍サイズで描くか、画面サイズだけ2倍にするか
ReadMeすらなしで骨組みだけ見せられても何ともコメントしづらいが
動きはぬるぬる動く感じでいいと思う
デバッグ表示はルームの左上じゃなくて常に画面のどこかに表示できるようにしたほうがいい
動くカーソルの意味がよく分からない。赤い的にキャラが隠れたときにカーソルも同時に隠れるので
動くカーソルはViewsのObject followingに設定してあります。
何かアイデアとか書いてくれるとうれしいです
構ってちゃんなら「不評なら無視してください」なんて書くなよ…
一切苦情や駄目出しするなってことだろ?
データベースが使えればなぁ
二次配列だけじゃちと大変
>>260 説明文読む限り後者のほうが使い勝手がいいような気がする
試してないから分からないけど
ただ根本的にパッチは当てるバージョンの問題が出てくるので
ゲームみたいな頻繁に更新があるものは、実行ファイルとリソースを分けて配布して
更新の際に実行ファイルの新しい奴をそのまま出すほうが無難だと思う
GMはこのリソースを分けるって機能がすこぶる弱いのが難点ではあるけども
前から思ってたんだけどスプライトの当たり判定決める時の矩形ってRightとBottomがマイナス方向に1ドットずれてない?
処理系にもよると思うけど、
DirectXとかWinAPIなんかだとRightとBottomは矩形範囲外になってるから
間違ってるとも言えないよ。
5.3Aで作ってたゲームがグラボ新しくした瞬間に全滅したよ……
グラボが古いDirectXに対応してなくて常時15fpsきるとかw
グラディウスみたいな地形横スクSTGってやっぱりroomをステージ分の長さにして予め地形をつくっておいて
横移動するオブジェクトをカメラで追うって形でつくるのかな
この方法だと速度が1未満だとガクガクしちゃうんだよなー
地形無しならroomを解像度と同じにしてタイムラインで敵を出すって方法でいいんだろうけど
突然だが、GMのround関数は「銀行家の四捨五入」と呼ばれるちょっと特殊なもので
小数部がちょうど0.5の場合、近い方の偶数に丸められる。
たとえばround(1.5)=2だが、round(2.5)もやはり2となる。なので
10.0, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, ... といった数列をroundで丸めると
10, 10, 11, 12, 12, 12, 13, 14, 14, 14, ... という結果になる。
スプライトとかビューの座標も内部的にはroundで丸められるから
ちょうど0.5刻みで増やしていくとガタガタになるんだよね。
もしそれに当てはまるようだったら、自分でfloorで丸めてやれば滑らかになる。
>>268 うお、そんなん知らなかった
なんか背景だけ変にガクガクすることがあったのはそのせいだったのか
試しに補間切ってみたら全体が恐ろしくガタガタになって笑ったw
情報サイトが復活せずなかなか使う事ができません・・・
何か役に立つ参考書や代わりの基礎がわかるサイトとかないでしょうか?
英語ばっかりだもんなぁ
なんか最近ニコニコでもGM講座上げられてるっぽいよ
見た事は無いからどうとも言えないけど
いちお、Gamemakerの書籍執筆してる。
ちゃんと出るか分からないけど。
GMJのチュートリアルや、
GM6日本語ヘルプ(これが一番参考になる)でこと足りる気がするけど、
サンプルベースで解説してるとこあんまない気がする。
書いてて、8になっても多言語化に
前向きじゃないとこが不安だなぁ。
仕方なく5.3Aベース。
>>273 すげぇ…本出すのか
絶対買います
俺も日本語ヘルプに一番頼ってるなぁ
というかアレしか参考にしてない
>>272 あれすんごい役に立つよ。
インスタンスのID管理(with構文の解説とか)があれば完璧。
完全初心者の自分は、これとGM6の日本語ヘルプだけで何とかできるようになったよ。
276 :
名前は開発中のものです。:2009/08/24(月) 18:12:12 ID:Xzm++a1G
ひとつのタイムラインで同種の複数のインスタンス(ザコ敵など)の動作を管理することは可能?
移動アクションはタイムライン通りに動作するんだけど
なぜか弾発射アクションがインスタンスの数の分繰り返されちゃう(発射タイミングも同調してる)
事故解決しました
self、other、objectの選択ミスでした
情報サイト復活しないなあ・・・このまま閉鎖かなあ
講座動画みて使い方はわかったんですがアニメーション機能って
GameMakerにはついてないですか?gif使えば解決はするんですが
どうもgifって色合いとかが好かないからbmpでやりたいと思ってたのですが
普通にbmpでも出来るだろ?
静止画をある一定の間隔で表示するだけでアニメになるんだよ、知ってた?
一つのスプライトに複数の画像を登録したら普通にアニメーションするよ
Sprite Editor上で add from file とかやってサブイメージを増やすようにすればよい
ヘルプもまともに読めないようじゃ、絶対に作品は完成しないな
>>282 ありがとうございます、試してみます
>>283 ヘルプにアニメーション表示させる方法って書いてました?
レジストでのみ使えるアクションの簡単な解説などを載せているサイトや文書などはないでしょうか?
現在一番イイ文書がマニュアル
俺も日本語マニュアルに育てられてきた
6と7で微妙に違ってたりするね
パーティクル関係で、6の日本語マニュアルに書いてある関数定数がいくつか使えなかったりした。
実は、6.0→6.1で仕様がかなり変更されたんだよね。
パーティクル関係も変更され、6.0と互換性がなくなった。
エフェクト(パーティクルの簡易版)の導入もこの頃だし。
正直、コンマ1以上の仕様変更が成されてると思う。
あるインスタンスがあってそれにぶつかったら変数(仮にAとする)が1増えて、
ルームをリスタートしてもAが1のままにするのってどうやるの?教えてエロい人。
説明下手でごめん。
ルームのリスタートは、改めてそのルームに移動したのと同じと考えるべし。
そのルームに配置されているインスタンスは全て作り直されるので、それまでルーム内で変更されていたものはリセットされてしまう。
ということなので、そのルームに配置されているオブジェクト等で変数Aを変更していても無駄。
(ただし、persistent指定のオブジェクトならその限りにあらず)
つまるところ、グローバル変数を使用しろということ。
ルーム間をまたいで変数を保持したければ、グローバル変数を使うのが最も楽な方法だ。
ぶつかったときに、
global.A = 1
というようにしておけばよい。
Aの部屋で特定のもの触れたら 「global.testing」 加算1(set variableでapplication to は other)でそのあとにこのインスタンスを廃棄。
その状態でBの部屋にいくと「global.testing」が0よりも大きければ消えるブロック(step)は確かに消えてるが、リスタートしたら元に戻る。
ますます分からないです。
global.testing はそのほかで絶対にいじっていないか?
ルーム開始時に初期化していないか?(global.testingをクリエイトイベントとかでいじっているオブジェクトとかいたら注意)
とか確認するべし。
>リスタートしたら元に戻る
の「リスタート」がなにを指すのか不明確なんでわからないけど。
ブロックが消えた状態のルームBをリスタートするのか、
それともルームAで、触れた後リスタートして、触れずにルームBにいくのか、とか、
いろいろ考えられるのでよくわからん。
>>296を見てみたが、本題に入る前にコメント。
global.testingが0より大きいかどうかのチェックは、
Stepイベント内ではなくCreateイベントがいいかと。
Stepイベント内に入れるということは毎ステップ確認するということ。
考えてみれば、別に毎ステップ確認する必要はない。
作った直後にglobal.testingを確認して、大きければ消す。
Stepイベントに入れていることが、ルーム移動後に一瞬ブロックが見える原因。
んで、本題と思われるglobal.testingについてだが、
Debugモードでglobal変数を見ながらRを押せば、testingが消えることが確認できる。
で、探してみて見つかったのが、ScriptのloadGameにてgame_restart()が使われているってこと。
>>292や
>>294での『リスタート』ってのはこのことだと思われるが、
これはゲームをリスタートしているのであって、ルームをリスタートしているんじゃない。
そこが、
>>293や
>>295を混乱させてしまった問題点。
game_restartってのは、本当に最初からゲームを開始するということ。
『一度ゲームを終了して再起動する』『全部白紙の状態から始める』等と思えばいい。
リスタート前に設定したglobal変数? あるわけないわな。再起動したんだから。
解決策としては、game_restartじゃなくて、room_gotoを使うこと。
ゲームを再起動するのではなく、最初の部屋に行けばいい。
んー、混乱ってのは違うか。正しくは誤解だな。
まぁ自分が何をやっているのかをもう少し理解しましょう。
例のアイワナ改造のおしえて君でしょ。懲りないよなぁ。
GM7でoldファイルを読み込んだ際読み取れないアクションや微妙に変更されてしまうアクションにはどんなものがあるでしょうか。
アクションゲームで攻撃ヒット箇所にエフェクトを付けたいのですが
「剣(攻撃判定)が相手にヒットした箇所」はどのようにして認識させればいいのでしょう?
講座をみてブロック崩しの作り方はわかったのですが
GameMakerにはアクションゲームを作るのに重力のシステムは導入されていないのでしょうか?
されてるよ
ヒント:hspeed vspeed gravity gravity_direction
>>302 「もしかして重力機能まではGMに標準装備されてないのかもしれないのぅ」
「いや、答えを教えてくれるほど親切ではないですよああいうスレの人たちは」
ふざけんな、初心者講座orヘルプ見りゃ分かるだろ
てか重力とか、かなり基本的な(しかも易しい)機能じゃねーか
自分が何も努力しないのを棚に上げて「親切でない」とはよく言ったもんだな
大体ちゃんと教えてくれる人もこのスレには沢山居る
296といい、もう少し失敗してでも、時間かけてもいいから
せめて何か作ってから(動かなくても)質問しろよ
丸投げを他人の所為にするな
まあそれでもスレが過疎るのよりはいいよ
まあ、どんな機能があるかもわからず、ちまちまマニュアルを頭から読めというのも酷な話かもねぇ。
ただ、付属のサンプルでどんなゲームが出来るかぐらいは見極めて欲しいものだ。
これから始める人は、GameMakerインストールフォルダ下のExamplesフォルダにあるサンプルを一通りプレイしてみよう。
8使えなくなったんだけど正式版がアップされるわけでもなく…
あれ?これって…今まで作ったファイル…あれ?
え…せっかくdslistとか使い方覚えたファイルが…pngしこたま使ったり…8専用のスプライトのデータも…
いつか正式8でるよね?ね?
マニュアルをテキストに変換してアイポッドに突っ込んで
休み時間毎にじっくり読んでた高校時代を思い出すなぁ……
あの頃が一番楽しかった
>>309-310 インストールフォルダにあるヘルプをよく読んどくべき。
gm_readme.html より引用。
This is the SECOND beta version of Game Maker 8.0 that is only meant for testing. It will stop working at the end of August 2009.
(訳)これは、GameMaker8.0のセカンドベータ版で、テスト運用向けです。2009年の八月末に使えなくなります。
十中八九、バグ修正やら仕様の修正やら入るだろうから、互換性も正式バージョンともとられないだろうね。
なんというか、ベータ版で本気で作るのもどうかと思うけど。
パソコンの日付を変えてとりあえず起動して、作ったデータを出来るだけサルベージしておくようにするしかないと思う。
(リソースエクスポート機能で出力する.gmresファイルの互換性も怪しいから、画像はpngファイル、スクリプトはテキストファイルにするなりしておくこと)
どこかの会社がライセンス買って正式に日本語版出してくれないかなー
アクツクにあれだけ期待感が持たれてたくらいなんだから、出せばそこそこ売れると思うんだよねー
アクツクなんかより、はるかに多機能だし安いし
ありがてぇ!日にち変えただけで動いたよ!しっかり中身移しとくよ!
betaからbeta secondにデータ引き継げない時点で覚悟しとくべきだった…!
>>306 君はあのチャットにいた1人か
俺がなんで質問しなかったかわかるかい?
君みたいに実は知っててもしらばっくれてて叩くことしか
しない奴が現にいるからだ。
最初からそんな質問ふっかけてバカにされるよりは行き当たりばったり
やってたほうがマシだ、そもそも他所でのログ張り付けてまで人をバカ
にするかね、直接言いもしないで、まったくもっていやらしい
確かに初心者の質問にも親切に教えてくれる人はいるよ。
しかしそういった質問に不快を覚える人もいるんだ、現に君がそうだろう?
本当はいろいろスレで聞きたい事はあったさ。
でも不快に思う人が絶対いるから避けてただけだ。
それならばいっそ自力でやったほうがいいとね、
それなのに何なの君は、そういう嫌がらせして楽しいのかな?
>>306は強ち間違ったことは言っていないと思う
重力なんてちょっと調べればすぐ分かるようなことを質問されても
「本当に自分で調べたのか?」と思いたくもなる
そのくらい自力で見つけられないのなら、君はこれから何百と質問しなければいけなくなるぞ
重力の有無なんて目じゃないほど難しいことばかりだからね
そして俺らはその質問全部に親切に答えていかなければいかないのかと思うと、ハァ…ってなるよそりゃ
>>317 >質問全部に親切に答えていかなければいかないのかと思うと
回答者の自由意思じゃなかったっけ?
あと他人にとっては些細なくだらない質問だったとしても、質問者にとっては「とっかかり」の部分かもしれないじゃない。
調べろよクズみたいな言い方してほしくないな。
根本的に俺の意見はズレている可能性はあります。
それはそれとして、重力設定=GMでの機能がどれかわからない
という単純な錯誤である可能性のs・・・まぁいいか。
>>317 だから俺は
>>306とチャットで話してた時に「スレで質問してくれば?」と
言われたけど質問はしたくないと言ってたんだ。
初心者の質問など相手にされないし、もし教えてくれる人がいても
くだらない質問して迷惑かけたくないから、初心者スレとかなら別ですけどね
ちなみにこんな時間まで起きてるのもチャット出た後も延々と1人で作業
続けてるんすよ、自分は「ちょっと調べればすぐわかるような事」でも
人にとっちゃそのちょっと調べればすぐわかる事に何時間も費やす奴も
いるんす・・・
GMでゲーム作りたいってのなら、GMの使い方を『自分が』覚えなきゃいけないわけで。
そりゃ最初はわからんことだらけだろうけど、その為のマニュアルやサンプルなわけで。
自分で何かを創作するからには、最初は全然わからなくても最終的に自力で全てやりこなす気でないと無理。
>>119から抜粋。
ツクールと比べて自由度が高い分、何でも自己責任で作らなければいけない。
マニュアル読めないやつは、いきなり作りたいゲームから作ろうとするな。
まずチュートリアルに沿ってゲームを作るなり、Exampleを見ながらその通りに作ってみるなりしてGMに慣れるのが先だ。
自由に作るのは慣れてからにしろ。
そもそも「こういうことをしたいけど、どうすればいいのか」を追うんじゃなくて、
「GMで何が出来るのか」を覚えていけばいい。
扱える道具が増えていくと「こういうことをしたい。ならこれをこう使えばいい」という感じにすらすらと組める。
組めないのは、使える道具の数が少ないから。
やりたいことだけを追ってると、使える道具の数は増えない。
長い目で見ればいい。別に急がなくてもいいじゃん。
マニュアルあるんだし、いろいろ試せばいいじゃん。
ヒント:初心者≠ろくに調べもしない奴
何こいつきもい
てかニコ動の初心者講座くらい見ろ
質問することが悪いわけではないし、解答しないことが悪いわけでもないし
でも、質問するって事は他人の親切に甘えるって事だから、解答して貰えなくても
催促したり相手を貶しちゃいけないと思うんだ
きっと初心者が嫌いなわけでもなくろくに調べもしない奴が嫌いなわけでもなく
図々しい人が気に入らないだけなんだと思うよ
>>323 とっくに観てるよ、俺が怒ってるのは
ここではない別の場所で話してたログをわけがあって質問しなかっただけなのに
そのままここに張り付ける奴がいたってことに腹立ててるんだ
まー他所で起こったトラブルをココまで引っ張ってきて欲しくないわな
そこで解決してくれ
見たんならあんな質問は出てこないと思うがな
貼り付けられるような陰口紛いを書き込むなよ
取り敢えず、待て
まず教えてもらう人に「親切じゃない」って言ったお前が悪いだろ
そりゃ誰だって怒るわ
そんな奴に陰湿だの言われる筋合いは無い
自分の言動を鑑みろ
大体、段階的に説明してるサンプルすら読まないとか
あれほど良い教材はないぞ てか、「重力ある?」→「あるよ」→「不親切な説明」
っておい、お前はハリセンボンかwww
陰口も何も事実だと思いますがね
「アクションゲームが作りたいのですがチュートリアルは今見れないし
ヘルプと講座だけではよくわかりません、どうすればいいですか?」
って聞くとかどう考えてもおかしいでしょ。
まず人に聞く前に自分でまだやれるだけのことはやってそれでもわからなかったら質問する。
そんな少しわからないくらいで毎回バカげた質問ばっかりしたら教える方も嫌だろうし
教えてくれる人もいるとは思いますがそんな親切な人ばかりではない、空気を悪くしてしまう可能性がある
だから今は自分の力でなんとかする、とそう別の場所で話してたんですよ。
で、それを聞いてた人が結局その話題をこっちまで持ってきてこうなったんです
>>329 「重力ある?」→「あるよ」→「不親切な説明」
何て一言も言ってないですよ。
そもそもその別所で話をしてたのは質問する前の話題なんで。
「じゃあ面倒なことにならないように「はい/いいえ」ですむだけの
最低限の質問だけしてみます」と話してて
「重力はあるか?」と聞いただけなのです
別所での話の流れ
GameMaker使ってみてるけどチュートリアル今見れないしヘルプと講座だけだと
ちょっとわかりにくい箇所があるなあ、と雑談
↓
本スレで質問してみれば?
↓
まだ自分でも調べつくしたわけじゃないしもう少し自力でやってみるよ。
あまり質問ばっかしてても印章悪いし毎回親切に教えてくれる人がいるわけでもないし
↓
初心者スレとかはないのか?とりあえず質問してみては?
↓
初心者スレはないようです、ではせめてヒントだけでも捕まるようにyesかnoで
すむ簡単な質問だけしてみます。
↓
答えがもらえました、もう少し調べなおしてみようと思います(雑談終わり)
その後
>>306に雑談していた内容のログの一部が張られた、というわけなんです
あーごめん、俺が冗談交じりに「されてるよ」とだけ解答したのも原因……なのか?
ちょっとだけ口や筆がすべっちゃうことはたまにあるさ
ちょっと落ち着こうぜ
ちなみに俺はそのチャットとか知らなかったんだ
>>333 いえ、その答えは望んでた答えなのです。
ちょうどそのとき重力機能を探したけど見つからない時で
「もしかして重力は自分でスクリプト組まないとダメなのかなあ」とか
思ってた時だったのです。
まあ普通の人ならば自己解決する質問を答えてくれない人=親切ではない
と別所で発言してたのは聞く人によっては誤解を招く発言かもしれませんが
自分は他の人が自力で解決する事は自分も自力で解決したほうがいいと思っています。
だからそんな質問しても普通は教えない、という意味で別所で発言していたのです。
こんな事になってしまいましたが自分は別所での問題を本スレにまで
持ち込む気はありませんでした、本当すいません
海外フォーラムの「tutorials and examples」のとこから色々落としてみなよ。
横スクロールならplatformで検索すると参考になるものがたくさん出てくるぜ!
俺はニコ動対戦のエフェクトに感動してゲームメーカー始めたんだけど、調べまくった末に
エフェクトは「GCE3.1」に含まれてるものだ!って気付いたときには嬉しかったよ!サンプル見てれば使い方なんてすぐ覚えれるよ!
337 :
306:2009/09/02(水) 20:57:38 ID:M3yV7oHH
>>320 俺別にあんたと話した覚えは無いんだけど
>>325 確かに貼り付けとか陰湿かもとは思った。ROM専なのも褒められたものじゃないとは思う
他スレの話をここに持ってくるのはどうかとは思う
ただこのスレの住人を「不親切」っていうのはどうか
お前がこんなこと言わなければ304で話は終わってたとは思わんか?
>>330,1
大体、陰口言われて(しかも事実とか言われて)好意的に教えたいと思うだろうか?
「これから教えてくれるかもしれない人」を敵に回したとは考えが及ばんか
てか「勉強した」って。何回も言われてるがExample内のサンプルゲーム見たか?
あれで分からないとか正直お前が(自分の満足する)ゲームを完成させるのは無理だ
ダラダラダラダラ言い訳してる暇があったら移動アクションあたりの機能を片っ端から使ってはどうか
重力が何かとかプラモ作るのに「Aランナーって何?」って聞くようなものだ
説明書(サンプルゲーム)を見れば子供でも分かるというのに・・・
>>337 あんたROMか、それはよかった、あの話してた人の中にアンタみたいなカスが
いなくて本当よかった、ここでの話題ならまだしも雑談チャットのログを
わざわざ張るんじゃねえよ何考えてんだ。
現に真実だろ?それともサンプルもなにもみないで手当たり次第質問
してみんながそれを子供に教えるみたいに1レス1レスつけることが
正しいと思ってるの?
こっちは最低限の質問だけして極力自力でやろうとしてたのに
アンタが人のログ勝手に張り付けて話デカくしてんだろ
おいおい、話のミソが「質問の答え方」ならまだしも「ログ貼ったどうの」なんなら余所でやって!
どっちも頭冷やせ。そして出て行け。
チャットでも何でもやって、そっちで話し合え。
質問云々より、こういうやり取りがいつまでもグダグダか続く方が迷惑。
タイトル超うろ覚えだったわ!ニコニコアクションゲーム だったわ!
おk
探してくる
344 :
名前は開発中のものです。:2009/09/02(水) 22:08:24 ID:EtyLDNSU
急に態度でかくなったな
人のこと疑ったのを棚に上げてよくもまぁ
努力せず吠えるだけのお前はさしずめクソだな
一生人に噛み付いてろ
>サンプルもなにもみないで手当たり次第質問
してみんながそれを子供に教えるみたいに1レス1レスつけることが
正しいと思ってるの?
いや、俺はサンプル「見ろ」って言ってんだぜ?反対だろ
ちゃんと見れば1レス1レスつける手間が省ける。日本語大丈夫か?
大体キレるくらいなら無責任な陰口やめればどう?
>>345 お前こそチャットでは何も言えないくせに無関係な人巻き込んで
荒らすのやめろよ、マジでいい加減にしろ
まあまあ、お互い「やめる」で意見一致してるんだから素直に喧嘩やめようぜ!新規君もログが見づらくなるぜ!な!ここで終りな!
ちなみに
ttp://www.messy-mind.net/gm-samples/ ここのサンプルはすげー役立つ。特に「Advanced Seeking Missiles」はすごい!
ミサイルの軌跡はスプライトを重ねてるんじゃなくて一つのスプライトをポリゴンで伸ばして曲げて表現してるんだよ!
俺ずっとリアルに動く触手が作りたくて「こういうことできればなー」って思いつつ半年ぐらいvertexいじってたんだけど独学じゃどうしようもなくてさ、
あんまり褒められたやり方じゃないかもだけど血眼になってサンプル探して見っけたよ!自分じゃどうしようもできないことはそりゃあるから聞けばいいよ!
大体三日悩んで無理なことは諦めて別のアプローチするか質問するかサンプル探すかするほうが良い。目安ね!
jFontMakerで、作った画像はどのようにして使うのか、ご教授願えませんか?
Read meに載ってたサイトは今見れないので、使い方が分からないのです。
>>349 なるほど、こんな風に使うんですね。日本語描画がとても楽になりそうで助かります。
ありがとうございました!
あと、ここを見てる(?)作者のよこしま様もありがとうございました!
>>301 俺だったら当たり判定用のオブジェクトを作って、Maskに当たり判定の画像を登録して、
剣のオブジェクトに当たり判定用のオブジェクトを重ねる。
>>301が言ってるのは、多分格ゲーのヒットエフェクトみたいなのの事だと思うんだけど、
俺がGMで格ゲー作ってた頃は、当たり判定を四角にして、それぞれの頂点位置で計算してたな……
攻撃判定とあたり判定の重なってる部分の中央がヒット位置になるから……
353 :
348:2009/09/04(金) 00:37:42 ID:hPja4GRM
jFontMakerの使い方について質問した者ですが、壁にぶち当たりました。
全角スプライト(spr_zen20)、半角スプライト(spr_han20)の画像を作って、Drawイベントにコード
{
mbtext_setfont(spr_zen20, spr_han20, 20);
mbtext_draw("描画するテキスト", 16, 320);
}
と書いて、そのコードがあるオブジェクトをルームに置いたら
"Unexpeted error occured when runnig the game"
と出て、ゲームが始まりません。直す方法がさっぱり思いつかないので、教えていただきないでしょうか?
スペックが足りてない時にそのエラーが出たりもするみたい
自分が昔開発してた頃は他の原因でも起こったと記憶があるんだけどどんな時だったかな……
とりあえず、サイズ8とかのフォント画像を作って、それでもならなかったらスペック不足かも
後は……5.3Aなら画像をビデオメモリに置かないようにするとか
ウィンドウが最初に表示されるより前にエラーが発生すると
Unexpected errorだとか、無関係なイベントでエラーが報告されることが多い。
とりあえず最初のルームをダミーにして、2番目のルームに置いたら
まともなエラーメッセージが出るかもしれんのでよろしく。
あー、逆だ
小さい画像で試して、それで起動した場合はスペック不足だ
357 :
348:2009/09/04(金) 10:28:53 ID:hPja4GRM
>>354〜
>>356 助言感謝です。画像サイズを小さくしたら動きました!
が、表示したら全角文字が文字化け状態になってしまいました。
jFontMaker(ver 2.2.1)では、MSP明朝、サイズ10ピクセルの設定で画像を生成しています。
言い忘れてましたが、GMは7.0を使っています。
3度、ご教授お願いします。
mbtext_setfont()の設定は、ちゃんと画像サイズに合わせるように変えた?
うみゅーん、文字がずれて表示されるんでなく、ぐちゃぐちゃな模様が表示されたりするなら、
スペック不足だね……
オンボードの頃、GM含めいろんなゲームでなりましたし。
大きい画像分のメモリがしっかり確保できてないから起こるんだと思う。
360 :
名前は開発中のものです。:2009/09/04(金) 20:48:09 ID:Chdo0brv
どのくらいのスペックでバグが発生するのかしりたい
配分したとき低スペックのプレイヤーから問い合わせがきそうだから
361 :
348:2009/09/04(金) 23:38:56 ID:hPja4GRM
>358
画像を生成するときにフォントサイズを10にして、コードには
mbtext_setfont(spr_zen20, spr_han20, 10)
と書いたんですが…ひょっとして違うのでしょうか?
>359
(出力させたい文章)描画するテキスト → (実際の出力)〜∵・・‘′々‘
と、このように文字化けするんです。フォントサイズとmbtext_setfont()の設定は
ちゃんと合わせたつもりなんですが・・・
>360
ノートPCで、こんなスペックです。
CPU: Core2Duo T7500 2.2GHz
メモリ:2ギガ
グラボ:GeForce8400m G 256MB
OS:Windows XP
スプライトをstrip登録するときに失敗しているかもしれない。
jFontmakerで、サイズが10ピクセルの全角出力指定しているときに、
右上のところに出る ”[Create from Strip]の設定”で
再度strip登録しなおしてみて。。。
363 :
348:2009/09/05(土) 08:36:25 ID:V5A76hW6
>>362 ああ!jFontMakerで作成した画像を[Create from Strip]から読み込ませたら表示できました!
今、気づいたんですが全角は絶対このやり方で取り込まないといけないんですね。
頂いた説明を勘違いして、全角画像はGM6以降はLoad spriteで読み込ませるだけだと思い込んでました。
お恥ずかしい…。
どうもみなさん、ご迷惑おかけしました!そして、ありがとうございました!
>>361 それはスペックの問題じゃなくね?
デュアルコアで、メモリ2Gも積んでれば十二分すぎるだろ
文字画像の容量なんて20pxで300KBくらいだぞ
俺はすでにネットで公開してるけど、動作が重いって言ってるプレイヤーはいるけど
文字に関しては特になにも言ってこない
って、既に解決済みだったか
すいません、かなり初歩的な質問なんですが、複数のパーツを同時に動かしたいのですが、二次元配列の使い方がわからないんです…。
for (i=0;i=5;i+=1)
{for (ii=0;ii=5;ii+=1){pt[i,ii]=0}}
で初期化ってできてますか?
i=0:ii=0→胴体部、ii=1→頭部、ii=2→腰部
i=1:ii=0→右腕肩部、ii=1→右腕上腕部、ii=2→右腕下腕部
.
.
.
という風にインスタンスを登録して、ステップイベント中に
pt[0,0].x=x
pt[0,0].y=y //胴体パーツの位置
for(i=1;i=5;i+=1)
{
pt[i,0].x=pt[0,0].x+lengthdir(L,A+pt[0,0].Angle) //胴体パーツと四肢の接合
pt[i,0].y=...
}
for (i=0;i=5;i+=1)
{for (ii=1;ii=5;ii+=1)
{
pt[i,ii].x=pt[i,ii-1].x+lengthdir(L,A+pt[ii-1].Angle)
pt[i,ii].y=...
}
と計算して各パーツを動かせるかな、と思ったのですが何一つ動きません…。
どこらへんから間違っているのでしょうか?長くなってすいません…。
まずforの使い方が違う
× for (i = 0; i = 5; i += 1)
○ for (i = 0; i < 5; i += 1)
インスタンスの登録ってのもちゃんと
pt[0, 0] = instance_create(...) みたいにやってる?
ありがとうございます!さっそく直してみます。親オブジェクトのクリエイトイベントで
pt[0,0]=instance_create(x,y,prt)
pt[0,1]=instance_create(x,y-10,prt)
pt[0,1].L=point_distance(x,y,pt[0,0].x,pt[0,0].y);
pt[0,1].A=point_direction(x,y,pt[0,0].x,pt[0,0].y);
という風にやっています(Angleはprtから返ってくるようになっています)
ちょっと動くかどうか確かめてみますね…
やった!動きました!ありがとうございます!(連投すいません)
mbtext_drawって結構CPU負荷高そうだね
アイテム一覧など、画面中に文字が表示されるような場合は素直に一つ一つスプライト作った方がいいかな
>>370 それがいいと思う
数百文字くらいなら平気だけど、半角文字を1000字超えるとやばいかも……
自分は1000字描画して30fpsまで下がった経験アリ。
やっぱりそうか
アイテムの名前のスプライトをGIFで作ってみたけど、一つあたりの容量は300バイト
仮に1000個のアイテム名スプライトをグローバル変数に格納したとしても
300KBだから余裕そうだ
surface使えるなら、surfaceに描画→画面に表示ができるので、
毎フレーム mbtext_draw() を呼ばなくて済む。
マイクって使えるのかな?
DSでマイクに息を吹き掛けると葉っぱを飛ばせるとかそういうのがあるけどそれもどきみたいな
標準ならそれは無理。
マイクからの音声を解析するプラグインを自作すれば可能かもしれない。
messy-mindのサンプルがわけわからん
横スクロールアクションゲームの雛形とかどこかに落ちてないでしょうか
キー操作と当たり判定が安定しなくて困ってます
>>377 公式サイトのTutorial: Creating a Scrolling Shooterを
横にすりゃいい話
379 :
名前は開発中のものです。:2009/09/07(月) 14:17:04 ID:ADkvlysT
教えて欲しいのなら、それ相応の態度ってもんがある
お願いってなにをどう?
>>377 またお前か、いいかげん努力することを覚えろ
>>382 たぶんそれは俺と勘違いしてるんじゃないかな。
GMのサンプルや解説ばかり見るよりも、
アクションゲームを題材にやってるプログラミング講座の方が役にたったりするなー
GMでも同等の設定は出来るんだし。
フライト型のシューティングから戦車型のシューティングを作り始めたのですが
フライト型のシューティングの場合ずっと上向いたまま方向キーで移動って
感じだと思うんですが、斜め上押したら機体が斜め上を向いて弾が斜め上に発射されるように
右に押したら右向き、左押したら左向き、下押したら下向きになり360度
弾を発射できるようにしたいのですがどのようにすればよろしいでしょうか?
ご教授お願いします
FMOD使ってる奴誰かいる?
mp3のループ位置指定したいならあれがおすすめ。
初めて使ったときには感動したよ。
>385
keyboard_check_pressed()で押してるキーの方向を調べる
まずはそれからだ
縦スクロールシューティングじゃなくて全方位スクロールシューティングってことかな
>>386 移動グラフィックも横に移動する時は横移動専用グラに、下に移動する時は
正面とかには出来てるんですよ、弾が8方向に発射できないんです。
後右に移動中、右を押した時に止まったら右向いたまま静止したグラフィック
にしたいんですがドラクエみたいに止まっててもキャラが行進してるみたいに
アニメーションが動き続けてて不自然だったり・・・・
>>387 はい、ツインビータイプのシューティングゲームなら作れるようになったので次のステップで
全方位移動できるものを手がけて見てるのですが方向キーを押して機体が向いている方向に弾を撃つと
いうのが出来なくて困ってます・・・
機体の向きを記録しておく変数を用意すればいいんじゃないかな
斜めについては↑と→が同時に押されている、という判定をする必要があったりするね
で、キーを押してないときはimage_speedを0にすればアニメーションは止まる
またアニメーションさせる場合はimage_speedを1に。
>>389 変数ですか・・・・ちょっとこの辺は似たようなサンプルも手持ちが無くて
参考になるものがあればよいのですが・・・、斜めの移動は1945のサンプル
見て大体わかったのですが・・・
アニメーション停止については解決しました、ありがとうございます
戦車オブジェクトのCreateイベントに「houi(任意)」を作って、
戦車の向きが変わったらhouiが0〜7に変わる(8方向の場合)
弾を出すとき、数字によって弾の角度が変わる
ってのはどうかしらん?
素人考えでスマソ
>>391 あ、そういう風にもできるのですか。
ありがとうございます、ちょっと試してみます
「あるオブジェクトと接触していない」っていうのを判定する場合はGMLを使わないと無理?
>>393 無理ではないけど、マニュアルのGMLのページを読む必要はある
If there is an object at a positionを使えばいいだけだったか
コントロールタブのクエスチョンのアクションは殆ど使ってなかったから見落としてた
あーそういえばそういうのあったかなぁ……
ゴメン、また適当なこと言ってしまったようだ……
スプライトの変更についてなのですが
@stepイベントの最後で sprite_index = ***; と書く
Adrawイベントの最後で draw_sprite(***, -1, x, y); と書く
これって、処理的な速さに差があったりします? あるとしたらどっちが速いのでしょうか
Pro版ってインストしたPCじゃないと使えないんだっけ?
誰か引越し経験のある人とかいる?
>>397 関数呼び出しにオーバヘッドがある、Viewが複数あるとその数だけ呼び出される、
スプライトが画面外でも呼び出される(標準の描画もそこまで最適化されてるか知らんけど)
といったわけで、少くとも(2)が速くなる要素はない。
image_angleとかalphaとかもdraw_spriteだと反映されないしね(_exの方使わないといけない)
あと、スプライトの変更はEnd stepでやった方が都合がいいケースが多いと思うよ。
質問です。
GM8で作ったexeかgmkはここにうpしていいんですか?
and
ここってsage進行ですか?
英語はまったく苦手で・・・
お願いします。
>>399 回答ありがとうございます。drawイベントは別のobjectにやらせたほうが良さげですね。
実はBegin StepとEnd Stepは使ったことなかったり…
>>400 日記帳的な意図でなければいいんじゃないでしょうか。
sage進行という決まりはありませんが、sageておくのが無難だと思われます。
シューティングとかで自機がルーム外に出ないようにするのってどうするのがいいかな
自機がルーム外に出たらルーム内に戻すって方法だとルーム際でガクガクするし
ルーム内でのみ移動可能にした場合は、移動速度とルームの大きさの兼ね合いでルームからはみ出たりするし
ルームの上下左右に透明のsolidオブジェクトを置いて
それぞれにMove to Contactアクションを使えばガクガクせずに止められるけど
これではちょっとなあ
ルーム際でhspeed(vspeed)を0にしたらいいんでないの
それだと一定の位置で止まらないんですよねぇ
ルーム外に出ないは出ないですが
はみ出る動作を感知したら位置を端に指定じゃだめなのか
>>405 ステップイベントで自機のyが0以下になったらyを0にするって感じでしょうか
移動キーを押してる間ははみ出てるんですよね
移動キーを離した時に指定した位置に戻るからガクガクするっていう
計算ミスってるか処理の順番が不味いんじゃないかなあ
>>403 や
>>405 のような方法で大抵何とかなるよ
大まかな流れとして
1キー入力
2自機座標変更
3衝突判定(ルームの端)
4座標補正
5描画
となるからガクガクにはならないような
うーむ 問題無いはずなんだが
キー入力とステップのスクリプトを書いてくれたら原因分かるかもしれん
すいません、ガクガクするって言うのはちょっと違っていたかも
ピョコピョコするって言う方が合ってるかな(笑)
キーボードイベントにvspeed(奇数)(ルームサイズは偶数)
ステップイベントに
途中送信しちゃいました
書き直してる間にStepじゃなくEnd stepでやってみたらうまくいったようです
試行錯誤してる時にBegin stepに変数でyの値を取らせて
end stepで変数が1未満になった場合yを0にするなんてのをやっていて
これだと文字通りガクガクになっていたのでEnd stepでは駄目なものと思い込んでいました
余計な事をせずEnd step単体でやっていればよかったのですね
また問題が出てきたら質問させてください
>>406 うまくいきました、どうもありがとうございます
日本語開発環境の最新版どれ?
そんなものはない
フォントによって、フォントを入れても
反映されたりされなかったりするのは、
何か法則というか原因があるんだろうか
>>415 フォント指定するときに文字セットが決め打ちになってるっぽい
だから日本語環境だと日本語の含まれてるフォントしか選べないっぽ
>>417 なるほどなぁ・・どうりで欧文フォントが全滅なわけだ
回答ありがとうございました。
何がどうわからないのか書いてもらわないと何とも言えないな
もう少し具体的な質問をしてくれ
>>420 このサンプルのスクリプトを
今作っているゲームに
移植したいのですが
どうすればいいでしょうか
こういうこと言い出すやつって、本質的にクレクレ君と同じなんだよな…。
よく分からんが、スクリプトファイルを取り込みたいのか?
だったら上のメニューのscriptsからInport suriptsで読み込め
違ってたら知らん
gamemaker製のゲームは、外部ツール(スペシャルねこまんま等)でチート不可能?
HP無限とかやろうとしても値の検索で全く引っ掛からない。何らかの方法で成功した人います?
俺もやったことあるけど、全然引っかからんよね。
内部エンジンでデータをうまく隠蔽しているのかもしれない。
誰かセーブデータ自分で作ってる奴いる?
セーブするときは保存したいインスタンスの情報や変数をリストかマップに放り込んでテキストに書き出し、
ロードするときはそのテキストを読み込んで、読み込んだ変数の値に応じてインスタンスを生成、って感じかな
バージョンの違うゲームにセーブデータを引継ぎたいとか考えたとき、
game_save()でセーブした状態だと具合が悪いんだよな。
全く同じ質問が前あったな
instance_nearestで複数ある同一オブジェクトで
自分以外のインスタンスを返すようにするには
どうすればいいでしょうか?
例えばobject0でinstance_nearest(x,y,object0)
とすると、selfとおなじidが返ってきます。
>>428 自分自身を一時的にdeactivateするか、
うんと遠くまでどかしてからinstance_nearestを使う方法がある。
(後者だとインスタンスが1つしかない場合に穴がありそうだけど
距離が10000くらい離れてるとなぜか認識されなくなるらしい)
当然、instance_nearestした後で元に戻さなくちゃいけない。
ちなみに海外フォーラムでもよくあがる話題で、
instance_nth_nearestってスクリプトが作られてたりするね。
image_indexの画像なのですが
0以上1未満が0のスプライト
1以上2未満が1のスプライト
2以上3未満が2のスプライト
……
という風になっていくのでしょうか?
>>431 Drawイベントに何も書かずに自動描画させる場合はその通り
(image_indexの説明にも切り捨てと書いてある)
draw_spriteとかで描画する時は四捨五入なので気をつけれ
>>432 失礼
マニュアル完全に見落としてました
ヘルスバーって縦には出来ないのか…
色変化着きで自作するとしたらどんな感じ?
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を減らす。
アクションの方しか見ていなかった…
朝早くからありがとうございまうす
GM8はいつごろでるのかなー
7をそのままか、多少の作業で移行できるなら8にするんだが・・・
あと6の日本語ヘルプがそのまま使えるならいいけど
誰か新しいヘルプ、変更部分だけでも翻訳してくれないかな
そうそうw
てゅーかGM8ってどんな機能?
日本語化は出来れば欲しいなww
これか?
>>139 アルファチャンネル完全対応はありがたいな
いまでも出来ないことはないけど、完全対応してくれれば作業が結構らくになる。
現状だと、ちゃんとやらないとスプライトの周りに白いのが残っちゃうんだよね
440 :
名前は開発中のものです。:2009/09/23(水) 15:13:37 ID:stBFqZnk
エフェクトソフト試したことあるけど、アルファ使えないからしょぼいのしか作れなかったことあるなー
手書きと変わらないようなの
オブジェクトを回転させることってできますか?
余裕でできる
>>442 あらかじめ回転させたスプライトを一個一個作らないとやっぱりだめですか?
image_angle この値に応じて、スプライトが回転します。値は左回りの度(0-360)で指定し、0 で通常です。 この機能は、レジストバージョンのみ有効です。
うむ、draw_sprite_extにデータ構造、sprite_add_alphaだけでもレジスト買う価値はあるな。
ちょっと凝ったことしようと思ったらLiteじゃきつい
ホ!RCはセカンドβのデータ読み込めるじゃないの!
447 :
名前は開発中のものです。:2009/09/25(金) 17:58:26 ID:a1fJdlo4
ところで8のベータやってみた人っている?
7までで使えて8で使えなくなってた関数とか結構ある?
>>444 ありがとうございます。……レジストバージョン買おうかなぁ。
これってコンパイルしたゲームでも、起動時にエラーチェックとかしてるんですかね?
ゲームが複雑になると起動が遅くなるような気がするんですが
もちろんPrelordは全部はずしてます
オブジェクトAにオブジェクトBとの接触イベントを設定すると
オブジェクトAがオブジェクトBの子オブジェクトに接触しても作動するんだね
これは便利でもあるけど不便でもあるな
前スレにあったのが、
敵
├亀
│├緑亀
│└赤亀
└ブロス
├ハンマー
└ブーメラン
みたいな感じの構造だった。
敵、亀、ブロスはゲーム内では使わないダミーで子オブジェクトを纏めるためのもの。
共通の物は親オブジェクトに持たせて、
子オブジェクト別に違うものは子オブジェクト内で個別に設定する。
不便に感じるのは構造のデザインがよくないからじゃないかな?
親と子の使い分けをはっきりさせるといいよ。
基本的にparent objectはゲーム内では登場させないなー
くだらない質問で申し訳ないが
change instance (赤パックマン)をGMLでやろうとするとどう書くんだろう?
ちなみに自分は未レジストGM7です
赤パックマンのアイコンはインスタンスの変更じゃなくて、スプライトの変更だと思うよ。
スプライトの変更は、そういう関数があるわけではなく、sprite_index を直接変更する。
変数をいじるだけでも結構いろいろ出来ることがあるから、調べてみるといいよ。
横の壁とぶつかった時だけhspeedを0にしたいのですが
壁とのコリジョンイベントで
if place_meeting(x-1,y,block) == true{hspeed = 0;}
これではダメなのでしょうか?
while (place_meeting(x-1,y,block) == true){x +=1}
で反対側への押し戻しはできているのですが、なぜかhspeedだけは0になりません。
先に while の方が実行されるように書いてあると予想
それはないですねぇ
while (place_meeting(x-1,y,block) == true)
{
hspeed = 0;
x +=1;
}
ためしに↑のようにしてみましたけど、それでもダメでした
それなら他の場所で速度関係をいじっているんじゃないかい
その式でxの代入だけが実行されるというのはありえない
壁がsolidだった場合、collisionイベント実行前に前の位置に戻されるから
abs(hspeed)>1 だったら、壁と自分との間は1以上空いていることになる。
だからplace_meeting(x-1)ではヒットしないと予想。
place_meeting(x+/-hspeed)にしてみたらどうよ?
whileの押し戻しもたぶん成功してないと思うな(単にxpreviousに戻されてるだけ)
厳密にやるなら x = other.bbox_right + 1 + sprite_xoffset とかの方が良さそう
よく考えたら place_meeting(x-abs(hspeed)-1) とかにしないとダメだな
ついでに補足。仮にblockって名前のスプライトとかスクリプトがあった場合
そっちのインデックスが使われて、違うオブジェクトをチェックしてる可能性もある。
GML使うんだったら、obj_block とか spr_block みたいにして
名前がかぶらないように設定しないとトラブルの元になるよ。
>>460さんの通りにしたら解決しました。ありがとうございます。
「プレイヤーだけが通れない壁」と「全キャラ共通の壁」というのを考えていたのですが
プレイヤーだけが通れない壁はsolidをはずして、普通の壁はx-abs(hspeed)にすることで解決しました。
image_blendのように「色を混ぜる」のではなく、なにか一色で「塗りつぶす」ことは出来ないのでしょうか?
敵がダメージを受けた時、一時的に赤くさせたいのですが、元が黒っぽい色のため
赤を混ぜても黒にしかなりません。
真赤にぬったスプライトを別に用意するしかないんじゃない?
ステージエディット機能を持ったSTGをつくろうとしているんですが、
ステージを配列で表現してexecute_fileでステージ開始時に読み込んで、
敵を記述したタイミングで生成させたいのですが、
適切なコードがうまく思いつきません。
配列以外で何とかする?処理方法でなんとかなる?
全部走査して現タイムラインと発生タイミングが一致すれば生成
--------------------------------------------------------------
for(敵番号=0;敵番号<敵数;敵番号++){
if(stage[敵番号,敵発生タイミング]==timeline){
create(stage[敵番号,敵各種ステータス]);
}
}
timeline++
--------------------------------------------------------------
→1ステージにおける敵数が増えると1ステップ内でどんどん処理が重くなる
指定したグリッド番号になったら生成
--------------------------------------------------------------
create(stage[グリッド番号,敵各種ステータス]);
グリッド番号++
--------------------------------------------------------------
→ステージが長くなるとどんどん配列が増える&発生しない間の配列は無駄領域
→1グリッド1体しか出ない
現在は全部走査して現タイムラインと発生タイミングが一致すれば生成という方法で
行っていますが、敵の数が300をこえたあたりからゲーム速度が落ち始めます
(step内でforループしているので当然といえば当然ですが)
>>465 そもそも画面外の敵まで処理するのが無駄なわけで。
最初に全インスタンスを作成し、
画面外のインスタンスを非アクティブに、
画面内のインスタンスをアクティブにする。
領域の微調整はお好みで。
467 :
465:2009/10/09(金) 02:13:21 ID:m1aFnmHw
あぁ・・・なるほど、確かに言われてみれば
いちいちリアルタイムに生成する理由がなかった・・
回答ありがとうございました。
製作頑張ろうと思います。
>>464 やっぱりそれしかないですか
ちょっと画像枚数が多いので、全部にそれをやるのはちょっと厳しい……
これは諦めざるを得ませんかね
日本語サイトが復活しないのでbGMとjfontmakerの使い方を教えて欲しいのですが
前上げてあったの貰わなかったのかよ・・・>フォント
>>463 d3d_set_fog(true, c_red, 1, 0);
draw_sprite(...);
d3d_set_fog(false, c_white, 0, 0);
という手法があるけど、ビデオカードによっては動かないものもあるとか
bGMは俺も教えてほしいな
保存してくれてる人が居ればだけど
Preload textureってあくまでビデオメモリに読み込ませるかどうかで
これにチェックがついてようがついてまいが、GMの中に入ってるファイルはすべてメインメモリに読み込まれてしまうんですね。
メモリに落としたくない場合は、sprite_addなどで、外部から取り込ませるしかないのでしょうか?
あと実験で、1000*1000の1.7KBのgif画像を10枚ほどいれてみたのですが
そうしたらメモリ使用量が一気に80MBくらい増えました。
もちろんPreload textureは未チェック、ゲーム中は使用せず、ただGMの中に入れただけです。
元の画像がgifだろうがpngだろうがbmpだろうが関係なく、ただ画像の縦横のサイズだけで
使用するメモリ量が決まってしまうのでしょうか?
追記
bmpの画像を10枚追加してみたり、256色フルに使ったgifを10枚追加してみたり実験しましたが
白一色1000*1000のgif画像を10枚追加した場合と、メモリ使用量はまったく変わりませんでした
GMは減色や画像の軽量化などまったく無意味で、ただ画像の縦横のサイズのみに依存するのでしょうか
検証乙
俺は仕組とかわからんが、本当ならイベント絵とか入れにくくなるなぁ
元の画像形式が何であろうと、内部には独自形式で格納されるからね。
簡単なランレングス圧縮はしていると聞いたから、白一色と複雑な画像では
gmファイルやexeのサイズに差が出るかもしれない。
でも、実行時にはメモリ上にベタのビットマップで展開されるはずだから
結局メモリ使用量は変わらんと思う。
んー、やっぱりそうですか
チマチマと減色しても、メモリ的にはまったく意味がないということですね。
容量的には数十KB軽量化させたところで大した違いはないし
気にせずPNGでも使っちゃった方いいのかな
GM8ではPNGが完全サポートされるそうだけど、せめてBMPではなくPNGにしてくれれば
かなり軽量化されると思うんだけどなー
そこらへん早く8の情報が欲しい
ああ、PNGはメモリ上ではBMPと変わらないから意味ないのか・・・
激しく乙
デフォでogg対応せんかのぉ…(´・ω・)
>>473 検証乙。
俺は数百枚の画像ファイル使ってるから、スプライト系は殆ど外部で管理してる。
スプライトのロードと破棄でもメモリ食うけど、大きい画像一枚GMに入れることに比べれば誤差の範囲だ。
それで思ったけど、100程度のインスタンスに200程度の変数を定義すると
理論上は100*200*8 = 160kのメモリを使うのか。
今まではこの変数全部txtファイルに書き込んでおいて、
特定のインスタンスが必要なときのみそれを読み込んでたけど
これってもしやかなり無駄だよな…。
画像ファイル一枚節約した方が全然効率的そうだ。
配列がどの程度容量食うかはテストしてないけど。
482 :
名前は開発中のものです。:2009/10/13(火) 12:29:36 ID:cOJqt8LB
どうせGIFだからたいしたことないだろと思って、スプライトがんがん追加してきたんだが、これが原因でメモリバカ食いしてたんだな
俺もspriteaddで画像読み込みしないとダメか
ところで、スプライトのロードと破棄でメモリ食うってどういうこと?
スプライトを破棄してもメモリのなにか残るの?
(スプライトを使った)オブジェクトの破棄でメモリは開放される
と思ってたが違うのか
メモリ解放されても、普通は断片化してるから、ガベージコレクションしないとダメで、
ゲームだと実行中にガベージコレクション発生すると、そのとき速度が落ちるから、
普通は自動的にガベージコレクションされない仕様なのが多い。
GameMakerがどういう仕様かは知らないけどね。
実験で仮にこんなの実行してみたけど、特にメモリは増えなかったよ
for (i = 0;i <=1000; i+=1)
{
test[i] = sprite_add(...);
sprite_delete(test[i]);
}
>>483 sprite_delete();を使わない限り、スプライトのメモリは開放されないよ
sprite_addでローカル変数にスプライトを入れてたなら別かもしれないけど
>>486 てことは
sprite_addじゃなくエディット画面でオブジェクト作ってるヘタレな俺は
sprite_deleteをちゃんと実行しないといかんわけか
でもGML(sprite_add)を使う人もsprite_delete使うよね?あれ?
すまん、混乱してきたorz
最初からGameMakerのファイルにスプライトを入れてる場合は
起動時にすべての画像がメモリにロードされて、終了するまで開放されることはない。
よく言われるPreloadはあくまでビデオメモリに落とすかどうかで
これにチェックが入っていようがいまいが、メインメモリにはすべて落とされる
使わないスプライトをメモリに落としたくない場合は、exeの外に画像ファイルを用意しておき
必要なたびにsprite_addなどで読み込ませるしかないみたいだ
そして、もちろん必要なくなったらsprite_deleteでスプライトを削除してやることを忘れずに
これらの一連の作業は、ある程度GMLを理解してないとキツイね。
ただ、小規模なゲームならば、メモリはそんな気にしないでガンガンスプライトを作っちゃっていいと思う。
GMLを使わないなら、そんな大規模なゲームじゃないでしょ。
あ、もちろん最初から入れてあるスプライトも、sprite_deleteで消すことは可能だよ
ただ、また使う際にはsprite_addで入れ直してあげないといけないけど
>>488 なるほど、何となく分かったかも
丁寧な説明ありがとです
頑張ってGML勉強しようかのぉ
ちょっと言葉が足りなかったようですまん。
スプライトのロードと破棄でメモリを食うってのは、sprite_add(...)で外部からメモリ内にスプライトを読み込んだ後、
数ステップ後にsprite_delete(...)でそのスプライトを破棄すると
スプライトを読み込む前よりメモリ使用量が若干(16kBほど?)増える現象のことを指してた。
上昇量はテストする度に異なったりするから、環境依存なのかもしれないけど。
詳しい仕組みは知らないけど、
>>485のテストは1ステップ内で行ってるから状況が少し異なるのかも?
検証してみる価値はあるか。
492 :
名前は開発中のものです。:2009/10/14(水) 07:48:51 ID:YxYD41xX
スプライトそのものは消えても、衝突判定などの設定情報が残ってるとかか?
何か皆詳しいなぁ
てか皆の話色々平均すると、台詞表示するときって
「全台詞スプライト用意」より
「a〜z、あ(ア)〜ん(ン)、あと諸々分の小さなオブジェクト沢山作って台詞作り」のがいいのかな
(台詞量にもよると思うが)
前日本語ファイルで「オブジェクトは少ないのがいい」だけ鵜呑みに
してたからそうしようとは思わんかったのよね
>>491 メモリを解放しても、そのメモリがすぐシステムに返却されるとは限らない
(次にメモリが必要になったとき再利用するためにとっておくから)
add→delete→add→delete…と繰り返しても使用量がどんどん増えたりせず
一定範囲でとどまるようなら、ちゃんと解放されていると思っていいんじゃないかな
>>493 スプライトを文字数分用意するにしても、オブジェクトは一個でいいだろ。
Drawイベントでスプライト組み合わせて文字列描画させればいい。
もちろんスプライト一個描画するよりは遅くなるし、
文字数分のスプライト用意する分手間がかかるから
(パフォーマンス+開発効率)とメモリ消費のどっちをとるかのトレードオフになるな。
>>494 文字列組み合わせるつもりではいたけど、
それが沢山のオブジェクトである必要はないのか
gifとか忘れてた俺アホスwww
そうだよね、エディット画面でできることだよねorz >一個
確かに台詞自体を用意する方が早いねぇ、楽だし
まぁ自己満クオリティな間は効率をとるのがいいかなぁ
とりあえず完成させるのが大事だし
間違えた。俺が言いたかったのは
「台詞一個」と「台詞内の文字数分のオブジェクト(がroomに存在)」の比較だ
ま、でも後者は管理・労力が大変だし、結局前者が無難か・・・
たしかになんか不安定な気がするね>sprite_delete
試してみたけど、追加→削除前に比べてメモリが増えたと思ったら、今度は減ったりした
そして同じ動作を何回も繰り返していくうちにメモリの変動が安定してくる
俺も試してみたけど、確かにメモリが一向に上昇し続ける傾向はないみたいだからとりあえず大きな問題はないか。
>496
よこしまさんのmbtextを使えば?
台詞を後で推敲することを考えると、stringで台詞を用意してそれをmbtext_drawで描画する方が遥かに楽
台詞ごとにスプライトを用意していると、台詞が増えたときに挫折しそう
ここで少し時間を投資してmbtextの使い方を覚えた方がいいと思う(使い方って言っても簡単だし)
それと、>494の言っていることはgifともエディット画面とも関係ない
一つのスプライトに複数文字を格納することを理解したんだから
別に関係なくはないだろ
500 :
名前は開発中のものです。:2009/10/15(木) 15:40:28 ID:Wyrl5rE9
8はwindows7に対応させてからの発売になるのかなー
GM、6以降のバージョンなら現在のPCでは普通に動くのだろうか……
新しいグラボだと、5.3AはDirectXの機能オフにしないと15フレームしか出ないんだよなー。
Direct3D 11 は、凄まじく面倒になる可能性がある。
ただでさえ今まで固定でやってたブレンディングやアルファテストがシェーダになっているのに
固定機能を廃して全部シェーダになってしまった
効率よく働いてくれることを期待しないほうがいい
むしろ悪化する
音楽をfpsとかに合わせてきっかり流す方法ってないですか?
流したいところで音楽が微妙にずれたり画面が処理落ちしてるのに音楽が平常に流れるせいでずれが発生して困ってます。
処理落ちに合わせて流れている音楽をいじる、ってのはまず無いわな。
そういうわけで、いじる対象を逆転させてみた。
音楽の再生云々をいじるのではなく、
まず音楽を再生させて、
再生開始からの経過時間を利用してゲーム内の動作を処理する。
処理落ちに対応できる方法と考えると、こうしか思いつかなかった。
時間を利用してゲーム内の動作を処理するとは言ったが、別に全てを時間基準にする必要はない。
ただこの方法を使うときは、時間を基準に処理するものとフレームを基準に処理するものとを明確にわけること。
まぁこれは再生時間に合わせて流れるスタッフロール的な物をイメージして考えてみたんで、
複雑なものになると、どこまでできるかはデザイン次第、かな?
ちなみにこの例だと、時間を基準に流れているので、
例え処理落ちしても、ゲームの処理がしばらく止まっても、
再生開始から5秒経過したのなら5秒後の位置、10秒経過したのなら10秒後の位置に動かす、という仕組み。
RC出てるな。
ソースエディタ、draw_txtともに日本語通らないの確認した
(バグトラッカでも今後の非対応明言されてた)
日本語化はできないんだっけか。
昨日このソフトを発見し、こちらでゲーム作りを試みている者です
凄く初歩的な質問で申し訳がないのですが
大まかな動きのつけ方や操作方法はチュートリアルで理解する事はできたのですが
それ以上のものを作ろうとするとそれ以降は自分で虱潰し的にアクションを試すしかないのでしょうか
たとえばexe形式となっているソフト等を参考にしようとしても、開けませんよね
>>336で「公式のPlatformで検索すると参考になるものが〜」とありますが、確かに
このソフトにおける可能性は見出せましたけども、やはりexe形式で挙げられているから中身を見て参考にする事はできませんよね・・・
>>506 まずマニュアルをじっくり一通り読もう!
そして小さい規模でもいいから自力でなにか作ってみること
だんだん出来ることが広がっていくはず。
暇な時にヘルプを眺めながら、色々試していくのが一番だね
急がば回れだ
何かに合わせるのは、普通イベントで判断する。
まあOSや言語、インターフェイスによってはフラグとかも言うが
何かを始めるときは、イベント元にする。
フラグを立てる。でもいい
こうすると、処理が始まってから別の処理が行われることが保証される。
最初の処理が遅れれば、後の処理もそれに合わせて遅れるだけだ。
サウンドと画面を連動させたいならば、
サウンドファイル再生をやめること。
昔ながらのサウンドプログラミングなら
メインスレッドとサウンドスレッドは平行して処理されるから
どちらかが遅れるともう片方も遅れる。
サウンドプログラミングは、インタープリタのように逐次発声だからだ
サウンドファイルだと、最初に読み込んでから鳴らすだけなので
それほどの負荷でないから遅れる・止まるってのは余程の負荷がかからないと起こらない。
昔は、サウンド構築のためだけのプログラマ、サウンドプログラマなんて職があったのだ
それと同じことをやればよい。
511 :
506:2009/10/21(水) 22:53:42 ID:7kid7kXI
レスありがとうございます
一通りヘルプを見てみます
一番真っ当なやり方は
・負荷を減らす
・動作必須環境を上げる
これくらいだろう
負荷を減らすのは以外に単純
別に走らなくてもいいような変なルーチンが走ってないか
妙に割り込まれてないか
ルーチンが走る順番は正しいか
無駄に複雑なルーチンでないか
これを完璧にこなしてもダメなら最低動作環境を上げるだけ
横スクロールアクションを作っているのだが
プレイヤーをカメラが追っていく設定にして、そのカメラの座標?とか設定してやると
32,32以外でやると地震がおきたかのように画面がガクガクになるんだが
スクリプトとか必要なのか?
悪い 自己解決した
515 :
名前は開発中のものです。:2009/10/22(木) 18:07:09 ID:9bnTpD/d
いつになったら
サイトは復活するのか。
俺もサイト復活してほしい、プログラムとかスクリプトに対してほとんど無知だと壁が多い
今2Dアクション作ってて手探り状態なんだけども
・左の壁にぶつかるとなぜかバウンド?して一歩ほど戻る
・向いてる方向に攻撃ができるようにしたい(現状だと一方方向、X+の方面にしか玉が打てない)
・ニコ動の解説動画みたけど、変数関係の応用方法がわからない
何が何発あたれば敵が死ぬとかのイベントの配置場所(弾のオブジェクトだとか敵のオブジェクトにだとか)がいまいちはっきりしてない
3時間ほど粘ってるんだけどもしかして俺がマニュアル見落としてたりするのかな
このスレ眺めててそういう類の質問を見ないから畏れ多い・・・
>>516 公式で.gmkなりぐぐると幸せになるかも
俺はそれでどうにかしてる
3時間ならよくあること
それを半年続ければこのスレで言われていることは理解できるようになるんじゃないか
ちなみに向いている方向に攻撃をするには、弾を発射するオブジェクトのimage_angleと弾のdirectionを一致させればいい
弾の衝突判定イベントは敵オブジェクトに設定して、衝突ごとに敵オブジェクトのlifeを減らす
んでlife <= 0の時にオブジェクトを破壊、って感じだろう
このあたりは過去ログも参照するといい
向いてる方向に弾が…
ってよく聞くけどそんなに難しいかなぁ〜?
とりあえず俺はExample内ので幸せになった 2Dアクションのやつ
520 :
名前は開発中のものです。:2009/10/23(金) 16:11:44 ID:vXjEA+RQ
最初は、誰もが効率の悪いコードを書く。
if()
if()
if()
for()
のように。
例えるなら、ifの数を減らすのが上級者である。
また、if( Fuckintosh == 0 )とかは論外。
上級者は
if( !(Fuckintosh) && ((FuckOSX >> 3) += FuckMac) << 6 || (FuckMac & FuckJobs) >> 2 )
などというように書く。
激しく読みづらいが。
>>520 そこまで出来るようになったらGameMaker卒業してC++に行ってると思うぞw
C++やってて息抜きでGM使ってる自分が言うのもアレだが
>>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 && ......)と条件が大量にある場合を想定してみれば、
大量の条件を全てチェックするのと、最初の条件を満たさないときに処理をやめるのと、
どちらが効率がいいかがわかるだろう。
勿論、処理よりも行数の効率を重視したいというのなら話は別だが。
まぁ、効率を考えるレベルのプログラマが処理の効率を捨ててまで行数に拘るとは思えないけど。
>>522 やっぱGMって直感的な構成がやり易いな
俺のような初心者にはありがたいことだ
今更だけど、このツール国内じゃあまり普及してないのかな
もしかして国外じゃめっちゃ使われてるとか?
俺の比較してる対象がHSPだからそう思ってるのかもしれないけど
もしかしてHSPに比べると自由度がめっちゃ低いのかな・・・
このツールで作成されたゲームとかアイワナビーザガイとニコニコアクションくらいしかしらない
Gameメーカーのスレッドあったんだw
敵オブジェクトを地面に着かせたいのと、左の壁あたってもはじかれないようにしたいんだがどうすればいいんだ
516と同じ質問かよ
だからサンプルで勉強しろとあれほど…
てか逆に何故バウンドするんだ
バイナリ演算子を理解していないことが俺のレベルの上がらない原因なんだよなorz
今地道に勉強しているが、具体的な例を用いた言い換えがないとなかなか頭に入らない
誰かに
>>520の例をifやforに戻してみて貰えるとすごく嬉しいんだが…
日本の非公式フォーラム復活しないかな・・・・・・・
もしくはニコニコの解説動画の人が生きてていつか続きうpってくれることを願う
しつこいぞ、気長に待つんだ
最近気付いたんだけど、GM6からはexeが圧縮されてるのね
5.3Aとか圧縮すると1/10になったりもするのに、6は再圧縮しても殆どサイズかわらないや
どなたか不思議のダンジョン風ゲームのダンジョン自動生成についてヒントを下さい・・・
移動可マスをランダム配置→上下左右に移動可が無い移動可マスは左右どちらかに移動→(ryとかもう書いてる内に混乱してきた
まあそんなこんなで作ってますがどうしてもマジなランダムダンジョンになってしまい、
トルネコやシレンの様に曲がった道があってその先に部屋があって〜みたいなゲームらしい物になりません
よろしくお願いします
>>524 あとはミックマンXとかナイトメアスフィアなんかが評価高い
両方とも同じ作者だけど
>>532 最初に部屋を配置して、それらをつなげるように道を作れば?
道自体も一見ランダムに見えて数パターンを組み合わせてるだけだと思う。
アクションゲームを作っているのですが
移動アニメーション作成する前は普通に移動しながらの攻撃ができたのですが
移動アニメーションをつけてからだと、移動しながら攻撃ができないどころか
移動してからだとなぜか攻撃のキーがきかなくなります、イベントに問題があるのでしょうか
左は
<Left> Change sprite into (左向き立ちポーズ)
else
ifposition is collision free
start of a block
set the horizontal speed
end of a block
else
start of a block
set the horizontal speed
end of a block
release<Left> change sprite into (左歩き)
Set the horizonal speed
右はこれの逆です
アニメーション発動中は弾が撃てないってのがなんとなく理解できたのですが
それをどうすれば撃てるようになるかなんですよね・・・ちなみに5.3です
538 :
名前は開発中のものです。:2009/10/28(水) 19:24:48 ID:W+fx9TAl
アニメーションをやってる間は他の事を受け付けない
こういうとき、そこらにある売りモンのゲームなら
割り込みで受け付けるから、いついかなるときでもボタンを押したらそのとおりにできる。
もちろん、押しても受け付けられないようにもできる。
ダッシュから一定時間はボタン押しても何も出ない、なんてのはまさにマスキングによる割り込み無視だ
GMが割り込みできるかどうかは知らん
ただDirectInputは、常にボタン押したら割り込みとして受け付けている。
あとはゲームエンジンがそれを無視するかしないかだけだ
>>538 なるほど、仕様な訳ですか・・・
走りながら銃うつゲームあった気がするんだけどなー
541 :
名前は開発中のものです。:2009/10/28(水) 21:54:10 ID:W+fx9TAl
仕様というか、ゲームエンジンが
「このアニメーションはここからここまでだから これを終えるまでは殴るのをやめない!」
などと頑固である場合は
アニメーションを細切れにしてしまえばよいのだ。
それなら、アニメーションの合間合間でボタンの受け付けがなされる。
まあ本来こういうのはゲームプログラミングとしてあってはならないこと。
単純に負荷になるだけだからだ。
だから一番いいのは割り込み
でもできない、そういう機能がないってんならしょうがない。
たいていは割り込みに相当する機能があると思う
組み方にクセがあるにせよ
>>536 攻撃ができないんだから、攻撃部分のスクリプトに問題があるんじゃない?
うpしたらわかるとおも
少なくともアニメ中にイベントがキャンセルされるようなことはない。
そんななったらまともなゲーム作れんわ
上げてる人は釣り・・・?
書き方に問題があるんだろう
例えば全てキーボードイベントで処理すれば問題なく作れるはず
if keyboard_pressed(vk_right)
sprite_index = sprite_left; //左移動用のスプライトに変更
x += 5; //オブジェクトを右に5ピクセル移動
if keyboard_check_pressed(vk_enter)
instance_create(x, y, object); //自機の位置にオブジェクト(弾とか?)を生成
みたいな
GMLで書いたけど、そこは適当に翻訳してくれ
間違えた
keyboard_pressed(vk_right)じゃなくてkeyboard_check(vk_right)だ
そもそも悩むほど複雑な処理でも無い気はする
作ったsurfaceを描画するときに、余計なノイズが入ってしまうのですが、
surface_createした後にsurfaceを一度綺麗にする方法はありますか?
透明色を使用したいので、色で塗りつぶす方法は避けたいです。
バージョンは6.1Aです。
>>Note that the surface will not be cleared.
>>This is the responsibility of the user.
>>(Set it as a target and call the appropriate clear function.)
作ったsurfaceはちゃんと綺麗にしないとダメですよって書いてあると思うんですが、
透明色で塗りつぶす・・・ようなことは出来るのでしょうか・・?
http://gmdev.xrea.jp/st/up/70.png mbtext_draw_test(Text);
length = global.mbtext_textarea_width;
surf = surface_create( length , 16);
surface_set_target(surf);
//draw_rectangle_color(0,0,length,16,c_black,c_black,c_black,c_black,0);
mbtext_draw(Text);
surface_reset_target();
surfaceをdraw_surface()系の描画関数で描画するときには、透過情報は失われてしまう模様ですな。
で、まず思いついた方法。
ニ度手間になるけど、sprite_create_from_surface() を使って、
surfaceに作った画像をスプライト登録し、そのスプライトを描画させるようにするといける。この方法は当然単一色ででsurfaceをクリアしておく。
手前でちょこっと実験してみたら、うまくいった。
ただし、元のフォントスプライトリソースがアンチエイリアス無しで作られている場合だけどね。
この理屈だと、
元のフォントスプライトリソースがアンチエイリアス+透過情報有りで作られてる場合、
surfaceに描画した時点で透過情報は失ってしまうことになる。
元画像のアンチエイリアスの効果を残したかったら、
surface から取り込んだスプライトリソースに対して、
sprite_set_alpha_from_sprite()をうまく使うなりして、
再度透過情報も加えないと綺麗に表示されない。(3,4度手間になることに・・・)
すまない、上でグダグダ書いた者だけど、
draw_clear_alpha() という関数があった。
これは、ターゲットのフィールドを指定した色とアルファ値でクリアするというもの。
>>547のコードで、
mbtext_draw_test(Text);
length = global.mbtext_textarea_width;
surf = surface_create( length , 16);
surface_set_target(surf);
//draw_rectangle_color(0,0,length,16,c_black,c_black,c_black,c_black,0);
// の代わりに ↓を追加
draw_clear_alpha(c_white, 0) // この場合アルファ値は完全透過でクリアするべきなので、色は何でも良いと思う
mbtext_draw(Text);
surface_reset_target();
とするとうまくいく。
透明色で描画する関数あったのか・・・
surfaceとcolor周りの関数だけ見て
そっちを見落としていた様です。
速度の面からもsprite_createは避けたかったので助かりました
日本語ヘルプだけじゃなく6.1のヘルプも読むようにしないとなぁ
回答ありがとうございました
なんだかんだあがいたけどSDLにしちゃったよ
Linuxでも動かせるし
じゃあな手前等
いってら
553 :
名前は開発中のものです。:2009/11/20(金) 20:43:26 ID:WvDp0X0L
非公式情報サイト復活age
長かった…
復活ktkr!!これで勝つる!!
よこしまさん乙
すでにある程度わかってる人はいいけど
今度のGM人口の増加には重要なサイトだらかね
あれだけ文句言ってた奴居たのに
復活しても反応が薄い不思議
元々人口少ないからな
32単位でランダムな数値を作りたいのですが32*random(x)だとどうも32の倍数になってくれません
例えば32、64、96のいずれかを作りたい場合random(3)に32をかければ良い筈ですよね
random(10)の場合は1〜10までのどれか1つの数字になる、という考えはもしかして間違ってるのでしょうか?
是非とも解決法を教えて頂きたいです。よろしくお願いします。
少数を忘れちゃいないかい? modを使って整数にして、それから32を掛ければいい。
ただ、random()から得られる数字は【0 ≦ X < 指定した数字】であることを忘れないこと。
つまり、32、64、96を作りたいのなら、
・random(3) (0以上3未満の少数を含む乱数)
・mod 1 (得た乱数を整数に)
・+1 (0〜2を1〜3に)
・×32 (略)
が必要。
自分はround(random(10))でやってる
日本語サイト復活おめ&よこしまさん超乙!!
日本のGameMakerの普及はこの人の功績が大きいよな。
以前アップされたアルファチャンネル対応mbtextと第二水準mbtextもアップされることを密かに祈ってる
>>560 roundだと0〜0.49までが0、0.50〜1.49までが1…となるので
0と10が他の数字の半分の確率でしか出ないよ。
(それに加えてGMのは>268でも触れてるように特殊な四捨五入だし)
やるならfloor(random())の方がいいね。
563 :
559:2009/11/25(水) 02:55:53 ID:MHhJ/a8G
あー、そうだ。floor()を忘れてた。自分も使ってるのに忘れるとか……orz
mod 1の代わりにfloor()で整数に。
お、復活したのか
おつおつ
>>559 ありがとうございます。
少数も出るのですか・・・納得です
GM8、新しいエディタで日本語が表示できないみたいなんだけど、英語以外は対応しないらしい。
多分、修正は望めそうにない。あんなものが仕様だなんて。
地球にいる人間の約半分が英語を理解しているから問題ないなんて発言も。
頭おかしいんじゃないの。
オフラインのゲームがそこそこ作れるようになってきたのですが
オンラインのゲームも難しいながら作れると聞きました
こんな事を聞いてるうちは作ることは出来ないと思いますが
オンラインについてまとめてあるサイト等をご存知ありませんでしょうか?
ヘルプ
>The Game Maker Language (GML)
>Multiplayer Games
サイトではないが、必要なことは全てここにある。
ポート空けられないからしっかりした動作確認はとれてないけど、
ヘルプだけでネット対戦PONGくらいはすぐつくれたから、
まずはつくってみると良いかもしれない
>>568 ありがとうございます。
確かに難しそうですが思ってたより単純?みたいなので色々試してみます。
>566
マジで?
それじゃ日本語表示するゲームが最悪に作りづらいな
テキストは全部外部ファイルで用意とかも無理じゃないけど、
日本語ゲームを作る敷居が上がるな
どっかライセンス買って日本語版発売してくれるところでねーかなー
うーん・・・8も日本語化が絶望的なのか・・・
「一部の言語が使えないからってわがまま言うんじゃねえ。どの言語も状況は一緒だ」って空気が嫌だな…
国際化を軽く考えてるんだろうな
つーか、今時マルチバイト文字対応できないなんてどこの素人だよって思う。
だからといって、日本語対応してあたりまえ、なめてんじゃねぇ
とふんぞりかえってしまうのも、傲慢だと思わんかね
mbtextという前例だってあるんだし、
自分がmbtextを超えて自力で日本語対応させてやる!
くらいの気概があっても良いんじゃなかろうか、せっかく製作系の板なんだし
「日本語対応当たり前」というか、多言語化(XML使うとか)は視野にいれても良いと思うんだがなぁ
ゲーム上の表示なら対応できるけど、今度のはエディタ内のコードエディタでの話だから、ユーザーの力ではどうしようもない。
あと、外部エディタで対応、という方針もあるけど、
- 外部エディタを呼び出すと、GameMakerウィンドウが最小化されて固定されてしまい、エディタ画面が見れなくなる
- GameMakerとやり取りするコードを記述するテキストファイルの拡張子がtxtで決めうち。
(拡張子で判別してモードを切り替えるエディタが多いので不便)
- エディット中のゲームに特有のリソースネームや定数、エクステンション内の関数の色分け表示が不可能
エディタ内のそれ同等の機能を搭載した外部エディタを作ろうとすると、
GMをメモリハックして情報を得るなりしないといけない。
作成&保守の手間の割りに、旨みが少ないと思う。
つーかゲーム内の日本語表記どころか、コード内のちょっとしたメモ書きとかも出来なるなるやん
開発者も忙しいんだろうけど、
せめて9とか10で対応するとか言ってほしいわ。
だんだん日本語が使えなくなっていくというのは希望がなさすぎる。
Yoyogamesになって、開発体制変わったりしてないのかなぁ。
どうも個人で作ってます感が。
開発に参加させてほしいぐらいだわ。
そういやこのスレって、便利なエクステとかの話にあまりならないよな
ってことで最近ヒットだったDLLを勝手に紹介してみる
GMbinaryfileって奴
ttp://gmc.yoyogames.com/index.php?showtopic=393301 リソースのアーカイブ化をどうやろうか悩んでて、今までTARCとか使ってたんだけど
バイナリで書き出すのが一番直接的で楽だって結論になった。
GMBINInsertFileで外部ファイルをそのままバイナリファイルに追加出来るのが便利だと思う
バイナリって何ぞや? とか最初思ったけど、例が親切だったからすぐに使えるようになった
おすすめ
583 :
名前は開発中のものです。:2009/12/07(月) 17:59:35 ID:NfuD/45W
初心者で大変失礼ですが
まずゲームメーカーの5.3を日本語化できないんですが、やり方を細かく教えていただけませんか?
まずってなんだよ、今からどんどん質問を投げつけるので全部答えてくださいねってか
そもそも日本語パッチの当て方は情報サイトに載ってるだろうが
585 :
名前は開発中のものです。:2009/12/07(月) 23:12:09 ID:pugNj6ph
質問させて下さい。
現在、学校の課題でGM7を使いブロック崩しを作成しています。
ブロックの付近をぐにゃぐにゃ動くようにpathを設定して、
ボールをとんでもない(プレーヤーが予想していない)方向に飛ばしてしまう
敵キャラを作成しました。オブジェクト自体はpathの上をきちんと動いているのですが、
ボールがぶつかると弾き飛ばされずにキャラボール共々スタックしてしまうことがあります。
それ以外にも、ボールが壁に衝突したら跳ね返されるように設定しているはずなのに、
壁を突き抜けてしまうor突き抜ける途中でスタックしてしまうといった事象も発生しています。
調べていると、動くもの同士が衝突するとスタックするのはよくあることのようですが、
これは何が原因で、どうやって対処すればよいのでしょうか?
なお、GMLの使用は禁止されています・・・。
UACとかでは?わからんけど
何に困ったか書いた方が答えやすいよ
分かりづらくてごめんなさい。
ルームの中央付近にブロックがまとめて配置されていて、
その周囲をpathで囲んで、それに沿ってパックマンの様なキャラクターが動くようにしました。
また、偽パックマンにはボールが衝突したら、
ボールをユーザーの意図しない方向に打ち返す動作を入れています。
それぞれの動作についても、ボールがブロックにぶつかると消えて、壁に当ると跳ね返り、
偽パックマンがpathに沿って動いていることなどを確認しました。
(単体で見ていくと正常に動作しているように見えます)
ただ、ボールが偽パックマンに衝突した時に、
ボールと偽パックマンが動かなくなります。
そこに別の偽パックマンが衝突すると、ボールが開放され元通りになるときもあれば、
2個目の偽パックマンもそこで動かなくなってしまうときもあります。
また、壁の近くでボールを打ち返した場合、ボールには壁にぶつかったらバウンドするように
設定しているにも関わらず、そのまま壁にめり込んでしまいます。
当初はオブジェクト形状の問題を疑い、いろいろな形に変えましたが改善されず、
速度が速すぎるのかと思い速度を遅くしましたが、ゲームにならないような速度(4とか)でも、
同様の事象が発生しました。
gravityの設定がおかしくしているのかと思い、gravityをカットしても状況は変わりませんでした。
ただ、これらの問題が常に発生しているわけではなく、最初はきちんと動いていたのに、
途中でピタッと止まってしまったりして、一体どこに原因があるのか分からず、
それらしき箇所を順番にいじっては様子を見てといった具合です。
他にどのような原因が考えられますでしょうか?
ご教示願います。
衝突は複雑なんだよね。
動くオブジェクトにsolidにチェック入れてたら、はずしてみては。
HPバーが常に左上に表示される2Dアクションを作ってるんですが、
HPバーのオブジェクトの、stepイベント内のJump to Positionで、
「x : view_xview[0]+16
y : view_yview[0]+128」とすると、
動くんですが(view[0]が追う自キャラの動きに添う)、
挙動がカクカクになってしまいます。(x座標が+0になったり+16になったり)
なんとか滑らかに動かないものでしょうか?
もしstepイベントを使用せず、viewとかbackgroundに配置(?)で済む方法があるなら
そのあたりを教えてもらえないでしょうか。
>>589 そういえばかなり前にもこの話題が出てたなぁ。(調べたらpart2の
>>861だった)
それは同ステップ内でのステップイベントのときとドローイベントのときでview_xview[0]等の値が違うから、だと思う。
自動追従させていた場合では、viewの位置が更新されるタイミングはドローイベントに入る直前になる、とのこと。
(※オブジェクトで明示的にviewへ命令を与えていた場合では、インスタンスの生成順によっては、これと同じことが起こりうる)
なので、Jump to Positionで移動させるのを、
ステップイベントではなくドローイベントで設定しよう。
既出だったんですね・・・すみませんorz
ドローイベントに変えたところ、ちゃんと表示されました!
本当にありがとうございました。
「画像表示のためのDarw Spriteで、xy座標を入力しているのに、
Jump to Positionでも座標を入れないと動いてくれない。」
という謎を理解できませんでしたが、とりあえず動いてくれて助かりました。
お世話になりましたm(__)m
日本語さえ簡単に扱えればMMF2なんて気にせずにいられるのに
MMF2触ってみたけど、この手のツールを初めて触ったのがGameMakerだったせいか、
小回りが聞きにくいというか、思ったことをストレートに表現しづらく感じた。
仕様に慣れればいいのかもしれないけど。
あと、変数の自由さにも欠けるような・・・?
日本語対応はともかくゲーム製作におけるツールの設計はどっちがいいんだろうね。
やっぱ言語を使えた方いいなー
GUIだと命令文が長くなるとわけが分からなくなる
俺はほとんど全部の動作をスクリプトで管理してるから、GUIで作るってのはもう考えられないな…
オブジェクトのstepとかdrawイベントとかに適当なスクリプトを入れておいて、それを外で管理する感じ
こうするとコンパイルする前にcheck all scriptsとか出来るから便利な気がする
大体作り方覚えた後はそんな感じになるよな
GUIは入門にはよかった
スクリプトも、どっかのフォルダに入れとけば
勝手に読んでくれるぐらいの仕様ならいいのにな
eclipseとかでやりたくなる
GUIは非常に分かりやすい
こんな感じのPS3だとかのハード用が出ればゲーム開発とか色々取っ付き易くなるのに
3Dは難しいだろうけどFC〜DSあたりまでのカセット式ゲームのは是非とも登場して欲しい
>>596 execute_fileやexecute_stringは?
立ち上げ時に外部ファイルをメモリに読み込んでおいて、それを後から実行するとか
execute_fileは最近になってようやく存在に注目したんだけど目から鱗だった。
気づくのが遅すぎでもあるが…
execute_fileは毎ステップ実行するには負荷が高い
STGで自機を追尾してくるようなミサイルを作りたいのですが
常にミサイルの先端を進行方向に向けるようスプライトを回転させるにはどのようにすればいいでしょうか。
どっかのチュートリアルだかヘルプだかにあった気はするけども。
まぁ image_angle = direction とでもしておけばいいんじゃないか。
GameMakerで設定されたフォントは、プレイヤー側のPCにも同じフォントを求めるのでしょうか?
作者のPCに入っていて、プレイヤー側のPCに入ってないようなフォントを使った場合はエラーが出るのでしょうか?
ちょっと特殊なフォントを使おうと思っているのですが
GM6.1のことしか知らんけど、
GM6以降は、そういう「プレイヤー側のPCに入ってないようなフォント」問題のために、
ゲームデータ内に文字のデータを埋めるようになったんだったと聞いた。
その関係で日本語が使えなくなったようなそんな気がした。
まぁ、exeにしてあるならどのPCでもそのフォントが出るので大丈夫です。
ありがとうございます
これで安心して製作続行できます
>>604 フォントにも著作権があるから再配布(同梱)可能かどうかちゃんと調べておくんだぞ
GM8来てるじゃん
ほんとにコードエディタで日本語使えなくなっててワラタ
GameInfomationでは使えるのにね
新バージョン来たのに盛り上がらなすぎだろ
ちょっと見てくる
うーん、どこに何を入力すればいいのかわkらない。
「Activate New License」から記入しなおさなければならないのだろうか?
無償アップグレード対象もいやらしいよね。2009年でGM7を購入した人のみ対象。
それ以前に購入している人は、新規ユーザと同じように25$支払わなければPro versionにできない。
せめて、アップグレードは有償でも割引とかしてほしかった。
日本語使えなくなるならアップグレードする気にならない
アルファ対応は7でもなんとかなるし、8はなくてもなんとかなりそうだ
8からはレジストにsoftwrapはやめるとか聞いたけどそのままなんだね
>>611 あぁ、そのせいで通らなかったのか・・・買ったの2007年だったorz
また金払わんのといかんのかYO!
GM8来たか。
Softwrap存続は、forumにSoftwrapで問題ないという意見が多かったのでそのせいかと。
個人的には、アルファサポートは楽だしUPGしてもいい。入れて検証してみるかな。
$25はもともと安いと考えることも出来るし払うよ。
「俺は2009年の8日前に買ったぞ、同じようなのがたくさんいるはずだ」って言ってた人に
「多く見積もりすぎだよ」ってMarkが言ってた。
8のpdf和訳してくれる人いないかな
どっか日本の会社がライセンス買ってローカライズ版作ってくれよ
なんだかんだでGMが一番使い易いんだよ
8になって変わった所って何がある?
日本語が駄目っていうのは置いといて。
Lite版でちょっとしたものを作りながらだけども
コードエディタは補間や候補が出るようになって非常に使いやすくなった
イメージエディタは透過色の扱いが変わった。左下は透過色じゃなくなった
Sprite系のPreloadが見当たらない
Pro版でTriggerEvent追加。ヘルプを見る限りあまり必要性がない気がする機能
ヘルプは追加機能の部分は追記されてるけど、以前からある関数の挙動の違いや
Pro版のみしか使えないという注意書きがなかったりすることがあるのはそのまま変わらない
7と同じで稀にフリーズする。こまめに保存
大きく変わったのはエディタまわりとpngの扱いだと思う
サブイメージ毎の当たり判定はどうなった?
それっぽいチェックを入れても1枚毎に設定とかはできないけど
スプライトの形通りならサブイメージ毎の当たり判定が使えるのか
1枚毎に任意に設定できたらいいのに
それはGM5.3の時からそうだけど。
マスクを使えば、任意にできるよ。
そういうことを言ってるんじゃないのでは
>>621は Separete collision masks にチェックを入れる話をしていると思うのだが、
これは、GM7.0までの仕様通りに、サブイメージの画像で当たり判定を設定するということ。
>>621の要望を満たすには、表示用スプライト本体と同じコマ数のスプライトを別に用意し、
コマ毎のマスクをそれぞれ作っていき、オブジェクトでmaskを設定すればよいという話。
(当たり判定はスプライトと同じサブイメージ番号と同期して、マスクのサブイメージ番号が使用されるようになる)
それでなくても、mask_index をGML制御してもよいのだが。
逆に、このチェックをはずした場合は、
そのスプライトの持つサブイメージの中で、どれか1枚でも当たり判定となる部分をそのスプライトの当たり判定としてしまう、ということ。
つまり、当たり判定の最大値をとるということになる。むしろ、この機能が新しく、便利になった部分だと思う。
多分、
>>621はこの部分を誤解していたのでは。
発見してあまりに感動したんで紹介しておく
CleanMem.dll
メモリ使用量の肥大で悩んでいる人には超オススメ
常時150M安定くらいだったのが、22M安定くらいまで軽くなった
今まで使ってきた中で一番有用なDLLの一つだ
game_saveで出来るsavファイルの容量が、room_restartをするごとにインフレするという問題に直面しているのですが
どなたか原因をご存知でしょうか?
検証方法ですが、まず適当なルームでgame_saveを行って状態を保存します
次にroom_restartでルームをやり直した直後、またgame_saveを行うと、savファイルの容量が最初のものの3倍ほどになります
同じ手順を繰り返すと、今度は4倍、5倍…といった風にどんどんファイル容量が大きくなります
ゲームを再起動すれば、ファイル容量は最初のものに戻ります
他の人が試してみて再現できなければ、自分がgame_saveを行っている状態に問題があるということでしょうか
GM6.1を使っているのですが、
ついさっきまで動いていたゲームデータが、
「Unexprcted error occured when running the game.」
のメッセージと共に起動しなくなりました。
原因不明のエラーです、と言われても・・・
「今まで動いていた過去のgm6ファイル」も
上記メッセージが表示され起動できません。
これは・・開発断念しかないんでしょうか?
GM6で質問なのですが背景にそのまま当たり判定をつけるにはどうすれば良いでしょうか?
パチンコのようなゲームを作っていまして、全面に当たり判定を要求されるのですが、
曲線部分が多い上にサイズが大きく、当たり判定用のオブジェクトを作ったりすると結構な数になってしまいます
背景の画像をそのままオブジェクトとして使用すると大きすぎて、他のオブジェクトがおけないとか
他のオブジェクトを置くと背景画像のオブジェクトが消えてしまうというような事になってしまいます
そこで背景に直接当たり判定を持たせたいのですがその様な事は可能でしょうか?
また他に案がありましたら是非ともご教授頂きたいです。よろしくお願いします
文脈から察するに背景というよりも地形の処理なんじゃないかと
そのままの当たり判定というのがどこまでを指すのかわからないけど
地形画像にあわせた当たり判定を自分で作るなら可能だけどかなり大変。
オブジェクトで判断するのがいいんじゃないかなあ
RoomEditorでオブジェクトを置くときのdelete underlyingのチェックをはずせば重ね置きできるよ
インスタンスを作る順番で見えなくなるんだったら地形部分のdepthをかえればいいかも
apngとか対応しないもんかね。
そういうのは自分も
あたり判定用のオブジェクトでやってるけど、
たくさん置いてもそんなに重くならないよ。
判定が必要な部分だけに置けばいいし。
GM8が正式公開されてたけど、αpngに対応してたね
エディタが日本語に対応してれば買ったんだけどな、残念
>>631 遅くなりましたがありがとうございます
何とか出来ました
GM6.1Aでゲームを作っているんですが、
GM7、あるいはGM8とゲームデータ(gm6やgmk)に互換性はあるのでしょうか?
GM6.1Aで作ったゲームが一部アンチウィルスソフトに検出され
起動できないという報告を受けています。
同じPCでGM7を使いそのゲームをexe出力したところ、
ウィルスは検知されなかったようです。
なので、ウィルスに感染しているというより、GM6から出力されたファイルが
なんらかの理由でウィルスとして誤検知されているのだと思います。
現在はフリーゲームということでウィルス検知されても
自己責任の下で実行してくださいということにしていますが、
現在製作しているゲームは今後同人販売などに回す予定もあるので、
ウィルス誤検知により動作しないのは、商品として厳しいものがありますし、
誤検知だと説明したとしても信用や責任として微妙なところでしょう。
(本当に自分が感染しているだけだとすればGM開発に謝るしかないのですが)
今のところ、GM7以降を用いれば問題は発生しないようなので、
現在GM6で作っているゲームをGM7で製作続行しようと思うのですが、
gm6ファイルをGM7で読み込めるのか、
また、読み込めば手直しなしでそのまま使用できるのかが知りたいです。
いまだにGM6を使用しているのは、
GM7は複数PCへのpro版インストールに制限があるという話を聞いて、
購入を踏み留まっているのが理由です。(家のPCとノートPC2つで作成しているので)
>>630 前にソニックみたいなステージ作ろうとしたけど面倒だったなぁ
キー長押しってどうすればいいの?
弾を連射するようにしたいんだが
ごめんなんか勘違いした 忘れてください
641 :
名前は開発中のものです。:2010/01/18(月) 20:25:42 ID:4vU0SbzF
シューティングの強制スクロールさせるときに
速度1でスクロールさせて、自機をどの方向にも相対的に2の速度で移動をさせる場合ってのはどうやったらいいかな
>>641 水平成分と垂直成分に分ければ簡単じゃね?
スクロールしてる方向が水平ならその速度分水平速度にオフセット乗っければおk
スクロールはスクロール速度を指定した透明オブジェクトを追跡させればいいんでね?
このくらいしかおもいつかね、的を得てないかも(´・ω・`)
ゲームを始めようとして、loadingが始まるまでの時間が異様に長くなった。
ウィルスバスター2010を切ったら戻ったので、こいつが原因だと思うんだけど
昨日は全然問題なかったのに、今日急にだ。
今日のアップデートでなにか変わったりしたんかな?
バスター疑うならアクセスログとって該当スレで対処方法聞くのが
一番手っ取り早いと思うけどなあ
641とは少し違うんだけど、自キャラ移動時のみ追従、の背景スクロール
はどうすればいいんでしょ?
2Dアクションなんだけど、自動スクロールは困るし、H(V).Speedには「自キャラ.hspeed」とか無理だし・・・
あと出来れば個別に背景スピードを変えたいんだけど(遠方はゆっくり)、
これはさすがにオブジェクト作らないと駄目ですかねー?(´・ω・)
GMLなら変数代入可でね?
遠方は割合にすれば変数1つでおk。
グローバルにするのを忘れずに。
>>646 ウエエェー(;゚Д゚)出来たぁ!?
有難うございます何とかなりそうです
昔、引数一杯のbackground()か何かがプロ版のみとかで出来なかったから諦めてたorz
無駄なオブジェクト沢山作らずに済みました、本当に有難う&お世話になりました〜(;ω;)
GM8でも一応例の日本語描画ツール使えば日本語書けるみたいだね
エディタに日本語打ち込むと文字化けするけどゲーム上ではちゃんと日本語が表示される
mbtextの構造からしてそうだろうね
だけどエディタに日本語書けないってのが致命的なんだよな
日本語は全部スプライトで管理したり外部ファイルで読み込むって手もあるけど、
やはりエディタに書けると嬉しい
日本語コメントだめなのはきつすぎるな
パスを使い始めたのですが、path_speedのことがよくわかりません。
マニュアルには「各ステップで進むピクセル数」とありますが、
例えばpath_speed = 100としても毎ステップで100ピクセル進まず、もっと遅いです。
私の解釈が間違っているのでしょうか?
GMLを使っています。
path_speedが予測と違うなら
Path の sp、GMLなら path_add_point(ind,x,y,speed) などのspeedの設定が間違ってるんじゃないのかな
100で現在の速度維持。それ以下なら遅くなる
GMLのスクリプトってswap(&a,&b)みたいな参照っぽい使い方って出来ませんよね
変数を入れ替える作業がのめんどくさくってしょうがないんです(´・ω・`)
なんかいい方法ないですか?
swap("a", "b") みたいに変数名をもらってvariable_local_get/setとか
execute_stringでやる方法はあるけど、効率は良くないな。
GM6でスロットみたいなのを作っていて、当たりの判定が面倒なのですが良い案はないでしょうか?
図柄は1つずつに数字が割り振られていて1列目=1、2列目=1、3列目=1だと中央で1当たりです
それだけなら1列目=2列目=3列目の時に当たりとすれば良く
3段なので斜め等もあり1列目=2、2列目=1、3列目=3など中央の数字の並びで判定出きます
これで現在の各3図柄の3列3段の場合は何とか判定出来るのですが
実際は21の図柄を3列3段で上段並び、中段並び、下段並び、上斜め、下斜めの全てをそのようにすると
単純計算で105?の通りがありそれを全て書くと大変な長さになってしまいます
これを簡略化する方法があれば是非ともご教授お願いします
なんだかよくわからんがポケモンとかにおまけでありそうな感じのスロットってこと?
あたりがあるかどうか判定するなら、別に21図柄まとめてやらずとも各個撃破でいいんじゃないの
3図柄の3X3が出来るなら、1図柄が3X3の配列で当たってるかの判定はもっと簡単でしょ?
その判定を1〜21までやってそれぞれの当たり判定を集計すればいいんと違う?
3列3段って調べるのは5通りになるんじゃないの
ABC //RowUp[3]
DEF //RowMid[3]
GHI //RowBottom[3]
上段そろいABCなら if(RowUp[0] == RowUp[1] && RowUp[0] == RowUp[2]) とか
上斜めそろいAEIなら if(RowUp[0] == RowMid[1] && RowUp[0] == RowBottom[2]) とか
スロット列がいくつであっても出目A〜I に対して
ABC、DEF、GHI、AEI、GEC
の5通りで済むような気がする
MMFは結局日本語版が出ても英語からは逃げられずGMより情報がはるかに少ないという現状
チュートリアルや基本操作がわかったら次のステップに進むにはどうしたらいいですか?
>>652 解決しました。
よくマニュアルを見たら、pathのspeedはパーセントだって書いてありましたね。
遅くなりましたがありがとうございます。
ちなみにジャンプのところの!はなぜか入れたらエラーが出たので
あえて抜いてあります
失礼。自己解決しました
GMでジオメトリーやスマッシュTVみたいな全方位シューティングを作ってみました。
SHOOTING GAME TKOOL WIKIのupロダに上げました。
やってもらえたら嬉しいです。
スロットか。とりあえずやってみた。
上段3つに代入して、残りは上段の数字から取得。
// 判定
hit = 0;
if (drum[0,0] == drum[1,0] && drum[0,0] == drum[2,0]) hit = drum[0,0]; //上段
if (drum[0,1] == drum[1,1] && drum[0,1] == drum[2,1]) hit = drum[0,1]; //中段
if (drum[0,2] == drum[1,2] && drum[0,2] == drum[2,2]) hit = drum[0,2]; //下段
if (drum[0,0] == drum[1,1] && drum[0,0] == drum[2,2]) hit = drum[0,0]; //右下がり
if (drum[0,2] == drum[1,1] && drum[0,2] == drum[2,0]) hit = drum[0,2]; //右上がり
switch (hit)
{
case 1:
略
}
数回叩いて飽きた(´・ω・`)
ジャンプアクションを作っているのですがジャンプで上昇中と下降中のアニメーションを
切り替えたいのですがどのようにすればよろしいでしょうか?参考になるサンプルとか
あればいいのですがつべとかでいろいろ見ましたがジャンプでのアニメーション
切り替えについてどうしてもわかりません、よろしくお願いします
>>666 垂直方向の速度で判断させればいいんじゃね?
vspeedが0以上ならアニメーションA、0以下ならアニメーションB、とか
うーん、普段はyoutube等のチュートリアルで出てきた変数を
wikiで検索かけてたりしたのですが、今回は例にできるサンプルや動画も
見つからないためどんな変数を用いればいいかとか情報がわからなく困っています・・・
いや、vspeedの変数についてはわかるのです、左右の移動はできてるので
//重力
if place_free(x,y+1){gravity = 0.7}
else{gravity = 0}
gravity_direction=270
//スピード
if vspeed >20{vspeed = 20}
//左右移動
if keyboard_check(vk_right) && place_free(x+9,y){x+=5}
if keyboard_check(vk_left) && place_free(x-9,y){x-=5}
//ジャンプ
c_key_check = keyboard_check_pressed(67)
if c_key_check && !place_free(x,y+1){vspeed = -15}
こんな感じにしています。
アニメーションを切り替えるのにどういう変数を用いてどのようにスクリプトを
作っていけばいいのがわからないのです
普通に右のアイコンを使ったりはしないの?
画像の変更はsprite_indexだったはず
ヘルプ読めば分かると思うけど
使っています、上のスクリプトを用いて左右のアニメーションの切り替えは
key pressのイベントChange spriteのアクションで構成させたのですが
ジャンプ中のアニメーションの切り替えだけがどうしてもわからないのです。
サンプルや海外のチュートリアル動画でもジャンプのアニメーション部分は
上昇中と下降中でわけていなく1つのスプライトしか使っていないもので。
どういうふうにすればいいか方法がわからなく・・・
if文の使い方はわかっているという前提で
Change spriteアクションには設定欄が3つあるけど、それぞれがGMLの変数に対応する。
「sprite」=sprite_index、「subimage」=image_index、「speed」=image_speed
普通は3つ全部代入する必要はなくて、変える必要のあるものだけ変えればいい。
例: if (vspeed < 0) { sprite_index = spr_jump_up; }
ちなみにGML使わずChange spriteアクションでもできる。
その場合、条件判定にはTest variableアクション(八角形のVAR)や
If expression is true(八角形の?マーク)を使えばいい。
あと、キーの値に直値使うのはあまりよくないな。
普通は keyboard_check_pressed(ord('C')) と書く。
こういうことみんなヘルプに載ってるんだから、
サンプルありきじゃなくまずヘルプを読むことを覚えてくれ。
674 :
655:2010/02/15(月) 23:36:23 ID:ORUjV2JB
>>657 ありがとうございます
なんとか形になりました
書き込み規制で遅くなり申し訳ありません
>>673 ありがとうございました
ちなみにkeyboard_check_pressed(ord('C'))は
一応やったのですがなぜかエラーが出てしまったので
c_key_check = keyboard_check_pressed(67)
if c_key_check && !place_free(x,y+1){vspeed = -15} に自分で作り変えています。
>>676 GMLを使わなくても右のアイコンから普通にできたのですね。
大変参考になります、ありがとうございました。
一応日本語化したヘルプファイルは見たのですが理解がまだ足りなかったようです。
もう一度じっくり見直してみます。
GM6で質問なのですが一定時間後に次のアクションを実行するというような事をするにはどうすれば良いのでしょうか?
Set Alarmだと増えすぎて見にくいしSleepだと他のオブジェクトも止ってしまいます
Stepで変数Aに+1していって、Aが一定数に達したらB=1、「IF B=1〜」とかで次に繋げる事も出来ますがこれもイマイチです
初心者で申し訳ありませんがご回答よろしくお願いします
timelineというものがあってだな
>>679 ありがとうございます
あまりの便利さに年号が大正に変わった時並の衝撃を受けました
今からGameMakerをはじめるならどのバージョンがいいですか?
アニメーションを増やせば増やすほど壁にめり込みやすくなってしまうのですが
何かいい工夫の方法ってありますか?
その症状の意味がよくわからんが
詳細な衝突判定のチェックを外して、
衝突判定の大きさとoriginを揃え(あるいはMaskを使う)ておけばまずめり込むことはないと思うんだが。
ジョイスティックにもプレスとリリースのイベントがあればいいのに
gm6のマルチプレイヤについての質問なのですが
ホスト側がmplay_init_tcpip(addr) 、mplay_ipaddress() でIPをプレイしたい相手に伝える
次にmplay_session_create(sesname,playnumb,playername) でセッションを作成
相手側はmplay_init_tcpip(addr) にホストのIPを入力して
mplay_session_find() でセッション数の数だけmplay_session_name(numb) でセッション名を表示して
mplay_session_join(numb,playername) で任意のセッションに接続する、という順序でよいのでしょうか?
それと、上記のコードはゲーム中のどこで行うべきなのでしょうか?
オブジェクトやタイムラインで行っても良いのでしょうか?
よろしくお願いします
prev_○○って前のステップの○○ってこと?
>>684 begin stepやend stepを使って自作も出来るけど、
適当なエクステンションがGMフォーラムにもあったはず
Gamepad Extendedって奴かな、使ったことはない
ジョイスティックのボタンとキーボードのキーを対応させればいいだけだから
ジョイスティックイベントってのは結局いらないんだよね
こんな感じ↓の動作をするオブジェクトを最初のほうでcreateすればいいんじゃないかと
(Zとボタン1を対応させる場合)
if(joystick_check_button(1,1)) keyboard_key_press(ord('Z'));
else if(keyboard_check(ord('Z'))) keyboard_key_release(ord('Z'));
斜めの坂を登る、斜めの坂から転がり落ちる、といった様な事はどのようにすれば良いでしょうか
跳ね返り有りのボールをぶつけてもピタリと止まってしまいます
よろしくお願いします
>>688 そうか、その手があったか。でも二行目は
else if(!keyboard_check(ord('Z'))) keyboard_key_release(ord('Z'));
かな?
ジョイスティックの1は押されてないけどキーボードではキーが押されてる時は
key_releaseは実行しないって感じか
else if(keyboard_check(ord('Z'))) keyboard_key_release(ord('Z'));
であってると思うぞ ボタン離したのにZ押下が残ってたらZを離すってことだし
もしよかったら十字キーとボタン二つくらいでプレス、リリース、押してるときのサンプルを作ってくださいまし
>>683 返事遅れました。てっきりスプライトのマスクのところいじるのかとおもってたら
オブジェクトのMaskの設定だったのですね、何とか解決しました
うーん、海外サイトからサンプルいくつかおとしたけど全部中身GMLで書いてて
よくわからないなぁ・・・
5.3を使ってるんだけど 透明色って強制的に画像の左下1ドットの色になるの?
5.3〜7.0は、強制的に左下の色になる。
アニメーションで変化する場合も、表示されるコマでの左下の色となるので、気をつけなければならない。
Pro版なら、ドット毎で透過度を指定できるコマンドがあるが、やや冗長で使いにくい。
8.0は、エディタ上でドット毎に透過度を設定できるようになっている。
>>696 ありがとう 画像サイズを1ドット大きくしてみる
320×240を拡大表示したらアンチエイリアスのせいで汚く見える
拡大してもドット絵がシャープに見える方法は無いかな
常に圧縮表示して拡大表示時が原寸になるみたいな
マウスクリックした座標に飛行機を移動させるって動作の際に
直進方向以外のいわゆる旋回移動に制限を付けようと思っているんですがどうすればいいのでしょうか。
摩擦を使えばいいのか、それともアングルとクリック座標から計算したほうがいいのか…
>>699 正確にはアンチエイリアスじゃなくて線形補完かな
global game settingsで拡大表示にしてるの?
俺も色々試したけど、結局texture_set_interpolationをオフにして
全てのスプライトのimage_xscaleとかをいじるか、draw_sprite_extで整数倍に拡大するかって結論になった
ビューとか使ってるなら少し面倒だけど、これなら基本的にドットがぼけない
画面左下にHPバーを表示したいんだけど
ビュー内の座標はどうすれば指定できるかな
GM8 使ってるけど時々狂ったようにSprite Editorの調子が悪くなるな
正直7に比べるとここだけ格段に不安定になったように感じる
>>703 とりあえず検索・日本語マニュアル・スレ内検索のどれかをするんだ!
てかこのスレの上の方にあったような・・・
706 :
703:2010/03/07(日) 08:29:18 ID:/LOr08+f
すまない 解決した
ifで変数(X)がある数(N)の倍数であるかを判断したいのですがどのようにすれば良いのでしょうか
プログラミングの分野じゃ常識的な事かもしれませんがよろしくお願いします
>>707 剰余算「mod」ってのがあって、X mod N とすると、XをNで割った余りが計算できる。
XがNの倍数なら余りゼロってことだから、
if (X mod N == 0) {
...
}
っていうかんじで書ける。
剰余算はどの言語にもある演算だから覚えておくとよろし。
ロックマンの武器選択とかRPGの会話とかみたいに一部分だけ動作させて
他の部分は動作を止めるっていうのはどうやるのがいいのだろう
武器選択とかサブスクリーンを作る方法で一番簡単なのは
instance_deactivate_all(true);
instance_activate_object(obj); //停止させたくないオブジェクト・必要なオブジェクト
instance_create(SubscreenObj); //操作用オブジェクト作成
で扱って処理が終わったら
instance_activate_all();
RPGの会話(会話中キャラクタが動かない)とか、STGで敵はアニメーションするけど動作やアラームは止める
とかいうのは、GMだと基本的に個々のイベントを飛ばすことはできないから自分で管理しないとダメ
>>708 なるほど、確かに割り切れていれば倍数ですね
ありがとうございます
背景が手前と奥で違う(純粋な背景と足場)ようにスクロールにさせるにはどうしたらいいでしょうか
>>710 deactivateだとオブジェクトが見えなくなるしやっぱり専用の動作を作らないと駄目か
draw前にアクティブにすればいんじゃね
>> 709
ループ作って回すという方法もある
do {
io_handle(); // キーイベント取り込み
// キー判定してメニュー処理などを行う
// 必要に応じて特定のオブジェクトの状態を変えたりする
screen_redraw();
sleep(1000/room_speed);
} until keyboard_check(ポーズ解除キー);
武器選択みたいにキーイベントしか使わない場合
io_handle+sleepじゃなくてkeyboard_waitがおすすめ。
>>712 背景の位置はbackground_x/y[]、移動速度はbackground_h/vspeed[]
0番と1番とでそれぞれ違う値を与えてやればいい。
parallax scrolling game maker とかでぐぐるとサンプルが出てくるよ
>>701 > マウスクリックした座標に飛行機を移動させるって動作の際に
> 直進方向以外のいわゆる旋回移動に制限を付けようと思っているんですがどうすればいいのでしょうか。
> 摩擦を使えばいいのか、それともアングルとクリック座標から計算したほうがいいのか…
摩擦は違うと思う。 飛行機の現在の座標位置とクリック座標を使ってpoint_direction()で角度を求めて
現状の飛行機の向いている角度と比較する。そんで旋回できる最大角度をきめておいて、それ以上だったら
最大角度で飛行機の方向を変える。以内だったらpoint_direction()で求まった角度に飛行機の方向を変える。
でいけると思う・・・あと移動速度があるままだとクリックポイントをくるくる回るような動作になるかも?
なので旋回時はスピードをなくしてあげて向いたら速度を与えるとかがいるかもしれんねぇ・・・・
複数配置する敵キャラと剣波のオブジェクトを別々に作って
剣波が敵キャラに常に追従するようにしたいんだけど
剣波を生成した敵キャラインスタンスだけに追従する方法は無いだろうか
718 :
712:2010/03/10(水) 17:45:41 ID:SAQuwhgU
>>715 解説ありがとうございました。
ググっても見ようと思います。
>>717 三行目に読点がないから具体的にはわからないけど
instance_nearest(x,y,obj)とかで索敵して追従するインスタンスidを取得
move_towards_point(x,y,sp)なんかでそのインスタンスに向かうように移動させたらいいんじゃないか
壁にぶつかったら跳ね返ってバウンドするのを解決する方法がわからない。
FRICTIONをHSPEEDから引いてやる?のかと思ったが、それもちょっと違うみたい。
誰か俺を救ってくれ。
Step Event:
set the friction to 1
if relative position (hspeed,0) gives a collision with Only solid objects
if hspeed is smaller than 0
move in direction 0 at most -hspeed till a contact with solid objects
if hspeed is larger than 0
move in direction 180 at most hspeed till a contact with solid objects
Keyboard Event for <Left> Key:
set the horizontal speed to -5
Keyboard Event for <Right> Key:
set the horizontal speed to 5
なんで辞書引かないの
2D横スクアクションを作っているんですが
攻撃した時にアニメを表示させる場合、何のイベント&アクションを使うのがいいんでしょうか?
試しにchange instanceでanimation endを使ってみたんですがどうにもうまくいかない・・
当たり判定がなんかおかしいと思ったら
bbox_* 関係は取得座標が小数なしまで丸められるのかよ・・・
せめて上下左右の大きさだけとれればよかったのに
このスレどんだけかそってるんだw
mmfのスレはあんなに盛り上がっているというのに・・・
日本語化されてないからじゃね
MMFだって、日本語化されてないときは、こんなもんだったでしょ
726 :
名前は開発中のものです。:2010/03/20(土) 11:37:08 ID:5xltgAgS
早くどっかの日本企業がライセンス買って日本語版発売してくれねーかなー
MMFは言語が使えないからちょっと厳しい
キーコンフィグで指定したキーを イベントに使うことは出来ないのかね
面倒だけどステップ内でGML使うとかで代用は出来るかもね
どんなキーコンフィグ作ったのか知らないけど
keyboard_set_map(key1,key2)
キーボード同士ならこれでおk
ジョイスティックなら
>>688みたいな感じでおk
>>688ってどういうことかよくわかんないんだけど
コードをステップイベント中に実行するってこと?
画像をループさせたいのですが良い方法は無いでしょうか
@□■□■□A ←みたいな画像を左に流していき、Aから@へ繋がってる様にループさせたいのです
よろしくお願いします。
left_edge += 1 //画像の切れ目
if(left_edge >= sprite_width) left_edge = 0
//画像の切れ目から画像の終端まで
draw_sprite_part(sprite_index, image_index, left_edge, 0, sprite_width - left_edge, sprite_height, x, y)
//画像の先端から画像の切れ目まで
draw_sprite_part(sprite_index, image_index, 0, 0, left_edge, sprite_height, x+sprite_width - left_edge, y)
>>732 ありがとうございます
何となくやり方はわかったのですがそのままコピペしてみてもGM6で動きませんでした
先にバージョンを明記せず申し訳ありませんでした
コピペで動くソース要求するとか
>>733 単純にループさせたいだけならアニメーションエンドイベントでimage_indexを0に戻せばいいんでない?
>>735 >>733はきっとPSPのXMB(横縦ピッのやつ)みたいなのを作ろうとしているんだと思う
違ってたらすまん
>>735 遅くなってすみませんがありがとうございます
結構簡単に出来そうでありがたいです
>>736 なんとなくそんな感じかもしれません
XMBの縦は無しで横にピピピッと進めていって端が無いみたいな
2Dシュータータイプのマルチプレイヤーゲームをサクッと作りたいと思い、
Gang Garrison2にも使われているらしい?GameMakerに行き着いたのですが
マルチプレイのサポートはどの程度実用的なものですか?
ネットコードを自力で書く必要があるようでは、あまり有り難味はないです
GangGarrison2はいかにもチープな2Dグラフィックだったのに信じられないくらい動作が重かったのも気になりましたし
お手軽にオンゲを作れるという幻想は捨てるべきですか?
お手軽を求めながらデフォルトでネット対応してないツールを選ぶ時点でおかしい
>>ネットコードを自力で書く必要があるようでは、あまり有り難味はないです
どんだけだし
ここでのネットコードってGMLじゃなくて外部ライブラリとかエクステンションのことでしょ
ぶっちゃけ現状でのGameMakerはネトゲ作成には向いてないと思う
本当に基本的なAPIしか用意されてないしね
通信機能は評価版じゃ使えないから正規版を買う必要があるけど
苦労多くて実り少なしだから・・・手軽からは程遠いと思う
アクエディ今まで使ってたんですがGameMakerと主な相違点ってどんなものがあるでしょうか?
横スクアクションだったんですが同じ感覚では通用しないでしょうか?
レースゲーのラップタイム等を計るのに便利な関数って無いよね?
fpsと経過フレームから弾き出すしかないか
>>743 今アクエディを30秒触った人の意見でいいなら。
GameMakerとアクエディは、ツールの概念が根本的に違う。
GameMakerには、アクエディのように予め用意されているギミックは一切無いから、一から自分で作っていく必要がある。
(自キャラの操作からはじまって、ブロックに乗れるとか、重力の設定とか、アイテム、タイムの経過の表示とか、もろもろ)
それが用意できたら、アクエディのようにぺたぺた貼っていく感じで面を作っていくことが出来る。
一応忠告しておくと、自力でそれに到達するまでは、
GameMakerをいじって作り方を学ぶ必要があるんで、それなりに時間がかかる。プログラミング未経験なら、なおさら。
ジャンプアクションは、意外に難しいジャンル。
個人的に、ゲーム製作初心者が初めに手を出すべきでない、と思ってる。
>>744 実時間の計測したいなら、グローバル変数のcurrent_time(値はミリ秒)を用いる手があるが、精度がいまいちのような気がする。
実時間計測の精度を求めるなら、DLLをつかってWindowsのAPIにある精度の良い関数(timeGetTime()等)を呼び出すとかするしかない。
精度がいいか悪いかは別として
current_timeは基本的にリファレンス通り1msぐらいの精度でとってくれるよ
内部でtimeGetTimeを呼んでるんじゃないかと思う
>>743 アクエディってのは使ったことないけど
1から作るGamemakerで単純な横スクを作るとこんな感じの壁に当たると思う
重力や物に乗る設定
敵を踏む設定
背景や画面の設定
斜面との当たり判定
梯子とかあるとそこも壁になりかねないけどある程度応用が利けば何とかなる
タイムラインとグローバル変数を会得すれば快進撃が始まる
>>745>>747 ありがとうございます。
なるほど、基礎部分が大きく違うのですね……衝突や重力設定から自分で作らないといけないと。
とりあえずアクションにこだわらずいじって練習してみます。
>>745-746 PCの起動時間を調べるだけみたいだから気に留めてなかった
この関数で出る数字は人によってまちまちになると思うけど、どうやったらこれをラップタイム等に応用できるのでしょか
終了時刻−開始時刻=経過時間
>>750 なるほど
これを分:秒:ミリ秒に変換する、と
ラップスタートとPCの起動時間に関連はないから若干の誤差は仕方ないのね
画面上に動き続けるタイムを表示する場合だとこの式では無理?だよね
ゲーム内の時間をとるんだったら、現実時間じゃなくてfpsから計算していかないと
ほとんどの場合使い物にならないよ。
タイム表示をするとしたら↓こんな感じ。割り算しまくってあまりいいコードじゃないけど
real_timeはすでにミリ秒に換算されたものとして
real_time_text = string(real_time div 1000 div 60)+"'"+
string(real_time div 1000 mod 60)+"'"+
string((real_time mod 1000) div 10)
draw_text(x, y, real_time_text)
詳しく書いてくれてありがとう
ちなみにfpsでミリ秒を求める場合はどうやるんでしょか
60fpsの場合60フレームで1秒はわかるんだけど
あんまり難しいこと考えずに算数を思い出して
60 fpsの場合、1fpsでかかる時間 x は
60 (fps) : 1000 (msec) = 1 (fps) : x (msec)
x = 1000 / 60 (msec)
経過時間 = 経過したフレーム数 * x
こうやって書いてもらうと簡単に思えるけど
自分で辿り着くのはすごく難しいんだよなー
何度も何度もありがとう
GMLが大量においてあるサイトはどこにあるんだ?
かれこれ数時間はぐぐっているのだがぜんぜん見当たらない・・・
少なくとも日本のサイトにはないんじゃない
759 :
757:2010/05/02(日) 10:15:45 ID:aa09sJ7a
>>758 そうか・・・もうちょっと頑張ってググってみるよ。
お前らって横スクロールアクションゲームの斜面処理どうしてる?
連投ですまない。
俺も知りたい
これだと登るのは可能だけど 下るのは落ちるようになるなぁ
公式のチュートリアルに坂道って入ってなかったっけ
…と思ったが、確かめてみたらその動画と似たりよったりだった
よくあるのは、ループで下から上に向かって調べていって
空いているスペースがあったらそこに移動する方法かな。
for (vy = 4; vy >= -4; vy -= 1) {
if (place_free(x + 4, y + vy)) {
x += 4;
y += vy;
break;
}
}
>>762 すばらしいチュートリアルを有難うございます!
これを参考にして見ます。
>>764 スクリプト提供サンクス。
これを参考にして作ってみます。
>>765 おお!ありがとうございます!
いろいろ忙しくてレス出来なくてすまない。
767 :
757:2010/05/03(月) 20:11:54 ID:2UeCxxLo
斜面に関してだけどつまり
向きを「/」として、斜面のXより左に自キャラがいるときに→キーを押した場合、
「X,n+Y」(上)と「n+X,n+Y」(斜め上)に何もないか調べて、無ければそこに移動、みたいな感じで良いのかな
以前同じようなのを作った気がしたけど失敗した
で、俺は曲線の斜面を登る必要はないから滑り落ちる様なのを作りたいんだけど
何か質問文考えてる途中で何となくイメージが掴めて来たから困る
横スクアクションの無限ループするマップを楽に作れないかな
自己解決した
こんな感じのこれはどれを指してるんだ
774 :
名前は開発中のものです。:2010/05/09(日) 19:49:26 ID:xBD6SAPM
すいません GameMakerの処理速度はプログラム言語でたとえるとどの言語程度でしょうか?
775 :
772:2010/05/10(月) 19:22:18 ID:MvcHCLbq
>>773 説明不足でした。ごめんなさい
この動画の 1:11から1:13あたりの、ルームを移動したときに前の処理を継続しているみたいなんです。
ルーム移動時にオブジェクトの移動速度や状態をどうやって保持するのかなとおもいまして
残したいobjectにpersistentを設定
ジョイパッド キーボードでのキーコンフィグの作り方がよく分からない
サンプルって無いだろうか
779 :
777:2010/05/14(金) 20:57:51 ID:ZT/EAdjl
>>778 ありがたい
ver8.0をliteで使ってるんだけど スクリプト:key_initの
datafile_exportが不明なスクリプトと出た ちょっと色々調べてくる
キーコンフィグなら上のほうにも出ているけどキーマップ切り替えが簡単だと思うよ
例えば、Zと何かのキーを変更するなら
default_key = ord("Z")
keyboard_wait()
custom_key = keyboard_lastkey
keyboard_set_map(custom_key, default_key)
>>780 ありがとう 試してみる
今夜は寝ないでがんばる
スコア等を表示するときに
1250ではなく0001250のように表示するにはどうしたらよいでしょうか
>>782 string_formatが誰得な使えない機能になっているので、一番上のスコア部分をグラフィックで隠すか
str_number = string(number | 100000000) //8桁表示
draw_text(x, y, string_copy(str_number, 2, 8))
大きい桁の数で読み込んで上の桁を削るとかかな
>>783 日本語のやつは使ったこと無いから知らないけど
GM8の透過はアルファつきのpng読めば勝手に透明化してくれる
自分で画像を作るときはopacity設定して書くだけ
786 :
785:2010/05/17(月) 18:31:49 ID:a6R0p8Vc
787 :
名前は開発中のものです。:2010/05/17(月) 19:19:16 ID:qsApoeyK
すいません GameMakerで商業レベルの戦略 戦術シミュレーションゲームを作る事は可能でしょうか?
無理
GMをレジストする時のfirstname/lastnameってやっぱり本名だよね
PRO版になった後に「ライセンス保持者は○○」みたいにどこかに表示されたりする?
それともライセンス名は自由に決められる?
なんとなく気になったもので
無理か無理じゃないかと言われたら無理じゃない
死ぬほど頑張れば出来るとおもうよ
791 :
名前は開発中のものです。:2010/05/18(火) 20:10:43 ID:C9Z95m5J
i wanna be the engine でゲームを作っているんですけど
オブジェクトと時計回りに飛ばすにはどうすればよいのでしょうか?
i wanna be the guy で言うとグラディウスの面の最後のサクランボです
またアイワナか
しかもマルチかw別にいいけど
Game MakerとMMF2ってどっちの方がとっつきやすいの?
人によるのかな?
使用者が少なくともプログラマじゃないとして
ツクールを裏技駆使したりするレベルでコアに使い込むタイプの人
→MMF2
デザイナーだけどFlashでActionScript使うのが好き(勉強が苦にならない)人
→Game Maker
どんなに苦労してもいいからゲーム作りを飯の種にしたいという決意の人
→Java
gamemakerの3D機能が本当に微弱という話は良く聞きますが
実際どれくらいの事まで出来るのでしょう?
良ければサンプル、あるいは3Dを使用した作品の動画などを教えていただけませんでしょうか
アクティベーションできない・・・
このレジスト方法嫌いだ。
アクティできあ。
〜nameとか書いてあるから名前書いてたけど
メールアドレスだったのね・・・・サポートに2度もメール出しちゃった。
ハスカスィ
〜nameってどこの事?
licence holder のことでしょ
分かりにくいのは全部softwrapのせい
マウスをゲームのウインドウからはみ出さないようにする事は可能でしょうか
マウスがウインドウから出た時ステップイベント中にwindow_mouse_setでウインドウ内に戻す方法では
一応ウインドウ内に戻る事は戻るのですが一時的にはみ出してしまいます
常にフルスクリーンならともかく
強制的にマウスをウインドウに閉じ込めるのは非常によろしくない
何がしたいのかわからないけれど、きちんとウインドウ外に出たときの処理を作ったほうがいい
マウスを使うアクションゲームを考えているのですが
マウスがウインドウからはみ出してクリックする度にフォーカスが外れるのはストレスになるだろうと思いまして
ワイド画面の場合の余白の事もあるのでフル/ウインドウ問わずゲーム画面内にマウスをキープできればと
個人的なあれやこれやを押し付けてもしょうがないので先に解決策を書くと
>>802の状態で、おそらくウインドウいっぱいにゲーム領域があるんだろうけど
もう少しウインドウサイズを大きくして、ゲームに淵の部分をつけてマウスをその中に収めるようにすれば
フォーカスを失うことは無いかと
でもやっぱりウインドウモードでマウスが占有されるっていうのは、う〜む・・・
FPSとかはゲーム中占有してるもんだけどね。
ただ、メニューモードになるとマウスカーソルが表示されて
ウィンドウフォーカスをマウスで選択できるようになるけど。
たしかにこの方法だとフォーカスが移ってもマウスの移動が制限されてしまうんですよね
理想はFPSのウインドウモードのような感じなのですが
色々調べてみたところ望んだ動作をさせるにはDLLを使うしかないようです
そのDLLがどんな物なのかは全くの謎ですが
>>806 更新したら同じようなレスが
メニューモードでもウインドウ内に閉じ込めるタイプがありますが、それが理想の動作かもしれません
ALT+TABでフォーカスを移してもマウスの動きも制限されないですし
普通にフルスクリーン限定のゲームじゃダメなのかな
ウィンドウのFPSを遊んだ事が無いので何とも不愉快なイメージしか無い
人によってはフルスクリーンになる事の方が嫌なのかもしれないけど
それにそんな画面いっぱい使ってるゲームなら尚更フルスクリーンの方が楽しめるんじゃないかな
ゲーム画面が4:3だとモニターがワイドの場合フルスクリーンにすると余白ができてしまって不都合が出るかと思ったのですが
特に問題は無さそうなのでフルスクリーンで作ることにします
ありがとうございます
Proエディションにアップさせたいんだけど金はどうやって払えば良いのかな
銀行振り込みなんかが出来ると助かるんだけど
それと送られてきたキーはどのバージョンでも使えるのかな?
今GM6で何か別物になってそうな気がしてGM7に進めないんだけど
将来的にやっぱりバージョンは上げてくだろうし
GMってズーム機能とかはないのかな?
image_xscaleとimage_yscaleをいじるしかない?
>>811 敵の位置を指定してpart_particles_createするだけじゃないの?
particle systemとtypeは、適当なコントローラオブジェクトにでも作らせて
グローバルに一個だけ持っておけばいい。
>>812 支払いはクレジットカードとPayPalだけだったかと。
バージョンによってやり方は微妙に違うと思うけど、
Lite版だったらGM起動するたびに「Proにしないか」って画面が出るから
それを押して案内に従えばいいと思う。
ちなみにバージョン間でキーの互換性はないよ。
(GM6買った時は5と6両方のキーがもらえたけど)
>>813 GM6以降だったら、Viewを使って拡大縮小ができる。
>>814 おお、ありがとうございます
おかげでズームアップできました
新verか 線形補間解除できるようになったらいいな
それって公式発表じゃない気が。
>>816のページもGameMakerユーザーがやってるっぽいし。
本当にC#だったら、Macは切捨てか・・・?
819 :
812:2010/06/04(金) 17:36:04 ID:ds85S00c
>>814 ありがとう
互換性無いのか・・・
なんか知らぬ間にどんどんバージョン上がってきてるしどうすりゃ良いんだ
線形補間って解除できなかったっけ
GM6だけ?
スプライトの回転はProだけでしょうか。
いえす
あるオブジェクトにある変数が定義されているかどうかを確認する方法ってありますか?
定義されていないならその処理は行わないみたいなことをやりたいのですが…
つ variable_local_exists(変数名)
う、ヘルプのその他の変数のところにしっかりとあったのですね。すごい恥ずかしい…
素早いレスありがとうございました。これで先に進めそうです
7はどうだったか忘れたけど、
8だと解除っていうかデフォルトで設定されてない
もちろんチェックをいれれば有効になる
>>827 まじか
色々チェックを弄って試してるんだけど分からぬ
どのチェックかな
Global Game Settings の interpolate
この辺は6から変わらないと思う
すまない 画面を拡大した時に輪郭がボケるのを無くしたかったんだ
いまTDS(TopDownShooter)で軽くゲームを作っているのだが、
どうもキーボード使って斜め移動をしているときに、銃を撃とうとすると斜め移動できなくなるな
なんでだろ
普通のキーボードはいくつものキーを同時押しできる作りにはなってない
組み合わせによっては三つ以上認識できないことがある
ShiftとかCtrlにすると改善されるかも
image_angleくらいliteでも使わせてくれ…うぅ
834 :
831:2010/06/13(日) 11:29:24 ID:XK4fWSQG
>>832 やっぱりそうでしたか・・・
キーの組み合わせを調整してみます。
それでもうまくいかないようだったら四方向固定にしようかと。
>>833 激しく同意。 image_angleなしでTDS系のゲームとか作ろうとすると結構つらいorz
2000円くらい払えよ
ゲーム製作なんて何ヶ月もかかるんだから、2000円ケチる方がはるかに損だと思うんだがな
ところで格ゲーとかのコマンド入力ってどうやってる?
ボタン押したら変数onにしてタイムラインで一定時間内に次キーが押されなかったら変数offなんて面倒な仕様にしてるんだけど
もっと単純な方法は無いかな
技ひとつをオブジェクト扱いにして
処理コマンド(キーを入力する順番)を配列として持ったものと
技の入力状況を示すイテレータを持たせる
一定時間ごとにキー判定を取って、キーが一致すればイテレータを進め
一致しなければ先頭に戻す。最後まで到達すれば技発動・・・みたいなことを考えた
838 :
836:2010/06/16(水) 07:51:51 ID:iSVFrURJ
なるほど、技ひとつひとつがオブジェクトですか
参考にしてみるよ。ありがとうございました
アクションゲーム作っていて、剣を振るとか殴るとかで
アニメが終わる間動きを止めたいんですけどどうすればいいのか
教えてもらえませんか?
よくアラームを使うって見かけるけどいまいちわからなくて…
AnimationEndを使うとオブジェクトをいくつも分けないとだし
変数もややこしくなるしで一つのオブジェクトで済ませたいんです
動きに応じてsprite_indexを変更するようにしとけば、AnimationEndイベント使ってもひとつのオブジェクトでできるよ。
ただ、AnimationEndイベント内部はswitch-caseとかの場合わけが必要になるかもしれないけど。
841 :
839:2010/06/17(木) 00:24:48 ID:mBfyuQLT
>>840 ありがとう。分けなくてもAnimationEnd使えるんですか
ただ動きに応じて、という処理の書き方・GMLは使ってないのでこれまた
書き方がヘルプ等見ても見当がつかないんですがGML使わなくても出来ますか?
というか皆さんこういう場合具体的にどうやっているんでしょうか?
散々調べたけどその辺詳しく解説されているところが見つからなくて…
ニュートラル>攻撃モーション完了(完了まで攻撃ボタン無効)>ニュートラル
というのがどうやっても出来なくて数ヶ月詰まってます。
もっと簡単な方法とか他にあればどなたか教えて下さい
お願いします。
全ての操作の条件に変数がonになってる事を追加して
攻撃モーションへ移る際にその変数をoff、モーション完了後に変数をonに直せば良いだけの話じゃないの?
843 :
839:2010/06/18(金) 21:45:25 ID:zwccdsE4
>>842 ありがとう
なんかそう言われるとやけに簡単な気がして
ゼロから組み直したらある程度形になりました。
まだ思い通りにはいきませんが…
進行方向と速度を指定してオブジェクト生成(電球に矢印のマーク)のアクションをGMLで表すにはどのようにするのでしょうか。
>>844 まずcreateしてからsppedとdirectionを設定すればいい
a = instance_create(x, y, object);
a.speed = 速度;
a.direction = 方向;
Createイベントの時点ではまだspeedとdirectionが設定されてないから
厳密に言うとアクションと等価じゃないけどな
そうですか…一度にいくつも同時にその処理を行いたかったのですが
たくさん変数を用意しないといけませんね。
いや、別に一時変数だから使い回しでいいし
一時変数すら使いたくないならwithを使う方法もある
with (instance_create(x, y, object)) { spped=速度; direction=方向; }
同じことをあちこちでやるんだったらスクリプトにすればいい。
レジストしているのならA*を使う
レジストしていないなら
mp_potential_settings(maxrot,rotstep,ahead,onspot)
で設定した後
mp_potential_step_object(x,y,stepsize,obj) もしくは mp_potential_step(x,y,stepsize,checkall)
関係ないけど画像でaxfc使われると手間がかかるんだよなあ
>>849 ありがとうございます。
ところで A*ってなんでしょうか
読み方は A star 最短経路を出すアルゴリズム。
GameMaker でも使えるみたいだけどGMで使ったこと無いから
精度とかコストはどれほどものかわからない
A*そのものについてはググッた方が早いかも
今なら結構解説サイトがあると思う
未レジストのGM5で迷路みたいな複雑な道をAIに通らせる
このようなアプローチは可能でしょうか
広さにもよるけど可能
855 :
853:2010/07/03(土) 18:31:38 ID:xej2WSqR
>>854 mp_potential_stepとmp_potential_settingsを使うのでしょうか
ルームの広さは大体600×600くらいです
何をしたいかによるよ
例えばTower Defense系のように最短経路を辿らせたいとか
トルネコみたいなローグ系な動きとか
迷路のほうはともかくAIに何をさせたいか分からないと説明に困るぞ
英語でぐぐれ
誤爆
859 :
853:2010/07/04(日) 09:41:34 ID:R47f51en
>>856 そうですね・・・
Tower Defenceみたいに最短経路を辿らせてみたいのですが
説明忘れてましたorz
TDなら塗りつぶし法がいいと思う
迷路の形状が決まった時点で、出口から通路をスコアつきで塗りつぶしていけば
敵はそのスコアが小さくなるようにたどっていけば最短になる
mp_potential_stepとmp_potential_settingsの組み合わせはTDには向いていない
根本的に最短を通るわけではないし
かなりいい加減によけていくのでおそらく狭い通路みたいなところだとうまくないと思う
2Dの見下ろし型のゲームで単純な障害物をよけるような場面が適しているんじゃないかと
861 :
853:2010/07/04(日) 13:05:11 ID:R47f51en
>>860 塗りつぶし法ですか
ちょっと調べてきます
有難うございました
862 :
853:2010/07/04(日) 14:11:38 ID:R47f51en
>>860 >迷路の形状が決まった時点で、出口から通路をスコアつきで塗りつぶしていけば
調べてもなかなかよくわかりませんでした
サンプルとかあると幸いです
ん〜例えば、Sをスタート、Gをゴールとして下の図を塗りつぶすと
ずれているかも知れないけど右のようになるでしょう
あとは数字が少なくなるように移動させるだけ
□□□□ 3456
□■S □ → 2■65
□G ■□ 10■4
□□□□ 2123
GM5は古いしサンプル期待するのは難しいかもしれない
経路探索の名前はともかくアルゴリズムの本を見れば大抵のものには
これ系のものは載っていると思う
>>863 ヒントを有難う
これを参考に頑張ってみます
865 :
名前は開発中のものです。:2010/07/13(火) 18:47:11 ID:K3o0YDHH
戦闘機のシューティングを作っているんですが…
自機スプライトの縦と横の長さが違い、回転するのでroomの中に常に収めるコードが
うまく書けません。
正方形のスプライトなら if (x < sprite_width/2) x = sprite_width/2
とかで出来るんですが…(原点=中心)
lengthdirとか使ってもうまくいきません
いい方法ありませんか?
>>865 仮にスプライトの縦の方が横より長いとして
自機が縦向きで画面の端にくっついているとしよう。
その状態で自機が回転して横向きになったら、ぐぐーっと端から離れないといけないの?
縦と横の最大値をとって、その分だけ固定で離した方が簡単だし自然じゃない?
ちなみにスプライトの幅÷2をw、高さ÷2をhとおくと一番遠い端までの距離はこうなる。
a = degtorad(image_angle);
b = arctan(h/w);
x = sqrt(sqr(w) + sqr(h)) * max(abs(cos(a + b)), abs(cos(a - b)));
補足すると sqrt(sqr(w) + sqr(h)) が対角線の長さなので
固定で距離をとる場合はこの値にすればいい。
もし角度によって距離を変える場合、縦の距離は上の式のcosをsinに変えれば出る。
868 :
名前は開発中のものです。:2010/07/13(火) 21:37:38 ID:K3o0YDHH
出来ました!
ありがとうございました
TDS系のゲームで高速移動する銃弾を作りたいのですが
collision_line(x,y,x+hspeed,y+vspeed,壁オブジェクト,1,0)
だとSpeedが10や13ぐらいなら壁をすり抜けずにすむのですが、Speedを60とかにすると
うまいこと行きません。
何かいい方法はないでしょうか?
Gamemakerのバージョンは6、未レジストです
collision_lineをどう使ってて、何がうまくいかないのかわからないと何とも
よくある間違いはcollision_lineの結果をtrueやfalseと比較することだけど
そこは大丈夫か?
>>870 大丈夫 だと思います
どうやら俺の作り方がまずかったみたい。
Step Event:
execute code:
if(collision_line(x,y,x+hspeed,y+vspeed,kabe,1,0)){sound_play(chakudan);instance_destroy();}
と設定すると着弾処理自体はしっかりと行ってくれるみたいです
ですが、弾道のトレースを行うと壁を貫通しているんです
うp:
http://www1.axfc.net/uploader/Sc/so/135056 形式は.gm6です
そりゃそうよ
xとyが更新されるのはStepイベントの後、Collisionなどが実行される手前
(ヘルプでEventのところを見ると詳しく書いてある)
・Stepイベントでcollision_lineでチェック→この時点ではまだ貫通してない
・その後、xとyにhspeedとvspeedが足される
・Drawイベントでx,yから直線を描画
1ステップ未来の弾道を見てるから、貫通してるように見えるだけ。
>>872 なるほど
いろいろと調べながら頑張ります。
ありがとうございます
言い忘れてたけど、draw_line(xprevious, yprevious, x, y) にすれば見た目どおりになる。
End stepイベントでcollision_line(xprevious, yprevious, x, y, ..) でチェックしてもいいけど
(その場合Stepイベントでは駄目)
弾速が速い場合、今度は弾が壁の手前で消えるように見えるという問題が出るはず。
それが気になるようだったら、move_contact_solidを使って着弾点まで移動させればいい。
collision_line の返り値みてあれって思ったけど
6だとtrue/falseが返ってくるのか。wikiにもそんなことが書いてあったし
7以降だとちゃんとidが返ってくるのにね
true/falseの返り値だとかなり使いにくいと思う
いや、6でもインスタンスIDか-4(noone)を返すよ。
> All these functions return either the id of one of the instances that collide,
> or they return a negative value when there is no collision.
ここの説明は5から8までずっと変わっていない。
ただ、全体読まずに関数の説明だけ見てtrue/falseだと早とちりする人は多い。
ちなみにGMでは、0より大きい値は真、0かそれ以下の値は偽と解釈される。
if (A) は if (A > 0)、 if (!A) は if (A <= 0) と同じ意味。
>871のif文が期待どおり動くのはそういう理由。
これを if (collision_line(...) == true) と直接true/falseと比較してしまうと動かなくなる。
うn
collision_pointの方の説明は合ってるのにね
他にも「bbox_*はProでしか使えない」とかところどころ間違ってる
881 :
873:2010/07/25(日) 20:00:59 ID:1/i3AWzX
>>874-878 おおお!
俺がPC使っていない間に… みんなありがとう!
>874
move_contact_solidか・・・使ってみたらめり込みが改善されました。
>875
サンプル有難うございます!
これを参考に頑張ります。
>878
そんな仕様があったなんて知らなかった・・・
GM5.3Aで半加算処理って出来ないものなんでしょうか・・・
883 :
名前は開発中のものです。:2010/08/17(火) 09:24:30 ID:OKMjBkLc
早く多言語対応してくれー
>>
886 :
名前は開発中のものです。:2010/08/30(月) 12:44:47 ID:4I8KA9ny
透過PNG使いてぇけど、GM8だと日本語がまったく使えなくなるからなぁ
GMで商用ソフトウェアを作っていたんだが、一つだけどうしても潰れないバグがある…
有償でGM(7pro)に本当に詳しい人を募集したら、集まるものだろうか?
自分はプログラムは素人だけど、GMLを2年くらい触ってる。
商用ってどんなの?
同人ゲームとか?あえてソフトウェアと呼ぶという事はツールとかかな?
幻想少女大戦?
>>888 そう、同人ゲーム。
興味がある人がいれば連絡用のメアドを晒そうと思うので、
詳しいことはそちらで改めて。
>>889 べ、別にメモリリークとか言ってないんだからね!
>>890 興味ありますなあ、教えてもらう側として
日本語対応まだー
893 :
名前は開発中のものです。:2010/09/20(月) 10:57:08 ID:8iAYpL5b
8はマルチコアに対応してるの?
894 :
名前は開発中のものです。:2010/09/25(土) 09:28:35 ID:z7hfMkRR
支援
>>893 してるのかな? ググっても良くわからなかったが
ゲーム中にムービー流す方法はないものかなぁ…
最悪ムービーを連番画像化して音を別に流せば何とかなる気もするけど…
間違いなくずれるなw そしてexe肥大化するし。
GM7からsplash_show_videoってのが追加されてるけど、それじゃいかんの?
exeの外に置いとくと、簡単にムービーだけ見られちゃうから嫌だとか?
それなら暗号化すればよくない?
そういうエクステンションならいくらでもあったような
900 :
896:2010/10/05(火) 11:21:39 ID:uuCYQ5rK
いや、すまない。
単純に
>>897の存在を知らなかっただけだわ。
感謝。
すげえ
パチスロゲーとか作ろうとしても紙芝居じゃどうしても演出が大変だったんだ
GM6を卒業する時が来たらしいな
今までLiteで頑張ってきたがやっぱある程度まで行くとProの機能がほしくなるな。
903 :
名前は開発中のものです。:2010/10/08(金) 00:09:20 ID:2eH0fymj
Gamemaker6使ってたころはタブ使えてたのに
Gamemaker8になってタブインデントができなくて困る
(勝手にスペースになる)んだけど、これって設定しだいで直せます?
一回大量に置いてしまったオブジェクトの処理の順番は
全部置き直さないと変えれないかな?
>>904 GMLとGM7Pro版を使えるものとして話を進める。
インスタンス固有のidは読み取り専用だから変更できない。
with構文を使うとどんなときでもidが小さい順に処理されるからこれでも無理。
そこで、処理したいオブジェクトに優先度を格納する変数aを用意して個別に値を設定し、優先度つきキューに入れる。
その後にキューからaの大きい(小さい)順に取り出しつつ処理すれば、置き直さずに処理の順番を変更できる。
途中で順番を変更したくなったら個別にaを変えてやると良い。
Lite版でも配列を駆使して優先度つきキューを実現できれば、目的の処理はできる。
サンプル作ったから見てみて。GM7で見れる。
http://www1.axfc.net/uploader/Sc/so/162440.zip 分かりにくかったらごめん。
>>905 なるほど、優先度つきキューですか。
thx
凄い広いマップが作りたいんですがあまり重くなりすぎても困るので3000*3000程度のルームを複数繋げて、
そのマップ間を切り替えなしでさも繋がってるかのように移動させたいのですが可能でしょうか
以下のような感じです
☆プレイヤー
□○ルーム1、ルーム2
■●視野
□□□□□ □□□□□○○○○○
□■■■□右に2マス移動 □□□■■●○○○○
□■☆■□ → □□□■☆●○○○○
□■■■□ □□□■■●○○○○
□□□□□ □□□□□○○○○○
>>907 複数のルームを同時に表示するということはできない。
room transitionを使って、ルームの間をなめらかに切り換えるってことはできるけど。
ルーム自体が大きくても、ビューの外にあるインスタンスを無効化すれば
そのインスタンスは存在しないことになるから、処理を軽くできる。
instance_deactivate_regionのところを調べれば例が出てるよ。
GMで構造体を二個作って中身を同期させる方法が分からない
どうすれば出来るのでしょうか
構造体なんてあったっけ?
ds_listとかのdata structureのことだったら、GM7からはコピー用の関数が用意されてる。
それより前のだったら、片方から一個ずつ読んでもう一方に移し替えていくしかない。
queueとかstackだと、読むことで中身が変わっちゃうからもう一工夫いるけど。
例 (A)ds_list(B)ds_listapを用意して、
どうにかして(A)ds_listの中身を(B)ds_listにコピー出来ないものかと
>>910 > ds_listとかのdata structureのことだったら、GM7からはコピー用の関数が用意されてる。
勉強になります
>片方から一個ずつ読んでもう一方に移し替えていくしかない。
成る程 やってみます。
ds_list_replaceの使い方がいまいち分からない
ds_list_replaceのvalueって変数は使えるの?
ご教示お願いします
たとえばlist_aの中身が (A, B, C, D, E) ってなってる時に
ds_list_replace(list_a, 1, X) とすると、2番目のBがXに置き換わって
(A, X, C, D, E) となる。最初の要素が0だから、posを1にすると2番目ってことに注意な。
replaceの場合、すでにその場所に要素があることが条件となる。
(上の例だと、posに5以上の値を指定しても何も起こらない)
リストのコピーが目的なら、一度全部消してから追加し直す方が早くて簡単かな。
ds_list_clear(list_b); // 移す先のリストをクリア
for (i = 0; i < ds_list_size(list_a); i += 1) {
ds_list_add(list_b, ds_list_find_value(list_a, i)); // list_aから読んでlist_bに追加
}
>>914 有難うございます!
これを参考にして頑張ってみます。
>>908 ありがとうございます
これは便利ですね
1つのオブジェクトに当たり判定を2つ以上つける、簡単な方法はありますでしょうか
面倒な方法でしたらいくつか浮かぶのですが当たり判定が四角形などの単純な形ではないので
マスク画像を2つ用意する程度の事で出来ないでしょうか
>>917 一時的にマスクを取り換えて判定するというのはどうか
mask_index = 別のマスク;
inst = instance_place(x, y, object_a);
if (inst) {
// 衝突した時の処理(接触したインスタンスのidはinstに入っている)
}
判定が終わったらmask_indexは元に戻しておく。(初期値は-1)
この方法だと複数のインスタンスが接触していても
そのうちの一つに対してしか処理できない。
複数処理したい場合は、with文で立場を入れ替えて判定してやればいい。
mask_index = 別のマスク;
with (object_a) { // object_aの全インスタンスをループ
if (place_meeting(x, y, other)) {
// 衝突した時の処理
// withの中では衝突したインスタンスがself、
// 元のインスタンスがotherと立場が逆になっているのに注意
}
}
このツール外部ファイルの操作みたいな事出来る?
例えば簡単なとこで読み込みダイアログを表示させたりD&Dさせて読み込んだファイルのパスを取得、パス指定で他のフォルダに移動とかコピーとか削除とか
>>919 「読み込みダイアログを表示」「パス指定で他のフォルダにコピー・ファイルの削除」は対応する関数があるから簡単にできる
「パス指定で他のフォルダに移動」も、文字列をいろいろと処理すればそれっぽいことはできるかも
D&Dの処理については、画面にファイルを持っていっても禁止マークが出るから無理
「読み込んだファイルのパスを取得」はできるけど
>>3の一番下にヘルプファイルの和訳があるからそれ見ながら考えると良いよ
>>920 ありがとうございます。試してみます
D&Dは例として挙げただけで使えなくても特に問題はなさそうですので大丈夫です
GameMakerのレジストはウェブマネーじゃ出来ないものかな…
924 :
名前は開発中のものです。:2010/10/27(水) 21:35:48 ID:8+r9IUjA
スルガ銀行のでVISAデビットカード作ればいいじゃない
審査ないんだしさ
今まで気になっていたけど
今でもGameMaker5.3Aってレジストは可能なの?
>>926 >>3の一番上(英語)に書いてある
GM8以外はもうレジストできないらしい
>>927 > GM8以外はもうレジストできないらしい
/(^o^)\ナンテコッタイ
って事はGM8をレジストしても過去のGMのキーはついてこないのか?
>>929 GM7の頃からキーの互換性がなくなったと聞いたぞ
まじかよ
そもそもGM8なんていつの間に出てたんだ
GM6から移ったら何もかもがわからなくて憤死しそう
物凄く早く移動するオブジェクトと衝突の判定を作りたいのですが上手くいきません
早すぎて中間を飛び越して移動してるようで、その中間に他のオブジェクトがあっても判定を受け付けてくれません
"←"移動オブジェクト "★"他オブジェクト "□"隙間
←□□□←□★□←□□□←□□□←□□□←□□□←
このような感じです
視覚的に飛び飛びでも構わないのですが内部処理的に隙間なく素早く移動させるにはどうすれば良いでしょうか?
よろしくお願いします
GameMakerとMultimediaFusionの比較してください
>>932 5→6で大きく変わったけど、6→7→8は基本的に上位互換だから
そんなに使い勝手は違わないはず
>>933 簡単にやるならcollision_lineで判定すればいい
オブジェクトの大きさを考慮に入れるなら、move_contact系で
何かにぶつかる手前まで動かしてから、place_meetingで進行方向を見るとか
>869あたりからの流れが参考になるかも
936 :
933:2010/11/01(月) 18:15:47 ID:Eo37ucri
>>935 ありがとうございます。collision_lineを試してみたところそれっぽい物が出来ました。
現行のスレも確認せず申し訳ありませんでした
規制来てる?
操作可能なオブジェクトの座標を正面に取るように回転しつつ、正面にのみ弾を発射出来るオブジェクトを作りたいのですが
回転後の正面のちょっと前の座標に弾を生成したとして弾オブジェクトの方にも回転後の角度に応じた方向に飛んで貰わなくてはならなく、
どうしてよい物やらわかりません。アドバイスよろしくお願いします。
10/29に発売された『The Game Maker's Companion』のebook版を買ってみましたが、ソース無いみたいです.
多言語対応まだー
>>939 自レスですが、問い合わせたらすぐにDLのリンク送ってきてくださいました。
やっぱりCDのリソースも付いてるみたいです。
>>938 的外れだったらゴメンナサイですが、GameMaker7のExampleフォルダの『space cleaner』を参考にするのじゃイカンの?
>>942 GM7に参考になりそうなサンプルがあるのですか
GM6離れが出来ないでいるのですが決心がついたら確かめてみます。ありがとうございました
>>943 いや、GM6にもAsteroidっていうのがあるね。
>>944 どうもGM6の方もGM7の方も課金版じゃなきゃ動かないようで…
facing_directionとやらが肝だというのは何となく分かったのですが、それ自体が課金版でなきゃならないようですし
いつか課金するまでお預けとします。ありがとうございました。
ゲーム作りは数ヶ月〜数年はかかるものなんだから
2、3000円くらいの出費は安いものだと思うんだけどなー
そのくらいの金をケチって、膨大な時間をかけて作るゲームの出来を落とすなんてもったいないよ。
GM8しか課金出来なくなってるみたいなレスあったがあれは何かの間違いだったの?
MMF2の日本語版発売したところ、GameMakerの日本語版も発売してくれないかな
GameMaker6ってWindows7非対応?
インスコは出来たけど、ショートカットをクリックしても起動しない
GM6はVista以降非対応
>>952 やっぱりそうか蟻がd
日本語化されたヘルプがあるからGM6使ってるけど、Windows7で使おうと思ったらGM8にしないとダメかな
7 使ったこと無いから詳しく分からないけど
directx 9.0c 以前を動作させるランタイムを入れて
互換モードでやったら動いてくれそうな気はする
GM6のPro版なんて流れてんのか
よくもまあそんなマイナーな物が流れてるもんだ
>>956 英語圏の連中は視野が狭いから旧バージョンを使ってる奴は割れ厨ぐらいしか思い当たらないのかもね。
なにせ公式が「ネットで一番多用されてるのは英語だから英語で作れよイエローモンキーどもがww」って態度だからなぁ。
せめてUnicode対応してればもっとたくさんのユーザが金落として儲かったかもしれないのに。
とりあえず使いやすさと機能でGMに匹敵するソフトは他にないっぽい。MMF2はRPGツクール的すぎて逆に使いにくいし、仕事の息抜きにやるにはDXライブラリですら煩雑すぎる。
GM9でUnicode対応してくれれば即買うんだけど多バイト文字は相手にしないって公式が言ってしまってるからなぁ。
コードを書くことに抵抗のない人なら、下手なGUIよりコード書くほうが快適だからなぁ
俺はGM7Proを使ってるが、GM7でも色付け処理が遅かったり、漢字変換した後に変な半角スペースがおまけで大量についてきたりする。
だから、長いコードを書くときや日本語コメントを多用するときは、
別のテキストエディタにコピー&ペーストしてそっちで編集してる。
エディタ登録すると逆に使えたものじゃなくなるから登録してないし、リソースの色付けができないけど。
この方法でGM8の日本語の問題を解決できないかな。
ちなみに使ってるエディタはNoEditor。色付け用のキーワードファイルを自作して、独自の拡張子.gmscrを設定して使ってる。
コードをテキスト形式で個別に保存しておくこともできるし、俺の中ではこれが最適解だ。
変なスペースは、Enter押した=改行したと思い込んでオートインデントしてるっぽい
Enter以外の方法で確定すれば出ないよ。入力しづらいから結局コピペするのが早いけど
GM8のコードエディタは日本語貼り付けると化け化けで読めなくなるけど、
化けたのをそのままコピーして他のエディタに貼り付ければ一応元に戻るな。
俺はエンターキーの代わりに半角/全角キー使ってる
公式のリソースのページに『The Dude's Library Final』っていうライブラリがあるけど
コレ使ったら未レジストverでも3Dのゲーム作れる感じ?
ライブラリってGMLの関数をGML抜きのアクションで使えるようにしてるだけじゃないの
例えば標準アクションセットには無いTest Variable型のpoint_distance(x1,y1,x2,y2)を追加するとか
つまりそのライブラリに3D機能用のアクションがあったとしても、PRO用の関数だからLITEでは使うことができない
と思う
GM7以降は、ライブラリもExtensionの一部になったから
Pro持ってないとそもそもインストールできないんじゃなかったかな。
GM6のがどうだったかは、ライブラリビルダ残ってないから確認できないけど
たしか、各アクションに「レジスト版専用」ってマークすることができたから
それをやられていたら未レジスト版では使えないはず。
仮に使えたとしても、>963の理由でエラーになると思うけど。
GMが日本語版として日本に進出するといいな
日本語版ってのも考え物だなあ
もちろんあった方がいいし欲しいけど
MMF2日本語版の惨状を見ると…
公式が日本語(2バイト文字)に対応、日本語化に対応とかの方が安心な気もする
GMって全てが英語だからって事よりも、日本語を使えないって事の方が圧倒的に苦しいんだよな
実際使っててツール自体が英語で不便だと感じる事はないしね
表示出来ないってのは困り物だけど
よこしまさんのサイトにjFontMakerの第二水準対応版とαチャンネル対応版もアップされてたのか
誤って消してしまってたから助かった
あとは第二水準対応でαチャンネルつきがあれば完璧と思ったけど、さすがに望み過ぎだろうか…
と、話題をぶった切ってしまったようだすまん
しかしGameMakerが2バイト文字に対応しない以上、jFontMakerが頼みの綱だよなあ
>>967の言うとおりツールが英語なのは慣れでなんとかなるけど、表示できないのだけはどうにもならない
自分にもツールを作る力があれば……orz
初心者講座の動画だとExecute Codeで開くエディタで"MSゴシック"って打ってるけど
GM8だと出来ないんだな
メッセージの出力自体はちゃんと変わったけど
GM8のsprite_collision_maskの引数、ヘルプには
sprite_collision_mask(ind,sepmasks,bboxmode,bbleft,bbright,bbtop,bbbottom,kind,tolerance)
って書いてあるけど、
sprite_collision_mask(ind,sepmasks,bboxmode,bbleft,bbtop,bbright,bbbottom,kind,tolerance)
じゃねぇかクソが
972 :
名前は開発中のものです。:2010/11/26(金) 22:41:17 ID:fgwYSKjx
流れぶった切ってたらすまん。
GmameMaker5.3Aで作ったゲームはWindows7で安定して動作するのでしょうか?
連投&上げすまん
そういやGM5をWindows7でつかってて不具合に遭遇した人っている?
たとえば、『ゲームを終了させたのにタスクマネージャでみたらゲームのプロセス残ってやがる』とか
みんなゲームのBGMはどうやって流してる?
>>974 よこしまさん製作のbGMでmp3かogg形式のを流してる
煉獄庭園とか有名どころの使わせてもらってるな
ぐぐれば色々出てくる
978 :
974:2010/11/28(日) 21:26:08 ID:ZZ2KHDKJ
>>977 > 煉獄庭園とか有名どころの使わせてもらってるな
なるほど 参考になります