GameMaker 日本語掲示板

views
16 フォロー
981 件中 881 から 920 までを表示しています。
4
サトヤガンジ 2021/01/20 (水) 16:17:44

youtubeでGMSのチュートリアルされてるShaun Spaldingさんが、「PLAYTECHはどーしよーもない会社だったから、今回の買収でいい方向に進んでほしい」的なことつぶやいてましたね。彼はもとYOYOに勤めてたみたいなので、けっこう内情ご存知なのかもしれません。
いずれにせよ、これからもGameMakerには継続した発展を期待したいです。

2

YoYoGamesフォーラムのスレッドはスタッフによって強制クローズされてしまいました。「憶測だから閉じます」と。
(こういうのは、感じ悪いですよね)

「Operaが買収した」とは公式に発表されていないようですが、いろんな情報から「買収したのはOperaだろう」ということのようです。

どうなるんでしょうかね……

1
生高橋 2021/01/20 (水) 15:06:30

問題はどうなるのかなんですよね...

2
生高橋 2021/01/17 (日) 11:43:29 >> 1

こういうのはどんどん報告してOKです!
他の人も同じ問題を抱えている可能性がありますので!

1

こちら自己解決しました。Exstensionsフォルダ内に以前導入したGMLiveというライブコーデイングのプログラムでエラーが出ていたようでした。それを削除することでコンパイルできました。

気が付いた経緯は、ログの「Output」タブを読むとで上記エラーがExstensionsのコンパイル中に起こったということを発見したので、Exstensionsフォルダ内唯一のファイルだったのGMLiveを削除することで解決しました。

お騒がせしました。

6

質問や情報共有があるとGamemakerユーザーみんなの役に立ちますので
気になさらず気楽にサクサクっと投稿してください!
原因がはっきりするといいですね(もしよければ投稿していただけるとうれしいです)。

FriendlyCosmonautさんのシステムは結構複雑ですね。
私は取り入れてませんが、一度これをやってみるのは勉強のチャレンジとしてもいいと思います。

5
ねこたみん 2021/01/09 (土) 11:23:05

お返事が遅くなってしまい申し訳ありません。
新規に作ったプロジェクトで検証したところdepth=-50;でもオブジェクトは表示されました。
なので、私の作り方の問題ですね...。

asaさん、SUPPYさん、makiさん。
お時間を取って調べていただきありがとうございました。
投稿する前に、問題を切り分けて考えられよう、気を付けます。

>FriendlyCosmonautによるdepth systemのチュートリアル
>depth = -y;に比べるとかなりコード量は増えますが、レイヤー機能との両立が可能です。
ざっと見たところ、なかなか複雑そうですね。
でもちゃんとやるならば、これ位必要なんですね。
ありがとうございました。

4

Backgroundは知らないことだらけなのでとても勉強になります。
まさかそんな仕様があったなんて。ありがとうございます。

3

自分も同じ環境(IDE v2.3.1.542、Runtime v2.3.1.409)で試してみましたが再現しませんでした。

ちなみに、room内にBackground layerがある場合、オブジェクトのdepthの値がBackground layerのdepthの値より大きくなると、オブジェクトはBackground layerで上書きされてしまうため表示されません。
新規プロジェクトの場合、Background layerのデフォルトのdepthは100なので、SUPPYさんの投稿の後半で書かれているような現象が起きます。
これはバグではなく仕様だと思います。
Background layerやAsset layer、Tile layerを使用している場合、念のためそれらのdepthの値を確認してみてください。

GMS1の頃はdepth = -y;のテクニックは広く使われていたようですが、GMS2になりレイヤーの機能が導入されてからは、上で述べたようにdepth = -y;を使っても思い通りの結果が得られない場合があります。
ねこたみんさんの投稿で書かれているようにdepth = room_height - y;のような方法でもこの問題は解決できますが、room外にまでプレイヤーを移動できるようにしたい場合にはdepth = room_height - y;の方法だと上で述べたのと同じ問題が発生します。
そのような場合は、次の動画で紹介されているような手法を使う必要があります。

depth = -y;に比べるとかなりコード量は増えますが、レイヤー機能との両立が可能です。

2

IDE v2.3.1.542
Runtime v2.3.1.409
新規プロジェクトを作成し、room内のランダムな座標に、ランダム(-50以下になるよう)depthを持たせて、
適当なオブジェクトを配置してみましたが、再現できませんでした。

