先週から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での記述の誤りが多すぎて、おススメできない。
- 作者:鈴木 道生
- 発売日: 2019/04/16
- メディア: 単行本(ソフトカバー)
次に買ったのはこちら。やりたいことに直行するのは諦めてまずは2DでUnityそのものをしっかり学ぶ作戦。この本は結果的に大正解だったと思う。
【★特典付き】楽しく学ぶ Unity 2D超入門講座(特典:姉妹本の特別試し読みPDF)
- 作者:森 巧尚
- 発売日: 2019/02/21
- メディア: 単行本(ソフトカバー)
チュートリアル本なので書かれたとおりに操作していけば誰でも2日くらいで完了できると思う。ただその操作の意味をどこまで理解できるかは過去のプログラミング経験にもよると思うので、前提知識としてCのような記述スタイルの言語をひとつでも書いたことがあると望ましい。C#の入門書を1冊完了させたくらいの経験があるとベストだけど、C・C++・Java・JavaScriptあたりでもなんとかなると思う。オブジェクト指向は多用されてるので基本的なところは抑えておく必要がある。
そして本日読了したのがこちら。こちらもAmazonでの評価どおりの良書で、最後までサクサクと進められた。
【★特典付き】楽しく学ぶ Unity 3D超入門講座(特典:姉妹本の大ボリューム試し読みPDF)
- 作者:森 巧尚
- 発売日: 2020/01/29
- メディア: 単行本(ソフトカバー)
あとは3Dならではの不可解な事象にも悩まされた。たとえばキャラのX軸・Z軸の回転をロックしてるのにY軸回転を続けると0.0001とかの単位でX軸・Z軸が微妙に傾いてきて、ジャンプも組み合わせると最終的に傾きが大きくなってコケるとか。サポートサイトからダウンロードしたコードでもコケてたので気にしないことにしたけど。
この本は月~金の平日1時間ずつと、土日3時間ずつくらいで読了したのでトータルで13時間くらいかなと思う。
さて、もともとUnityでゲームを作るつもりはなかったんだけど、やってみるとそれはそれで楽しい。最近ゲーミフィケーションという概念を知ったのだが、ゲームを活用したエデュケーション(教育)のことを指すらしい。Minecraft Education Editionなんかがまさにゲーミフィケーションである。純粋な娯楽としてのゲームではなくて、そういう何か有意義なものを作ってみたいような気はする。
今後読む本(購入済)
まずはこちら。Blenderというオープンソースの3Dモデリングソフトの解説書である。
- 作者:シゲユキ, 伊丹
- 発売日: 2020/09/01
- メディア: 単行本
Unityで3Dゲームは作れるけど3Dモデルは作れない(ProBuilderという機能でシンプルなものはモデリングはできるらしいので訂正)。キャラを自分で作りたければ別途モデリングソフトが必要になる。
モデリングソフトもピンキリだけど無償で使用できて本格的な機能をそろえているものはBlenderくらいしかないので道楽でやるにはこれ一択。
以前は情報量の少なさがハードルになっていたようだけど現在はだいぶ解説書が揃ってきているように思える。
良書かどうかはこれから読むので分からないけどAmazon評価は良かったので期待している。
次にこちら。
- 作者:加藤 潔
- 発売日: 2018/06/18
- メディア: 単行本(ソフトカバー)
Unityを使っているものの中味は数学書で、数式が沢山出てくるので正直読了できるかどうかはまだ自信がない。
最後にこちら。
Unity ML-Agents 実践ゲームプログラミング v1.1対応版 (Unityではじめる機械学習・強化学習)
- 作者:布留川 英一
- 発売日: 2020/08/14
- メディア: 単行本
UnityとAIで何ができるかというと、たとえばコンピューターにゲームを自動的に操作させたり、
a1026302.hatenablog.com
対戦ゲームの戦術をシミュレーションしたりといったことができる。
www.youtube.com
機械学習というとこれまで理論書や実験的なものが多くて、入門しようにも数学の知識がないと太刀打ちできなかったり、書籍のサンプルを発展的に使用するということが難しかった。(私が遅れているだけかもしれないけど。)
最近ようやく一般的なプログラマーが「使う」というフェーズに入ってきたように思う。
先日書店でScratchでAIを活用するというテーマの書籍を見つけてしまい、強烈な危機感を覚えた。
ScratchでAIを学ぼう ゲームプログラミングで強化学習を体験
- 作者:伊藤 真
- 発売日: 2020/08/06
- メディア: Kindle版
Scratchといえば、主に子供をターゲットにしたビジュアルプログラミング言語である。
つまり機械学習はもう学者や研究者だけのものではなく、既に子供でも活用できるレベルにまで浸透してきているということだ。
ここまで来たら、もう手を出さないと次の時代に乗り遅れる感じがする。
ということでUnityから初めてみようかと思う。
AIといえば、実はこれとは別に以前にJetsonNanoも購入していてそちらはまだインストールしてサンプル1つ動かしただけで眠っている。
JetsonNanoはAIプログラムを実行するためにグラフィックまわりの演算スペックに特化した安価なシングルボードコンピューターである。ラズパイでもAIプログラムを実行することはできるらしいけど、JetsonNanoはAIに特化しているだけあって参考書籍やWeb記事もAIの活用例が沢山みつかるのが強み。
Jetsonで作りたいものは、部屋をカメラで撮影して物体認識させ、どれくらい散らかってきたかを数値化し、基準を超えたら警告を出すシステム。
できるかどうかは検討付いていないけど、よく見かける物体が何であるかを認識するプログラムよりシンプルになるのではないかと思っている。私がやりたいことを実現するには、モノが何であるかを識別する必要はなく、モノの数だけ数えれば良いんじゃないかと思っている。
さて、脱線してしまったけど今とにかく興味が色々な方向に拡張している。
このまま霧散させてしまわないようにちゃんと着地点を見つけてひとつのスキル体系として収束させていくことが今後の課題である。