GameMaker 日本語掲示板

views
17 フォロー
1,131 件中 241 から 280 までを表示しています。
1

マルチプレイについては知識ゼロなので解決方法を示せないのですが、
ここで指摘されている事項についてはもう確認されましたか?
https://forums.opera.com/topic/53053/exception-throw-see-javascript-console-error-on-opera-gx-gxc
https://www.reddit.com/r/gamemaker/comments/q358mk/trouble_compiling_with_opera_gx_as_target/

9

何度も説明不足ですみませんでした!!!!めっちゃ助かりました!!!!!!!!!!!!!!!!!!

8
asa 2024/01/15 (月) 15:00:29 修正

画面をスクロールさせる(カメラを動かす)には、
view_portではなくcamera viewの位置を動かします。

// Stepイベント
viewx += 1;
camera_set_view_pos(view_camera[0], viewx, viewy);

こんな感じです。

playerが所定の位置まで行ったら操作受付を止めて自動スクロールするには例えば下記のようになります
ロジックは一例ですのでご自分のやり方で書いてください
(roomのカメラのObject Followingがセットされているとカメラを自前で制御できないので"No Object"にしてください)
playerオブジェクト

// Createイベント
view_x = 0;
view_y = 0;
state = "walk";
view_w = camera_get_view_width(view_camera[0]);

// Stepイベント
if (state == "walk")
{
	if (keyboard_check(vk_right)) x += 5;
	if (keyboard_check(vk_left)) x -= 5;
	
	camera_set_view_pos(view_camera[0], x-view_w/2, 0);
	
	if (x >= 500)
	{
		view_x = camera_get_view_x(view_camera[0]);
		state = "auto_scroll";
	}
}
else if (state == "auto_scroll")
{
	if (view_x < 400)
	{
		view_x++;
		camera_set_view_pos(view_camera[0], view_x, view_y);
	}
}
7

リンク
操作しているキャラクターが所定の位置に行ったら、プレイヤーの追従&操作を止めて、view_portを動かす.....的な動きをさせたいです!分かりにくかったら、貼らせていただいたアンダーテールというゲームの動画の0:07~0:13の動きが正にやりたかった動きです!!何回もすみません!!

6

roomの全体が分かりました。すいません。
view_portを-1で動かしているので、画面に描画する範囲を左に動かしています。
その結果右に余白が出ているのだと思います

view_portを動かしているのはどういう動きをさせるためですか?

5

何度もすみません!!背景は実際こんな感じで続いてます!!画像1

4
asa 2024/01/14 (日) 14:30:47 修正

1枚目 伸びてない背景
2枚目 伸びてる
3枚目 伸びてる
4枚目 伸びないがroom外が映ってる
ということで、2~3枚目はおそらく、Clear Viewport Backgroundがオフになっていたから背景の残像がクリアされず、スクロールすると背景が伸びたように見えている状態だと思います。

4枚目の背景が切れているのはそこがroomの境界ではないですか?
room全体の作りが不明なので、その仮定で書きますが、
カメラを際限なくずっと動かしていったらroomの外が映り、4枚目のようになるはずです。
(スクロールを止めなかったら最終的に画面は真っ黒になります)
room外を映さないためには、roomの境界までスクロールしたらスクロールを止めるように処理する必要があります。

3

その他のルーム設定及び、オブジェクトのプログラムはこんな感じです!!
画像1
画像2
画像3
画像4
画像5

2

こんな感じです!一番左がview_xport-=1を実行しなかった場合で、真ん中(左)⇒真ん中(右)が実行した場合です!!
Clear Display BufferはすでにオンにしてあったのでClear Viewport Backgroundもオンにしてみたのですが、次は一番右のように背景が切れてしまいました......。画像1
画像2
画像3
画像4

1

スクショを貼れますか?

引き伸ばされた状態が不明ですが、
スクロールによって背景がない部分に残像が残りそのように見えることがあります。
その場合はClear Display BufferとClear Viewport Backgroundをオンにして毎フレーム描画をクリアすると解消されます

1

自己解決しました。ありがとうございます

1
生高橋 2023/12/23 (土) 20:09:28

今回からそういうのできるようになったんすね!

9
asa 2023/12/16 (土) 01:14:21 修正

