Home » Xash3D: A Journey to Porting an Open-Source 3D Engine
Xash3D: A Journey to Porting an Open-Source 3D Engine

Xash3D: A Journey to Porting an Open-Source 3D Engine

Xash3D, an independent open-source 3D engine, was designed for compatibility with GoldSource engine formats (like maps, models, and textures) while serving as a versatile platform for modding and game development. Built from scratch, Xash3D incorporates original ideas alongside techniques from other 3D engines, overcoming the limits of the classic GoldSource engine. It enhances capabilities for modding and gaming, providing expanded map, model, and texture formats, custom renderer support, and modern features like dynamic lighting. With years of development and testing, Xash3D merges high compatibility with GoldSource standards and openness to creative modding.

XDM, a mod designed with portability and compatibility in mind, originally functioned within Half-Life as a Win32 x86 mod. Now, with Xash3D’s maturity, XDM is reaching new platforms in unexpected ways.

A Rare Hardware Find

The story begins with a surprise phone call. As a computer enthusiast and tech hobbyist, I often receive calls from friends seeking advice, but this time it was something special. A friend sent photos of a rare computer, and in an instant, I knew I had to act. With excitement, I assembled my team from FWGS, knowing they’d share in the anticipation.

The next day, I finally saw it in person: a rare computer powered by the Baikal BE-M1000 processor. The BE-M1000 is an ARM Cortex-A57 CPU with eight cores running at up to 1.5GHz, paired with eight Mali-T628 GPU cores—an unusual and expensive Russian processor. Designed for custom Linux environments, it was an ideal, if challenging, platform for our Xash3D and XDM experiments.

Bringing Xash3D to the Baikal Platform

With our new hardware, the task was clear but daunting: adapting Xash3D and XDM to run on the Baikal BE-M1000. We started by preparing an ALT Linux image specifically designed for this ARM-based platform. After some setup hiccups, like missing EFI directories and installation bugs, we finally got the OS up and running. It was a rough start, but once ALT Linux booted, the real work began.

Porting to a new ARM processor proved more complex than expected. Despite experience with ARM architectures, each SoC is unique, with distinct drivers and compiler requirements. Our main hurdles included the absence of two critical APIs: VGUI and a music player. The original VGUI.dll was linked to Half-Life’s client.dll via a proprietary library and toolchain designed for i386 architectures, making it incompatible with ARM.

The FMOD library, previously used for audio in XDM, was also problematic. Its proprietary nature limited us, as there were no precompiled libraries for ARM platforms, and even legacy builds struggle with Linux sound systems. Our workaround involved building an OpenVGUI and creating a fallback music API. When FMOD wasn’t detected, XDM would default to extended Client Engine functions or console commands, allowing basic single-track playback.

A Code Marathon

With code rewritten, drivers adapted, and workarounds in place, we began the intense testing phase. The summer heat and lack of ventilation turned our workspace into a furnace, but we pressed on. After several days of relentless coding, our efforts paid off, and XDM ran on the Baikal hardware.

Our journey with Xash3D and XDM on the Baikal BE-M1000 was a mix of nostalgia, technical challenge, and pure joy. Holding this rare ARM-based system running custom builds of our software felt like a significant achievement. For collectors, having a Baikal-powered system with pre-installed XDM would indeed make for a unique piece of gaming history!