三日坊主のエンジニアBlog

Androidアプリ,Webアプリなどをやってるプログラマの雑記帳

Unityを使ってみた

Unity Technologies社が提供しているクロスプラットフォームゲームエンジンであるUnityを最近はじめました。
有料のUnity Proから機能限定版のUnityライセンスが、条件を満たせば無料で使うことができて、利用する人が急増しているそうです。

Unity
http://japan.unity3d.com/

詳しいライセンスやどんなことができるのかは、Unityの公式サイトで確認してください。
私はまだ無料版しか触っていないのですが、実際に使ってみての雑感など羅列してみようと思います。

f:id:Synd:20130404232234p:plain

はじめてUnityを使うには?

初めて触る人は、Unityのチュートリアルなどを見ながら遊んでみるとよいかと思います。スクリプトのAPIや用語などは公式のリファレンスに載っています。
http://japan.unity3d.com/developer/document/
日本語の参考書も最近充実してきていますし、参考サイトも探せば結構増えてきているので、基本的なことはGoogle等で検索すればわりと欲しい情報が見つけられると思います。

プログラミングに関して

ゲームのロジックなどはプログラムを書いて制御することができます。C#, JavaScript, Booが利用可能です。

  • Boo ・・・ 使っていないので不明(Booistさんゴメンナサイ)。
  • JavaScript …しばしばJavaScriptと紹介されているが、実際は文法を拡張した「UnityScript」。変数の型宣言やクラス、プロパティ、を定義することができるなど、使いまくるとJavaScriptに見えないソースコードが出来上がります(恐らくMonoVMで動作するのに効率的なのだろう)。
  • C# ・・・ 個人的にC#が使いやすいと思いました。主に開発環境的な問題が理由なんですが、ソースコードの自動補完(インテリセンス)、リファクタリング等のツールが良く使えるのが大きかったです。私みたいに普段の開発でIDEにどっぷりな人はC#が良いのではないでしょうか。

ちなみに、Unityには、MonoDevelopを改造したエディタが付属していますが、多分多くの人が使い慣れているVisual Studio(ExpressもOK)と連携させて開発することもできます。

無料の範囲内でできることは?

無料版では、Windows,Mac,Linux各プラットフォームの実行ファイル形式やブラウザで実行できる形式に出力できます。Android,iOS,各コンシューマゲーム機用の実行ファイルを出力する場合はそれぞれのライセンスを購入する必要があります。
また、いずれの場合もゲーム起動時にUnityのロゴが必ず入ります。

開発に関連するところでは、Pro版専用の機能として、メモリ量などを確認できるプロファイラの利用や、Occlusion Culling、Static Batching、など、主にパフォーマンスを向上させるための機能や設定、シーンの非同期読み込み等が挙げられます。
APIに関しては、OpenGLの低レベルなラッパーを呼び出し、テクスチャにレンダリング結果を描画するなど、やや凝ったことをするときなど、Pro版が必要になってきます。しかし、最初に作る様なとこは無料でできるので、制限にイライラしないで開発を進められると思います。

どんなゲームが作れる?

基本的にどんなゲームでも大丈夫です。
FPSやTPS等、地形の上を移動するようなキャラクタの操作はUnityの得意分野でしょう。
物理エンジンを駆使する様なゲームも(リアルな物理シュミレーションというより、あくまでゲーム的な利用として)相性がいいと思います。奥行き方向の移動、回転を制御することで2Dの物理系ゲームも可能です。もちろんアクション系やアドベンチャー系以外のジャンルでも使えます。

Unityを使うと何がうれしいの?

Unityで開発して最初に感じたことは、普通に開発していてもソースコードが長くなりにくいことです。オブジェクトのレイアウト、テクスチャやマテリアルとの紐付け、パラメータの初期値の設定など、ソースコードで書くと冗長だったり直感的ではない部分はUnityデザイナに任せてしまえるので、スクリプトは、ゲームロジックの記述に専念できるのだと感じました。
ゲームのデバッグ中に、シーンビューで全体を見渡したり、オブジェクトの座標やパラメータをリアルタイムに変更したりできるのは開発が驚異的に捗ります。
その他にもUnityを使うメリットは数え切れないほどあります。
これを使いこなせれば、楽しいゲームプログラミングLifeが送れるのではないかと思います。

気が向いたらUnityの記事をちょくちょく投稿するかも(^_^)/~~