2023.11.1.129

  • ルームエディターでカットコピーペーストはできました
  • Ctrl+矢印でピクセル単位で移動もできました
  • コードエディタでShift+Delで行を削除はできません。これは直ってないですね
  • カスタマイズしたスニペットがショットカットキーが効かなくなるのも直ってないですね
  • コードエディタで検索窓を出した状態でEsc(閉じる)が効かない
  • オブジェクトアセットを選択してroom内でAlt+クリックで配置はできるようになりましたが
  • Ctrl+Altでピクセル単位で位置を動かしてクリックで配置はできません
    (他は未確認)

とりあえず直近で言われたことだけ直した的な状態に見えます。

2

とても分かりやすい説明ありがとうございます!!助かりました!!

1
生高橋 2023/12/15 (金) 23:11:44

簡単なサンプルコードを書いてみました。
以下のコードを持ったオブジェクトを用意、ルームに配置して実行してみてください。

//Create Event
//表示する文章
text = "Hellooooooooooo";
//表示可能な文字数
index = 0;
//表示速度(フレーム)
textSpeed = 5;
//Step Event
//Enterを押したら再生
if(keyboard_check_pressed(vk_enter))
{
	//表示可能文字を0に設定
	index = 0;
	//アラームイベントをtextSpeedフレーム後に起動
	alarm[0] = textSpeed;
}
//Alarm[0] Event
//表示可能文字数を増やす
index++;

//表示可能文字数がテキストの文字数未満なら
if(index < string_length(text))
{
	//再度アラームイベントをtextSpeedフレーム後に起動
	alarm[0] = textSpeed;
}
//Draw Event
//テキストの1番目から表示可能文字数までの数を取得
var str = string_copy(text,1,index);
//それを表示
draw_text(x,y,str);

わからないことがあれば聞いてください。

8
生高橋 2023/12/15 (金) 22:39:55

2023.11のバグ修正アップデートが来ました!

ざっくり翻訳

次の内容が修正されました。
・ルーム エディタ: インスタンス レイヤー上のキャンバス アイテムのコピーが失敗するバグ
・間違ったマニュアルの内容に関して
・UI/UX: アセットまたはイメージ レイヤーの名前変更のさいショートカットコマンドがアクティブ化したままになるバグ
・ゲーム内: [macOS]buffer_save() が期待したファイルを確実に作成しないバグ
・ゲーム内: [Android] システムの戻るボタンとバックスペースキーが登録されないバグ
・ルーム エディタ: Ctrl + 矢印でインスタンスを正確に移動できなくなったバグ(2023.11.0)
・ルーム エディタ: ウィンドウを開閉するとインスタンスの貼り付けが停止するバグ
・ルームエディター: [タイル] SHIFT を使用してタイル ブラシの一部のみを選択できないバグ
・ルーム エディター: 他のインスタンスが同じ場所にあるとAlt+RMBが機能しないバグ
・ゲーム内: view_set/get_surface_id() が 2023.11.0 では機能しないバグ
・ゲーム内: 2023.11.0 ではマウスの左ボタンと右ボタンを同時に押すことができない場合があるバグ

詳細はGitHubより:https://github.com/YoYoGames/GameMaker-Bugs/milestone/9?closed=1

7
生高橋 2023/12/14 (木) 22:26:40 >> 6

それはえぐいっす

自分の場合はたまに、オブジェクトがルームに配置できなくなりますね。
なぜかルーム内のオブジェクトをカットやコピーすると謎のエラー画面が出現してその後直ります。
んで、時間がたつとまたこの現象が現れますね。

6

自分が作業する上で一番困ってるバグは
ルームエディターでカット、コピー、ペーストができないことでしょうか
これはしんどいって

5
生高橋 2023/12/14 (木) 15:17:37

長時間作業しているとラグがひどくなる現象がいまだに継続中です...

4

バグではない小さなことですが
インスペクタでインスタンスのCreation Codeを見るのにクリックの手間が増えて
Creation Codeへのアクセス性が悪くなりました。

3

キー操作の割り当て周りを根本的に作り直したという情報があり
他にも関連するバグがいろいろ見つかってるようです

2
サトヤガンジ 2023/12/11 (月) 16:15:53

