Plesk Obsidianリリース記念!Plesk最大7カ月無料キャンペーン

2013/5/15

40過ぎのオジサンにもできるかな? UnityとPhoton SDKで作る3Dネットワークゲーム。

3Dゲーム開発エンジンとして話題のUnity。プログラマでなくても高度なグラフィックのゲームが作れてしまうというのは本当か?ということで無謀にも手を出してしまいました。いつやるか?Photon Cloudがリリースされたイマでしょ、ということで訳も分からずゲーム作りの扉を開けてしまったオジサンのつぶやきです。最初にお断りしますが、この記事には有用なスクリプトなどは何も出て来ませんので悪しからず。まさにビギナーの素直な使用感をお伝えしようと思っています。

Unityなる話題のものを、ノンプログラマとてしてみむ。
大人が無料のパズルゲームをしている横で子供が3DSで遊ぶという倒錯した状況の昨今、なんと3Dゲーム開発は一人でもできるらしい。本当?
課金される側よりも、ゲームの作り手になるべきだとじっちゃんも言っていた。そう、分からんで済ませるから人は歳をとるのだ。
というわけでUnityです。聞くところによると、レゴブロックを組み合わせるように3Dゲームがホイホイ作れるらしい。

プランによっては無料。プロ版も30日間無料試用できる。太っ腹。それにMacやWinをはじめ様々なプラットフォームに対応しており、スマホ用を作るのにも、特別に何かをする必要もないとのこと。もちろん速攻インストール。
細かいところは省略しますが、こちらUnityのサイトにいって右上のDownloadボタンを押し、ダウンロード&展開するだけです。セットアップの際にフリー版かプロ版の30日試用かを選び、メールアドレスとパスワードを登録してアクティベーション完了。
この時点で、一旦次の作業に移ります。

ついでにクラウドの恩恵にもどっぷり浸かってみむ。
無理して土佐日記話法を続ける必要もないのですが(笑)。さて、今年の4月15日に、Photon Cloudの日本公式サイトと日本リージョンがオープンしました。

SaaS型で提供されるのでネットワークの専門知識や手間は一切不要。Unityでも、ネットワーク通信機能を組み込んだオンラインゲームがすぐに開発できるというもの。
20CCU(同時アクセスユーザー数)まで永年無料で使え、接続する人数によって段階的に利用料金を支払えばいい。こちらも太っ腹ですね。僕なんかどう考えても無料プランをはみ出る可能性はないし、もちろん導入するしかない!ということで、登録ユーザーに。

まず上記公式サイトにアクセス。
メールアドレスとパスワードを登録すると、すぐにメールの返信が来るのでリンク先へ飛んでログインします。

My Photonということで自分用のダッシュボードが開きます。そちらにAppIDが表示されるので、ここでUnityに戻ります。

Unityには、Assetというプログラムに必要な素材のセットが用意されており、AssetStoreで販売もされています。ウレシイことにこちらもフリー(無料)のものもいっぱいあります。
UnityのメニューからWindowをプルダウンしてAsset Storeを開いたら、Photonを検索します。そうするとこの画面

が出てきますので、ここからPhoton Unity Networking Freeを選びインポートします。左側のダウンロードボタンを押すと、Download→Importと表示されるので、指示通りにクリック。このSDKをセットアップするときに先ほどのAppIDをコピペしてリージョンを決めてセーブ。こんなダイアログが出たら成功です。

これで、ネットワーク環境も出来上がりです。ただただスムーズ。Photon Cloudに登録してから5分も経っていないと思います。簡単すぎてある意味拍子抜けですね。ダッシュボードではこうしてリージョンごとのアクセスユーザー数を閲覧することもできて親切です。

僕はネットワークゲームのサーバー管理がいかに大変か実体験はないのですが、まあ、普通にホームページをWordPressで作ろうとしてもサーバーを借りたりして面倒な設定とかしないといけません。それと比べてもなんて簡単なのでしょう!

また、その筋の人からの話では、サーバーのことに気を使わずに、ゲーム作りに集中させて欲しい!というgeekなご要望に応える意図もあるようです。なるほど。