参考になるかは分かりませんが、depthの値を正にした場合、ある値を境に画像が描画されなくなるようです。
新規プロジェクトの場合100以上、作成用のプロジェクトだと300以上で描画されなくなりました。

1

IDEが2.2xなので自分で確かめられないのですが、
新規プロジェクトの何もないroomにdepthを-50以下にしたオブジェクトを1つ置いたら表示されるでしょうか。
表示されなければバグなのかなと思います。

4
生高橋 2021/01/06 (水) 13:09:52 修正 >> 2

英語がわからなくてバグ報告がおっくうなんすよねぇ...
でもこれかなり致命的なので雰囲気で送ってみようと思いやす。

3
生高橋 2021/01/06 (水) 13:09:01 修正 >> 1

症状にてるんですけど、解決法てきなやつやってみたんですがダメでした

2
asa 2021/01/06 (水) 00:29:59 修正

IMEを切り替えるとFullscreenにする前のサイズのボーダーレスウィンドウみたいになる現象ですよね。
これは共通の現象みたいですね。
自分のプロジェクトでも起こりますし、gamemaker製の市販のゲームでも起こりました。
再現する最小限のプロジェクト作ってバグ報告するのがよさそうです(ダメ元で)。

補足:
自分の環境はIDE v2.2.5.481  Runtime v2.2.5.378 / windows10 / google IME
市販のゲームはTouhou Luna Nights

3
puzzle 2021/01/05 (火) 19:21:33

MarketPlaceを見てたら NSIS Standalone なるものを見つけました。
2.3で動くか試せてないのであれですが、とりあえずの情報共有ということでお願いします。

時間があれば後日試します

2
yakata 2021/01/02 (土) 14:26:05

解答ありがとうございます。
やっぱりGM2から仕様変わったのですね。
納得です。

1

gms2になってから仕様が変わり、外部ファイルとしてバンドルされるようになりました。
私の知る限り、これらをexeに含ませることはできないようです。
exeファイルがある場所とは別のデータ用ディレクトリに配置することはできたと思います(たしか)。
暗号化して難読化することも可能です。

昨今のゲームとプレイヤーの関わり方を鑑みて、私の考え方は以下のように変わりました。
(ただしソロで遊ぶゲームに限ります)
● テキストやゲーム内のデータをズルして見たかったら見ればいい、それで損するのはユーザー自身。
● MOD遊びのように、いじって変えて遊ぶことを楽しむ人も実際いる。好きにすればいい。
● 結論:見るつもりがないのに見えちゃうような状態じゃない限り問題なし。

1

1月7日まで1,200円とかになってるそうです。
https://hatenanews.com/articles/2020/12/30/103000

gamemaker studioコース
https://www.udemy.com/topic/gamemaker-studio/

3

お二方ご親切にありがとうございました。マウスのクリックと同じ関数を使うのは想像できませんでした。参考にさせていただきます!

2

(mobile向けに作ったこと無いので確かなことは分かりません)

yakataさんのようにオブジェクトのstepイベントに処理を書くやり方の他に、
オブジェクトにジェスチャーイベントを追加してそこに処理を書く形もあるようです。
event_dataからタップ位置やドラッグ開始位置、終了位置などを取得して利用できます。



マニュアルではここらが参考になるでしょうか。

ver 2.2.x
https://docs2.yoyogames.com/index.html?page=source/_build/2_interface/1_editors/events/gesture_events.html

https://docs2.yoyogames.com/index.html?page=source/_build/2_interface/1_editors/events/gesture_events.html

ver 2.3.x
https://manual.yoyogames.com/#t=GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/Gesture_Input.htm&rhsearch=gesture event&rhhlterm=gesture event

https://manual.yoyogames.com/#t=The_Asset_Editors/Object_Properties/Gesture_Events.htm&rhsearch=gesture event

1
yakata 2020/12/28 (月) 00:23:50

ipadなどのタッチできるデバイスに出力したプログラムでは、マウスのクリックとタップが同じ扱いのようです。
なので mouse_check_button() の関数を使うと、「タップした場合」の挙動が書けました。

また device_mouse_x_to_gui() というマウスの座標を取得する関数を活用すると、
mouse_check_button() や mouse_check_button_released() と組み合わせて、マウスの座標が大きく移動した時を判定することでスワイプを実装できました。

mobileはまだテストで触れただけなの詳しくは分かりませんがで参考になれば幸いです。

4
サクレ 2020/12/27 (日) 22:31:46 >> 3

おおお、これで何とかなりそうです。ありがとうございます!!
3次元配列が単純にコピーできないのは不具合なのかな・・・。

