おもちゃラボ

Unityで遊びを作っていきます

【Unity】インベーダ作りで学ぶUnet超入門 その1

Unityでネットワークゲームを作るにはUnetというライブラリを利用します。このUnetを使うことで簡単(?)にネットワークゲームを作ることができます。

簡単にハテナがついているのは、それほど簡単じゃないからです(笑)

Unetには様々なネットワークの専門用語が出てきて、どうやって作ったら良いのか混乱しがちです。ただ、基本的なパターンはある程度決まっているので、それを紹介してからインベーダーゲームづくりに取り掛かりましょう。

f:id:nn_hokuson:20180618152215p:plain:w600

今回の目次は次のようになります。

ネットワークゲームの基本パターン

Unetを使ってネットワークゲームを作る場合、基本になるのは次のようなサーバとクライアントがあるパターンです。
f:id:nn_hokuson:20180617131709p:plain:w380

2人以上の対戦ゲームでは、1台がサーバーとクライアントを兼ねた「ホスト」と呼ばれる役割になります。ときどきホストという言葉がでてくるので、覚えておきましょう。

オブジェクトの生成と移動

さて、いよいよネットワークゲームの作り方について考えていきます。いきなり、とても大切なことですが、Unetを使ったネットワークゲームを作る場合には、サーバーでオブジェクトを生成するのが基本になります。

サーバーでオブジェクトを生成すると、それが各クライアントでも自動的に生成されます。

f:id:nn_hokuson:20180617131801p:plain:w380

サーバーでオブジェクトを動かすと、各クライアントでも自動的に移動します。

f:id:nn_hokuson:20180617131852p:plain:w360

超簡単ですね(笑)

クライアント側でオブジェクトを動かす

上のように動きが決まった敵などはサーバー上で動かせばよいですが、プレイヤなどユーザーが操作するものをこの仕組で動かすのは基本的にNGです。

クライアントからの入力をうけてサーバー経由で動かそうとすると次のようになります。

f:id:nn_hokuson:20180617131941p:plain:w500

ただ、この仕組でプレイヤを動かすと、ボタン入力してからプレイヤが動くまでに、サーバーに行って来ての通信ラグ(②〜④)が発生してしまいます。これではゲームになりません。

そこで、プレイヤだけは特別扱いしてクライアント側で動かせる「Local Player Authority」というチェックボックスがあります。Unetを使ってプレイヤを動かす場合には、基本的にこの方法を使います。

f:id:nn_hokuson:20180617132138p:plain:w500

Unetの基本スタイル

さて、まとめると・・・

  1. 基本的にネットワークで同期したいオブジェクトはサーバーで生成する。また、移動するのもサーバー側で行う。
  2. ただしプレイヤだけは、通信のラグを考えてクライアント側で動かす

この2つをおさえておけば、今後Unetを使ってネットワークゲームを作る場合に役立つこと間違いなし!です。たぶん(笑)

今回作るUnet対応インベーダーゲーム

今回作るインベーダーゲームのイメージは次のような感じになります。

敵が左右に移動しているのば通常のインベーダーゲームと同じですが、今回作るゲームではプレイヤの機体が2台表示されています。

f:id:nn_hokuson:20180618152215p:plain:w500

各プレイヤが1台1台の機体を操って、インベーダーを破壊します。機体はネットワークで同期されているので、一人が機体を動かすと、相手の画面でも同じ動きをします。機体を動かすにはAキーとSキー、弾を打つにはスペースキーを押します。

だいたい、今回作るインベーダーゲームのイメージは掴めたでしょうか。ではプログラムを作っていきましょう。

プロジェクトの作成

では、今回はUnetでインベーダーゲームを作る下準備だけしておきましょう。ここではUnity2018.1.0f3を使って紹介しますが、Unity2017以前のものでも、ほぼ同じ方法で動作できると思います。

まずはUnityを起動し、プロジェクト名をInvader、Templateを2Dにしておきます。Unetは2Dでも3Dでも問題なく動作します。

f:id:nn_hokuson:20180618151600p:plain:w500

つづいて必要なアセットをプロジェクトビューにドラッグ&ドロップしてください。今回使用するアセットは↓からダウンロード可能です。

https://app.box.com/s/rjoq2pjwgm8jp05fdw7u2t1zd0m2tjeb

このような状態になればOKです。

f:id:nn_hokuson:20180618151820p:plain

今回はここまでにしておきましょう。次回はネットワーク同期したプレイヤを動かすところまでを作っていきたいと思います。

【Affinity Designer】文字のアウトラインを描画する

ここではAffinity Designerを使って文字のアウトラインを描画する方法を紹介します。文字の輪郭線だけを書きたいときや、文字にアウトラインをつけたいときに便利です。

文字をアウトライン化する方法

まずは文字を選択した状態で、メニューバーから「レイヤー」→「カーブに変換」を選択します。

f:id:nn_hokuson:20180616122544j:plain

すると文字の輪郭がカーブとして描画されるようになります。アウトラインだけを表示したい場合は、右のカラーパネルから「カラー」タブを選択して、塗りは無しに設定します。

f:id:nn_hokuson:20180616123012j:plain

また、アウトランの太さを変えたい場合は、「境界線」タブをクリックして、「幅」を変更します。

f:id:nn_hokuson:20180616123155p:plain

Windowsを使ってiPhoneにipaをインストールする方法

iTunes 12.7からアプリの管理画面が削除されましたが、これまでと同様、Xcodeで作成したadhoc用のアプリ(ipaファイル)はiTunes経由でインストールすることができます。

ipaファイルをiTunesでインストールする手順は次のようになります。

WindowsにiTunesをインストールする

AppleのiTunesのサイトからiTunesの最新版(2018年6月現在で)をインストールしてください。

www.apple.com

32ビット版か64ビット版かはお使いのOSに合わせて選んでください。

f:id:nn_hokuson:20180609164047j:plain

iTunesでiPhoneを同期する

WindowsにiPhoneを接続し、iTunesを起動してください。iPhone上に「このコンピュータを信頼しますか?」という表示が出るので「信頼」ボタンを押してください。

f:id:nn_hokuson:20180609163118j:plain:w300

Windows側で次のような「このコンピュータがこのiPhone上の情報にアクセスするのを許可しますか?」というメッセージが表示されている場合は、「続ける」を押してください。

f:id:nn_hokuson:20180609163841p:plain:w400

iTunesで「新しいiPhoneとして設定」を選択してから「続ける」ボタンを押してください。

f:id:nn_hokuson:20180609163354j:plain

同期が始まり、iTunesの画面上部にステータスバーが表示されます。同期が終了するまでしばらく待ちます。

f:id:nn_hokuson:20180609163714p:plain

ipaファイルをインストールする

最後にipaファイルを接続したiPhoneにインストールします。iPhoneを接続した状態でiTunesの画面上部に表示されているiPhoneのマークをクリックしてください。

f:id:nn_hokuson:20180609164257j:plain

次のような画面に変わるので、iTunes画面左の「自分のデバイス上」と書かれた下の領域付近にipaファイルをドラッグ&ドロップしてください。自動的にインストールが開始されます。

f:id:nn_hokuson:20180609164548j:plain