DUICUO

Gamerzilla: オープンソースのゲーム達成システム

一部のオープンソースゲームは、商用ゲームに匹敵する品質に達しています。AAAタイトルには遠く及ばないものの、オープンソースゲームはインディーゲームの中ではかなり競争力があります。しかし、プレイヤーの期待は時代とともに変化します。初期のゲームでは、ハイスコアの実績のみが提供されていました。実績の種類が増えるにつれて、プレイヤーはゲームを繰り返しプレイするようになります。例えば、最高レベルに到達しても、隠されたアイテムをすべて見つけられなかったり、アイテムコレクションをフルコンプリートできなかったりするかもしれません。Xbox 360は、初めてオンラインマルチゲーム実績システムを導入しました。その後、他のゲームプラットフォームも独自の実績システムを導入しました。

オープンソースゲームは、ゲームプラットフォームの実績システムからほぼ排除されています。Streamでオープンソースゲームを公開することは可能ですが、有料です。ゲームプラットフォームは、フリーソフトウェアコミュニティではなく、主に企業と連携しています。これにより、プレイヤーは非フリーのゲームプラットフォームに縛られてしまいます。

商業ゲーム開発者も大きな恩恵を受けていません。実績を共有できないため、実績を楽しんだプレイヤーの中には、他のストアでゲームを購入することを拒否する人もいます。このロックイン効果は、ゲームプラットフォームの力をさらに強めています。プラットフォームごとにシステムが異なるため、開発者はそれぞれに適応し、個別にテストを行う必要があります。小規模なプラットフォームは完全に無視される可能性があります。さらに、プラットフォーム所有者は、自社のプラットフォームを利用するすべての企業の実績データにアクセスできるため、競争優位性を高めることができます。

ゲーマージラの建築

Gamerzillaは、この状況を改善することに特化したオープンソースのゲーム実績システムです。Gamerzillaは、オープンソースゲームと商用ゲームの両方を念頭に置いて設計されています。独自のGamerzillaサーバーを運用することも、ゲームストアが提供するサーバーやLinuxディストリビューションが提供するサーバーを利用することもできます。他のグループが運営するサーバーも利用可能です。ゲームをどこで購入したかはもはや重要ではありません。実績データはGamerzillaサーバーにアップロードされます。

基本的な実績システムには、ゲームとGamerzillaサーバーという2つの要素が必要です。しかし、ゲームの数が増えるにつれて、この設計の欠点が露呈します。各ゲームは、サーバーにデータをアップロードするために証明書を必要とします。膨大なゲームライブラリと複数のゲームストア間でデータを同期できる機能を備えたゲームランチャーは、多くのプレイヤーに好まれる選択肢となっています。ランチャーがGamerzillaに対応することで、ゲーム自体に証明書は不要になります。ゲームの結果はランチャーからGamerzillaサーバーに直接アップロードされます。

freegamedev.net は以前、Hubzilla というソーシャルネットワーキングシステムを提供していました。Gamerzilla 開発用に、Hubzilla をベースにしたプラグインを開発していましたが、Hubzilla のアップグレードにより freegamedev.net のサービスが停止したため、サービスを中止することを決定しました。

現在、Gamerzillaサーバーの実装は2つあります。Hubzillaのメンテナンスは複雑な作業となるため、.NETとReactを使用してスタンドアロンのGamerzillaサーバーを開発しました。ゲームから呼び出されるAPIは同じなので、どのサーバー実装に接続するかを気にする必要はありません。

ゲームランチャーの開発とサポートはしばしば遅れをとっています。ランチャーへのGamerzillaサポートの追加を容易にするために、libgamerzillaを開発しました。このライブラリは、ランチャー、ゲーム、そしてGamerzillaサーバー間のやり取りを処理します。現在、GameHubのみがGamerzillaをサポートするバージョンを実装しており、まもなくプロジェクトに統合される予定です。Fedora上のlibgamerzilla-serverは暫定的な解決策です。ゲームを起動するのではなく、実績をリッスンしてサーバーにアップロードします。

Gamerzillaをサポートするゲームの数は着実に増加しています。ゲームランチャーと同様に、開発者はGamerzillaの統合にlibgamerzillaを使用しています。C言語で実装されたこのライブラリは、Pythonやnimといった様々なプログラミング言語で既に使用されています。実績システムが既に導入されているゲームであれば、Gamerzillaへの対応はわずか数日で完了します。Gamerzillaへの対応を希望する他のゲームは、情報の収集と実績の付与に多くの時間を費やしています。

サーバーをセットアップする

