好きなゲームのソースコードを見つける場所 — osgameclonesプロジェクト概要
作業タスクから少し休憩して、ローカルで古いプロジェクトを起動し、内部でどのように動作しているか見てみたいと思うことがあります。しかし、伝説的なタイトルのソースコードを見つけるのは容易ではありません。ほとんどのタイトルは著作権で保護されており、内部構造は企業の金庫に保管されています。それでも、何十年もの間、コミュニティがクローン、リメイク、オープンソースのエンジンを作成し続けており、最新システムでクラシックゲームを実行できるようになりました。
osgameclonesリポジトリは、このようなプロジェクトの最も包括的なデータベースです。これは単なるリンク集ではなく、10年以上にわたってコミュニティによって維持されている構造化されたカタログです。
開発者にとってなぜ役立つか
ゲーム開発にとって、このリポジトリは解剖学の本のようなものです。自分のエンジンを作成している場合でも、Settlersのような戦略ゲームで経済がどのように実装されているか、またはプラットフォームゲームでの物理演算を理解したい場合は、C++、Python、Rust、さらにはJavaScriptでの動作例を見つけることができます。
学習を超えて、Open Sourceに貢献したいがどこから始めればよいかわからない人々にこのプロジェクトは役立ちます。データベースには数百のゲームがあります:シンプルなアーケードゲームから大規模なRPGまで、その多くはバグ修正や新プラットフォームへの移植のために常に助けを必要としています。
データベースの構成方法
プロジェクトの作者たちは徹底的なアプローチを取りました。すべてを1つの巨大なREADMEにまとめるのではなく、YAMLファイルを使用してデータを保存しています。リポジトリには2つの主要なフォルダがあります:
originals— 元の商用ゲームの情報を含んでいます。games— クローンとリメイクの説明を保持し、リポジトリ、公式サイト、開発状況へのリンクが含まれています。
興味深いことに、プロジェクトには厳格なデータ検証スキーマがあります(schema/games.yaml)。これにより、データベースに壊れたリンクやゴミがないことが保証されます。ゲームを追加したい場合は、PRはGitHub Actionsによる自動チェックを経ます。
カタログの中身
データベースには実質的にすべてのものが含まれています:
- 元のアセットを実行するためのオープンソースエンジン(例:Morrowind用のOpenMWやCommand & Conquer用のOpenRA)。
- 独自のグラフィックスとサウンドを備えた完全なクローン。
- メカニクスの一部のみを示すテクニカルデモ。
ソートはアルファベット順ですが、ScummVMには例外があります。ScummVMが多くのアドベンチャーゲームをホストしているため、メインリストを圧倒してしまうからです。
プロジェクトサイトをローカルで実行する方法
GitHubインターフェースでYAMLファイルを閲覧するのが不舒服な場合、ローカルでプロジェクトを展開できます。依存関係管理にpoetryを使用し、ビルドには伝統的なアプローチを採用しています。
コンテナ化に興味がある人向けに、Dockerサポートも提供されています。起動手順は標準的で、まずイメージをビルドしてからサーバーを実行します。
その後、カタログはlocalhost:3000でアクセス可能になります。コンテナ内では、YAMLファイルから生成された静的サイトが実行されています。
プロジェクトへの貢献方法
このプロジェクトは貢献者によって支えられています。DiabloやDwarf Fortressの優れたクローンを知っているなら、リストにまだ載っていない場合に作者たちは2つの方法を提案しています:ウェブサイトでフォームに記入するか、テンプレートからIssueを作成することです。しかし、開発者にとって最良の方法は、gamesまたはoriginalsフォルダ内のファイルを直接編集してPull Requestを送信することです。
ちなみに、プロジェクトはHacktoberfestに積極的に参加しているため、プロファイルの実績を獲得しながら有益なことをする絶好の機会です。
osgameclonesリポジトリは、レトロゲーム愛好家やコードを読みたい人にとって宝庫です。プロジェクト自体には複雑なアーキテクチャはなく(Pythonの静的サイトジェネレーターに過ぎません)、コンテンツの価値がそれを補っています。
誰がチェックすべきか:
- ゲームメカニクスの研究をしたい будущиеゲームデザイナーとゲーム開発者。
- 貢献できる興味深いOpen Sourceプロジェクトを探している人。
- ビデオゲームの歴史愛好家。
このプロジェクトは商業ゲームを「葬り去る」ことを目指していますが、オープンソースを通じてその遺産を保存することを支援しています。長年にわたってデータベースが最新の状態に保たれているのを見るのは素晴らしいことです。
関連プロジェクト