Skip to content

Installation Windows Runner

boyism80 edited this page Jul 4, 2026 · 1 revision

Windows — Runner

Use Runner (tools/runner) to download or build server binaries, configure infrastructure, and start or stop the full fb stack on Windows.

Parent guide: Windows Installation

What Runner does

Runner is a WPF launcher that manages the local development workflow:

Feature Description
Patch Download prebuilt dist.zip and extract to build/dist/
Build Compile C++ and .NET locally into the same build/dist/ layout
Infrastructure checks Verify repository, toolchain, native deps, and TCP connectivity
Setting tab Configure working directory, MySQL / Redis / RabbitMQ, and server ports
Run / Stop Generate configs under build/dist/config/ and launch all processes

Both Patch and Build produce the same runtime layout under build/dist/:

  • gateway.exe, login.exe, game.exe
  • internal/, write-back/, log/, marketplace/, admin-tool/
  • maps/, json/, scripts/

Requirements

Requirement Notes
Windows 10 or later (64-bit)
Git for Windows Submodule support
.NET SDK 8.0 or later — to build and run Runner
MySQL, Redis, RabbitMQ Must be running before Run
Cloned fb repository See Windows Installation — Clone

Additional requirements for Build (not Patch)

Requirement Notes
CMake 3.28 or later
Visual Studio 2022 or later with Desktop development with C++
Native dependencies Run tools/update-modules.bat once (see Build from source)
Disk space 10 GB or more free on the drive containing build/

Runner's Infrastructure status panel on the Home tab checks these automatically before allowing Build.


1. Install Runner

From the repository root:

cd tools\runner
dotnet publish -c Release -o bin

Or from the tools directory:

.\run.bat

This publishes Runner and starts tools\runner\bin\runner.exe.


2. Configure settings

Open the Setting tab. The sidebar groups settings into General, Infrastructure, and Server sections.

General — Directory

Field Purpose
IP External IP clients connect to (127.0.0.1 for local-only)
Working directory Path to your fb repository root (must contain CMakeLists.txt and .git)

Infrastructure

Configure connection details for services that must be reachable before Run:

Section Default port
MySQL 3306
Redis 6379
RabbitMQ 5672

Add one or more MySQL entries (unified + world databases). Runner verifies TCP connectivity to each entry when you click Run.

Server

Configure ports and names for each service group:

Section Examples
Gateway TCP port (default 3001)
Login One or more login servers (name, description, port)
Game One or more game servers (name, port, thread counts)
Internal HTTP port (default 3000)
Marketplace HTTP port
Admin Tool HTTP port

Settings are saved to tools/runner/settings.json.


3. Home tab

Toolbar

[ 마지막 빌드: yyyy-MM-dd HH:mm:ss ]  [ 빌드 ]  [ 패치 ]  [ 시작 ]
Button Action
패치 (Patch) Download and extract prebuilt binaries
빌드 (Build) Local CMake + dotnet build (requires full toolchain)
시작 (Run) Generate configs and start all services (toggles to 종료 when running)

Patch, Build, and Run are mutually exclusive while a long operation is in progress.

Infrastructure status panel

The right sidebar shows a live checklist, for example:

  • Working Directory, Git, Git submodules
  • CMake 3.28+, MSVC (VS 2022+), .NET SDK 8.0+
  • Disk space (10 GB+), Native dependencies (dependency/)
  • MySQL, Redis, RabbitMQ (from Setting tab)

The summary footer shows pass/fail counts (e.g. 14/14 통과 or 12/14 통과 - 빌드 불가). Build is blocked until all required checks pass.

Checks run automatically when the Home tab loads. Build re-runs the full check before showing a confirmation dialog.

Build log

The main panel shows build/patch output. Use it to diagnose download, CMake, or dotnet publish failures.


4. Obtain binaries

Choose one of the following.

Option A — Patch (fastest)

Best when you only need a running server and do not compile C++ locally.

  1. Set Working directory to your fb repo root.
  2. Click 패치 (Patch).
  3. Runner downloads dist.zip, extracts to build/dist/, then overlays local assets from the repo when present:
    • server/game/json/build/dist/json/
    • server/game/scripts/build/dist/scripts/
    • server/game/maps/build/dist/maps/ (if present)

After Patch, refresh maps from the repo with 파일 → 업데이트 → 맵 (resources/maps/maps.zipbuild/dist/maps/).

No Visual Studio or native dependency build is required for Patch.

Option B — Build (local compile)

Best when you changed C++ or .NET code and want binaries built on your machine.

  1. Complete native dependency setup once: tools\update-modules.bat (see Build from source).
  2. Ensure all infrastructure checks pass on the Home tab.
  3. Click 빌드 (Build) and confirm the dialog.
  4. Runner runs:
    • cmake -S . -B build (if no CMake cache)
    • cmake --build build --config Debug
    • dotnet publish for Internal, Write-back, Log, Marketplace, Admin Tool
    • Copy maps, scripts, and JSON into build/dist/

First run can take 30 minutes to 2+ hours (Boost and other native libs take longest on first update-modules.bat).

Build overwrites existing files in build/dist/. Stop running servers before building.


5. Refresh local assets (optional)

After Patch or when working on game data, use 파일 → 업데이트:

Menu Source Output
resources/maps/maps.zip build/dist/maps/
데이터 runs tools/update-data.bat build/dist/json/, build/dist/internal/json/
스크립트 server/game/scripts/ build/dist/scripts/

Run 데이터 after editing Excel tables in resources/table/.


6. Start servers

  1. Start MySQL, Redis, and RabbitMQ.
  2. Verify infrastructure entries in the Setting tab match your running services.
  3. Ensure build/dist/ contains binaries (from Patch or Build).
  4. Click 시작 (Run).

Runner:

  • Pings MySQL, Redis, and RabbitMQ TCP ports
  • Writes JSON configs to build/dist/config/ (login, gateway, game, and .NET appsettings)
  • Starts .NET services (Internal, Log, Write-back, Marketplace, Admin Tool)
  • Starts C++ services (Gateway, Login, Game)

The server tree on the right shows process groups and status. Click 종료 to stop all processes.

Minimal stack for one world:

  1. Internal — applies DB migrations, central HTTP API
  2. Log — structured log pipeline (RabbitMQ consumer)
  3. Write-back — persists Redis cache to MySQL
  4. Marketplace — in-game marketplace API
  5. Admin Tool — web-based administration UI
  6. Gateway → Login → Game — client-facing TCP services

Troubleshooting

Problem Check
빌드 불가 on Home tab Open infrastructure panel; fix failed items (CMake, MSVC, dependency/, disk space)
Port not open on Run MySQL / Redis / RabbitMQ not listening on configured host:port
game.exe not found in build/dist Run Patch or Build first
Build fails at cmake / C++ step Run tools\update-modules.bat in Developer PowerShell for VS 2022
Patch download fails Network access to patch server; try Build instead
Korean text garbled in scripts Source files are UTF-8; ensure editor and console use UTF-8
Setting tab disabled Stop all running servers first

For manual CMake, Visual Studio, and CI-aligned steps, see Windows — Build from source.


Related pages

Clone this wiki locally