妹でもわかるUnrealEngine4

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

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

UE4のブループリントと構文木の図はよく似ている

「今日は遺伝的プログラミングについて調べてたんだけど、なんかすぐにブループリントで実装できるサンプルが見つからなかったので小休止」

妹「こないだ動画を見たやつ?」

「あれは遺伝的アルゴリズムで、遺伝的プログラミングというのはその強化版みたいなやつ。数字とかフラグだけじゃなく、ブループリントのノード自体を遺伝子として扱って、組み替えていこうという。そうすると原理的にブループリント出来ることはなんでも出来るはずだし、何回もやってれば勝手に最強になるのではないかと」

妹「それはすごい!」

「でも完全にランダムにブループリントのノードつなぐと、まともに動くプログラムが出来るわけもなく、ある程度作るノードを制限したり、色々調整しないといけないみたい」

妹「そんなにすごくなかったみたい……」

「まあそんなことを調べていてふと気付いたのが、遺伝的プログラミングでもよく使われる構文木というのが、ブループリントのグラフにとても良く似ている」

f:id:una_unagi:20170318004003p:plain
Wikipedia遺伝的プログラミングのページにある、構文木の例

f:id:una_unagi:20170318004009p:plain
同じ計算式をブループリントで表現した物

「ピンが向いてる方向の関係で右に90度傾けたけど、同じ計算式を同じように表現してる。最初に何のノードがあって、次にそこにつながるピンを書く。そのピンにパラメータが必要なら、さらに別のノードをつないでいく」

妹「構文木というのがまずわからないんだけど」

「(プログラミング)言語を文法によって解析したデータ……なんだけど、普通はなかなか説明するのが難しい。でもブループリント図を紙に書いたやつ、といえば簡単に説明出来るんじゃないかと」

妹「そういう図だと言われれば、そういう図には見えるけど。ピンと線のつながってる方向がわかりにくいかも」

「それは基本的に下から上にデータが流れていく感じの図面になってる。ピンが増えると線もたくさんになるけど、真横に線を伸ばしたりはしない。どっちが上か下か関係がわかるようになってる。ブループリントみたいに線がグネグネしたりは出来ないから、その点はちょっと違うかも」