DOVION.io

舞台裏:依存関係ゼロのゲームサーバーを作った話

· 1 分で読める · 文:Dovionクルー

Webの開発に少し触れたことがあれば、あのジョークを知っているでしょう。モダンなプロジェクトの`node_modules`フォルダは銀河の写真より重い、というやつです。誰も正確に何をしているのか分からない外部ライブラリが何百と積み重なっています。Node.jsでゲームを開発する際、私たちは逆の道を選び、それが開発上の誇りの一つになっています。Dovionのサーバーは外部依存関係がゼロで動きます。ゼロです。起動時にサードパーティライブラリは一つもありません。

具体的に何を意味するか?

ゲームスタジオがオンラインゲームサーバーを構築する時、普通はすでにあるブロックを組み合わせます。WebSocket(ブラウザとサーバーのリアルタイム接続)のためのライブラリ、ファイル提供のためのライブラリ、これとあれのためのライブラリ、など。最初は素早い。

私たちはすべてを手で書きました。最も手ごわい部分も含めて。WebSocketサーバー自体——つまり、船の位置、射撃、イベントをリアルタイムでサーバーと各プレイヤー間で伝達するプロトコル。これは99%のプロジェクトが疑問を持たずにインポートするコンポーネントです。私たちは最後の1行まで理解することを選びました。

なぜこんなことをするのか?

(単なる)マゾヒズムではありません。この選択には非常に具体的なメリットがあります。

ロックされたネットワークでのプランB

この制御が可能にする具体的な例:一部のネットワーク——学校、企業——はWebSocket接続をブロックします。多くのゲームでは、これが永遠に回転する接続画面になります。ネットワーク層全体を制御しているので、HTTP/SSEによるフォールバック通信を構築できました。WebSocketがブロックされると、ゲームは自動的にこの代替ルートに切り替え、それでもプレイできます。このような安全網は、ネットワーク層がインポートされたブラックボックスだった場合、はるかに構築が難しかったでしょう。

デメリット(ちゃんとあります)

正直に言います。この哲学にはコストがあります。時間です。他の人が1行でインポートするものを自分で書くと、何週間も余分にかかります。読むべき技術仕様書、処理すべき奇妙なケース。これは熱意あるスモールプロジェクトの贅沢です。商業的な締め切りを持つチームはおそらくこれを余裕にできません。これが全員に合った唯一の正しい方法だとは主張しません——これが私たちのやり方であり、私たちの規模に合っています。

この手作り哲学はサーバーを超えています。ゲームの世界自体もコードで描かれ、画像ファイルなしで——ジブリ風レンダリングの舞台裏で説明しています。全体的な結果:軽量で、素早く読み込まれ、非力なマシンでも動くゲーム——非力な設定でのDovionが証明します。

この目に見えない作業はすべてただ一つの目的のためです。あなたがクリックして、動くこと。自分で確認してみてください。Dovionを無料でプレイ

出航の準備はいい?Dovionはダウンロード不要、PCでもスマホでも無料でプレイできます。

⚓ Dovionをプレイ