The technology behind Vyrda

A classic world,
rebuilt at engine level.

From a fully native DirectX 11 client to 64-bit FreeBSD game and database engines, every major layer has been revisited with one goal: preserve the soul of Metin2 while making the complete platform worthy of today.

Project evolution

More than a visual refresh

Vyrda began with the familiar Metin2 foundation. Since then, its client and server stack have been rebuilt system by system: the platform, renderer, vegetation, world simulation, audio, backend engines, data layer, performance architecture, and release pipeline have all moved forward.

This page documents the major engineering upgrades already present in the project. It is a technical overview rather than a list of gameplay features.

Renderer
Native DirectX 11
Architecture
64-bit client & server
Vegetation
SpeedTreeRT 4.1
World
Dynamic & server-timed
Server platform
FreeBSD 15.1 / Clang 19
Data layer
MariaDB 12.3
Chapter 01

A modern foundation

The oldest constraints were removed first, creating a safer base for every upgrade that followed.

Runtime

Modern engine libraries

Critical subsystems now use purpose-built modern components: mimalloc for allocation, enkiTS for task scheduling, LZ4 for fast pack compression, and STB/FreeType for asset and font handling.

Chapter 02

The renderer, rebuilt

The graphics path evolved from the legacy fixed-function foundation into a native, shader-driven DirectX 11 renderer.

Graphics API

Fully native DirectX 11

The current client renders and presents through an authoritative Direct3D 11 path, with native textures, buffers, shaders, render targets, UI submission, and GPU skinning. A DXGI flip-model presentation path adds modern frame pacing, low-latency buffering, resize recovery, and optional tearing support.

  • Direct3D feature level 11.1 on supported hardware
  • Native world, characters, effects, terrain, trees, and interface
  • Shader cache compiled for the DX11 pipeline

Materials

Shader-based world materials

Terrain, dungeons, objects, grass, and trees use authored normals with coherent direct light and sky fill. Normal, specular, and displacement detail replace the flat lighting of the original path, with up to 16× anisotropic filtering preserving distant texture clarity.

Shadows

Stable cascaded shadows

Characters, terrain, objects, dungeons, grass, and SpeedTree share a multi-pass shadow system with cascade-aware filtering, real texel-size kernels, stable light-space snapping, and extended caster coverage.

Image quality

Modern post-processing

The world pass now supports restrained filmic tone mapping, adaptive exposure, bloom, FXAA, SSAO, clarity, sharpening, and gradient-aware dithering. A world/UI mask keeps text, icons, windows, and the cursor crisp and ungraded.

Chapter 03

A world that moves

Lighting, atmosphere, water, and vegetation now respond as connected parts of one environment.

Time & light

Server-time celestial cycle

A continuous 24-hour cycle moves the sun and moon through world space and blends light, fog, sky, clouds, material response, and shadow direction through dawn, day, dusk, and night.

Water

Animated water & reflections

Water now combines its authored animation with continuous wave normals, ripples, Fresnel response, depth tint, foam, fog integration, and corrected planar reflections. Puddles and ice can reflect the surrounding scene as weather changes.

Weather

Dynamic weather simulation

Rain, snow, blizzards, thunder, and lightning are tied to wind and ambience. Wet surfaces, puddles, and snow build gradually while precipitation remains frame-rate independent and readable from normal gameplay cameras.

Vegetation

Streaming grass & GPU wind

Attribute-driven grass streams around the player instead of rebuilding in visible rings. Trees and grass share weather-aware wind, wider draw distances, stable LODs, and bounded population budgets.

Audio & social

Modern audio and communication

The legacy audio layer is backed by a static miniaudio engine. Integrated voice chat and Discord Rich Presence connect the client to modern communication without changing the game’s familiar sound interface.

Media

Native media presentation

Startup and in-game video paths were adapted to the modern renderer through Media Foundation and Direct3D 11, including reliable loading transitions and recovery when the game window changes state.

Chapter 04

Faster, safer, measurable

The engine was not only expanded; its costly paths were profiled, reduced, and made repeatable to test.

Observability

Engine-level profiling

Opt-in telemetry records frame time, render-pass cost, draw submissions, primitive counts, presentation time, tree simulation pacing, and resource health. Optimizations can be compared against repeatable baselines instead of judged by feel.

Delivery

Verified patch pipeline

Client releases are staged through a manifest-driven autopatcher with per-file SHA-256 verification, versioned release snapshots, remote download checks, and server-side rollback backups.

Chapter 05

The server engine, modernized

The backend received the same architectural treatment as the client: a clean 64-bit platform, current toolchain and dependencies, reproducible builds, supervised processes, and a modern local data layer.

Backend platform

FreeBSD 15.1 on native amd64

The production stack runs on a clean FreeBSD 15.1 amd64 installation. The game, database, and quest compiler are native 64-bit ELF binaries built for FreeBSD 15.1 with the base LLVM/Clang 19 toolchain, removing the legacy 32-bit runtime dependency from the server side.

  • Native x86-64 game, database, and quest binaries
  • Client/server packet layouts protected by ABI verification
  • Clean runtime separated from sources and build output

Build system

Revisioned, reproducible binaries

Game, database, libraries, and quests can be built separately or together through one parallel build system. Successful builds receive real revisioned names and are activated through stable symlinks, preserving a clear history while keeping deployment paths consistent.

Dependencies

Current package-managed toolchain

System dependencies come from the current FreeBSD package repository instead of copied legacy binaries. The stack uses maintained releases of Boost, Crypto++, PCRE2, zstd, CMake, GNU Make, pkgconf, and the MariaDB client libraries, while required compatibility libraries are rebuilt natively for amd64.

Data layer

MariaDB 12.3, locally isolated

The database layer was upgraded to MariaDB 12.3 and listens only on localhost. Separate least-privilege identities isolate website and game access, while consistent dumps, pre-import snapshots, integrity checks, and rollback archives protect production data.

Operations

Supervised and observable

Nineteen game and database services run under automatic crash supervision. A unified control panel handles start, stop, cleanup, backups, quest compilation, and source builds, while the secured server logger collects sanitized web, system, database, and game diagnostics with bounded retention.