GameMaker 日本語掲示板

views
17 フォロー
1,148 件中 281 から 320 までを表示しています。
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();
	}
}
4

sprite_indexで試してみたところ想定している挙動どうりになりました!
ありがとうございます!!

3
asa 2023/11/23 (木) 15:25:16 修正

全体の作りがわからない部分があるので的外れになるかもしれませんが、
オブジェクトO_step1がroom内に複数配置されていて、
playerオブジェクトがそれを踏むと✘が◯に、◯が✘に変わる(spriteが変わる)
という前提で考えてみます。

object_get_sprite()
object_set_sprite()
は、オブジェクトアセットのspriteを取得/セットする関数です。
(インスタンスではないというのが要です)
これのせいでロジックがおかしくなっていて意図通りに動かなくなっているように思います。

インスタンスのspriteを取得/セットするには、
sprite_indexでできます(これはインスタンスが持つ読み書き可の変数です)。

sprite_indexの更新だけでできるはずなので、これを踏まえて考えてみてください。

2
shirasu 2023/11/22 (水) 09:49:52 修正 >> 1

返信ありがとうございます。
本来のルールですと
・×を踏むと丸になる
・もう一度踏むと△になりその後は踏んでも何も起きなくなります。
・全て×になった状態で左にあるスイッチを押したらクリア
といったような形になっています。

一度自分で組んでみたのですが反応しない部分が出てきてしまうといった状況になっております。

こちらが×側のstepで組んだプログラムです。
とりあえず現在は〇と×は踏まれたら交互に出るようにしています。
画像1

1

このパズルを知らないので動画で調べましたが一筆書きパズルでしょうか。

  • ✘を踏んだら◯になる
  • 全ての✘が◯になったらクリア

というルールでしょうか。
どのあたりのプログラムの書き方が分からないか、わかりますか?

4

気軽に使っていきたいと思います。回答ありがとうございました!

3

開設作業を私がやったので私から回答させていただきます。

この掲示板は生高橋さんと私で話し合って軽い気持ちで開設されました。
誰のものでもなく、GameMakerユーザーみんなの掲示板として存在しています。
お金は発生していません。広告が自動で付きますがお金はzawazawa運営に入っているものと思います。
管理者・モデレーターはいません。
管理画面のアクセス権限を今は私が持っているので問題が起きたら私ができる範囲で対処します。
万が一、対処しきれない事になったら閉鎖します。

  • 人に敬意を払い、攻撃しない、傷つけない
  • スパム投稿をしない、荒らさない、迷惑行為をしない

などの当たり前のルールを守ればOKです。
過去に重複する内容があるかどうかも気にせず投稿してください。
掲示板が使いにくくなるような事態になったらその時考えます。
投稿内容は、GameMakerに関連しているかGameMakerでゲームを作っている人に向けた内容であればOKです。

購入前の人でも初心者でも上級者でも、どなたでも気軽に使ってください!

2
名前なし 2023/11/12 (日) 11:06:08 修正

回答ありがとうございます。しばらくはリンク先のマニュアルを参考にしていきたいと思います。
一つ気になっていることなのですが、自分はこちらのサイトの掲示板を使用するのがこれが初めてです。
参加するにあたって何か、暗黙の了解や投稿、回答する際の決まり事(同じ投稿内で異なる質問をしない)などが
まとめられている投稿を探してみましたが、特にそれらしきものは発見できませんでした。

現状では、基本として他人に不快を与える投稿内容や言葉遣いに注意しながら、その投稿内容や回答が
Game maker関連から大きく乖離していなければ、特に制約等を設けていないということでしょうか。

1

オンラインのマニュアルはここで、これが最新だと思います
https://manual.yoyogames.com/#t=Content.htm

私は英語マニュアルをオフラインで使ってますが、ダウンロードできない理由は分からないです。
PCのセキュリティが関係してるでしょうか。

displayのページは無いようですが、試したところおそらくIDEウィンドウの最小サイズのようです

1

譜面データの形式や内容
外部ファイルの読み込み方
ゲーム中での譜面データの処理の仕方
など

どの辺りが分からないか分けて考えるといいかもしれません。
どういうものを作るのかを具体的にして、質問の焦点が絞られていると
より回答されやすいのかなと思います。

2

ご回答ありがとうございます!!
紹介されたスレッド参考にします。

1

前に似たスレッドがありましたので共有します。
https://zawazawa.jp/gamemaker_jp/topic/81
もし、まだわからないことがあれば聞いてください

4
あっばあばばぁ 2023/09/16 (土) 12:00:33

なるほど、確かにクラスの概念がなかったりプレハブがなかったりすると作業量が多くなるほどに大変になるというのはなんとなく想像できますね。
ありがとうございます。とりあえず少し触ってみようと思います。

3
生高橋 2023/09/16 (土) 02:00:45 >> 2

最新のアプデで修正されたみたいです。

3
asa 2023/09/15 (金) 16:32:39 修正

Unityを使ったことがないので比較はできないですが、
GameMakerはGML(Game Maker Language)という独自の言語でプログラミングします(コードを書かないモードで作ることもできますが)。
GMLは型とかクラスとかアクセス修飾子などのプログラミングの難しいあれこれが簡略化されてる分、入門者でも簡単に取っつきやすいと言われています。だれでもすぐにゲームを作り始めることができます。
裏を返すとそれらが使えないのでゲームが複雑かつ大規模になるほど作るのが難しくなる可能性があるのかなと思います。

2
生高橋 2023/09/15 (金) 14:50:13

APIの制約に関しては通常の2Dゲームを作る分にはそこまで不便に感じてませんが、
大ボリュームのゲームや3Dゲーム、物理演算のゲームをつくろうとするとそういった制約が気になってくると思います。

1
生高橋 2023/09/15 (金) 14:46:33

UnityやUnrealみたいな実行中に値を確認したり変更したりできるSceneView、プレハブなどの機能がないのでパラメーター調整やステージ作成がUnityとかに比べると大変です。

2

Win環境で、Alt+F4のウインドウクローズが効かなくなるバグがあるそうです。
テストプレイのウインドウを当該ショートカットで消していたユーザーが発狂していました。

1

IDEを長時間使ってると動作が重くなって、
その状態だとタブが勝手に新しいウィンドウに切り離されちゃうことがよくあったんですが、
その新しいウィンドウに切り離す機能が廃止されたようで誤動作も起きなくなったらしいです。
代わりにタブ右クリックで切り離すコマンドができました。

4

質問があるとこの掲示板も更新されるのでありがたいです。
他の人のためにもなりますので、遠慮なく投稿してください!

3
program_suck 2023/08/21 (月) 16:03:37

すみません、ページはroomの誤字です。
いつも質問に答えてくださりありがとうございます。

2

すいません、タイトルにroomとありますね。roomでしたら、

変数Aにroomを入れて記憶してからroomを移動する

移動先のroomで変数Aに記憶したroomに戻る処理をする
でできます。

ただ、roomを移動するとroom中のインスタンスも破棄されますので、変数をroom間で受け渡すことが出来ません。
情報をroom間で受け渡すには、

  • グローバル変数に記憶する
  • 永続オブジェクト(persistent object)の変数に記憶する
  • 永続roomを使う
    方法があります。
1

ページが何なのか分からないので一般的な回答になりますが、

変数にページを入れてからページを移動する

移動先のページで保存したページに戻る処理をする

でできます。