こんにちは。海行です。

ポケモンGOに対抗してユニティちゃんGOを作りました。

AndroidがあればGooglePlayからダウンロードできるので、ぜひ遊んでみてください。

https://play.google.com/store/apps/details?id=jp.ne.sakura.soysoftware.unitygo


何故クローンゲームを作るのか

何故私はクローンゲームを作るのか。
その行為にどんな意味があるのでしょうか。

まず、やっぱりそのゲームが好きだからこそ真似したくなるという事があると思います。

次に、そのゲームが話題だからという事。
話題に乗っかりたいという事もあるでしょうし、何より物凄い話題になってる物というのはゲームに限らず歌や漫画などのコンテンツでも、その中に一定の真理が含まれているからこそみんなの心に響いて話題になったのでしょう。(このロジックは蒼天航路からの受け売り)

つまりクローンゲームを作ることはその元ゲーム、ひいては真理を理解するという事なのです。

もちろんゲームを普通にプレイするだけでもそのゲームのルールや攻略法は理解できます。
そのゲームが面白いのか、面白くないのかも触れば自分自身がのめり込むかどうかで判断できます。
でも、そのゲームが何故面白いのか、そもそも何故こういうルールになってるのかなどはプレイしてもハッキリこうだと理解するのは難しいです。

同じようなゲームが一杯出てジャンル化したゲームなら、似たゲームとの差分を比べてこっちはこの要素があるから面白い、など論じる事はできますが、いきなり画期的なゲームがポンと出てしまった場合は比較対象が無い内は分析は困難です。

そんな時、そのゲームの何が面白いのか理解したい時はクローンゲームを作ることが一番手っ取り早いのです。

クローンゲームを作ってみて、原作と同じように作ったのにこっちは全然面白くない、という事であれば、原作の面白さはクローン側でまだ未実装の部分か、あるいは見逃してる秘められたパラメータか何かにあると切り分けができます。

逆に、原作と同じ面白さがある!という所までいけば、後はどこまで要素を削ってその面白さが維持できるか、あるいは何をどこまで変えたらつまらなくなるか、あるいは面白くなるかを調べる事で原作の何が面白いのかが浮き彫りになります。

~のようなゲームを作りたい!と思ったら、まずは原作を完コピして面白さを理解した上でアレンジするという流れが鉄板だと思います。


クローンゲーム制作最速のメソッド

そういう訳で「クローンゲーム制作最速のメソッド」と題して、開発中のツイートの記録を頼りにユニティちゃんGOリリースまでの制作日記を書いてみたいと思います。

■7月22日 ポケモンGO日本リリース

この日の10時頃に日本でポケモンGOがリリースされました。

私はポケモンGO発表時からこれは物凄いゲームになると予測して注目していたので、リリース直後に早速ダウンロードして雨の中ピカチュウを捕まえに出撃していますね。

↑12時の時点ですでに不穏な動きが見られます。

早速クローンゲーム制作に着手しようと考え始め、まずはIntel MapからIngressのポータルデータ(これはポケストップのデータに転用されてます)をぶっこ抜こうと考えたようです。

しかし、NIANTICにとってはプレイヤー達と一緒に当然苦労して作り上げたポータルデータは大切な財産でありますし、データぶっこ抜きはサーバーに大きな負荷がかかってしまうなどの理由からか、Intel Mapにはすでにボット対策が仕掛けられており、ぶっこ抜きのスクレイピングスクリプトは動作しなくなってました。

13時には方針を転換してもう少しリーガルな方法を考えようという事で、オープンストリートマップというオープンソースの地図プロジェクトのデータを利用しようと考えたようです。
ライセンスもクリエイティブコモンズなのでこっちの方が無難でしょう。

オープンストリートマップから日本の地図データをダウンロードしてスポットのデータを抽出することに成功したようです。
抽出データはIngressのポータルデータの代用として使えそうですね。

■7月23日 仕様把握

この日はたしか仕様把握という名目でポケモンGOで遊びまくってて、とりあえずLVを5にしてジム戦を試してみたりした気がします。

オープンストリートマップから抽出したスポットデータはSQLiteに保存してUnityに読み込ませようかななどと画策しています。

