「空島大乱闘」のオンラインの技術的なこと その1

こんばんは、伝説のマニアです♪U・ω・U

今回から数回に分けて、リアルタイムオンラインアクションゲーム(空島大乱闘)を作る上で工夫した点などを連載していきたいと思います!



【このゲームを作りたいと思った動機】
空島大乱闘は、MO型のアクションゲームです。複数のユーザー同士で、一つのゲームルームみたいなものを作り、その中でゲームを楽しむ、というものです。

このゲームを作りたいと思ったきっかけが、ファミコンで流行った「ダウンタウン熱血行進曲 それゆけ大運動会」みたいなものを、オンラインで遊べたら面白そうだなぁ〜って思ったことです。思いっきり世代なんですよねw

また、PCゲームの「アラド戦記」からも大きい影響を受けています。オンラインゲームにハマった経験から、ネットワークプログラミングが好きになり、自前でオンラインゲームが作りたい!って思うようになったのです。



【スマートフォンという端末】
空島大乱闘の一番の魅力は、マルチプレイにあります。シングルプレイも用意していますが、他のユーザーと一緒に協力して敵を倒していくことに面白さを感じると思うのです。

しかし、スマホでオンラインゲームを作るのは、いくつかのハードルを越えなければなりませんでした。

避けられないラグの問題
ここ数年で端末のスペックが大幅に上がり、通信速度も高速化してきています。それでも、PCと比べると、通信が不安定だったり、処理落ちなどが頻繁に起こります。不安定な端末・環境でも、ゲームを遊べるレベルに持っていく、というのが全体的な課題でした。

NAT問題
オンラインゲームを作るのであれば、必ず頭を悩ませるのがNAT越えについてです。特にスマホはどこへでも持ち運びが可能であり、通信環境がコロコロ変わります。できるだけ多様な環境で接続できるように工夫する必要があります。

不向きなジャンル
「くにおくん」のような十字キーでキャラクターを操作するタイプのアクションゲームがそもそもスマートフォン向きではない、という事もありました。まずスマートフォンにはボタンがないので、スクリーン上にボタンを配置しなければなりません。そうすると、どうしても指で隠れて見えない部分が出てきてしまうのです。この点を、ユーザーが気にならないように工夫する必要がありました。



【開発に使用したツール等】
クライアント端末
想定する端末は、人気のiPhoneとAndroidにしました。この二つでスマートフォンユーザーの大半を占めるため、問題ないと思われます。

配置するサーバー
使用したサーバーは、ubuntu 12.04です。特にこだわりがあるわけではないのですが、私はネットワークプログラミングを書く上で、主にBSDsocketを使用するため、Linuxであればとりあえずおkですw

普段の開発については、自宅で仮想OS(VirtualBox)でサーバーを動かし、本番環境ではVPSサーバーをレンタルしました。私は沖縄に住んでいますが、サーバーは東京に配置しています。理由は特にないのですが、単純に東京の方が人口が多いだろう。。。と思ったからですw

ゲーム開発について
私は、ゲーム開発についてはあまり詳しくないため、簡単にゲームが作れるツールを探しました。スマートフォン向けのゲーム(2D)ですと、cocos2d-xかUnityが人気のようです。
どのツールで開発しようか悩みましたが、基本無料、簡単にGUIでゲームが実装できる、C/C++(BSDsocketが使いたいだけ)が使える、という点でUnityを選びました。

使用した言語について
Unityでは、C#スクリプトが使えるため、これを利用しました。ぶっちゃけ、C#はよくわかりませんが、ノリで作りましたw ただ、通信部分の処理はC++で記述していたため、UnityのC#からC++のコードを呼び出す形(ライブラリ化してから)で実装しています。

元々得意な言語はC言語、C++なので、サーバー側ではC++で実装しています。

また、サーバー側や、クライアントの通信処理はeclipseで作っています。



【今後について】
できる限り詳細にソースコードを開示して説明していきたいと思っています。また、頻繁に更新したいとも思っていますが、プログラミングにも夢中なのでアレですがw

このブログを見て、「自分もオンラインゲーム作りに挑戦したい!」と思っていただけたら幸いです!!
テーマ: Unityゲーム制作 | ジャンル: コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する