3
SUPPY 2020/12/27 (日) 21:15:31 修正

3次元配列ちょこちょこいじってみました。
配列をコピーした場合でも同様の配列を参照してしまうみたいです。
なので、

// [引数]3次元配列(コピー元)
function array_copy3d(_a){
	var _b = array_create(0);	// コピー先

	var _length1 = array_length(_a);
	for(var i=0; i<_length1; i++){
		var _length2 = array_length(_a[i]);
		_b[i] = array_create(_length2)
		array_copy(_b[i], 0, _a[i], 0, _length2);
	}
}

このように配列の2次元目をコピーすると別の配列として参照できました。
(3次元目をコピーしてもいけますが、記述が長くなるので2次元目にしました)

コピー先をいじった後、元に返すのは、

	// _aコピー元	_bコピー先
	var _length1 = array_length(_a);
	array_copy(_a, 0, _b, 0, _length1);

	// 戻り値があるなら
	return _b;

でいけます。

GMSで3次元配列を扱うのはリスキーに思われるので、1次元配列の中に2次元配列を格納する
という手法も1つの策かと思われます。
参考になれば幸いです。

6
ぽんでり 2020/12/27 (日) 18:31:03

ありがとうございます!! Keep aspect と Full scale には全く気が付かなかったので確認してみます!

5

画像1

このように、モニタサイズを超えるroomサイズにすると、モニタサイズに収まるように縮小されました。
(設定がKeep aspect ratioになってる場合)

画像1
(ここの設定をFull scaleにすると比率が変えられてモニタサイズにフィットされました)

4
ぽんでり 2020/12/27 (日) 17:58:36

あ、FHDは1920×1080ですね。

3
ぽんでり 2020/12/27 (日) 17:57:46

といってもルームがあまりにも大きいとテクスチャ関係かメモリ関係のエラーが出るのではないかと思いますので……
あるいは1980×1080のFHDのディスプレイでビューを2400×1400などにした場合(この場合ルームのサイズはそれ以上)です。

2
ぽんでり 2020/12/27 (日) 17:40:45

ビューサイズが絡むとうまく説明できないのですけども
roomのサイズをディスプレイサイズを超えたサイズにしてビューをOFFにしてるとき、
と思ってくださいませ

1

解像度というのは、roomサイズのことでしょうかね?

2
サクレ 2020/12/26 (土) 17:43:36 >> 1

返信、検証ありがとうございます。

どうも1,2次元配列と3次元配列でスクリプトでの扱いに違いがあるみたいで、そこでつまづいています。
3次元配列を使ってこのようなコードを書いてみたのですが、

//オブジェクト Createイベント
for(i=2; i>-1; i--){
	for(var j=2; j>-1; j--){
		for(var l=2; l>-1; l--){
			_firld[i][j][l] = 0;
		}
	}
}
Scr_Return_Array(_firld);
//スクリプト
function Scr_Return_Array(_a){
	 _a[0][0][0]=123;
}

このように書くとオブジェクトの_firld配列は変更されないはずなのですが、実際には_firld[0][0][0]に123が書き込まれてしまいます。
2次元配列でほぼ同じコードとスクリプトを書くと元の配列に変更は加えられませんでした。
3次元配列をスクリプトに参照ではなく値渡しする方法がわからず困っています。解決法を教えていただければ幸いです。

1
ディーン 2020/12/26 (土) 03:15:09

2.3から仕様が変わったのかと思って簡単に調べました。

IDE:2.3.1.542
Rutime:2.3.1.409
Windows

var _arr1 = [1, 0, 0];
var _arr2 = _arr1;

_arr2[1] = 1;

show_debug_message(string(_arr1));
show_debug_message(string(_arr2));

結果

[ 1,0,0 ]
[ 1,1,0 ]

もし参照になっている場合、_arr2の要素に更新をかけると参照されている_arr1も更新されます。
結果としては元々の仕様通り、配列は値渡し(コピー)になってました。

3
ぽんでり 2020/12/26 (土) 03:07:24

「Death's Gambit」もgamemaker製ですね。当時結構びっくりしました

1

しゅんさんありがたい...

1

たぶんshowcaseにあると思いますが
gamemakerはドット絵というイメージがある中で『THE SWORDS OF DITTO』は
Spineを使った例として珍しいですね。
(Spine使っても絵の内容はドット絵にもできますが)

9
生高橋 2020/12/18 (金) 01:11:15 >> 6

snippetの存在も完全に忘れてましたw