FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

「Unity ネットワークゲーム開発 実践入門」はいったい何がスゴいのか?

https://cdn-ak.f.st-hatena.com/images/fotolife/f/fjct/20171019/20171019113041.jpg

NCMBエヴァンジェリストの一條です。

NCMB Unity SDKの使い方を解説した本が出版されます。

来週から全国の書店にて「Unity ネットワークゲーム開発 実践入門 UNET/ニフティクラウド mobile backend版」が発売されます。本書にて、ニフティクラウド mobile backend解説部分の執筆を担当しました。

出版はソシム株式会社さん。本書は3つの章に分かれており、著者が異なります。

私は序章と、Part 1の執筆を担当しています。 Part 2, Part 3は、Unity標準のリアルタイム通信サービスAPI「UNET」の解説です。こちらは別の方が書いています。

Unityでゲームアプリを作っている方は、ぜひともお買い求めいただければと思いますが、この本の魅力をより多くの人にお伝えするべく、私の思いを本エントリで記します。タイトルにあるように、この本はスゴいんです

本書の対象読者

私が書いたPart 1の読者層は、次の皆さまを想定しています。

  • 個人ゲームアプリ開発者
  • 既にゲームアプリを作り始めている専門学校の学生
  • 法人でカジュアルゲームを作っているエンジニア
  • 法人で、これからソーシャルゲームのプロトをつくるフロントエンドエンジニア

逆に対象でない層は次の通りです。

  • サーバーサイドエンジニア
  • 大規模ソーシャルゲームのエンジニア

本書では基本的に、ゲームアプリを作っている人にむけて、(サーバー側の知識不要で)ソーシャル要素とサーバーを活用したアプリ運営を導入する手法を紹介しています。ですので、サーバーエンジニアさんであったり、サーバーの保守やAPI設計の担当者がしっかり配備されているような大規模ソーシャルゲーム開発チームには不向きです。

しかしながら、個人ゲームアプリ開発者の皆さんにとっては、(自分で言うのもなんですが)この本のPart 1はかなりエポックメイキングな内容になったと自負しています。

↑ちなみにサンプルは見下ろし方のアクションゲームです。

Unity中級者向けに書かれている

まず一点目は、いわゆるUnity初心者本ではないということです。序章「本書の構成」で、次のように宣言しています。

"本書は、何らかのUnity初学者向け書籍を読んだことがある開発者か、実際にUnityでアプリ制作を行ったことがある開発者を対象としています。 (中略) 本書では、Unityの基本機能やUnityエディタの使い方、スクリプティングの基礎などに関しては解説していません。"

これ!これです。私はこれが書きたかったんです。

書店ではすごい数のUnity書籍が出版されていますが、その7割以上は「初心者向け」になっています。 様々な著者が持ち味を生かしながらUnityの導入を解説されている...のはとても良いのですが、Unityを使ったゲーム開発を始めて、スマホでも動かせるようになってきたぐらいの中級者が読む「一歩踏み込んだ」本は驚くほど少ないです。

なので、まず自分で書きました。

コインプッシャーやランゲームの作り方は初心者本で分かった。じゃあ実際にアプリとしてまとめ上げて、ストアにリリースする前にどんな機能があるとよいのか。 ゲームアプ位を作り始めた人の2冊目、3冊目の本として本章は書いています。

そういう意味では、ひさしAppさんの「バカ売れアプリ生活 自作ゲーの集客とマネタイズぜんぶ教えます! 」と同時期にこの本が出せたのは、とても良かったと考えています。

↑このカワイイキャラクターたちは @GaryuTown さんにご担当いただきました!

個人アプリ開発者がソーシャルゲーム的要素を作れるようになる

この本は個人ゲームアプリ開発者を読者対象として意識しながら書いています。

昨今の個人アプリにおいては、プッシュ通知、ガチャ、フレンド機能、ギルドバトル、セーブデータのサーバー管理などを搭載し、大手ソーシャルゲームに迫るネットワーク機能を実現しているアプリが目立ってきています。

しかし、これまでそうした機能を作れるのは、IaaS / SaaSを使うための知識がある人に限られていました。 すなわちサーバーの開発環境をセットアップし、ターミナルでコマンドを打ったり、DB設計ができる人であることが必須です。

