個人ゲーム開発者の皆さん、こんにちは。
今回の記事では、個人ゲーム開発者が「オンラインゲーム開発」をするためのベスト(?)プラクティスを提案したいと思います。
現時点では「テスト」段階のため、ベストと言い切れるか自信が無いのではてなマークを付与しております(後述)
オンラインゲーム開発の壁
大きく次の3つがあると思います。
- 固定費の壁
- UUの壁
- 技術の壁
固定費の壁の突破
恐らくこれが最大の障壁だと思います。
固定費が発生すると、売上が少ない期間にも継続的な支払いが必要になり、個人開発では特に大きな負担になります。
この点は SteamNetworkingSockets を用いて「P2P」を前提としたゲームデザインにすることで解決できます。
Steam では NAT 超えやリレーを自動的に処理してくれるため、個人でも 固定費ゼロで安全性の高いオンライン対戦 を構築できます。
マッチングについては Steam Lobby を用いることができます。
オンライン対戦のスコアを Steam Leaderboard に対応させることで、オンラインランキングを設けることも可能です。
なお、Steamの場合ゲームを登録するのに Appクレジット(100ドル)が発生します。
これは売り上げが $1000 を越えれば帰ってきます。そのため最低限それを回収できる程度の金額での有料販売は必要になります。
固定費が発生しない という点が最重要です。
サーバを自前で運用すると、継続的な運用費をまかなう必要があるため、どうしても収益化の仕組みを組み込む必要が出てきます。
しかし、多くのユーザーは継続課金やゲーム体験を悪くする広告は望んでいないはずです。
UUの壁(突破しなくてOK)
ここでよく誤解されがちなのですが、
“24時間いつでもランダムマッチング成立” は AAA ゲームでも困難
という前提があります。
例えば、
- マッチング許容時間を30秒
- DAUの20%がオンライン対戦をする
という「理想的すぎる条件」で統計的に算出すると DAU ≈ 43,100 が必要になります。
これはあくまで AAA タイトル並みに「24時間いつでも即マッチング」を想定した理論値 であり、個人開発が目指す必要はないと思います。
多くのインディー作品では、
- ピーク時間帯のマッチング
- フレンド対戦
- Discord コミュニティや SNS でのプレイヤー募集
によって十分に成り立っています。
私が現在個人で開発中のゲーム(Battle Hanafuda)でも、“フレンド・知人と気軽に遊べるオンライン” を最初の目標 に設計しています。
ゆくゆくはランダムマッチングが成立できる程度まで成長させたいという野心は持ちつつ、先ずは「現実的にゲームが成立するもの」を優先。
技術の壁
P2Pが前提であれば「サーバー設計が不要」なので、これについてはそれほど高くありません。
通常のソケット通信だと NAT 超えが恐らく最大の課題になるはずですが、Steam Networking Sockets を用いればそれについても Steam Cloud がリレーしてくれるので問題ありません。
まとめ
個人開発でオンライン対戦ゲームを成立させるための現実解は、次のようになると考えています:
- オフラインでもしっかり遊べるゲーム性 を作る
- 2人対戦をベース にしたシンプルな設計
- 固定費のかからない Steamプラットフォームを活用 する(Steam Lobby, Steam Networking Sockets, Steam Leaderboard)
オンライン対戦のベストプラクティスと言いつつ「オフラインでしっかり遊べる」を第一条件にしているのは、一見すると違和感があるかもしれません。
しかし、オンライン対戦が長期的に成立しているインディー作品を調べると、例外なく「オフラインでも面白い」ことが確認できます。
そのため、オンライン成功の前提として “オフラインの完成度” が重要と考えました。
実践 (WIP)
私は現在、このベストプラクティスに基づいたオンラインゲーム(Battle Hanafuda)を開発しています。
体験版の時点ではオフライン専用ですが、製品版で無理の無い範囲でオンラインを実装する計画です。
参考までにオンライン機能の仕様草案(gist)は コチラ です。