Alien Swarm: Reactive Drop ソースコード — C++ でゲーム MOD を作るバルブ公認の改造基盤
Alien Swarm: Reactive Drop ソースコード — C++ でゲーム MOD を作るバルブ公認の改造基盤
ひとことでいうと
Alien Swarm: Reactive Drop(エイリアン スワーム:リアクティブドロップ)は、Valve(バルブ)が開発した協力型アクションシューターを独立した続編として大幅に拡張した無料ゲームです。このリポジトリ(ソースコードの置き場)には、ゲームを動かすための中心的なプログラム——クライアント側のゲームロジック・ミッション選択画面・サーバー側のゲームロジック——を自分でビルド(組み立て)できる C++ コードが一式入っています。Steam(スチーム:ゲームを配信するプラットフォーム)で無料配信中のゲーム本体と組み合わせることで、バグの修正・新機能の追加・MOD(ゲーム改造コンテンツ)の開発ができます。C++ を使ったゲーム開発を学びたい方や、自分だけのゲーム改造に挑戦したい方に向いているプロジェクトです。
こんな人におすすめ
- ゲーム MOD を作りたい C++ エンジニア: 新しい武器・敵キャラクター・ゲームモードをゼロから実装したい人。既存のソースコードを読み解きながら機能を追加し、Pull Request(プルリクエスト:変更提案を送る仕組み)でコミュニティに貢献できます。
- ゲームエンジンの仕組みを学びたい開発者: Source エンジン(バルブが自社ゲームに使うゲームエンジン)の内部実装を、実際に動くゲームのコードから学びたい人。ネットワーク同期・物理演算・AI ロジックを実践的に理解できます。
- サーバー管理者・コミュニティ運営者: 公式ビルドにはない独自ルールやランク管理機能をサーバー側プログラムに追加し、プライベートサーバーを差別化したい人。
インストール・使い方
本プロジェクトは Windows + Visual Studio 2022 を前提にした C++ ビルド環境です。Linux や Mac には対応していません。
Step 1: リポジトリを手元にコピーする
git clone https://github.com/ReactiveDrop/reactivedrop_public_src.git
cd reactivedrop_public_src
ターミナル(文字で命令を送る画面)に上のコマンドをコピー&ペーストして Enter を押すと、ソースコードが手元のパソコンにダウンロードされます。開発用ブランチ(バージョン管理の枝分かれ)は reactivedrop_public です。最新の Reactive Drop コードはこちらにあります。master ブランチは Valve が提供したオリジナルの Alien Swarm ソースコードです。変更の管理や Pull Request の送信をスムーズにするため、作業前にリポジトリを自分の GitHub アカウントへフォーク(複製)しておくとよいでしょう。
Step 2: Visual Studio 2022 をインストールする
Visual Studio 2022 Community(無料版)をダウンロードし、インストール時に「C++ によるゲーム開発」ワークロード(機能パッケージの単位)を選択します。このワークロードには DirectX SDK・MSVC コンパイラ・Windows SDK など、ゲームの DLL をビルドするために必要なツールが一式含まれています。
Step 3: ソリューションを開いてビルドする
src/reactivedrop_vs13.sln を Visual Studio 2022 で開き、構成を Debug または Release に切り替えてビルドを実行します。ビルドとは、ソースコードをパソコンが実行できる形式(DLL ファイル)に変換する作業のことです。成功すると reactivedrop\bin ディレクトリに DLL ファイルが生成されます。
Step 4: コンテンツファイルを変更する場合
reactivedrop/ フォルダにはゲームコンテンツ(マテリアル・モデル・スクリプト・サウンド)が格納されています。変更を加えるときは「未変更ファイルを追加するコミット(変更の記録)」と「変更を導入するコミット」を分けることがガイドラインで求められています。これにより変更の差分がレビューしやすくなります。
デモについて
本プロジェクトはゲーム用 DLL をビルドするための C++ ソースコードリポジトリであり、Web ブラウザ上でインタラクティブに試せるデモは提供されていません。コンパイル済み DLL を実際に動かすには、Windows PC・Steam・Alien Swarm: Reactive Drop 本体が必要です。コードを読む・眺めるだけであれば、GitHub 上のリポジトリをブラウザから直接閲覧できます。
動かしてみた
本リポジトリは C++ ゲームプロジェクトです。ビルドには Windows 上の Visual Studio 2022 と「C++ によるゲーム開発」ワークロードが必須となります。試す前に知っておくとよいことを以下にまとめました。
- 対応 OS: Windows のみ(Linux・Mac は非対応)
- ビルドツール: Visual Studio 2022 Community 以上、「C++ によるゲーム開発」ワークロードを選択してインストール
- ゲーム本体: Steam 経由で「Alien Swarm: Reactive Drop」(無料)をインストール済みであること
- ディスク容量: ゲーム本体(約 3 GB)+ Visual Studio(約 5〜10 GB)の空き容量が必要
- ブランチ構成: 最新機能は
reactivedrop_publicブランチ、オリジナルの Valve コードはmasterブランチ
リポジトリのファイル構成は以下のようになっています。
src/reactivedrop_vs13.sln # Visual Studio ソリューションファイル
reactivedrop/GameInfo.txt # ゲーム設定ファイル
reactivedrop/maplist.txt # マップリスト
utils/build_maps.py # マップビルドユーティリティ(Python 製)
utils/build_rd_sln.sh # Linux 向けシェルスクリプト(参考用)
utils/build_rd_sln.bat # Windows 向けバッチファイル
はじめの一歩——コードリーディングから始める実践ガイド
いきなりビルドに取りかかる前に、ソースコードの構造を把握しておくと作業が格段にスムーズになります。
src/ディレクトリを Visual Studio のソリューションエクスプローラー(ファイル一覧を見るパネル)で開き、server.dllプロジェクト内のエイリアン NPC(コンピューターが操作するキャラクター)の挙動定義ファイルや武器実装ファイルなど、興味のある機能に関連するソースをまず探してみましょう。- Source エンジン特有の
DEFINE_ENTITYFACTORYマクロやCBaseEntity継承パターンを理解すると、新しい武器や NPC の実装手順が見えてきます。 reactivedrop/フォルダ内のスクリプトファイル(.vmt/.kv形式のテキストファイル)はテキストエディタで直接編集でき、C++ のコンパイルなしに挙動を調整できる部分もあります。C++ の変更と組み合わせながら少しずつ試行錯誤するのが近道です。- 変更した DLL を実際のゲームで試すには、生成された DLL ファイルをゲームの
binフォルダに配置して Steam からゲームを起動します。 - Pull Request を送る前に、コミットのガイドライン(未変更ファイルと変更ファイルを分ける)を守ることで、レビューがスムーズに進みます。
活用アイデア
- カスタム武器の追加: 既存の武器クラスを継承し、射撃レート・弾薬数・特殊効果(酸ダメージ・貫通など)を独自に定義した武器 DLL をビルドして配布する。
- 新しいエイリアン(敵キャラ)の実装: 既存のエイリアン基底クラスをベースに、移動 AI・攻撃パターン・ビジュアルエフェクトをカスタマイズし、ゲームに個性豊かな新しい敵を登場させる。
- サーバー専用のランキング・統計システム:
server.dll側に通信ロジックを追加し、プレイヤーのキル数・蘇生回数などを外部データベースに記録するコミュニティサーバーを構築する。 - 独自ゲームモードの新設: チームの蘇生回数に制限を設けた「サバイバルモード」や、時間制限付きの「タイムアタックモード」など、独自のルールセットをコードレベルで実装する。
- 学習・研究目的でのコード解析: ネットワーク同期の実装や AI の行動決定ロジックを実際のゲームコードで学び、自分のゲームプロジェクトの参考にする。
- バグ修正への貢献: ゲームプレイ中に見つけた不具合をソースコードレベルで調査し、修正した内容を Pull Request として公式リポジトリに送る。
用語とポイント解説
DLL(Dynamic Link Library:ダイナミック・リンク・ライブラリ)
Windows 上でゲームが起動したときに読み込まれる共有プログラムファイルです。かんたんに言うと、ゲームの機能を「部品」として分けて管理する仕組みです。本プロジェクトでは client.dll・server.dll・missionchooser.dll の 3 つをビルドすることが目標となります。
Source エンジン Valve が開発し、Half-Life 2・Portal・Counter-Strike などに採用されているゲームエンジン(ゲームを動かす基盤ソフトウェア)です。かんたんに言うと、物理演算・グラフィック描画・ネットワーク通信をまとめて担当するゲームの「土台」です。Alien Swarm: Reactive Drop もこのエンジン上で動いています。
MOD(Modification:モッド) 既存のゲームを改造して作られるコンテンツや追加機能のことです。かんたんに言うと、ゲームを「自分好みにカスタマイズしたもの」のことです。本リポジトリはその MOD を作るための公式基盤として公開されています。
SDK(Software Development Kit:ソフトウェア開発キット) ソフトウェアを開発するために必要なツールやライブラリをまとめたパッケージです。かんたんに言うと、「開発のための道具箱」です。本プロジェクトでは Valve が公開した Alien Swarm SDK をベースに Reactive Drop Team が拡張を加えています。
Pull Request(プルリクエスト) GitHub 上で自分の変更を元のリポジトリに取り込んでもらうよう提案する仕組みです。かんたんに言うと、「この変更を採用してください」という申請書のようなものです。レビューを経て承認されると、メインブランチに統合されます。
ワークロード Visual Studio のインストール時に選択する機能パッケージの単位です。かんたんに言うと、「どの開発用途向けのツールをまとめてインストールするか選ぶ区分」のことです。ゲーム DLL のビルドには「C++ によるゲーム開発」ワークロードが必要です。
CBaseEntity(シー・ベース・エンティティ) Source エンジンにおける全ゲームオブジェクトの基底クラス(共通の設計図)です。かんたんに言うと、武器・NPC・プレイヤーなどゲーム内のすべての「もの」がこの設計図を元に作られているということです。新しいエンティティを実装するときはこのクラスを継承するのが基本パターンです。
ブランチ
Git(ジット:バージョン管理ツール)においてコードの変更履歴を枝分かれさせて管理する仕組みです。かんたんに言うと、「同じプロジェクトの複数バージョンを並行して管理するための枝」のことです。本リポジトリでは reactivedrop_public(最新開発版)と master(オリジナルの Valve コード)の 2 つのブランチが重要な役割を担っています。
コミット Git でファイルの変更内容を記録する操作、またはその記録単位のことです。かんたんに言うと、「変更内容にメモをつけてセーブする」ことです。本プロジェクトでは「未変更ファイルの追加」と「変更の導入」を別々のコミットに分けることがガイドラインで定められています。
ぜひ MOD 開発の第一歩や Source エンジンの学習、コミュニティサーバーの独自機能構築などに活用してみてはいかがでしょうか。