【2D】ゲーム作成ツールGameMaker part4【マンセー】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/04/23(木) 08:11:08ID:iAS0afeL●本家(英語)
ttp://www.gamemaker.nl/
●GameMaker Japan - 非公式情報サイト(日本語)
ttp://gamemaker.main.jp/(現在一時閉鎖中)
前スレ
【2D】ゲーム作成ツールGameMaker part3【マンセー】
ttp://pc11.2ch.net/test/read.cgi/gamedev/1210437707/
0474名前は開発中のものです。
2009/10/11(日) 10:29:22ID:gVfZj0xnbmpの画像を10枚追加してみたり、256色フルに使ったgifを10枚追加してみたり実験しましたが
白一色1000*1000のgif画像を10枚追加した場合と、メモリ使用量はまったく変わりませんでした
GMは減色や画像の軽量化などまったく無意味で、ただ画像の縦横のサイズのみに依存するのでしょうか
0475名前は開発中のものです。
2009/10/11(日) 18:10:28ID:yhSo2Kg3俺は仕組とかわからんが、本当ならイベント絵とか入れにくくなるなぁ
0476名前は開発中のものです。
2009/10/11(日) 18:43:47ID:rJ+6eFS4簡単なランレングス圧縮はしていると聞いたから、白一色と複雑な画像では
gmファイルやexeのサイズに差が出るかもしれない。
でも、実行時にはメモリ上にベタのビットマップで展開されるはずだから
結局メモリ使用量は変わらんと思う。
0477名前は開発中のものです。
2009/10/11(日) 19:02:33ID:gVfZj0xnチマチマと減色しても、メモリ的にはまったく意味がないということですね。
容量的には数十KB軽量化させたところで大した違いはないし
気にせずPNGでも使っちゃった方いいのかな
GM8ではPNGが完全サポートされるそうだけど、せめてBMPではなくPNGにしてくれれば
かなり軽量化されると思うんだけどなー
そこらへん早く8の情報が欲しい
0478名前は開発中のものです。
2009/10/11(日) 19:08:05ID:gVfZj0xn0479名前は開発中のものです。
2009/10/11(日) 22:40:21ID:9H0VFjWv↑
bGMの使い方
画像は表示されんがまぁなんとかなるだろう
0480名前は開発中のものです。
2009/10/12(月) 00:43:46ID:Yf0rwGMOデフォでogg対応せんかのぉ…(´・ω・)
0481名前は開発中のものです。
2009/10/13(火) 11:39:19ID:k4QiVC+d検証乙。
俺は数百枚の画像ファイル使ってるから、スプライト系は殆ど外部で管理してる。
スプライトのロードと破棄でもメモリ食うけど、大きい画像一枚GMに入れることに比べれば誤差の範囲だ。
それで思ったけど、100程度のインスタンスに200程度の変数を定義すると
理論上は100*200*8 = 160kのメモリを使うのか。
今まではこの変数全部txtファイルに書き込んでおいて、
特定のインスタンスが必要なときのみそれを読み込んでたけど
これってもしやかなり無駄だよな…。
画像ファイル一枚節約した方が全然効率的そうだ。
配列がどの程度容量食うかはテストしてないけど。
0482名前は開発中のものです。
2009/10/13(火) 12:29:36ID:cOJqt8LB俺もspriteaddで画像読み込みしないとダメか
ところで、スプライトのロードと破棄でメモリ食うってどういうこと?
スプライトを破棄してもメモリのなにか残るの?
0483名前は開発中のものです。
2009/10/13(火) 15:07:47ID:lHAcX872と思ってたが違うのか
0484名前は開発中のものです。
2009/10/13(火) 17:44:59ID:KdDxZr1Fゲームだと実行中にガベージコレクション発生すると、そのとき速度が落ちるから、
普通は自動的にガベージコレクションされない仕様なのが多い。
GameMakerがどういう仕様かは知らないけどね。
0485名前は開発中のものです。
2009/10/13(火) 21:29:42ID:4QV/eOoefor (i = 0;i <=1000; i+=1)
{
test[i] = sprite_add(...);
sprite_delete(test[i]);
}
0486名前は開発中のものです。
2009/10/13(火) 21:32:50ID:4QV/eOoesprite_delete();を使わない限り、スプライトのメモリは開放されないよ
sprite_addでローカル変数にスプライトを入れてたなら別かもしれないけど
0487名前は開発中のものです。
2009/10/13(火) 23:15:10ID:lHAcX872てことは
sprite_addじゃなくエディット画面でオブジェクト作ってるヘタレな俺は
sprite_deleteをちゃんと実行しないといかんわけか
でもGML(sprite_add)を使う人もsprite_delete使うよね?あれ?
すまん、混乱してきたorz
0488名前は開発中のものです。
2009/10/14(水) 00:41:38ID:bv2mAVIJ起動時にすべての画像がメモリにロードされて、終了するまで開放されることはない。
よく言われるPreloadはあくまでビデオメモリに落とすかどうかで
これにチェックが入っていようがいまいが、メインメモリにはすべて落とされる
使わないスプライトをメモリに落としたくない場合は、exeの外に画像ファイルを用意しておき
必要なたびにsprite_addなどで読み込ませるしかないみたいだ
そして、もちろん必要なくなったらsprite_deleteでスプライトを削除してやることを忘れずに
これらの一連の作業は、ある程度GMLを理解してないとキツイね。
ただ、小規模なゲームならば、メモリはそんな気にしないでガンガンスプライトを作っちゃっていいと思う。
GMLを使わないなら、そんな大規模なゲームじゃないでしょ。
0489名前は開発中のものです。
2009/10/14(水) 00:42:51ID:bv2mAVIJただ、また使う際にはsprite_addで入れ直してあげないといけないけど
0490名前は開発中のものです。
2009/10/14(水) 00:51:50ID:GGZRIxG7なるほど、何となく分かったかも
丁寧な説明ありがとです
頑張ってGML勉強しようかのぉ
0491名前は開発中のものです。
2009/10/14(水) 05:29:38ID:RnMcuV0Dスプライトのロードと破棄でメモリを食うってのは、sprite_add(...)で外部からメモリ内にスプライトを読み込んだ後、
数ステップ後にsprite_delete(...)でそのスプライトを破棄すると
スプライトを読み込む前よりメモリ使用量が若干(16kBほど?)増える現象のことを指してた。
上昇量はテストする度に異なったりするから、環境依存なのかもしれないけど。
詳しい仕組みは知らないけど、>>485のテストは1ステップ内で行ってるから状況が少し異なるのかも?
検証してみる価値はあるか。
0492名前は開発中のものです。
2009/10/14(水) 07:48:51ID:YxYD41xX0493名前は開発中のものです。
2009/10/14(水) 17:24:39ID:GGZRIxG7てか皆の話色々平均すると、台詞表示するときって
「全台詞スプライト用意」より
「a〜z、あ(ア)〜ん(ン)、あと諸々分の小さなオブジェクト沢山作って台詞作り」のがいいのかな
(台詞量にもよると思うが)
前日本語ファイルで「オブジェクトは少ないのがいい」だけ鵜呑みに
してたからそうしようとは思わんかったのよね
0494名前は開発中のものです。
2009/10/14(水) 18:48:17ID:133VTP3Gメモリを解放しても、そのメモリがすぐシステムに返却されるとは限らない
(次にメモリが必要になったとき再利用するためにとっておくから)
add→delete→add→delete…と繰り返しても使用量がどんどん増えたりせず
一定範囲でとどまるようなら、ちゃんと解放されていると思っていいんじゃないかな
>>493
スプライトを文字数分用意するにしても、オブジェクトは一個でいいだろ。
Drawイベントでスプライト組み合わせて文字列描画させればいい。
もちろんスプライト一個描画するよりは遅くなるし、
文字数分のスプライト用意する分手間がかかるから
(パフォーマンス+開発効率)とメモリ消費のどっちをとるかのトレードオフになるな。
0495名前は開発中のものです。
2009/10/14(水) 21:42:30ID:GGZRIxG7文字列組み合わせるつもりではいたけど、
それが沢山のオブジェクトである必要はないのか
gifとか忘れてた俺アホスwww
そうだよね、エディット画面でできることだよねorz >一個
確かに台詞自体を用意する方が早いねぇ、楽だし
まぁ自己満クオリティな間は効率をとるのがいいかなぁ
とりあえず完成させるのが大事だし
0496名前は開発中のものです。
2009/10/14(水) 22:00:33ID:GGZRIxG7「台詞一個」と「台詞内の文字数分のオブジェクト(がroomに存在)」の比較だ
ま、でも後者は管理・労力が大変だし、結局前者が無難か・・・
0497名前は開発中のものです。
2009/10/14(水) 22:27:53ID:bv2mAVIJ試してみたけど、追加→削除前に比べてメモリが増えたと思ったら、今度は減ったりした
そして同じ動作を何回も繰り返していくうちにメモリの変動が安定してくる
0498名前は開発中のものです。
2009/10/15(木) 02:52:17ID:LmGjEFod>496
よこしまさんのmbtextを使えば?
台詞を後で推敲することを考えると、stringで台詞を用意してそれをmbtext_drawで描画する方が遥かに楽
台詞ごとにスプライトを用意していると、台詞が増えたときに挫折しそう
ここで少し時間を投資してmbtextの使い方を覚えた方がいいと思う(使い方って言っても簡単だし)
それと、>494の言っていることはgifともエディット画面とも関係ない
0499名前は開発中のものです。
2009/10/15(木) 10:25:42ID:qb9kY2ep別に関係なくはないだろ
0500名前は開発中のものです。
2009/10/15(木) 15:40:28ID:Wyrl5rE90501名前は開発中のものです。
2009/10/19(月) 21:40:12ID:IlnPQ80k新しいグラボだと、5.3AはDirectXの機能オフにしないと15フレームしか出ないんだよなー。
0502名前は開発中のものです。
2009/10/19(月) 22:50:53ID:FNTjSUVFただでさえ今まで固定でやってたブレンディングやアルファテストがシェーダになっているのに
固定機能を廃して全部シェーダになってしまった
効率よく働いてくれることを期待しないほうがいい
むしろ悪化する
0503名前は開発中のものです。
2009/10/20(火) 09:38:45ID:c6RaFjAq流したいところで音楽が微妙にずれたり画面が処理落ちしてるのに音楽が平常に流れるせいでずれが発生して困ってます。
0504名前は開発中のものです。
2009/10/20(火) 15:25:37ID:6YHJoqljそういうわけで、いじる対象を逆転させてみた。
音楽の再生云々をいじるのではなく、
まず音楽を再生させて、
再生開始からの経過時間を利用してゲーム内の動作を処理する。
処理落ちに対応できる方法と考えると、こうしか思いつかなかった。
時間を利用してゲーム内の動作を処理するとは言ったが、別に全てを時間基準にする必要はない。
ただこの方法を使うときは、時間を基準に処理するものとフレームを基準に処理するものとを明確にわけること。
まぁこれは再生時間に合わせて流れるスタッフロール的な物をイメージして考えてみたんで、
複雑なものになると、どこまでできるかはデザイン次第、かな?
ちなみにこの例だと、時間を基準に流れているので、
例え処理落ちしても、ゲームの処理がしばらく止まっても、
再生開始から5秒経過したのなら5秒後の位置、10秒経過したのなら10秒後の位置に動かす、という仕組み。
0505名前は開発中のものです。
2009/10/20(火) 20:57:37ID:SLMjJuQOソースエディタ、draw_txtともに日本語通らないの確認した
(バグトラッカでも今後の非対応明言されてた)
日本語化はできないんだっけか。
0506名前は開発中のものです。
2009/10/20(火) 22:59:14ID:Rv9BzQJ5凄く初歩的な質問で申し訳がないのですが
大まかな動きのつけ方や操作方法はチュートリアルで理解する事はできたのですが
それ以上のものを作ろうとするとそれ以降は自分で虱潰し的にアクションを試すしかないのでしょうか
たとえばexe形式となっているソフト等を参考にしようとしても、開けませんよね
>>336で「公式のPlatformで検索すると参考になるものが〜」とありますが、確かに
このソフトにおける可能性は見出せましたけども、やはりexe形式で挙げられているから中身を見て参考にする事はできませんよね・・・
0507名前は開発中のものです。
2009/10/21(水) 01:33:15ID:Q98BhYv9まずマニュアルをじっくり一通り読もう!
そして小さい規模でもいいから自力でなにか作ってみること
だんだん出来ることが広がっていくはず。
0508名前は開発中のものです。
2009/10/21(水) 01:51:14ID:bzUL/ied急がば回れだ
0509名前は開発中のものです。
2009/10/21(水) 21:01:14ID:K7bGjyPlまあOSや言語、インターフェイスによってはフラグとかも言うが
何かを始めるときは、イベント元にする。
フラグを立てる。でもいい
こうすると、処理が始まってから別の処理が行われることが保証される。
最初の処理が遅れれば、後の処理もそれに合わせて遅れるだけだ。
0510名前は開発中のものです。
2009/10/21(水) 21:06:06ID:K7bGjyPlサウンドファイル再生をやめること。
昔ながらのサウンドプログラミングなら
メインスレッドとサウンドスレッドは平行して処理されるから
どちらかが遅れるともう片方も遅れる。
サウンドプログラミングは、インタープリタのように逐次発声だからだ
サウンドファイルだと、最初に読み込んでから鳴らすだけなので
それほどの負荷でないから遅れる・止まるってのは余程の負荷がかからないと起こらない。
昔は、サウンド構築のためだけのプログラマ、サウンドプログラマなんて職があったのだ
それと同じことをやればよい。
0511506
2009/10/21(水) 22:53:42ID:7kid7kXI一通りヘルプを見てみます
0512名前は開発中のものです。
2009/10/21(水) 23:30:57ID:K7bGjyPl・負荷を減らす
・動作必須環境を上げる
これくらいだろう
負荷を減らすのは以外に単純
別に走らなくてもいいような変なルーチンが走ってないか
妙に割り込まれてないか
ルーチンが走る順番は正しいか
無駄に複雑なルーチンでないか
これを完璧にこなしてもダメなら最低動作環境を上げるだけ
0513名前は開発中のものです。
2009/10/22(木) 03:15:18ID:QcCk0qNGプレイヤーをカメラが追っていく設定にして、そのカメラの座標?とか設定してやると
32,32以外でやると地震がおきたかのように画面がガクガクになるんだが
スクリプトとか必要なのか?
0514名前は開発中のものです。
2009/10/22(木) 03:17:32ID:QcCk0qNG0515名前は開発中のものです。
2009/10/22(木) 18:07:09ID:9bnTpD/dいつになったら
サイトは復活するのか。
0516名前は開発中のものです。
2009/10/22(木) 23:07:47ID:QcCk0qNG今2Dアクション作ってて手探り状態なんだけども
・左の壁にぶつかるとなぜかバウンド?して一歩ほど戻る
・向いてる方向に攻撃ができるようにしたい(現状だと一方方向、X+の方面にしか玉が打てない)
・ニコ動の解説動画みたけど、変数関係の応用方法がわからない
何が何発あたれば敵が死ぬとかのイベントの配置場所(弾のオブジェクトだとか敵のオブジェクトにだとか)がいまいちはっきりしてない
3時間ほど粘ってるんだけどもしかして俺がマニュアル見落としてたりするのかな
このスレ眺めててそういう類の質問を見ないから畏れ多い・・・
0517名前は開発中のものです。
2009/10/23(金) 01:25:24ID:x6bl6P0C公式で.gmkなりぐぐると幸せになるかも
俺はそれでどうにかしてる
0518名前は開発中のものです。
2009/10/23(金) 03:48:20ID:QbMhH9cOそれを半年続ければこのスレで言われていることは理解できるようになるんじゃないか
ちなみに向いている方向に攻撃をするには、弾を発射するオブジェクトのimage_angleと弾のdirectionを一致させればいい
弾の衝突判定イベントは敵オブジェクトに設定して、衝突ごとに敵オブジェクトのlifeを減らす
んでlife <= 0の時にオブジェクトを破壊、って感じだろう
このあたりは過去ログも参照するといい
0519名前は開発中のものです。
2009/10/23(金) 08:55:04ID:wQYLsPFRってよく聞くけどそんなに難しいかなぁ〜?
とりあえず俺はExample内ので幸せになった 2Dアクションのやつ
0520名前は開発中のものです。
2009/10/23(金) 16:11:44ID:vXjEA+RQ最初は、誰もが効率の悪いコードを書く。
if()
if()
if()
for()
のように。
例えるなら、ifの数を減らすのが上級者である。
また、if( Fuckintosh == 0 )とかは論外。
上級者は
if( !(Fuckintosh) && ((FuckOSX >> 3) += FuckMac) << 6 || (FuckMac & FuckJobs) >> 2 )
などというように書く。
激しく読みづらいが。
0521名前は開発中のものです。
2009/10/23(金) 19:08:08ID:BKp0y/1Tそこまで出来るようになったらGameMaker卒業してC++に行ってると思うぞw
C++やってて息抜きでGM使ってる自分が言うのもアレだが
0522名前は開発中のものです。
2009/10/23(金) 19:13:04ID:wEq8MK8l他の言語だったら正しいと言いたいところだが、GMLだとifの数を減らすことが必ずしも効率がいいとは言えないかな。
ヘルプ>The Game Maker Language (GML)>GML Language Overview>Expressions から抜粋
Please note that, contrary to certain languages, both arguments to a Boolean operation are always computed, even when the first argument already determines the outcome.
例として、if (false && true && true && a)を使う。
他のプログラミング言語が上のコードを処理するとき、
最初のfalseを見た瞬間に他を見ることをやめる、ということがある。
何故なら、他の変数が何であれ結果はfalseと決まっているから。
だがGMLの場合は他の言語と違って常にチェックされる。
例え、最初のfalseの時点で結果はfalseと決まっているとしてもだ。
(まさに「even when the first argument already determines the outcome」の部分)
従って、
@if (a && b)
Aif (a)
if (b)
の二つを比べた場合、
@の場合は、aもbも常にチェックされるが、
Aの場合は、aを満たさないとき、bのチェックが省かれるため、
Aの方がいい、ということになる。
よりわかりやすくすると、if (a && b && ......)と条件が大量にある場合を想定してみれば、
大量の条件を全てチェックするのと、最初の条件を満たさないときに処理をやめるのと、
どちらが効率がいいかがわかるだろう。
勿論、処理よりも行数の効率を重視したいというのなら話は別だが。
まぁ、効率を考えるレベルのプログラマが処理の効率を捨ててまで行数に拘るとは思えないけど。
0523名前は開発中のものです。
2009/10/23(金) 21:42:14ID:aDXhBeYlやっぱGMって直感的な構成がやり易いな
俺のような初心者にはありがたいことだ
0524名前は開発中のものです。
2009/10/23(金) 22:32:30ID:x6bl6P0Cもしかして国外じゃめっちゃ使われてるとか?
俺の比較してる対象がHSPだからそう思ってるのかもしれないけど
もしかしてHSPに比べると自由度がめっちゃ低いのかな・・・
このツールで作成されたゲームとかアイワナビーザガイとニコニコアクションくらいしかしらない
0525名前は開発中のものです。
2009/10/24(土) 00:37:14ID:/xeTG7ka敵オブジェクトを地面に着かせたいのと、左の壁あたってもはじかれないようにしたいんだがどうすればいいんだ
0526名前は開発中のものです。
2009/10/24(土) 01:31:35ID:6tGvwTyZだからサンプルで勉強しろとあれほど…
てか逆に何故バウンドするんだ
0527名前は開発中のものです。
2009/10/24(土) 02:49:25ID:iUo6fmPV今地道に勉強しているが、具体的な例を用いた言い換えがないとなかなか頭に入らない
誰かに>>520の例をifやforに戻してみて貰えるとすごく嬉しいんだが…
0528名前は開発中のものです。
2009/10/25(日) 04:07:52ID:VVt17ygj0529名前は開発中のものです。
2009/10/25(日) 04:16:31ID:VVt17ygj0530名前は開発中のものです。
2009/10/25(日) 23:36:50ID:Y6pUx3+I0531名前は開発中のものです。
2009/10/26(月) 19:35:46ID:2tTUIu1T5.3Aとか圧縮すると1/10になったりもするのに、6は再圧縮しても殆どサイズかわらないや
0532名前は開発中のものです。
2009/10/26(月) 23:08:40ID:QL6sd3s/移動可マスをランダム配置→上下左右に移動可が無い移動可マスは左右どちらかに移動→(ryとかもう書いてる内に混乱してきた
まあそんなこんなで作ってますがどうしてもマジなランダムダンジョンになってしまい、
トルネコやシレンの様に曲がった道があってその先に部屋があって〜みたいなゲームらしい物になりません
よろしくお願いします
0533名前は開発中のものです。
2009/10/26(月) 23:16:22ID:58AaIO4iこことか参考にしてみたらどうだろう
ローグライク、マップ生成とかで検索したら結構出るよ
0534名前は開発中のものです。
2009/10/27(火) 00:39:03ID:SmcAvcZxあとはミックマンXとかナイトメアスフィアなんかが評価高い
両方とも同じ作者だけど
0535名前は開発中のものです。
2009/10/27(火) 17:38:28ID:XGT5kS6x最初に部屋を配置して、それらをつなげるように道を作れば?
道自体も一見ランダムに見えて数パターンを組み合わせてるだけだと思う。
0536名前は開発中のものです。
2009/10/27(火) 23:28:25ID:mujP0Qvl移動アニメーション作成する前は普通に移動しながらの攻撃ができたのですが
移動アニメーションをつけてからだと、移動しながら攻撃ができないどころか
移動してからだとなぜか攻撃のキーがきかなくなります、イベントに問題があるのでしょうか
左は
<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
右はこれの逆です
0537名前は開発中のものです。
2009/10/28(水) 02:17:22ID:wMhLqr8Iそれをどうすれば撃てるようになるかなんですよね・・・ちなみに5.3です
0538名前は開発中のものです。
2009/10/28(水) 19:24:48ID:W+fx9TAlこういうとき、そこらにある売りモンのゲームなら
割り込みで受け付けるから、いついかなるときでもボタンを押したらそのとおりにできる。
もちろん、押しても受け付けられないようにもできる。
ダッシュから一定時間はボタン押しても何も出ない、なんてのはまさにマスキングによる割り込み無視だ
GMが割り込みできるかどうかは知らん
ただDirectInputは、常にボタン押したら割り込みとして受け付けている。
あとはゲームエンジンがそれを無視するかしないかだけだ
0539名前は開発中のものです。
2009/10/28(水) 21:07:01ID:wMhLqr8Iなるほど、仕様な訳ですか・・・
走りながら銃うつゲームあった気がするんだけどなー
0540名前は開発中のものです。
2009/10/28(水) 21:43:02ID:Hbmt8JBNMultimedia Fusion(クリック&プレイの系列)の国内版が出るそうだ
ttp://www7.atwiki.jp/mmf2/
GMもこういう展開あったらいいのに
0541名前は開発中のものです。
2009/10/28(水) 21:54:10ID:W+fx9TAl「このアニメーションはここからここまでだから これを終えるまでは殴るのをやめない!」
などと頑固である場合は
アニメーションを細切れにしてしまえばよいのだ。
それなら、アニメーションの合間合間でボタンの受け付けがなされる。
まあ本来こういうのはゲームプログラミングとしてあってはならないこと。
単純に負荷になるだけだからだ。
だから一番いいのは割り込み
でもできない、そういう機能がないってんならしょうがない。
たいていは割り込みに相当する機能があると思う
組み方にクセがあるにせよ
0542名前は開発中のものです。
2009/10/28(水) 21:57:41ID:Hbmt8JBN攻撃ができないんだから、攻撃部分のスクリプトに問題があるんじゃない?
うpしたらわかるとおも
少なくともアニメ中にイベントがキャンセルされるようなことはない。
そんななったらまともなゲーム作れんわ
0543名前は開発中のものです。
2009/10/28(水) 23:19:15ID:HABZAlfr0544名前は開発中のものです。
2009/10/29(木) 00:53:02ID:oT5avUlp例えば全てキーボードイベントで処理すれば問題なく作れるはず
if keyboard_pressed(vk_right)
sprite_index = sprite_left; //左移動用のスプライトに変更
x += 5; //オブジェクトを右に5ピクセル移動
if keyboard_check_pressed(vk_enter)
instance_create(x, y, object); //自機の位置にオブジェクト(弾とか?)を生成
みたいな
GMLで書いたけど、そこは適当に翻訳してくれ
0545名前は開発中のものです。
2009/10/29(木) 00:53:50ID:oT5avUlpkeyboard_pressed(vk_right)じゃなくてkeyboard_check(vk_right)だ
0546名前は開発中のものです。
2009/10/29(木) 17:08:47ID:WqxdblOH0547名前は開発中のものです。
2009/10/31(土) 21:46:27ID:xSvTmVCNsurface_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();
0548名前は開発中のものです。
2009/11/01(日) 00:17:41ID:NOlFRA2Mで、まず思いついた方法。
ニ度手間になるけど、sprite_create_from_surface() を使って、
surfaceに作った画像をスプライト登録し、そのスプライトを描画させるようにするといける。この方法は当然単一色ででsurfaceをクリアしておく。
手前でちょこっと実験してみたら、うまくいった。
ただし、元のフォントスプライトリソースがアンチエイリアス無しで作られている場合だけどね。
この理屈だと、
元のフォントスプライトリソースがアンチエイリアス+透過情報有りで作られてる場合、
surfaceに描画した時点で透過情報は失ってしまうことになる。
元画像のアンチエイリアスの効果を残したかったら、
surface から取り込んだスプライトリソースに対して、
sprite_set_alpha_from_sprite()をうまく使うなりして、
再度透過情報も加えないと綺麗に表示されない。(3,4度手間になることに・・・)
0549名前は開発中のものです。
2009/11/01(日) 11:20:44ID:NOlFRA2Mdraw_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();
とするとうまくいく。
0550名前は開発中のものです。
2009/11/01(日) 11:49:58ID:/eF20zDtsurfaceとcolor周りの関数だけ見て
そっちを見落としていた様です。
速度の面からもsprite_createは避けたかったので助かりました
日本語ヘルプだけじゃなく6.1のヘルプも読むようにしないとなぁ
回答ありがとうございました
0551名前は開発中のものです。
2009/11/08(日) 22:44:07ID:5mg8aONhLinuxでも動かせるし
じゃあな手前等
0552名前は開発中のものです。
2009/11/09(月) 08:18:16ID:pkWhHVK80553名前は開発中のものです。
2009/11/20(金) 20:43:26ID:WvDp0X0L長かった…
0554名前は開発中のものです。
2009/11/21(土) 13:25:52ID:xPzj28Xcよこしまさん乙
0555名前は開発中のものです。
2009/11/21(土) 21:07:04ID:p8joaSKx今度のGM人口の増加には重要なサイトだらかね
0556名前は開発中のものです。
2009/11/23(月) 14:39:30ID:413ChW8D復活しても反応が薄い不思議
0557名前は開発中のものです。
2009/11/23(月) 23:08:49ID:6hXkMHG70558名前は開発中のものです。
2009/11/24(火) 07:43:14ID:KcyDZMVf例えば32、64、96のいずれかを作りたい場合random(3)に32をかければ良い筈ですよね
random(10)の場合は1〜10までのどれか1つの数字になる、という考えはもしかして間違ってるのでしょうか?
是非とも解決法を教えて頂きたいです。よろしくお願いします。
0559名前は開発中のものです。
2009/11/24(火) 08:42:25ID:1s+aAVaxただ、random()から得られる数字は【0 ≦ X < 指定した数字】であることを忘れないこと。
つまり、32、64、96を作りたいのなら、
・random(3) (0以上3未満の少数を含む乱数)
・mod 1 (得た乱数を整数に)
・+1 (0〜2を1〜3に)
・×32 (略)
が必要。
0560名前は開発中のものです。
2009/11/24(火) 10:23:29ID:3GFA5FP40561名前は開発中のものです。
2009/11/24(火) 14:19:26ID:XCjir9GF日本のGameMakerの普及はこの人の功績が大きいよな。
以前アップされたアルファチャンネル対応mbtextと第二水準mbtextもアップされることを密かに祈ってる
0562名前は開発中のものです。
2009/11/24(火) 21:15:47ID://vR+Lo3roundだと0〜0.49までが0、0.50〜1.49までが1…となるので
0と10が他の数字の半分の確率でしか出ないよ。
(それに加えてGMのは>268でも触れてるように特殊な四捨五入だし)
やるならfloor(random())の方がいいね。
0563559
2009/11/25(水) 02:55:53ID:MHhJ/a8Gmod 1の代わりにfloor()で整数に。
0564名前は開発中のものです。
2009/11/25(水) 09:26:37ID:b3wcHD7lおつおつ
0565名前は開発中のものです。
2009/11/25(水) 20:56:30ID:LPznLx8oありがとうございます。
少数も出るのですか・・・納得です
0566名前は開発中のものです。
2009/11/29(日) 21:45:05ID:ISkoY1lU多分、修正は望めそうにない。あんなものが仕様だなんて。
地球にいる人間の約半分が英語を理解しているから問題ないなんて発言も。
頭おかしいんじゃないの。
0567名前は開発中のものです。
2009/11/30(月) 18:39:54ID:knPs2N+qオンラインのゲームも難しいながら作れると聞きました
こんな事を聞いてるうちは作ることは出来ないと思いますが
オンラインについてまとめてあるサイト等をご存知ありませんでしょうか?
0568名前は開発中のものです。
2009/12/01(火) 03:02:26ID:9rs+0kUH>The Game Maker Language (GML)
>Multiplayer Games
サイトではないが、必要なことは全てここにある。
0569名前は開発中のものです。
2009/12/01(火) 11:01:49ID:VDPjQk8Fヘルプだけでネット対戦PONGくらいはすぐつくれたから、
まずはつくってみると良いかもしれない
0570名前は開発中のものです。
2009/12/01(火) 18:26:02ID:1akKlTNuありがとうございます。
確かに難しそうですが思ってたより単純?みたいなので色々試してみます。
0571名前は開発中のものです。
2009/12/02(水) 12:26:05ID:cV+TWgBGマジで?
それじゃ日本語表示するゲームが最悪に作りづらいな
テキストは全部外部ファイルで用意とかも無理じゃないけど、
日本語ゲームを作る敷居が上がるな
0572名前は開発中のものです。
2009/12/02(水) 19:59:14ID:tdErPOPp0573名前は開発中のものです。
2009/12/03(木) 20:13:30ID:RNyFehpq■ このスレッドは過去ログ倉庫に格納されています