t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Unityに入門してみたので、やりたいことと使用した参考書籍を紹介

先週からUnityに入門してみた。

Unityはゲームエンジンと呼ばれるツールで、ゲーム作成を強力にサポートしてくれる開発環境である。非商用の場合は無償で利用できるのでゲーム作成に興味があればとりあえず気軽に手を出してみることができる。サポートされている開発言語はC#で、こちらもVisual Studio Communityで開発できるので費用は掛からない。

Unityで作られている有名なゲームにはスーパーマリオランとか、ドラゴンクエストVIIIがある。

ゲームに欠かせない物理演算や当たり判定はゲームエンジンが用意してくれるのでプログラマーはゲームコンテンツの作りこみに専念できる。
最近はコンシューマーゲームのほとんどが何等かのゲームエンジンを用いて作られているようだ。

といっても、私の場合はゲームを作りたくてUnityを始めた訳ではない。まずはその話から。

Unityを触り始めたきっかけとやりたいこと

きっかけは「こーじ」さんという方のYouTube動画。
こーじさんはUnityで物理シミュレーションとか機械学習とか、物の仕組み(あれどういう仕掛けで動いてるの?)的なことをよく解説されているYouTuberだ。
www.youtube.com

以前からこのブログでも何かの概念を説明するときにモデル図を用いてきたけれど、アニメーションがあると良いなという思いはあった。
たとえば過去に書いたこういう記事とか、図にしてもなかなか難しいものがあるので動画にできないだろうかと。
thom.hateblo.jp

それで、動画で説明するのにどういう手段があるか色々と模索していた時期がある。候補に挙がったのは以下の5つの手段。

  • Power Pointアニメーション
  • 液晶ペンタブで書きながら録画
  • Adobe Animate CC
  • Blenderで3Dアニメ
  • Unityで3Dアニメ

まぁ今からVBAの解説を作るかと言われると今のところそんな気力はないんだけど、概念説明とかに使えるスキルとして何かしらアニメーションのスキルを習得しておきたい。
そんなときにこーじさんの、「かぎの内部構造」の説明動画を発見。
私が一番やりたいこと(仕組みの説明)に近かったのでUnityを選択することにした。
www.youtube.com

Unityの参考書籍

最初に買ったのはこちら。しかしこの本は現段階(初版 第2刷)ではChapter4での記述の誤りが多すぎて、おススメできない。

作って学べる Unity 超入門

作って学べる Unity 超入門

  • 作者:鈴木 道生
  • 発売日: 2019/04/16
  • メディア: 単行本(ソフトカバー)
主に物理演算機能を活用した題材が多くて、私がやりたいことに近い本だっただけにとても残念だが、正誤表を確認しながらやってみようというレベルじゃなかったので諦めて別の書籍を買うことしにした。

次に買ったのはこちら。やりたいことに直行するのは諦めてまずは2DでUnityそのものをしっかり学ぶ作戦。この本は結果的に大正解だったと思う。

【★特典付き】楽しく学ぶ Unity 2D超入門講座(特典:姉妹本の特別試し読みPDF)

【★特典付き】楽しく学ぶ Unity 2D超入門講座(特典:姉妹本の特別試し読みPDF)

  • 作者:森 巧尚
  • 発売日: 2019/02/21
  • メディア: 単行本(ソフトカバー)
特に躓くことなく、土日の2日間で最終チャプターまでコンプリートできた。
チュートリアル本なので書かれたとおりに操作していけば誰でも2日くらいで完了できると思う。ただその操作の意味をどこまで理解できるかは過去のプログラミング経験にもよると思うので、前提知識としてCのような記述スタイルの言語をひとつでも書いたことがあると望ましい。C#の入門書を1冊完了させたくらいの経験があるとベストだけど、C・C++・Java・JavaScriptあたりでもなんとかなると思う。オブジェクト指向は多用されてるので基本的なところは抑えておく必要がある。

そして本日読了したのがこちら。こちらもAmazonでの評価どおりの良書で、最後までサクサクと進められた。

2D版で既に済ませている内容の解説も多いので、差分学習したい場合は若干うんざりする場面も多いけど、2D版を済ませたからって1発で記憶するってこともないだろうから似たような内容でも復習だと思ってやってみた。もうそれ2Dでやったよって思って実際にその通りのこともあるけど、実は3D版だと勝手が違ったりする場面も結構あったので思い込みで読み飛ばしてたら重要な項目をスキップしていたかもしれない。真面目にやって良かった。

