Embeddium — Fortnite向けシングルDLLバックエンド

Tool

概要

Embeddiumは「Single DLL Backend + libcurl hook」を掲げる自己完結型のバックエンド実装です。FortniteのゲームプロセスにDLLを注入して動作し、HTTPルーティングやWebSocketハンドリング、資産(アセット)配信を含むサーバ側の論理をすべてDLLに埋め込みます。外部プロセスやランタイム時の追加ファイルを不要にするため、55以上のJSON/INI/バイナリファイルをEmbeddedAssets.cppとして組み込み、実行時はDLL単体で完結します。非同期I/OはBoost.Asio/Beastで処理され、libcurlフックを使ったネットワーク経路の置き換えなど低レベルの統合が行われています。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 2
  • ファイル数: 5
  • メインの言語: C++

主な特徴

  • 単一DLLで完結: すべてのバックエンドロジックとアセットをDLLに埋め込み、外部サーバ不要。
  • 埋め込みアセット生成: 55以上のJSON/INI/バイナリ資産をEmbeddedAssets.cppとしてビルド時に取り込み。
  • 非同期ネットワーキング: Boost.Asio + Boost.BeastでHTTPとWebSocketを非同期に処理。
  • ネットワークフック: libcurlのフック機能を利用して通信経路を制御・置換する設計。

技術的なポイント

Embeddiumは「実行時依存を極小化する」設計が核で、資産をコード側に焼き込むEmbeddedAssets.cppの自動生成でファイルI/Oを排し、DLLだけで必要なデータを提供します。ネットワーク層はBoost.Asio/Beastの非同期モデルに基づき、strandによりスレッドセーフなハンドリングを行えるよう設計されている点が注目されます。HTTPルーティングとWebSocketハンドラはDLL内で自己完結しており、接続毎の処理やメッセージ配送をイベント駆動で処理するためスケーラビリティに寄与します。

さらに、libcurlフックを組み合わせることで、ゲームクライアントが行うHTTP(S)リクエストをフックし、DLL内部のルーティングへ差し替える手法を採用しています。このアプローチは外部サーバを立てずにクライアント側でサーバ振る舞いをエミュレートするのに有効ですが、通信のTLS/証明書、バージョン相違、ゲーム側の整合性チェックなど互換性の課題に注意が必要です。

ビルド基盤としてはVisual Studioソリューション(Embeddium.sln)で管理されており、C++のネイティブコード、Boostなどの依存をビルド環境で解決する必要があります。アセットの埋め込み自動化やDLLへの統合はメンテナンス面で効果的ですが、ゲームアップデートや資産フォーマットの変更があるとアセット生成・プロトコルの追従が必要となり、保守負荷が発生します。セキュリティや互換性の観点から、実行環境や法的・利用規約上の注意点を踏まえた取り扱いが必要です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitattributes: file — Git属性設定。改行コードやマージ振る舞いの指定など。
  • .gitignore: file — ビルド生成物や一時ファイルを無視するための定義。
  • Embeddium.sln: file — Visual Studioのソリューションファイル。プロジェクトのビルド構成が含まれる。
  • Embeddium: dir — 実際のソースやリソースを含むディレクトリ(DLLコード、ネットワークハンドラ、アセット埋め込みロジックなどが配置される想定)。
  • README.md: file — プロジェクトの説明と特徴、ビルドや設計に関する抜粋情報。

リポジトリ自体は小規模でファイル数は少ないですが、EmbeddedAssets.cppのような生成ファイルやBoost系ライブラリのリンク設定を伴うため、ローカルでのビルド・テストにはVisual Studioの環境構築(Boostの配置、コンパイラ設定、DLLインジェクションに関するツールや権限確保)が必要です。READMEには「Zero external dependencies at runtime」とある通り実行時の外部依存を減らしていますが、ビルド時には外部ライブラリやツールが必要です。

まとめ

単一DLLでバックエンドを完結させる先鋭的な設計と、Boostベースの非同期処理・埋め込みアセット戦略が特徴のリポジトリ。メンテ・互換性・利用上の注意は要確認。

リポジトリ情報:

READMEの抜粋:

Embeddium

A self-contained Fortnite private server implemented as a C++ DLL that injects directly into the game process. All backend logic, HTTP routing, WebSocket handling, and asset data are embedded in the DLL, no external server process or configuration files are required.

Features

  • Zero external dependencies at runtime all 55+ JSON/INI/binary assets are baked into the DLL via generated EmbeddedAssets.cpp
  • Async networking using Boost.Beast + Boost.Asio with strand ser…