Clean-room Refractor 2 reimplementation

Built from zero.
Flown, driven, fought.

Project Dalian is an open-source C++20 engine that reads mesh, terrain, texture, and script data straight out of your own Battlefield 2 install and runs it through a modern OpenGL pipeline — skeletal hit detection, physical ballistics, 6-DoF FPV drones, PBR materials, cascaded shadows. No EA or DICE assets ship with it. You bring the game, we bring the engine.

Build
0.5.19-ALPHA
Core Phases
7 / 7 ✔
War-sim Layer
ROUGH / ALPHA
License
MIT
!

Bring your own copy — read before deploying

This repository contains no EA or DICE assets. No meshes, textures, sounds, or archives from Battlefield 2 are committed anywhere in the source tree — only original engine code, a small permissively-licensed third-party stack, and a hand-authored test cube.

Project Dalian requires a legitimate installation of Battlefield 2 (or a compatible mod such as Project Reality). At runtime the engine reads assets directly from your local archives. This project is independent and non-commercial, and is not affiliated with or endorsed by EA or DICE.

Loadout manifest

What's live in the build

Every line here runs against real retail BF2 archives today. Status reflects how far each system has been hardened — not whether it works.

Asset Pipeline

Format loaders verified byte-for-byte

.staticmesh, .bundledmesh, .skinnedmesh, .ske/.baf skeletal animation, .collisionmesh, .dds (DXT1/3/5), zip archive mounting, and the .con/.tweak interpreter — all reverse-engineered and checked against retail output.

Verified
Rendering

PBR surface path + cascaded shadows

Cook-Torrance GGX shading, baked object lightmaps, GPU skinning, terrain colormap/detail splatting, water with Fresnel specular, undergrowth billboards with wind sway, and an offscreen-FBO pass for the drone feed.

Verified
Combat

Skeletal hit registration, physical ballistics

Two hot-swappable hit models — hitscan and physical projectiles with gravity, drag, and wind deflection — plus per-bone capsule colliders for head/torso/limb zones instead of one bounding box.

Alpha
Vehicles

Ground vehicles, helicopters, fixed-wing jets

Terrain-following chassis tilt, BF2-style collective/cyclic/yaw helicopter flight, rotor RPM blur, and arcade jet flight with body-wing lift, afterburner, V1 rotation, and gear-tuck animation.

Alpha
Munitions

Guided and ballistic weapons

6-DoF FPV recon drone with per-rotor thrust simulation, a one-way FPV kamikaze loitering munition, and a vehicle-launched SAM with tactical-map targeting and lofted climb.

Alpha
Multiplayer

Host/join lobby, LAN + Tailscale discovery

Faction picker, ready states, kill feed, join/leave toasts, late-join, ticket-grace bleed pause, and auto round restart. Session sync over UDP with snapshot interpolation.

Alpha
Simulation

Conquest layer, enemy AI, deploy flow

Tickets, control-point capture, and voice cues; enemy AI with patrol, advance-to-contact, and reaction delay; full deploy screen with kit picker, faction, and spawn map.

Alpha
Phase log

Roadmap status

The foundational engine phases are closed out. What's left is depth — polish on the systems layered on top.

P0
Foundation — mesh loader, meshinfo CLI
100%
P1
Archive mount, DDS loader, full geometry extraction
100%
P2
OpenGL viewer, ImGui browser, headless snapshot
100%
P3
Skeleton/animation loaders, CPU + GPU skinning
100%
P4
.con/.tweak interpreter — templates, placements
100%
P5
Heightmap terrain, static placement, level assembly
100%
P6
Physics world, collision mesh, character controller
100%
P7
War-sim layer — jet polish, animation retargeting, full vehicle audio, networking hardening, particle FX, in-engine editor
62%
SITREP — recent build logJUL 2026
JetsSpool, V1 rotate, body-wing lift, afterburner, gear tuck — alpha
Multiplayer lobbyHost/join/ready/start; LAN + Tailscale discovery
Map fidelityHeightmap cluster, overgrowth, roads, texture resolve, asset audit
Display / fullscreenDynamic mode list; resolution Apply refreshes viewport instantly
Crash fixSDL2 + SDL2_mixer DLLs copied next to exe on build
Deploy

Get into a level

Pre-built Windows binaries, or compile it yourself. Either way, all it takes on top is a legitimate copy of Battlefield 2.

Windows — pre-built

  1. Grab the latest .zip from GitHub Releases
  2. Unzip anywhere
  3. Run project_dalian.exe
  4. Set Options → BF2 path to your retail install

Build from source

Needs CMake 3.24+, a C++20 compiler (MSVC 2022, Clang, or GCC/MinGW-w64), and Git.

# configure + build
cmake --preset default
cmake --build build

# optional: run parser unit tests
ctest --test-dir build
Recruitment

The engine needs hands

This is a hobby project moving fast on one contributor's time. Beta testers and code contributors both move it forward.

Beta Testing

Break it, then tell us how

Run it against your own BF2 install, try maps outside Dalian Plant, push the vehicle and multiplayer code, and file what you find. Crash logs, half-working features, and "this map does something weird" reports are all useful.

Email to sign up →
Code Contributors

Pick a system, dig in

Jet flight polish, vehicle audio coverage, networking hardening, particle effects, and an in-engine editor are all open. The codebase is original C++20 with a small, permissively-licensed third-party stack.

Email to contribute →