読者です 読者をやめる 読者になる 読者になる

ぼっちプログラマのメモ

UE4とかVRとかについて書いたり書かなかったり。

UE4日記: パッケージングで作ったexeが実行即クラッシュで困った話

題名の通り、パッケージングで出来たexeを実行すると
以下のように即クラッシュして困った
 → 解決できたけど原因分からない…
  → とりあえず記録に残そ

という、ただのチラ裏日記です。

UE4のバージョン:4.7 Preview

結論:
「新規作成したモーション+加算トラックレイヤーで作成したモーション」を
録画して作成したモーションを使った事が原因。たぶん

心が折れたので、再現とか検証とかしてません

f:id:pafuhana1213:20150108005433j:plain

クラッシュしたので、とりあえずログを見る

デスクトップに出力したので、ログはここ
C:\Users\XXXXX\Desktop\WindowsNoEditor\【プロジェクト名】\Saved\Logs

[2015.01.07-15.50.56:637][ 0]LogWindows:Error: Windows GetLastError: この操作を正しく終了しました。 (0)
[2015.01.07-15.50.56:874][ 0]LogWindows: === Critical error: ===
Assertion failed: SerializedElementSize == 0 || SerializedElementSize == ElementSize [File:D:\BuildFarm\buildmachine_++depot+UE4-Releases+4.7\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 1227]
Expected 12, Got: 65537


KERNELBASE.dll!UnknownFunction (0x00007ffc09798b9c) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff636f39a2c) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff636e77448) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff636e54a75) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff639029ab8) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff6392f261f) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff63931d4ac) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff6371f6295) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff637235511) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff63724a0a9) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff63884887e) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff6388162e0) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff638a7de00) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff638a67c2c) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff636d3d67f) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff636d3c8cd) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff636d3c9ba) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff636d4c4f9) + 0 bytes [UnknownFile:0]
UE4Game.exe!UnknownFunction (0x00007ff6396aacad) + 0 bytes [UnknownFile:0]
KERNEL32.DLL!UnknownFunction (0x00007ffc0b1c13d2) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffc0d2f03c4) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffc0d2f03c4) + 0 bytes [UnknownFile:0]

お、おう…ググっても、それらしき情報は出ない困った

原因となる部分を探し始める

数日前はパッケージングしたexeが正常に動いていたので、
それまでに追加したものが、おそらく原因
ということで、BPや各設定を色々外してみる

クラッシュする。なんだこれ


しょうがないので、新規でプロジェクト作成。
元のプロジェクトからBPを1つずつ移動 → パッケージングテストという
泥臭い手を使う

問題のBPは見つかった。が、そのBPをノード全削除+コンポーネント全削除して
完全に初期化しても、変わらずクラッシュする。
レベルから取り除いてパッケージングすると、クラッシュしない。なんだこれ


しょうがないので、新規BPを作成し、
元のBPからノードやコンポーネントを1つずつ移動 → パッケージングテストという
泥臭い手を使う

問題の箇所が分かった。あるAnimationBPを指定するとクラッシュする。
一度でも指定するとアウト。指定後は外してもクラッシュする。なんだこれ


問題のAnimationBPの中身は、あるアニメーションシーケンスを指定している
だけなので、問題はAnimationBPではなく、そのアニメーションシーケンス。

問題になったアニメーションシーケンスの作り方

1. 新規アニメーションシーケンスを作成します
f:id:pafuhana1213:20150108011148j:plain

2. 加算レイヤートラックを使って、タイヤを回します
f:id:pafuhana1213:20150108011341j:plain

3. そのモーションを再生 + Recordを使って、いい感じのモーションを
  新規で作成します。以上
f:id:pafuhana1213:20150108011636j:plain
なぜこんなことをしたか:
 加算レイヤートラックの調整をミスって、タイヤ回転が速すぎた
 → 録画して作成したモーションのPlayRateを下げて、回転速度を下げよう
 という、謎思考

最後に

本当にチラ裏でした。以上