妹でもわかるUnrealEngine4

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

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

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

imoue.hatenablog.com

「前回ので理屈としては大丈夫なはずなんだけど、一応念のために調べとこうと思ったんだけど……これ均等になってないね」

妹「なってなかったの!?」

「まず確認方法なんだけど、ぐるぐるっと回して、出た何番の欄に+1、それを1000やって偏りがどうなってるか調べるというもの」

f:id:una_unagi:20180623023927p:plain
f:id:una_unagi:20180623023939p:plain
イベントグラフ下部に1000回ループして調べる処理を追加
それに合わせてスペースキーを押した場合の処理も直す
Tickで角度を調べてた部分は今回邪魔なので外した

f:id:una_unagi:20180623023947p:plain
現在の角度を調べてマス目番号に変換する処理
複数箇所で使うかもしれないので関数化

f:id:una_unagi:20180623024136p:plain

最初は10回ぐらいで試す。というのは、これ結構時間がかかる。今の仕組みだと1度回すのに2秒ぐらいかかるんで、1000回だと30分ぐらいかかる。それで最後に結果表示するとこがバグってた場合、また30分やり直しは効率が悪いから」

妹「10回の時点ではだいぶ偏ってるみたいだけど」

「それは大丈夫。10回ぐらいだとかなり偏った結果になるのが普通だから。あくまで集計がちゃんと出来てればいい。できてない疑いがある場合、毎回の結果もprintして調べないといけないけど」

f:id:una_unagi:20180623024610p:plain
1回目(printが消えてたので、アウトプットログで確認)

f:id:una_unagi:20180623024614p:plain
2回目

「で、1000回コースで調べた結果なんだけど、これはちょっと偏りが感じられる。しかも2回とも同じように偏ってるのが気に入らない。何らかの不正が行われてる感じ。5番目と10番目のとこが極端に少ない」

妹「0番と6番は多いね」

「そこらへんは、たぶん隣のやつからおすそ分けをもらってる。計算誤差の関係で1つズレた結果になってるというか。ちょっと前に起きた、11番目(0番を含めて12番まである)問題の解決方法がよくなかった気がする。そのへんは次回で見直していくことにして、今回は計測プログラムの話を少しする」

妹「1000回やればいいんじゃないの?」

「そうだけど、回転してる間にDelayとか使って、少し時間がかかるから、通常のForLoopで1000回というやり方ができない。自前でintを増やしてbranchで分岐という方法。あと回転が終わったかどうかをbranchで判定する。あと回転が終わるまで待つ処理。Boolean変数でフラグを作って、それがtrueの間は(Delayをはさんだ)無限ループで待つという仕組み。これで実際に何度も回してるのと同じ処理をしつつ、自動化することができた。30分間休まずクリックし続けるとかはほぼ拷問だから、やらなくていいようにする」

UE4 非アクティブのときにCPU使用量を低下させない 凛(kagring)のUE4とUnityとQt勉強中ブログ

「あと実用上はこれも大事だった。他のゲームとかしながら計測が終わるのを待ってたら、ウィンドウを後ろにやったとたんノロノロ運転になってしまった。それを解除する方法。"Use Less CPU when in BackGround"をオフしておくと、他のことをしてる時にも真面目に計測を続けてもらえる」

妹「省エネじゃなくていいの?」

「うーん、負荷の高い処理をするウィンドウは後ろに置くより閉じた方がいいと思うんだけど、色々やるただ通常UE4を使いながら調べ物をする時とかは、元のままの方が都合がいいかもしれない。エディタの設定はUE4を再起動せずに変えられるから、必要がない時は戻しておいてもいい」

※現在サッカーの見過ぎにより更新が滞っています。7月になれば試合数が減って解消される見込みです