shift + Delの行削除ができなくなるバグが発生中です('ω')

5

正に作りたかった処理です!!!!ありがとうございます!!!!

4

なるほど....ありがとうございます!!

3

asaさん、lizu さんありがとうございました!!解決できました!!😆

2

ーーーここは作成イベントであらかじめ製作しておくものーーー
serifu = "abcdefghijklm"
count=1;
display=1;
serifu2 = 0;

ーーーここから先をGUI描画でやるーーー
if(count<=13)
{
serifu2 = string_copy(serifu,1,display);//string_copy(表示したいもの,何文字目から,何文字目まで);

draw_text(200,200,string(serifu2));//string関数は、文字列として表示する場合に使用。

count   += 1;
display += 1;
}
else{//elseは上記のif文が当てはまらなかった場合。
//ゲームメーカーは、表示しつづけないと消えてしまう。なので13以上になった場合はここで表示し続ける。
draw_text(200,200,string(serifu2));
}

ーーーーーーーーーーーー
恐らく想定しているであろう処理に直してみました。
これで1フレームずつ文字を表示し、最終的にはすべての文が表示しつづけられるコードになっているはずです。
functionは後々serifuに違う文字を代入した場合に使いまわせるように定義したかったのかもしれませんが多少複雑な書き方が必要になるので省略しました。

1

リリースノートでの変更点の記載が、githubになりましたね。

コンパイル時間も実行時のパフォーマンスも向上してるそうなので早く試したいですが
致命的なバグ報告が無いかなど今ちょっと様子見してます。

1

undefinedと表示されるのは、moji()が何も返さない関数だからだと思います。
draw_text(200,200,moji()) で何かを表示するにはmoji()が何らかの結果を返す必要があります。

それとは違う問題になるのですが
serifu=ord("abcdefghijklm"); の部分で、
serifuの内容を表示するとどうなるか確認するといいと思います。
(ord()は渡した1文字の文字コードを返す関数です)

1
生高橋 2023/12/08 (金) 16:26:47

2023.11バージョンからこの問題は修正されたみたいです。

1

すみません!自己解決しました!
mask_indexという組み込み変数が存在していたのですね。

8

確かに主義主張を横に置いといて、「ドット絵風のイラスト」を扱うほうが作りやすさと製作難易度は低くなりそうですね。
厳密なピクセルパーフェクトは非常に手間と難易度が嵩み易いようなので、そういった点も考え直してみます。

7
生高橋 2023/12/01 (金) 18:50:17

asaさん理解で自分も理解してます。
もし追加であるとすれば、ゲーム解像度と画像素材を大きくしていくことですかね。
低解像度よりも高解像度のほうが歪みの影響を受けにくいので。

6

基本的にはあらゆる位置を整数で扱い、拡大率も整数倍になるように作ることが基本なのですね。
確かにシェーダーのような機能を利用して基礎システムを考えるのは私にはまだかなり早そうです。

丁寧に回答いただきありがとうございました。

5
asa 2023/12/01 (金) 16:56:15 修正

とりあえず今出ている歪みが直ったということでよかったです!

スケーリングについてですが、GameMakerでは初心者向けの解説記事が複数ありますが大変複雑で難しく、
私はGameMaker歴がだいぶ長くなった今も理解できていません。
あまりにもいろんな要素が絡んでいて複雑で、正直、私には難しいです。
ここで初心者がつまずくのはGameMakerとして何とかしようと思わないのか?と以前から不満に思っている点です。

という私が認識していることを列挙します。
あくまでいいかげんな理解でのものなので、ちゃんと理解してる人の詳しい説明を望みます!

  • 元画像に対して拡大率を整数倍にしないと歪む
  • 元画像が縮小される拡大率で表示するとどうしても歪みが目につく
  • 拡大縮小率は、変化中は少数でも止める時に整数になるようにする
  • 画像(オブジェクトも)の表示位置が整数になるようにする
  • windowサイズを変えられて歪むのを防ぐにはGame Optionでwindowのアスペクト比を固定する
  • シェーダーでピクセルパーフェクトでの表示を実装するのも1つの手

私が気にしてることはこんなところです。間違ってる点があれば誰か指摘して欲しいです。