もとより「ニフティクラウド mobile backend」は、そうした壁を乗り越え誰でもゲームアプリのプチソシャゲ化が実現できるサービスなのですが この本のサンプルプロジェクトは、実際にその具体的手法を実装しています。

  • アプリの引継ぎコード発行
  • 管理画面からアプリへ「お知らせ」を配信する
  • 管理画面からアプリの設定(敵のドロップするコイン数など)を変更する
  • 管理画面からバナー画像(リソース)を配信して差し替える
  • サーバー側にロジックを実装したガチャ
  • プッシュ通知
  • セーブデータのサーバー管理
  • フレンド機能

こういった機能が、NCMBのWeb管理画面 + Unityだけで実現できるんです。自分で言って何ですが、わりと革新的だと思います。

↑サンプルゲームのメニュー画面です。お知らせ、フレンド、ランキング、ガチャなどの要素が含まれています。

NCMBの公式サイトでも解説しているような「会員管理機能」「データストア機能」などの基本機能も大事なのでもちろん収録していますが、 じゃあそのログインやデータベースを使って、ゲームに対してどんな価値を加えることができるのか? ゲームプレイヤーにどんな「楽しい」を届けることができるのか?という観点に立ってサンプルを作りました。

たとえば「フレンド機能」は、アプリを遊んでいるほかのプレイヤーを自分のフレンドとして登録できます。 メインのアクションゲームパートでは一時的に能力を上げるカードを装備できるのですが、このカードをフレンド同士でシェアできます。 デモなのでシンプルな実装ですが、「フレンドとゲームにかかわるアイテムをシェアする」システムを実現しています。

これをベースに、あなたのゲームアプリにもどんどんソーシャル要素を導入できるのです!

「実際にゲームアプリを配信すること」を目標に書かれている

このコンセプトは「UnityではじめるC# 基礎編」(通称:和尚本)と重なってしまうのですが、Unityを使ってゲームのシステムだけを作るのではなく、そのゲームがアプリストアで配信できるまでにやるべきことも意識しながら書いています。

上記機能一覧の「アプリの引継ぎコード発行」などはその最たるものです。 また、(ほぼ私の趣味で)Unity Cloud Buildを使ってiOSアプリをビルドできるまでの証明書手続きをすべて書いていたりします。

サンプルゲームには、2016年のNCMB採用アプリの最大タイトルとなった「ひとりぼっち惑星」のような、非同期型ネットワークを使った新しいゲームシステムへの手引きも載せています。 これは、個人アプリゲーム開発者が大手のアプリと肩を並べることのできる「ユニークさ」「新しさ」そしてSNSでのバズ力を補佐する要素になりえます。

個人アプリ開発者が開発の効率を上げ、アプリの利便性を上げ、魅力を増すことに全力投球した内容になるよう、頑張りました。

↑「ひとりぼっち惑星」での事例を意識した、ステージにメッセージを残す機能。このサンプルでは「お墓」になっています。

個人ゲームアプリ開発者が、より多くのプレイヤーを獲得し、ランキングを上がり、クリエイター活動を継続できるために

私は昨年の春から、NCMBエヴァンジェリストの活動を通じて、ゲーム開発者がもっと活躍できるようになるには、作家活動を継続できるようになるには、ということを考えて活動してきました。

その中間報告と言えるのがこの本のPart 1になったと考えています。

私もSDKを調べ始めた当初は「これはいったいゲームの何が良くなるのか??」という気持ちでしたが、 エヴァンジェリスト活動のなかで多くのアプリ開発者から悩みを聞くことで、その解決ができるポテンシャルがあることに気が付きました。 あとはひたすら、デモを作ってその魅力を伝えるために帆走しています。

ぜひこの本をお手に取って、読み込んでいただき、みなさまのゲームアプリがより輝けるお手伝いができればと思っております。

出版記念イベントをやります!

さて、そうはいっても日々発売される技術書で、買っても積んじゃうよ~とお悩みの皆さん。 半日で強制的に基礎部分を読む機会を与えます。

それがこちらのイベントです。

【大阪開催】NCMB×Unity 炎のチャレンジャー ~これが出来たら(売上)100億円?~【一條 貴彰氏/Unity 鎌田 泰行氏 講演!】 https://ncmb.doorkeeper.jp/events/61425

2017-07-02(日)10:30 - 17:30にて、大阪での開催となります。 (同内容の東京版も調整中です!)(タイトルを5000兆円にしろというのは却下されました)(コーナーで差をつけろ)

どうぞ、よろしくお願いいたします!