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

妹でもわかるUnrealEngine4

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

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

妹、配列の存在意義がわからない

ブループリント ゲーム研究 コンピューター全般

妹「配列ってさ、なんのためにあるの?」

「何のためと言われても漠然としてて、なんと答えたらよいものか」

妹「いや要るからあるんだとは思うし、C++の説明も読んだし、チュートリアルとか見ながら使うことは出来るんだけど、これそもそもなんのためにあるのかなあと。具体的な使い道がよくわからないんだよ」

「ゲーム作るのに配列を使わないのはかなり苦行なんだけど、UE4の場合は内部的に配列をつかってるから、意識して配列を使いたいところはそんなにないかもしれない。考え方としては同じような物がたくさんあって、どれを使うかをプログラムで自由に切り替えたい時」

妹「今までブログに書いたやつでは?」

「しいて言うと、全体マップの行き先を変数に持たせる時。あれが今は右とか左とかついた4つの変数に収まってるけど、4つの配列になっていた方がノードは簡潔になる。ただ配列状態だと0が上で1が左でとかになって、エディタで設定するのが大変。やるとしたらエディタ側の設定はあのままで、Constructionで別の配列にコピーしておくとか」

妹「それは別にやってもやらなくても良い感じだなあ」

「だからしいて言えばの話なんだよ。トランプのカードとか、RPGのアイテムとか、SLGのユニットとか、一覧表が出てくるようなやつはだいたい配列か、それに近い方法を使ってる」

妹「アクションゲームだと?」

スーパーマリオブラザーズ3で言うと、キノピオにもらったアイテムとかそれっぽい。あれはアイテム型のデータが数十個ある配列として扱うのが自然。何を持ってるかその時々で違うし、アイテムを使う時に一番左のアイテムを選んでるからアイテム左、二番目だから……といちいちブループリントを組むのはめんどくさい。配列なら、何番目を選んだという整数を変えるだけでいい。分岐したり同じノードを何度も書いたりしないで済む」

妹「アイテムは配列ないと駄目なの?」

「それはアイテムの持ち方による。マリオ3で言うと、アイテム型の配列とかんがえる他に、キノコが5つ、フワラーが1つ、タヌキスーツが3つみたいな持ち方も考えられる。そうすると変数を数十個作る必要はなくて、キノコの絵の横にx5って書くだけでいい。合計でアイテム数に制限をつければゲームバランスも変わらない」

妹「なんでそうしないの?」

「理由は知らないけど、アイテムがたくさんあるというのが目で見てわかった方が良かったのかも。あと拾った順番が記録に残せるから、いつどこで取ったアイテムかというのがはっきりしてる。キノコx5みたいに書くと、どのキノコなのか誰にも区別出来ないわけだから。でもどれが何個あるかっていう意味では数字の方がわかりやすい」

妹「たしかにもらった順番通りにアイテム欄に入るから、どこのハンマーブロスをやっつけた時の物かはわかる」

「x数字で表す方式だったとしても、アイテムが何種類かあるだろうから、結局は配列使うものだけどね。0番にキノコの数、1番にフラワーの数みたいにして。個数表示をしたり、アイテムを選んだりする時のプログラムが楽だから。そういう利点がなければ無理に使わなくてもいいものだよ」

妹「でも無理してるのかしてないのか自分でわからないかも。というか、チュートリアルとか解説とか見てて、これ何とか出来るんじゃないの? って思うことはあるんだけど、自分が正しいのかわからないし」

チュートリアルだからわかりやすくしてるのかもしれない。まだ配列の説明を詳しくしてないから使わないという判断もあるだろうし。とりあえず自分なりの方法で書き換えてみるのはいいと思うよ。成功しても失敗しても経験値たまるものだし」

妹「どっかにはぐれメタルめいたチュートリアルいないかな……」