妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

デバッグ

ルーレットの作り方(12) 出目の偏りをなくす

imoue.hatenablog.com「昨日このルーレットにはイカサマが横行してることがわかったので、修正していく。まず何が原因で偏ってるのか?」(1) 仕組みの問題(3周分+1周未満のランダムな角度で回す) (2) 1に使う乱数の精度が悪い (3) どのマスを指すかの判定…

ルーレットの作り方(11) 結果が均等であることを確かめる(なってないことがわかった)

imoue.hatenablog.com「前回ので理屈としては大丈夫なはずなんだけど、一応念のために調べとこうと思ったんだけど……これ均等になってないね」妹「なってなかったの!?」「まず確認方法なんだけど、ぐるぐるっと回して、出た何番の欄に+1、それを1000やっ…

UE4.19.0のデバッグ機能追加

www.unrealengine.com「今回はPreviewがたくさんでてたんだけど、ついに正式版の4.19がでた」妹「もう出ちゃったんだ。18入れたばっかりなのに……」「そんなに急ぐほどのことはないけど。でもいくつか気になる機能がある」「まず確認したのがこれ。デバッグ機…

ディスパッチャーを使ったら、Faild import for functionエラーが出た時の対処法(仮)

「ちゃんと動作はしてるんだけど、プロジェクトを開いた時の謎のエラーが気になる……」妹「何やったの?」「いや普通にディスパッチャーを作って、イベントをバインドして、UMGのアニメーションが終わったタイミングで色々やろうとしただけなんだけど。色々す…

マテリアル用デバッグ命令

「マテリアルを編集してると、この計算合ってるのかな? と不安になることがあるんだけど、そういう時に便利なのがDebugなんとかという命令。例えばDebugFloat2Valueノードと使うと、Vector2の数字が画面に表示できる。ウィンドウが小さいと上手く表示されな…

UMGウィジェットの表示がHTML5だと変わってしまう件(3) フォントがOTF形式なら正しく表示された

「バグ報告をしようと思って、最小限のデータだけの確認用プロジェクトを作ってたんだけど、そうすると何故か普通に表示できちゃったんだよ。どうやらフォントがデフォルトのRobotoのままだったからみたいで、昨日のプロジェクトもRobotoにすると問題なくな…

UMGウィジェットの表示がHTML5だと変わってしまう件(2) 何かがおかしいということはわかった

「どうも表示がおかしいのはフォント部分みたいなので、HTML5のフォント表示について、いくつかの設定を試してみたけど、同じだったり、そもそもブラウザでエラーになったり、どれも上手くいかない。それで新機能も試してみた」「4.14だったか15だったかから…

UMGウィジェットの表示がHTML5だと変わってしまう件(1) 状況確認

「シューティングゲームに得点表示を付けたいんだけど、ウィジェットに関しては以前妹が作ったゲームでちょっとした問題が起きてるのが未解決。また同じ問題が起きたら嫌だから、これを解決してから取り掛かりたい」妹「ちょっとじゃないよ! 大問題だよ!」…

OpenAssetOrgのアセットで2Dゲームを作る(18) KillZVolumeで消えない連中をどうにかする

「昨日UE4でテストプレイを開始したまま、すっかり忘れて違うことしてたんだけど、なんだか凄くゲームが重たくなっていた。なぜかと思って調べてみると、出てきた王様たちが全員消えずに行進を続けて、はるかかなたを目指して歩き続けてることが発覚した」妹…

コンソールコマンドを使ってデバッグする

「今日のテーマは、デバッグにコンソールコマンドを使ってみようという話。例えばコリジョンが重なってるのか、重なってないのかというのを調べる時、コリジョンの位置や形状をゲーム中で確認したいことがある」妹「表示設定でコリジョン見えるようにはして…

SetCollisionResponseを実行すると、Overlapイベントはその場ですぐ発生する

「CollisionOverlapの発生タイミングを調べてみたところ、なんだか不思議な仕様がわかった。パンチの時に、手を振りかぶった時にSetCollisionResponseでコリジョンを有効にしてるんだけど、SetCollisionResponseの時点ですぐOverlapが起きてる。もちろんその…

PrintStringの表示を工夫する

妹「そういえば、パンチが2回当たる事件の調査ってしてたっけ?」「そんな話を聞いたことがあるような、ないような。調査はまだしてないかも」妹「こういう風にすると、なぜかパンチが同じ敵に2回当たってる、オーバーラップイベントが起きてるみたいなんだ…

レトロゲームプロジェクトの研究(9) インベーダーゲームっぽいの編(AlienInvaders)

「毎度おなじみのレトロゲーム風プロジェクトの研究。昨日のデバッグ作業は実はこれの話だったという」妹「インベーダーゲームというのも、聞いたことしかないなあ。写真だけで動いてる見てないかも」「敵が左右に動いて、端までいったら前進して……と、全体…

ブループリントでエラーが起きた時にすぐ止める設定について

「とあるプロジェクトデータの中身を確認してたんだけど、どうもゲームが終わった後にこういうエラーが出てきて、同じようにクリアしてるのに、エラーの数が多かったり、全然なかったりする、という事態が起きた。このままだとデバッグするのは難しい」妹「…

下からジャンプで通り抜けられる足場・その3(実践編)

妹「というわけで、昨日兄に言われた方法で雲を作ってみた。でもこれ上から降りてきた時はいいんだけど、下からいった時に頭ゴンゴンして上手くいかないんじゃよ。足場の上に頭が出た瞬間に、落下防止判定に引っかかるわけだから、通り過ぎる前にBlockになっ…

