ネットゲーム開発に風穴を空けるか？アセットストアNo.1作者が新たなチャレンジ

2012年度にアセットストアで売り上げがトップだったNGUIというソフトウェアの作者は1000ドル（約80万円）以上を1日で稼ぐ日もあるほどの稼ぎ頭で、今年にはUnity Technologies本社にも採用されたのだが、ネットゲームのためのフレームワーク開発をひそかに進めていて、まもなくリリースすることをNGUIフォーラムの掲示板で発表したというので驚きだ。

すでにアセットストアにはPhotonやuLinkという競合アセットがある中で、NGUI作者はそれを利用するのでは満足できず、自ら開発に至ったという。UnityデフォルトのGUIに不満を感じて自らNGUIを開発し大ヒットさせたときとまさに同じ流れだ。

プロジェクトの名前はTasharen Network Framework。略して「TNet」とのことだ。

+ 今回はTNetの公開サンプルについて記事として取り上げる。

実際のサンプルのダウンロードや、コード設計する方法など細かい内容についてはここでは飛ばすので、気になる方は当方のブログであわせて参照いただければさらに理解が進むとおもう：
[ゲームは初心者にやさしく:ネットゲーム開発に風穴を空けるか？アセットストアNo.1作者のデザイン](http://gamesonytablet.blogspot.com/2012/12/no1.html)

#サーバの起動
##解像度、画質の選択

+ ウィンドウの解像度と画質を選択する。大きくした場合、ゲーム内容によってローカルマシンの処理および使用するネットワーク帯域幅に影響が出ると考えられる。

![Graphics](https://lh6.googleusercontent.com/-RD5KoErudc8/UNHhIddHj8I/AAAAAAAAAmY/jjA9BvmR7M0/s480/Graphics.png)

##入力デバイスのキーコンフィグ設定

+ 入力を行うデバイスのキーコンフィグ設定を行う。
+ Windows/Mac OS/Androidなどクライアント側が異なる入力でもここで調整できる。

![Input](https://lh6.googleusercontent.com/-wfEg3hZfdts/UNHhIt66BTI/AAAAAAAAAmc/OwFogTFFv2c/s480/Input.png)

##サーバアドレスの指定

+ IPアドレスをフィールドを指定する。
+ なおローカルの場合、プライベートアドレスで良い。
+ Start a Local Serverを押す。

![ServerAddress](https://lh3.googleusercontent.com/-EOwe_ubaJmI/UNHhI5CCUiI/AAAAAAAAAmo/wF4VqALidP8/s1152/ServerAddress.png)

+ 画面の下側にServer Startedと表示されればOK。
+ 右側にポートを含めた接続可能なサーバの一覧が表示される。

![ServerAddress1](https://lh3.googleusercontent.com/-OFTSPkFHK68/UNHhJORBpdI/AAAAAAAAAms/YWUi8KgQK8M/s1152/ServerAddress1.png)

#チャネルへの入室

+ 接続したいチャネルを選択する。
+ この例ではExampleが3つと、チャット1つのあわせて4つのチャネルに接続できる。

![ExampleChoose](https://lh3.googleusercontent.com/-Ib2tQOH9-jY/UNHhH6iKBwI/AAAAAAAAAmM/xLfsozmmCtQ/s1152/ExampleChoose.png)

##ネットゲーム（タッチして色変更)への入室 (Example1)
+ キューブをタッチすると色が変更される
+ 後述の手順でプレイヤーを追加すると、マルチプレイヤーで操作できる

![Example1](https://lh4.googleusercontent.com/-D7ghO00HLrs/UNHhGZpVoxI/AAAAAAAAAl8/s3a_epDWGng/s1152/Example1.png)

##ネットゲーム(インスタンス作成、破棄)への入室 (Example2)
+ 画面をタッチするとキューブがインスタンス化され、画面上部から
落ちてくる
+ 一定時間経過後にキューブは破棄される
+ 後述の手順でプレイヤーを追加すると、マルチプレイヤーで操作できる

![Example2](https://lh4.googleusercontent.com/-q1JI2FrGp1A/UNHhGf3V1II/AAAAAAAAAmE/txxLv6w4VQM/s1152/Example2.png)

##ネットゲーム(ドラッグして操作)への入室 (Example3)
+ キューブをドラッグして操作できる
+ 後述の手順でプレイヤーを追加すると、マルチプレイヤーで操作できる

![Example3](https://lh4.googleusercontent.com/-EexzdgNWHaU/UNHhHqo0ENI/AAAAAAAAAmI/DWLjwM24NdM/s1152/Example3.png)

##チャットルームへの入室
![ExampleChat](https://lh4.googleusercontent.com/-6tlAQJpLnfM/UNHhH9IT8-I/AAAAAAAAAmQ/6wODq_uQ3uw/s1152/ExampleChat.png)

#プレイヤーの接続

##サーバへの接続

+ IPネットワーク上の別マシンから接続する。
+ ローカルマシンで2つのウィンドウを立ち上げることでもOK。
+ サーバと解像度、画質設定を行ったあと、次の画面でConnectを選択。

![ServerAddress](https://lh3.googleusercontent.com/-EOwe_ubaJmI/UNHhI5CCUiI/AAAAAAAAAmo/wF4VqALidP8/s1152/ServerAddress.png)

##ネットゲームの使用例
+ それぞれのプレイヤーが行った操作が他のプレイヤーのウィンドウにも反映されることを確認
![Example2AtWork](https://lh3.googleusercontent.com/-iXAyDRxjito/UNHhIC8lk-I/AAAAAAAAAmg/ojsm6WU_Ih4/s1280/Exapmle2_AtWork.png)

##チャットの使用例

+ ユーザ名に日本語を使ったり、チャット文に日本語入力も問題なかった。
+ ただしWindowsのローカル環境でのみ確認

![Chat](https://lh6.googleusercontent.com/-BSVfp8y_41A/UNHhG7pJuSI/AAAAAAAAAmA/Wq7HbRfvmyY/s1280/Chat.png)

ここまで書いてきたサンプルを見ていると、ネットワークゲームの作成が容易になることを大いに期待したい。サンプルを構築するときに使用できる関数については、冒頭のリンクで確認いただくのが良いとおもう。

作者は今週の日曜日（12/23）ぐらいにアセットストアでリリースしたいと掲示板で語っている。

前作のNGUIでは機能限定の無料バージョンもリリースしているので実際のプライシングがどうなるかはこれから注視するしかない!