サーバーの設定はHubzillaプラグインを使用するのが最も簡単です。しかし、Hubzillaサイトの運用はそれほど簡単ではありません。Fedora上で.NETとReactベースのサーバーを設定するのは比較的簡単ですが、それでもいくつかの手順が必要です。詳細な手順については、readmeファイルをご覧ください。これらの手順が必要な理由の一つは、プリコンパイル済みのリリースが不足していることです。つまり、.NETを自分でインストールし、Reactのソースコードを手動でビルドする必要があります。ビルドが完了すると、ReactコードはApacheで直接実行されます。.NETバックエンドは別のサーバーで実行されます。Apacheはプロキシとして機能し、すべてのGamerzilla APIリクエストをバックエンドサービスに転送します。

上記の手順でGamerzillaは起動しますが、まだユーザーはいません。理想的には、管理者を作成し、新しいユーザーを登録する簡単な方法が必要です。ただし、この機能はまだ完成していません。現在、ユーザー情報はsqlite3コマンドラインでのみ入力できます。詳細な手順については、readmeファイルを参照してください。ユーザーは公開または非表示にすることができます。承認タグにより、新しいユーザーはすぐにシステムを利用できなくなりますが、オンライン登録は必須です。設計では、ユーザー関連モジュールの置き換え可能性を考慮しました。 ​backend/Service/UserService.cs​を置き換えることで、他のサイトとの統合が可能です。ゲームWebサイトでもこの方法を使用して、ユーザーにGamerzilla実績システムを提供することができます。

現在、GamerzillaのバックエンドではSQLiteデータベースを使用しています。パフォーマンステストはまだ実施していません。大規模なアプリケーションのインストールでは、より堅牢なデータベースを使用するためにシステムの改善が必要になると予想されます。

テスト

Gamerzillaをサポートするゲームランチャーを見つけるのは現在非常に困難です。libgamerzilla-serverがインストールされている場合は、コマンドラインで​gamerzillaserver​コマンドを実行できます。このコマンドを初めて実行する際は、URLとログイン情報を入力する必要があります。次回の実行では、これらの情報は設定ファイルから直接読み込まれます。現在、このエラーを修正する唯一の方法は、 ​.local/share/gamerzillaserver/server.cfg​を削除してから​gamerzillaserver​コマンドを再実行することです。

ほとんどのゲームはまだGamerzilla対応版がありません。itch.ioのPinball Disc RoomにはGamerzillaに対応したLinux版がありますが、Web版には実績システムがありません。このゲームには実績が2つしかありません。1つは10秒間生き残ること、もう1つはトンネルのロックを解除して使用することです。少し練習すれば、どちらか1つを獲得できます。このゲームには実績の視覚的な通知機能がないため、実績を確認するにはGamerzillaサーバーを確認する必要があります。

現在、Fedora にパッケージ化されたゲームは Gamerzila をサポートしていません。*SuperTuxKart* は Gamerzila のサポートを統合しており、新リリースを待っています。*Seahorse Adventures* と *Shippy 1984* は実績を追加しましたが、新リリースはまだパッケージ化されていません。他のゲームにも独自に Gamerzila のサポートを実装しましたが、プルリクエストやその他の連絡を試みても、開発者からの返答はまだ得られていません。

フォローアップ作業

Gamerzillaはより多くのゲームサポートを必要としています。多くのゲームが既にGamerzillaをサポートしており、その数は毎月約1つのペースで増加しています。お気に入りのゲームがある場合は、開発者にGamerzillaのサポートをリクエストできます。ゲーム開発者の方で、Gamerzillaに関する技術サポートが必要な場合は、お気軽にお問い合わせください。

サーバーの開発は順調に進んでおり、まもなく利用可能な登録システムを構築できる予定です。その後、常設のサイトを立ち上げる予定です。現在、テストサーバーをご覧いただけます。バックエンドとして.NETを使用することに懸念を表明されている方もいらっしゃいますが、APIは複雑ではなく、Pythonで簡単に書き換えることができます。

最大の不確実性はゲームランチャーにあります。GameHubはユーザーがアクセスできる実績インターフェースを求めています。将来的にはこの点について彼らと協力するかもしれません。itch.ioアプリのサポートを追加することで、システムの可視性が向上する可能性があります。もう一つの選択肢は、ランチャーを完全に廃止することです。例えば、gamerzillaserverをGnomeに追加するという方法があります。そうすれば、設定ページでURLとログイン情報を設定できるようになります。こうすることで、起動したすべてのゲームで実績を記録できるようになります。