unity

unity で2Dゲーム(ソーシャル)を作ろう

スマホゲームを作りたかったので、企画してみた。

  1. スマホゲームを作りたい(android、iphoneで同じタイトルで作成したい)
  2. ソーシャルゲーム作りたい。(何がソーシャルかはココではおいとく)
  3. サーバーを自前で用意したい。
  4. 外部サービス系を極力取り除きたい。

 

 

 

1、スマホゲームを作りたい(android、iphoneで同じタイトルで作成したい)

iphoneならobjective-Cまたは、swift   androidならjavaと別々に作成する必要がある。

もちろん個別に作ったほうが、デバイスのライフサイクルや、個別の機能(例えばSDカードに保存する、アドレスリストにアクセスするなど)の使用ができ

動作もクオリティも上げることができる。

一度に作成できること、個別のバージョン管理を行わなければならないため、ゲームエンジンの利用がおすすめ。

有名どころだと、 cocos2d-xかunity3D で 動作は、未だにcocosのほうが軽いかなと思ったけど

最近の動向だと、圧倒的にunityが優勢になってきているため、unityに決定した。

特に、unity 4あたりからのUI系 2d表示がわかりやすく、解像度とレイアウトの設定が楽だったのと、書籍、ネットなど情報収集が多かった。

 

 

2,ソーシャルゲーム作りたい。(何がソーシャルかはココではおいとく)

何がソーシャルか?笑

他の有人のプレイヤーの存在があり交流が持てるようにしたい。そのため、ゲーム中のデータは、

サーバーで管理する必要がある。いわゆる、ソシャゲーパズルゲームのサーバー代、、、高い。

ゲーム専用サーバー等は、ここ1年位で仮想などでのサービスが登場しているため、下がってきている。移行も視野に入れる。

 

3,サーバーを自前で用意したい。

というわけで、サーバーは自前で用意することにした。現在自宅で公開可能なサーバー4台。linuxサーバーの利用を検討したが、回線が不安なので

(常時接続でどれだけ、エラーが出るか計測したら90%くらいだった)

有料のレンタルサーバーを借りることにする。 最低、phpが動けばいいかな?くらいだったが、rubyも動くようでホクホクになった。

作成期間等考えると、p2p、tomcat nodeJSも使用を控えた。特にJS系は、ハマると沼。

 

4、外部サービス系を極力取り除きたい。

前回制作した、webRTC系のコミュニケーションアプリでは、今回同様、デバイス個別の実装をさけるために、

音声、ビデオチャットのサービスを外部プラグインとしてラッパで実装し、データー関連もすべてその外部サービスの備考を書く部分にjsonで構造化して開発した。

結果、1年後にそのサービスが閉鎖されたためすべてが、終わってしまったので今回は、実装、 運用含め外部のサービスは利用しない。

niftyのノティフィケーションも、便利だけど我慢する。

ついでに、iphpneの64ビット関連のトラブルが予想されるため、cやc++でプラグインを作成するのも今回は控えた。

 

で、できたのがコレ↓w

(゚Д゚)ハァ?

かわいい女の子も、重厚なストーリーもすべて考えるのをやめた。

クリエイターがクリエイトをやめた結果がコレ。

ついでに、侘び石で「クッソ汚い石」を振る舞うゲスぶり。

そんな、ソーシャルパズルゲーム。

[インムス ソシャゲと化した先輩]

 

 

Unityでログイン画面作成

unityでログイン画面を作る

サーバーと通信取って処理が終わったら、取得したデータを処理後に

画面をタッチできるようにする。

unityのスクリプト処理

 

 

に変える

そして、ログイン処理、イベント取得処理、キャラクターデータ取得処理などの、コルーチンを呼び出す。

この時、スタートコルーチンで呼び出さずに

 

としてあげれば、順番を守って処理してくれる。一度に startCoroutineで発行すると、ログイン処理が終わっていないのに、カードデータを取得しようとしたり

キャラクターデータが揃っていないのに、キャラクターパラメーターを生成するような処理が走ってしまうため要注意。

 

unity最後に、タッチできるようにする処理

画面全体にuiでパネルを作成してbuttonを設定する

一度buttonを無効にしておく。

上記のログイン処理が終わったら、ボタンの有効化関数を呼ぶようにunityActionでコールバックを設定する

コルーチンのコールバック部分

コールバック返したいコルーチンの引数に unityActionを設定する(usingも必要)

 

で、呼び出し時にコールバック先を指定する

 

ボタンの有効化関数

 

実際の動作は、下記で見れます