ゲーマーのためのゲームサーバーサービスを作ってみた!かきぴーさんの個人開発事例
詳細情報
発表のハイライト
- 友達とゲームをする際に、ホストが起動している間しか遊べないという不便さを解消するため、ゲームサーバーを簡単に立ち上げられるサービスを開発。
- Core Keeperに対応したプロトタイプを開発済み。
- GCPのGKE Autopilot、React、Go言語、Auth0などを活用したアーキテクチャを採用。
- 今後の課題として、課金システムや他のゲームへの対応、技術負債の解消などを挙げている。
ゲーマーの悩みを解決!必要なときだけ使えるゲームサーバー
皆さんは、友達とオンラインゲームをする時、ホストがゲームを起動している時間しかプレイできないという経験はありませんか?特に、頻繁にプレイしないゲームの場合、ホストが起動していないと遊べないのはちょっと不便ですよね。
かきぴーさんは、そんなゲーマーの悩みを解決すべく、必要なときだけ起動できるゲームサーバーサービスを開発しました!
このサービスを使えば、Core Keeperなどのゲームを簡単にオンラインでプレイできます。しかも、こまめに電源のオンオフができるので、ライトユーザーでも気軽に利用できるのが嬉しいポイントです。
なぜゲームサーバーサービスを作ろうと思ったのか?
かきぴーさんがこのサービスを作ろうと思ったきっかけは、Web系の開発を勉強したいけど、現職ではなかなか機会がなかったからです。そこで、勉強の一環として、何か自分で作ってみようと思い立ったそうです。
さらに、友達とゲームをする際に感じた不便さから、「必要なときだけ起動できるゲームサーバーがあったら便利だろうな」という発想が生まれ、このサービスの開発へと繋がっていったとのこと。
Core Keeperに対応したプロトタイプを開発!
かきぴーさんは、まずはCore Keeperに対応したプロトタイプを開発しました。
このプロトタイプでは、WebページからCPUコア数やメモリといったサーバーのスペックを選択して、簡単にゲームサーバーを立ち上げられます。
立ち上げられたサーバーには、ゲームに参加するために必要なゲームIDが表示されます。このゲームIDをゲームクライアントに入力すれば、誰でも簡単にサーバーに参加して、友達と一緒にプレイを楽しめるようになります。
サービスのアーキテクチャ
このサービスは、以下の技術スタックで構築されています。
- クラウド:GCP(GKE Autopilot)
- フロントエンド:React
- バックエンド:echo(Go言語)
- 認証:Auth0
かきぴーさんは、GKE Autopilotを選んだ理由として、コンテナで簡単にゲームサーバーをデプロイできることや、必要なリソースだけを割り当てられることなどを挙げています。
フロントエンドはReactを選択
フロントエンドには、Reactを採用しています。Vue.jsにも触れたことはあるそうですが、かきぴーさんはReactのほうが得意で、スムーズに開発を進められたようです。
APIクライアントの開発を簡略化するため、TypeScriptではなくJavaScriptを選択したとのこと。将来的にOpen APIを導入する予定があるため、その際にはTypeScriptに移行する可能性もあるそうです。
バックエンドはGo言語とechoフレームワークで構築
バックエンドは、かきぴーさんが慣れているGo言語で開発されています。Webフレームワークには、小規模な開発に適したechoを選択しました。
デプロイ先にはKubernetesを採用していますが、ゼロスケールに対応していない点は今後の課題として挙げられています。将来的にはCloud Runへの移行も検討しているとのことです。
認証はAuth0で実現
認証認可は、Auth0を利用しています。GCPを使うならFirebaseも選択肢としてあったそうですが、かきぴーさんはAuth0を選んだようです。
ゲームサーバーの制御はオペレーターで
ゲームサーバーの制御には、Kubernetesのオペレーター機能を活用しています。オペレーターは、Kubernetesのリソースを管理するのに便利なツールで、管理対象のリソースが落ちたときに自動で再起動するなど、さまざまな機能を提供します。
今後の展望
既存のゲームサーバーサービスと比較すると、GKEのRegular Podを使うとかなり高価になってしまいます。しかし、Spot Podを利用することで、コストを抑えることができます。
かきぴーさんは、Spot Podとサーバーの電源を自動でオンオフする機能を組み合わせることで、より安価にサービスを提供できると考えています。
今後の展望としては、
- 課金周りの機能追加
- 許可したユーザーだけがサーバーの電源をオンオフできるようにする
- 他のゲームへの対応(マイクラなど)
- ゲーム追加を容易にするための機能開発
- バックエンドをCloud Runに移行
- Open APIの導入
- TypeScriptとNext.jsの導入
などを計画しているようです。
まとめ
かきぴーさんが開発したゲームサーバーサービスは、ゲーマーにとって嬉しい機能が満載です。必要なときだけ起動できる、手軽に使えるゲームサーバーは、多くのゲーマーの悩みを解決してくれるでしょう。今後の開発に期待が高まります!