以前より任天堂ではネットワーク機能を使ったゲーム開発者向けに汎用ゲームサーバーを提供していました。汎用ゲームサーバーでは、ゲームのネットワーク機能に必要となる基本的な機能を提供しており、ゲーム開発者はゲームの目的に合わせて、さまざまなネットワーク機能を利用できるようになっています。このシステムは長年利用されてきたことにより新たな課題や改善可能な部分が見えてきました。そこで新しい任天堂プラットフォーム向け汎用ゲームサーバーの開発が始まりました。
ネットワークを使用した対戦ゲームをプレイするときに、ランダムな相手と対戦したい人がいるかもしれませんが、ゲームを楽しんで続けていただくためには、完全なランダムにするのではなく、実力の近いプレイヤー同士の対戦を実現することも重要です。そのためには、プレイヤーの実力を数値で表した指標、「レート」を用いて、対戦を設定することが必要となってきます。以前まではゲームタイトル側で個別に用意されていましたが、汎用ゲームサーバーの機能の一つとして、新たにレート計算の機能を提供することになりました。ゲーム開発者はこの機能をベースにしてカスタマイズすることで独自のレーティング機能を利用することができるようになります。そのうえでレートやその他のプレイヤー情報を利用して独自のルールで対戦相手を決定することができるようになります。私は汎用ゲームサーバーのチームに配属された後、このレート計算機能の開発を担当することになりました。
ゲームの仕様に応じて開発者がこのレーティング機能を柔軟にカスタムして利用するためには、多様な遊び方に対応させる必要があります。対戦の形式は、2対2のような同人数同士の対戦だけではなく、例えば人数が非対称となる形式や、多人数で順位を競う形式などさまざまです。その機能を開発するにあたって、従来のゲームタイトルで使用されたレート計算を参考に、アルゴリズムにも手を加えながら開発を進めていきました。
開発を自分で主導して進めることは大変ではありましたが、最初にベースとなるものを組みあげて、そこから工夫していくことで、さまざまなパターンに対応できるようになっていくのは、複雑なパズルを解いていくような面白さもあり、自分で動くものを作っている、という手応えを感じることもできました。
もちろん、すべてがスムーズに進められたわけではありません。実装後に行った数十万回以上にもわたるシミュレーションでは、0.001%以下の確率で発生する問題を発見したことがありました。その問題は自分ひとりでは解決できなかったため、先輩社員に相談をしながら解決策を見つけることで、最終的に納得のいくものに仕上げました。
レート計算機能は、自分が初めて主導して達成した開発業務だったこともあり、作り上げたときの達成感はとても大きく、この開発を通じて自分自身の成長を実感することができました。また同時に、若手など誰でもチャレンジできる環境で一定の裁量が与えられて、最新技術にも触れながら開発を進めることができ、問題に直面した際には経験豊富な先輩と密に相談ができる環境で仕事ができたことを、とてもありがたく思ったことを覚えています。これからも、汎用ゲームサーバーの機能をゲーム開発者に使ってもらい、ゲームの開発に広く貢献することで、最終的に世界中のお客様にゲームを楽しんでいただくことにも寄与できれば、それは何よりもうれしいことです。