再度お断りしておきますが、私はちゃんとした理解ができてないので、
他に詳しい方がいたらぜひ回答の投稿をお願いしたいです。

4

画像1
50*50pxの四角いテスト画像を横に並べてみました。

カメラ設定を改めて見直したところ、このroomの前のroomがviewportが960560になっていました。
ですので結果的に当該roomでは33%ほどの拡大がされていたようです。試しにviewportを1280
720に直してみたところ、基本的な歪みは治りましたのでここが原因だったようです。
(画像の縮尺は変更していません。オブジェクトのスプライト設定部分にインポートしてそのままです。)

ただ今回のタイトルはウィンドウサイズは自由に可変でき、かつカメラの拡大縮尺もかなり使うものになる予定です。
上記の設定でもやはりカメラサイズ動かすと、マシにはなりましたがドット絵の歪みは出てきてしまいました。

ウィンドウサイズの可変はともかくとして、ゲームの基本システムとしてカメラサイズの拡縮はどうしても必須になってしまいます。
中途半端な倍率では歪みがどうしても出るものだとは思いますが、その影響を軽減できる方法などはあるでしょうか?

追記(追記画像に気が付かなかったので適当な画像を使ってしまいましたが根本的な原因は判明したので省略させてもらいます。追加で必要でしたらまた用意します。)

3
asa 2023/11/30 (木) 19:40:57 修正

いくつか追加で教えてほしいのですが

  1. カメラなどの設定で拡大縮小表示させていますか?
  2. 元の画像を拡大表示させていますか?(image_xscale, image_yscaleなどで)

あと、試しに50px*50pxのドット絵(ピクセルが荒れてないものならなんでもいいです)を、同じように表示させた結果をスクショして見せてもらうことはできるでしょうか。
元の画像と結果を見比べたいので。

追記
この画像で試してもらえるでしょうか
画像1

2

画像1
画像2
インスペクターと実際に歪んでいるゲーム画面の切り抜きです。
描画物が大きいので動かさないと分かりにくいかもしれませんが首輪あたりのドットの大きさが不ぞろいなのが見やすいと思います。
このオブジェクトはパーツごとに独立しており、それぞれ独自の動き方をします。例えば頭のパーツは1ドットずつ上下に動くなどの非常に簡単な動きです。

とりあえず動かし方を決めて多少の清書をした画像を載せてみたときにピクセル描画の問題点に気づいたのですがどうも直りません。

出力解像度に合わせて application_surfaceを操作するなどの文言は見つけましたが、具体的なやり方が見つからず、どういったものを指しているのかすらわかってません。
ゲームメーカーではピクセルアートをやる上で基本となる作り方などがあるのでしょうか?

1

ドット絵が荒れないようにしっかり作りたい部分ですよね。
いろんな要素が絡んでいろんな現象が起きるので、初心者でも初心者じゃなくても悩むところだと思います。

ピクセルが荒れている様子のスクリーンショット
インスペクタでroom情報を見たところのスクリーンショット 

インスペクタの例
画像1

を投稿してもらえるでしょうか?

2

細かく教えて頂いてありがとうございます!!!!!!!動きました!!!

1

気づいた点はこれです。
使う関数をご確認ください。

keyboard_key_press(ord("z")) // これはキー入力シミュレートする関数
keyboard_key_press(ord("x")) // これはキー入力シミュレートする関数
↓
keyboard_check_pressed(ord("Z")) // これはキー入力を調べる関数(注意:大文字のZ)
keyboard_check_pressed(ord("X")) // これはキー入力を調べる関数(注意:大文字のX)


オブジェクトの
Createイベント

command = 0;
turn = 0;
x=128;
y=608;

function set_position_based_on_command() {
	if(command==0) {
		x = 128;
		y = 608;
	} else if(command==1) {
		x = 448;
		y = 608;
	} else if(command==2) {
		x = 750;
		y = 608;
	}
}

Stepイベント

if (turn==0) {
	if(keyboard_check_pressed(ord("Z"))) {
		if(command > 0) {
			command -= 1;
		} else {
			command = 2;
		}
		set_position_based_on_command();
	}

	if(keyboard_check_pressed(ord("X"))) {
		if(command < 2) {
			command += 1;
		} else {
			command = 0;
		}
		set_position_based_on_command();
	}
}