This repository provides a Go (Golang) CGO wrapper for the Xash3D-FWGS dedicated server. It enables seamless integration of game logic and networking with modern Go applications.
It features Go-idiomatic engine structures, a custom UDP network layer (designed around Go channels), and a modular interface that can be extended to support modern networking stacks such as WebRTC.
Note: Due to the underlying Xash3D engine's use of global variables, only a single instance of the engine structure can currently be created and managed per process. Multi-instance support is not available at this time (planned).
- 🧩 Go-compatible engine structures with bound methods for direct manipulation
- 🔗 Custom UDP networking layer using Go channels (WebRTC-ready)
- 📦 Fully containerized build and runtime using Docker
- 🧠 Enables writing server-side game logic entirely in Go
- 📁 Real-world usage examples in the examples/ directory
-
Designed for Asynchronous Web Development
Go provides native support for concurrency with goroutines and channels, making it a strong choice for building scalable, high-performance web applications. -
Vibrant Ecosystem and Tooling
Go has a large and active community, along with robust tooling — including built-in package management (go mod
), formatting, and testing - that streamlines development and maintenance. -
Powerful Game Server Support
Go has open-source, session-based game server frameworks like Nakama, which offer features not readily available in C, such as integrated authentication, matchmaking, statistics, etc.
To get started quickly, check out the /examples directory for ready-made Go modules.