あとは3Dならではの不可解な事象にも悩まされた。たとえばキャラのX軸・Z軸の回転をロックしてるのにY軸回転を続けると0.0001とかの単位でX軸・Z軸が微妙に傾いてきて、ジャンプも組み合わせると最終的に傾きが大きくなってコケるとか。サポートサイトからダウンロードしたコードでもコケてたので気にしないことにしたけど。

この本は月~金の平日1時間ずつと、土日3時間ずつくらいで読了したのでトータルで13時間くらいかなと思う。

さて、もともとUnityでゲームを作るつもりはなかったんだけど、やってみるとそれはそれで楽しい。最近ゲーミフィケーションという概念を知ったのだが、ゲームを活用したエデュケーション(教育)のことを指すらしい。Minecraft Education Editionなんかがまさにゲーミフィケーションである。純粋な娯楽としてのゲームではなくて、そういう何か有意義なものを作ってみたいような気はする。

今後読む本(購入済)

まずはこちら。Blenderというオープンソースの3Dモデリングソフトの解説書である。

入門Blender2.9 ~ゼロから始める3D制作~

入門Blender2.9 ~ゼロから始める3D制作~

Unityで3Dゲームは作れるけど3Dモデルは作れない(ProBuilderという機能でシンプルなものはモデリングはできるらしいので訂正)。キャラを自分で作りたければ別途モデリングソフトが必要になる。
モデリングソフトもピンキリだけど無償で使用できて本格的な機能をそろえているものはBlenderくらいしかないので道楽でやるにはこれ一択。
以前は情報量の少なさがハードルになっていたようだけど現在はだいぶ解説書が揃ってきているように思える。
良書かどうかはこれから読むので分からないけどAmazon評価は良かったので期待している。

次にこちら。

Unityでわかる! ゲーム数学

Unityでわかる! ゲーム数学

  • 作者:加藤 潔
  • 発売日: 2018/06/18
  • メディア: 単行本(ソフトカバー)
これは材料力学の学習で微積分を使うので、どうせなら物理シミュレーションで弾道計算とかやりながら学習したいと思っていて、ちょうどよさげなので購入した。
Unityを使っているものの中味は数学書で、数式が沢山出てくるので正直読了できるかどうかはまだ自信がない。

最後にこちら。

これはUnityでAIを使用するための書籍。

UnityとAIで何ができるかというと、たとえばコンピューターにゲームを自動的に操作させたり、
a1026302.hatenablog.com

対戦ゲームの戦術をシミュレーションしたりといったことができる。
www.youtube.com


機械学習というとこれまで理論書や実験的なものが多くて、入門しようにも数学の知識がないと太刀打ちできなかったり、書籍のサンプルを発展的に使用するということが難しかった。(私が遅れているだけかもしれないけど。)

最近ようやく一般的なプログラマーが「使う」というフェーズに入ってきたように思う。
先日書店でScratchでAIを活用するというテーマの書籍を見つけてしまい、強烈な危機感を覚えた。

Scratchといえば、主に子供をターゲットにしたビジュアルプログラミング言語である。
つまり機械学習はもう学者や研究者だけのものではなく、既に子供でも活用できるレベルにまで浸透してきているということだ。

ここまで来たら、もう手を出さないと次の時代に乗り遅れる感じがする。
ということでUnityから初めてみようかと思う。


AIといえば、実はこれとは別に以前にJetsonNanoも購入していてそちらはまだインストールしてサンプル1つ動かしただけで眠っている。
JetsonNanoはAIプログラムを実行するためにグラフィックまわりの演算スペックに特化した安価なシングルボードコンピューターである。ラズパイでもAIプログラムを実行することはできるらしいけど、JetsonNanoはAIに特化しているだけあって参考書籍やWeb記事もAIの活用例が沢山みつかるのが強み。

NVIDIA Jetson Nano 開発者キット B01

NVIDIA Jetson Nano 開発者キット B01

  • メディア: Personal Computers


Jetsonで作りたいものは、部屋をカメラで撮影して物体認識させ、どれくらい散らかってきたかを数値化し、基準を超えたら警告を出すシステム。
できるかどうかは検討付いていないけど、よく見かける物体が何であるかを認識するプログラムよりシンプルになるのではないかと思っている。私がやりたいことを実現するには、モノが何であるかを識別する必要はなく、モノの数だけ数えれば良いんじゃないかと思っている。

さて、脱線してしまったけど今とにかく興味が色々な方向に拡張している。
このまま霧散させてしまわないようにちゃんと着地点を見つけてひとつのスキル体系として収束させていくことが今後の課題である。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。