ITエンジニアのための勉強会・イベントレポート情報メディア

Unityで作ろう!ゲームアルゴリズム(4)ゲームにおける自動生成技術(基礎知識編)
skill

Unityで作ろう!ゲームアルゴリズム(4)
ゲームにおける自動生成技術(基礎知識編)

2017.01.06

 
  • このエントリーをはてなブックマークに追加

筆者は最近、同僚が作ったIoT機器を見て心奪われ、電子工作を始めました。
ゲームの勉強せい!と突っ込まれそうですが、電子工作とゲームとの関連性はゼロじゃないのです。

具体的な例(というかこじつけ)を挙げますと、昨年Kickstarterで人気を集めたC.H.I.P.という電子工作向けの小型ボードPCがありました。
先日、このC.H.I.P.の専用ケースが登場しました。

C.H.I.P.に専用ケースを装着すると、なんとPocketC.H.I.P.というモバイルゲーム機(っぽいもの?)に変身したではありませんか!
https://getchip.com/pages/chip
(↑とっても興味深いマシンですが、技適マークが無いので国内での通信はNGです。ご注意を・・・)

自作ハードの上で自作ゲームを動かす。
以前までは考えもしなかったことです。
うーん、いいですねー。夢ですねー。

さて、夢見心地になったところで本題に入りましょう。
前回までとは打って変わって、今回はゲームの自動生成アルゴリズムについて学んでいきます。

賀好 昭仁

ゲームと自動生成の関係って?

そもそも、ゲームと自動生成にはどのような関係があるのか考えてみましょう。

ゲームにおける様々な要素は、製作者が意図して作ったものです。
ただ、ちょっと工夫すればその様々な要素のうちの多くを、プログラムで自動生成することも可能です。
地形、植物、ダンジョン、NPC、アイテムなど、やろうと思えばゲームにおけるほとんどの要素が生成出来ると言って良いでしょう。

ゲームにおける様々な要素を自動生成する技法は、「プロシージャル」と呼ばれています。

プロシージャルとは

プロシージャルとは、英語で「手続きの」といった意味です。
プログラムで一定の手続きを行うことで様々な要素を生成するイメージでしょうか。

プロシージャルな技術は色々なところで使われています。
地形・ダンジョン・植物・敵キャラ・AI・アイテムなど、プロシージャルでカバー出来る範囲は多岐にわたります。

フラクタルについても知っておこう

ゲームにおけるプロシージャル技術の代表格として、フラクタルがあります。
フラクタルとは幾何学の概念のひとつで、フラクタルな図形とは拡大/縮小しても相似した構造が続く形を指します。

↓にサンプルとしてフラクタル画像を挙げてみます。(マンデルブロ集合の一部を拡大したものです)
画像ファイルですと解像度の問題で限界がありますが、拡大しても相似した構造が続きそうだというのは何となくご理解いただけますでしょうか。

マンデルブロ集合の一部
上図赤枠部分の拡大図

フラクタルがプロシージャルにおいて何故重要なのかと言いますと、フラクタルを使うことで、自然物が持つ「自己相似性」を表現できるためです。
(自己相似性についてはWiki↓をどうぞ)
https://ja.wikipedia.org/wiki/%E8%87%AA%E5%B7%B1%E7%9B%B8%E4%BC%BC

要はフラクタルな図形やオブジェクトを生成するプログラムをちょこっと調整すれば、とっても自然な地形や木などを表現できるというワケです。

手軽にフラクタルで遊んでみるのであれば、Mandelbulberという面白いツールがあります。
GALLERYをご覧いただくと、フラクタルの凄さにゾッとするかと思います。
http://www.mandelbulber.com/

最近のゲームはどんどんグラフィックが進化していますが、広大な3Dマップや枝がワサワサしている木をひとつひとつ手で作り込んでいると、時間がいくらあっても足りません。
ゲーム機の性能やゲームの内容が進化するにつれ、活用できるシーンは更に増えていくでしょう。

プロシージャル技術を活用したゲームの例

プロシージャル技術は古くから様々なゲームで活用されています。
中でもプロシージャル技術を徹底的に活用しているものとして、ここではPC&PS4でリリースされたNo Man's Skyをご紹介しましょう。

開発したのはHello Gamesというイギリスの小規模なインディーズゲーム会社で、開発メンバーは15人程だそうです。

No Man's Skyは星を探索するゲームで、星の地形や生物、行動パターンまでがプロシージャルに生成されます。
そのパターンは何と1,800京通り!(「京」は「兆」より上の単位です!)
全てのパターンを体験するのは一生かかってもムリですね。

冒険の舞台となるあらゆるものがプロシージャルに生成され、しかも初めて発見した星や生物にプレイヤーが名前を付けられるシステムがあります。
これがまた冒険心をくすぐります。

ゲームは相当なクセがあって賛否両論なようですが、そのコンセプトは今後のゲームの在り方を変える力を持っているような気がして、ワクワクしてしまいます。

余談
ちなみに、Unityにもプロシージャルな機能、「プロシージャルマテリアル」があります。
https://docs.unity3d.com/ja/current/Manual/ProceduralMaterials.html

テクスチャを組み合わせたり、組み合わせて出来上がったテクスチャを更に組み合わせたりするようです。
こちらもいずれ遊んでみることにしましょう。
(それにしても公式ドキュメントに使われている画像、キモチワルイですね・・・)

まとめ

今回はゲームに活用できる自動生成の基礎知識編として、プロシージャル技術の概要を非常にざっくりとご説明しました。
プロシージャル技術はゲームの様々なシーンで生かすことが出来ますので、こういう手法があることだけでも知っておいていただければいずれ役に立つ時が来るでしょう。

次回はプロシージャル技術の中でもすぐ実装して試せる部分にクローズアップして、Unity上で動くものを作っていきますよ!

原稿: 賀好 昭仁
qnoteスマホアプリ開発チーム技術主任。PHP・Android・iOS・Unityなど複数のプラットフォームでの開発を行う。
しばしば7匹の先輩猫社員たちにイスを占領される。

Unityで作ろう!ゲームアルゴリズム(4)ゲームにおける自動生成技術(基礎知識編)

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW