OPEN SOURCE · C++20 · 4PC TEAMS

Four players.
One team instinct.

A different board demands a different engine. IronPhoenix brings team-aware search and native neural evaluation to four-player Teams chess.

Developed by Nick / KnightStackSys

THE FOUR-PLAYER FIELDTEAMS
Red + YellowVS Blue + Green

14 × 14 cross board · 160 playable squares

4 playersTwo coordinated teams
C++20Native engine core
PhoenixNetPurpose-built NNUE
Open sourceBuilt to explore

01 / THE ENGINE

Search with the
whole team in mind.

IronPhoenix is built around the chess.com-style cross board. Its search and evaluation account for teammates, four-player rules, and terminal king captures.

/ 01

Search deeper

Iterative deepening, PVS-style search, aspiration windows, and quiescence search form the core. Transposition tables and history-based move ordering help focus the search.

PVSQuiescenceSEE
/ 02

Explore alternatives

Principal variation reporting exposes the engine’s line. Use MultiPV to compare several candidate moves, with time or depth limits to control the search.

MultiPVTime / depth limits
/ 03

Evaluate as a team

Handcrafted evaluation provides a deterministic fallback. PhoenixNet adds a native neural evaluator with separate own-king and partner-king feature streams.

Team-relative scoringNNUE

02 / A DIFFERENT KIND OF CHESS

Your partner changes
the position.

Red and Yellow face Blue and Green. Players move in a fixed cycle, so the engine must read a position through the lens of both its own king and its partner’s.

IronPhoenix supports four-player castling, promotion, en passant, and FEN position setup. Positive evaluation scores favor the team whose player is currently moving.

Read the project overview

THE TURN CYCLE

  1. R
    RedTeam Red + Yellow
  2. B
    BlueTeam Blue + Green
  3. Y
    YellowTeam Red + Yellow
  4. G
    GreenTeam Blue + Green

Four turns. Two teams. Shared stakes.

03 / PHOENIXNET

Built for this board.
Trained for this game.

PhoenixNet is IronPhoenix’s native NNUE evaluator, designed specifically for four-player Teams chess.

The v1 architecture combines 65,280 sparse input features with 17 king buckets and a shared 128-wide feature transformer. Own-king and partner-king streams feed a 256 → 32 → 32 → 1 dense network.

Place ironphoenix.nnue beside the executable to load it automatically. Without a network file, the engine falls back to handcrafted evaluation.

Explore the PhoenixNet documentation

FROM SELF-PLAY TO EVALUATION

01

Generate

Native self-play datasets with parallel workers and controlled MultiPV exploration.

02

Train

Train on the sparse features consumed by the engine. Append or resume dataset generation.

03

Export & search

Export the native NNUE format and load it alongside IronPhoenix.

256 → 32 → 32 → 1

04 / GET STARTED

Build. Search. Learn. Rise.

Bring a C++20 compiler, CMake 3.24+, and Threads support.
MSVC, Clang, and GCC are supported.

01 / Build from source

git clone https://github.com/KnightStackSys/IronPhoenix.git
cd IronPhoenix
cmake -S . -B build -DIRONPHOENIX_BUILD_DATASET_GENERATOR=ON
cmake --build build --config Release

The Release configuration is used by multi-configuration generators such as Visual Studio. For a single-configuration generator, add -DCMAKE_BUILD_TYPE=Release to the configure command.

02 / Run a first search

uci
isready
setoption name Hash value 256
setoption name MultiPV value 4
position startpos
go depth 8

Launch the built ironphoenix executable, then enter these UCI-style commands. Set MultiPV to 1 for the normal single-line search.