僕のようなオンボロ経営者の立場からすると、固定費削減はすべて正義(笑)そういう意味ではユーザー数に合わせて料金を追加したり減らしたりできるこのPhoton Cloudは、まさに正義の味方と言えます。昭和生まれの記憶のいたずらか、ウルトラ兄弟の中にフォトンというのもいたような気がする・・・いないか。まあ、それぐらいウルトラな感じだということで(笑)

さて、実際Unityはそんなに簡単なの?どうなの?
無事にPhoton Unity Networking Free をインポートしてプロジェクトを開くと、こんなゲームシーンが開きます。

とりあえずこれで、スクリプトを書かないでゲームが作れるのか試してみたいと思います。ちなみにプロジェクトとかそのへんの単語のご説明は後ほど。

最初のシーンでは4つのデモが選べるようになっています。BoxesDemoやSynchronization Demoは、Unityの特徴である物理エンジンのデモ(箱が落ちてきて着地、積み重なって転がる)やプレハブ(Prefab:素材のセットを作っておき、あとで簡単に利用できる)が試せるのですが、とりあえずキャラが面白そうなWorkerDemoでゲームもどきを作ってみようと思いました。

まずメニューからWorkerDemo以外の選択肢を消して、Worker用のスタート画面にしてしまいました。

ゲームシーンを開くと、Roomの選択画面が出るので、適当にCreate Roomを選択。Workerが現れます。ちなみに、PC2台持ちでもう1台にもUnityをインストールし、同じroomにJoinすると、こんな感じで2人Workerが現れます。

操作もそれぞれのPCから別々にできて、これは検証用にホント便利そうだなと感じました。何を検証するのか知らないけど(笑)リアルタイムのチャットもできます。このあたりのネットワーク環境構築の簡単さは、僕がその有り難さに気がついていないだけかもしれません。詳しい人ほど驚くかも。

とりあえずPlaneという床にあたる部分に遊びで会社のロゴを入れてみました。

画像ファイルをマテリアルビューにドラッグ&ドロップで配置できてしまうという簡単さ。ファイル形式もいろいろ対応しています。Workerのスキンも画面から選んで即座に変えられます。

フリーのAssetから宝石を配置してみたり

さんざん遊んだ末、GameOver画面(シーン)を作ってみました。

パーティクル・システム(手裏剣という名前が付いてます)でキラキラしたものをかぶせたりして。

これらの3シーンを最後にBuildすればゲーム一丁上がりです。AssetStoreで素材を探す時間を考えても作業は2時間もかかってないです。本当に簡単だと思います。

・・・ですが、すいません。お気づきのようにこれは「ゲームもどき」であってゲームではない。

得点カウントの方法や表示、ゲーム時間の設定、シーンの切り替え、レベルの設定はするのか、1からキャラを作ったらどうなるのか、アニメーションをどうするか、音楽は、etc…考えて実装しなければいけないことは無数にあるのに、全く対応できていないのです。

理想と現実にはギャップが付き物ですね・・・。
当たり前といえば当たり前なのですが、僕のような素人×Unityには3つのハードルがあるということを痛感しました。

まずは、操作について。いくら簡単だといっても設定しなければいけないことがとてもとても多い。(それを減らすためにプレハブというしくみもあるのですが)。すべてのゲームオブジェクトにいろんな属性が存在していて、それを理解するのが大変です。あと単にオブジェクトというと、データのまとまりを指す場合もあるのでそのへんも混乱のもとです。

Unityのバクっとした全体像はこんな感じです。最初にプロジェクトという、ゲームに使う全部の素材が入ったフォルダを作ります。そして3D空間の中に、地面やキャラ、障害物などゲームオブジェクトという部品を配置します。ヒエラルキービューにはその部品が全部表示されており、部品の階層を決めることができます。インスペクタビューでその部品のさらに細かい属性を決めていきます。

例えば物体の形状、重さや表面の模様など、そうした属性はコンポーネントという呼び方で種類ごとにまとめられており、いちいちスクリプトを書かなくても設定できるようになっています。もちろんスクリプトを書いて設定することもできます。