配列処理に失敗してたところを探した話

妹「ヒジョーに困ったことになってるんだけど、何が困ってるのかよくわからないので困っている。完璧な計画だったはずなんだけど……」「どういう計画だったの?」妹「基本的には近くに操作可能な物があるとわかるようになるという仕組み。隠れられる茂みとか…

ボンヂャーラビット強制射出事件(解決編)

妹「アイテムを持つところは、なんかおかしいから、一から書き直したいとは思ってたんだよ。捨てる時もうまくいってないし、だいぶ前に書いたとこだから自分でも何でこうしたのかよくわからないし」「とりあえず吹っ飛びを抑止するだけなら、今の仕組みのま…

ボンヂャーラビット強制射出事件(容疑者確保編)

「次はアイテムを拾うところを調べてみる」「持つのと捨てるので線が絡まってるけど、単にGETノードを共有してるだけだから、内容的には別かな」妹「たしか、えび天側で、主人公キャラとoverlapすると、主人公のアタッチターゲット変数にselfを入れる仕組み…

ボンヂャーラビット強制射出事件(捜査編)

「まず昨日気になった、端っこ以外の場所でターンしてるところから調べてみようと思ったんだけど……」「"この辺はどうにかしたい"って、どういうこと?」妹「どういうことだと言われても、どうにかしたいなあと思ったんだよ」「イベントティックからOnCompone…

ボンヂャーラビット強制射出事件(発生編)

妹「説明してもわからなそうというか、なんて説明したらいいのかわからないからやって見せるけど……」妹「これエビ天を拾ったり離したりを繰り返してるんだけど、エビ天を拾った時に、下にいるボンヂャーラビットが飛んでいっちゃうことがあるんだよ。なんで…

BeginPlayイベントは、同じクラスのアクターをたくさん置くと置いた数だけ起きる

妹「Randomって、どれか1個の数字が出るだけだよね? たくさんの数字が出てくるわけじゃないよね?」 「たくさんの数字はでてこないです」 妹「ランダムでどこか1箇所だけ変化させたいんだけど、ランダムにすると複数箇所変わっちゃうんだよ。0とか1とか入…

妹、存在しないゲームインスタンスを参照してクラッシュする

妹「セーブの実験をしてたらゲームインスタンスがおかしくなってしまった。今見たら設定がNoneになってて、設定し直そうとするとクラッシュしちゃう」 「とりあえずのこっちのパソコンでもなるか確認して……ならないね」 妹「えーーーー! うちのパソコンが壊…

妹が消しても消しても出てくるフォルダ

妹「ブループリントの掃除をしてた時に、要らないフォルダは消してたんだけど、何回消しても起動するたびに復活する不思議なフォルダがあるんだよ。オバケかなにか?」 「なんのフォルダ?」 妹「Meshesってフォルダで、最初からあった……いや最初ではないか…

高低差とかジャンプとか色々考慮してナビメッシュで追跡する案

「問題はどうやって高さの違いを無視するかということなんだけど」 妹「敵の方を大きくするっていうのは駄目だぞ。ちっちゃい敵も居るんだから」 「そしたら高さ、つまりZ軸を追いかけるキャラと同じにしちゃったらどうだろ? 追いかけられる側のZを使うから…

コリジョンの高さに差があると、ビヘイビアツリーのMoveToが効かないことがある

妹「2Dでナビメッシュが動かない理由調べてたんだけど、なんか追いかけれるキャラを自作のやつから、デフォルトの2DScrollなんとかに変えたら、普通に追っかけられるようになったんだよ。なんでだろ?」 「動くってことはやり方はあってるってことだから、キ…

変数を増やすことで、似たプログラムを同じプログラムに変える

妹「ワールドマップのプログラムが出来てきたよ。移動のさせ方はまだ考え中だから瞬間移動だけど」 「その辺は演出の問題だから。とりあえず目的地を変えたり、追加したりというのがちゃんと出来る仕組みになってればOK」 「プログラム的にも問題なさそうに…

妹、画面上にナゾの黒い丸が出てくる

妹「ワールドマップのテストをしてたら、なんか画面上に変な黒い丸が出てくるんだけど……」 妹「これはなんだろ?」 「そういう時はいったんゲーム画面からイジェクトして、実行中の様子をエディタから見てみる」 「DefaultPawnって書いてあるね」 妹「知らな…

アクタをちょっとずつ目的地に近づける方法

妹「ヒット問題が解決したのはいいんだけど、ルートにSceneがないとMoveComponentToが動かないなあ」 「そもそもなんでコンポーネント動かしてたの? この場合アクタごと動かしてもいいのでは」 妹「コンポーネントを動かしたかったわけじゃなくて、MoveComp…

イベントHitが発生しない問題・解決編

妹「HitじゃなくてOverlapにしてみようと思ってたんだけど、ノードにカーソル合わせてみると、何か気になる文章が出てきたんだけど……」 妹「言ってる意味はよくわからないけど、CharacterMovementとか、PhysicsをONにするとか、SetActerLocationでSweepをON…

続HIT調査

妹「……その様子だとHitイベント起こす方法わからなかったの?」 「一応わかったといえばわかった。妖精をActorやPawnじゃなく、CharacterかPaperCharacterクラスにして、Add Movement Inputで動かすとHitイベントに反応が出た。主人公キャラを動かすのと同じ…