昔試したマップ表示アセットを引っ張り出したようです。
ポータルデータの次は地図表示をどうするかについて考えてますね。

この時試したアセットでは内部でMapQuestというサービスを呼んでいるのですが、残念ながらすでにMapQuestのタイルマップ要求APIはクローズしてしまってました。

ActionStreetMapという、オープンストリートマップのデータを読み込んで3Dのマップを表示してくれる無料Unityアセットの使用を検討してますが、使い方がわからず(ドキュメントもない)このあと諦めます。

ここではGoogleMapのStaticMapsAPIの使用を検討してますが、まず勘違いしてるのがGoogleMapsAPIが無料というのはAndroidのViewにGoogleMapを表示できるサービスの事で、Unityからは使えない物です。

Unityでテクスチャとして読み込めるタイルマップ画像を取得できるStaticMapsAPIもありますが、こちらも無料枠は1日に2万5千枚までとかなり限定されてるのでボツに。

■7月24日

↑そろそろ私以外にもユニティちゃんGO制作に取り掛かる方が現れてます。
クローンゲーム開発競争は熾烈な争いだ。

↑その頃私はこんな漫画を描いていた。

通信でタイルマップを取得するのは諦めて、またもやオープンストリートマップから道路のデータだけを抜き取ってローカルに持たせようかなという事について画策してますね。

■7月25日

この日には、GPS使って地図表示してポケストップどうこう…って仕様を再現するのは結構手間だから、とりあえずはボールを投げてモンスターを捕獲するところだけ作ってとにかく一番乗りでリリースする事に集中しよう!という事を考え始めました。

差しあたってまずUnityでジャイロセンサーを使ってARでユニティちゃんを表示しようとしてさっそくトラブってる様子。

寝るまでにスワイプでボールを投げるあたりまでは作ったっぽいです。

■7月26日

キャラの頭の上に名前とCPが表示される奴を作ろうとしてますね。

UI周りを作っていますね。

撮影ボタンでスクショが撮れる奴を作ってますね。

■7月27日

クリアしたらLoadLevelで最初に戻してシーケンスを通そうとしてますね。

セーブ、ロード周りを作ろうとしてますね。

大体完成したのでさっさと効果音を入れて動画を撮ってアップしたいのに効果音集アセットのインポートに時間がかかりすぎてイライラしてますね。

ここに来て実機での表示バグに遭遇してテンパってますね。

結局朝までかかっちゃってますが、とりあえず完成したので動画上げて寝たようです。

寝る前にユニティちゃんの画像アセットを使ってアイコンなどをササッと作って、GooglePlayにアプリ申請も出しておきました。

■7月28日

起きて確認したらGooglePlayに提出したアプリは著作権侵害の容疑で却下されてましたが、ここは慌てずにユニティちゃん関係のアセットについては正当な権利を得て使用してる旨を返信しておいて、とにかくさっさとみんなに遊んでもらえるようにアプリ公開したかったので一旦自分のサーバにapkをアップしました。

今回、せっかくなので新しい試みとしてUnityAdsの導入もやってみました。
動画広告を観るとボールが30個もらえるって奴です。

Googleの審査中にとりあえず新機能として日本語と、英語の言語切り替えを実装してます。

そうこうしてる内に無事に審査が終了してユニティちゃんGOがGooglePlayで公開されました。
めでたしめでたしです。

という訳で以上がユニティちゃんGO制作のあらましとなります。


今後の展望

完成して公開はしたものの、だからと言って最初の方で書いたような、ユニティちゃんGOを作る事でポケモンGOの面白さの謎がわかったのか?というと、まだそこまでは…という感じですね。

話が違うやんと思われるかもしれませんが、今回は要するに再現率がまだ低いせいかなと思います。
誰よりも早く出したい!と焦るあまり、結局ボールを投げて捕獲、の部分しかできてないですからね。

という訳で、今後の展望としては、GPS地図機能周りや捕獲したキャラのコレクション機能などを強化して、より原作に近づける事が一番ではないでしょうか。

その後は独自の機能を入れたりして新たな面白さを付加していける流れに持っていけたらベストですね。