Re: バグ報告スレッド 13 [ No.178 ]
メンテ
 2023/05/03 15:16
 YADO
■自動マップ生成後にマップの保存確認画面が出ない

自動マップ生成でマップを生成し、「これで塗りつぶす」を実行すると、マップが生成した地形に変わりますが、そのあとに何もマップを編集しないで、すぐにマップ選択ウィンドウで別のマップを選択すると「保存してから変更しますか?」の確認画面が表示されず、すぐに別のマップが表示されて、自動生成したマップが保存されない状態になります。


■精密座標の「最も上にあるタイルのタグ番号」が正しく処理されない

レイヤー3にタグ番号「1以上」にしたタイルチップをマス座標[X15][Y20](精密だと[X30〜31][Y40〜41])に設置し、
■変数操作+: CSelf15[タグ] = X:CSelf13[x] Y:CSelf14[y]のレイヤー3のタグ番号
のような処理(マップ内の全ての0.5マスのタグ番号を調べる処理)を実行すると、タグ番号「1以上」を取得した座標が精密座標で
「X30、Y40」
「X31、Y40」
「X30、Y41」
「X31、Y41」
と正常に取得されました。

しかし
■変数操作+: CSelf15[タグ] = X:CSelf13[x] Y:CSelf14[y]の最も上にあるタイルのタグ番号
に変えて実行すると、
「X29、Y39」
「X30、Y39」
「X31、Y39」
「X29、Y40」
「X30、Y40」
「X31、Y40」
と取得した座標の位置がずれている上、なぜか0.5マス単位で6マス分でタグ番号「1以上」が取得されました。

以下は動作テスト用のイベントコードです。
コモンイベントに並列実行で設定して、タグ番号「1以上」のタイルチップをマップ上に設置した上でテストプレイを開始して下さい。
Aキーを押すと「レイヤー1〜3のタグ番号取得」が実行され、Sキーを押すと「最も上にあるタイルのタグ番号取得」が実行されます。
タグ番号「1以上」を取得した0.5マスの所には、取得したタグ番号が表示されます。
正常に処理されていれば、どちらを押しても同じ処理結果になるはずです。

WoditorEvCOMMAND_START
[123][3,0]<0>(1600010,384,100)()
[111][7,0]<0>(18,1600010,130,2,1600010,131,2)()
[401][1,0]<0>(1)()
[106][0,1]<1>()("レイヤー1〜3のタグ番号取得")
[0][0,0]<1>()()
[401][1,0]<0>(2)()
[106][0,1]<1>()("最も上にあるタイルのタグ番号取得")
[0][0,0]<1>()()
[420][1,0]<0>(0)()
[172][0,0]<1>()()
[0][0,0]<1>()()
[499][0,0]<0>()()
[150][6,0]<0>(16777218,0,0,0,0,9999)()
[124][3,0]<0>(1600011,12288,15)()
[124][3,0]<0>(1600012,12288,16)()
[121][5,0]<0>(1600011,2,0,66304,1)()
[121][4,0]<0>(1600020,-1,0,0)()
[121][4,0]<0>(1600021,4,9000104,4096)()
[121][4,0]<0>(1600022,4,9000105,4096)()
[121][4,0]<0>(1600014,0,0,0)()
[179][1,0]<0>(1600012)()
[121][4,0]<1>(1600013,0,0,0)()
[179][1,0]<1>(1600011)()
[111][7,0]<2>(2,1600010,130,2,1600010,131,2)()
[401][1,0]<2>(1)()
[124][4,0]<3>(1600015,532512,1600013,1600014)()
[124][4,0]<3>(1600015,599584,1600013,1600014)()
[124][4,0]<3>(1600015,665120,1600013,1600014)()
[0][0,0]<3>()()
[401][1,0]<2>(2)()
[124][4,0]<3>(1600015,8224,1600013,1600014)()
[0][0,0]<3>()()
[499][0,0]<2>()()
[111][4,0]<2>(1,1600015,1,1)()
[401][1,0]<2>(1)()
[121][4,0]<3>(1600020,1,0,256)()
[150][11,1]<3>(33558560,1600020,0,1,1,1,255,1600021,1600022,100,0)("\E\f[8]\cself[15]")
[0][0,0]<3>()()
[499][0,0]<2>()()
[121][4,0]<2>(1600013,1,0,256)()
[121][4,0]<2>(1600021,8,0,256)()
[0][0,0]<2>()()
[498][0,0]<1>()()
[121][4,0]<1>(1600014,1,0,256)()
[121][4,0]<1>(1600021,4,9000104,4096)()
[121][4,0]<1>(1600022,8,0,256)()
[0][0,0]<1>()()
[498][0,0]<0>()()
WoditorEvCOMMAND_END


■ゲーム終了時にバックグランドプロセスに残る事がある

前にスクショの緑帯が出ている時に終了するとバックグランドプロセスに残る報告をしましたが、それとは別にまだプロセスに残る事があります。
特徴は以下のとおりです。

▼発生原因が不明
スクショの時のような明確な発生原因が無く、同じ条件でゲームを終了しても、発生したり発生しなかったりします。
2台のWindows10で発生するので、使っているPC固有の問題では無さそうです。

▼発生率がかなり低い
1000回ゲームを終了してみましたが、プロセスに残り続けたのは14回(1.4%)だったので、発生率はかなり低いです。
また300回終了しても発生しない事もあれば、30回の終了で2回発生した事もあり、発生間隔はかなりバラバラです。
なお、バックグランドプロセスに一瞬表示されてすぐに消えるような事はよくありますが、今回の症状はずっと消えずに残り続けます。

▼BGMは演奏されない
スクショの時とは異なり、プロセスに残ってもBGMが演奏されないので、プロセスに残っているかどうかはタスクマネージャーで確認する必要があります。

▼メモリ使用量が10MB程度になり、その後0.1MBまで下がる
プロセスに残る時には、メモリ使用量が10MB程度になり、その後30分くらいかけて0.1MBまで下がります。
その後2時間くらい放置しても0.1MBのままで消えないので、自然消滅は無いようです。

検証は「完全初期データの空データ作成」でマップに
★マップイベント/自動実行
■ゲーム終了

だけを設定して、タスクマネージャーを表示しながらゲームを起動しました。

上記の条件以外に、ウェイトを実行してから終了、サンプルゲームで終了、画面右上の[×]をクリックして終了など、様々な条件で試してみましたが、どれもプロセスに残る症状が出たので、作品の状態(終了方法)はあまり関係ないようにみえます。