そしてゲームオブジェクトの集合をシーン(場面)というまとまりで保存しておき、スタンドアローンのアプリやWEBアプリ、スマホ用など利用環境ごとに書きだして、最後にシーンを順番に並べた状態でBuildする、という流れです。ふう。なんか間違ってないですか。教えてエラい人。

こうしたUnityの全体像を把握するのに僕は10時間ぐらいかかってます。もっとかな?また実際に操作してトライ&エラーしないと、本やWEBを読むだけでは理解しにくいです。

次なるハードルは「三次元」とそれを見る「視点」、「重力」についての理解です。

奥行きとか高低の概念は、ダジャレじゃないけれど奥が深い。特に、インスペクタでUse Gravityをオン

にすると、オブジェクトがどこまでも落ちていって戻って来ません。果てしなくマイナスになり続けるy座標を眺めながら、何度呆然としたことでしょう。もちろんそこが物理エンジンを積んだUnityのスゴイところなんですが、こちらの理解が追いついていないとツライ。あとカメラがどこを視野に入れているか、どこからの視点なのかについても、常に意識が必要だと思います。

そして3つ目は、なんだかんだ言ってもC#やJavaSriptの知識は必要だ、ということ。Assetにはいろんなスクリプトが格納されていて、それを探してコンポーネントにドラッグ&ドロップすればなんとか動作を指定できるのですが、やっぱりやりたいことを細かく素早く実行するにはスクリプトを書かないと、と思いました。

それに、Assetの中にちょっとでも記述が間違ったスクリプトが紛れ込んでいると、コンパイルエラーが出てゲームが動いてくれません。スクリプトを知らないと何が間違っているかすら分からないわけですから、やっぱり最低限の知識はいるよなあ、と一人深夜のUnity画面の前で自分に話しかけたのでした。

とはいえ、面白い使い方がいっぱいできそう!
前の章は若干しょんぼり気味で終わったのですが、まあ、慣れの問題だよね。と前向きに考えています。僕は、3Dグラフィックを手軽に作れる、という点に興味があって、お得意先が主人公になったゲームをさくっと作ってプレゼントしたら喜ばれそうとか、フェイスブックとかのグループで各自のアイコンをテクスチャにしたゲームを作ったら楽しそうとか思います。まあ、いまでもピグだスタンプだとコミュニケーションにキャラを介在するのがあたりまえになってますが、それが自作だともっと楽しいでしょと。
ゲームそのものはプロが作ったものに当然かなわない。でもゲームを消費するだけじゃなくて、ゲームを作り出す側に立ってみようよ!と思う。
もちろん、ちゃんとした開発者のみなさんはPhoton Cloudで10,000CCUをめざして頑張ってください!とも思う。

Unityはすでにいろいろと研究されている方、様々なスクリプトを公開されている方がたくさんいらっしゃいます。コミュニティも盛んなようです。最後に参考にさせていただいたリンクなど、ごく一部ですがご紹介したいと思います。


→動画なのでとても分かりやすいです。

Unityユーザー助け合い所
→フェイスブックのグループです。

Photon Cloudを理解する | Exit Games Photon Cloud Documentation
→日本語がちょっと分かりにくいですが、Photon Cloudについて。

UNITY – Developer – はじめての Unity – 第1回 世界の「骨格」をつくろう

→Unityのサイトにあるチュートリアルです。

No hack, no work • Unity開発に関する50のTips 〜ベストプラクティス〜(翻訳)
→開発者向けですが、ヒント&Tipsがいっぱい。

スペック・料金 | 世界最大級のオンラインゲーム開発エンジン「Photon Cloud」がいよいよ日本上陸
→Photon Cloudの料金表です。

いや~長くなってしまいました。個人的にはもっとC#やJavaScriptを勉強して、早く何かミニゲームでも完成させたいです。あとUnity&Photonはスマホ対応もバッチリなのですが、これもそのうち書けたら書きます。ではみなさん素敵なゲームライフを!

株式会社エコトバ 棕澤和宏


コラム一覧へ