2023-10-28 08:58:09 +02:00
# Xash3D FWGS Engine <img align="right" width="128" height="128" src="https://github.com/FWGS/xash3d-fwgs/raw/master/game_launch/icon-xash-material.png" alt="Xash3D FWGS icon" />
2024-01-24 19:10:21 +01:00
[![builds.sr.ht status ](https://builds.sr.ht/~a1batross/xash3d-fwgs.svg )](https://builds.sr.ht/~a1batross/xash3d-fwgs?) [![GitHub Actions Status ](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml/badge.svg )](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml) [![FreeBSD Build Status ](https://img.shields.io/cirrus/github/FWGS/xash3d-fwgs?label=freebsd%20build )](https://cirrus-ci.com/github/FWGS/xash3d-fwgs) [![Discord Server ](https://img.shields.io/discord/355697768582610945.svg )](http://fwgsdiscord.mentality.rip/) \
2023-10-28 08:58:09 +02:00
[![Download Stable ](https://img.shields.io/badge/download-stable-yellow )](https://github.com/FWGS/xash3d-fwgs/releases/latest) [![Download Testing ](https://img.shields.io/badge/downloads-testing-orange )](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous)
2020-02-24 23:37:54 +01:00
2024-08-10 14:02:28 +02:00
Xash3D (pronounced `[ksɑ ʂ]` ) FWGS is a game engine, aimed to provide compatibility with Half-Life Engine and extend it, as well as to give game developers well known workflow.
2018-11-05 00:06:08 +01:00
2023-10-28 08:58:09 +02:00
Xash3D FWGS is a heavily modified fork of an original [Xash3D Engine ](https://www.moddb.com/engines/xash3d-engine ) by Unkle Mike.
## Donate
[![Donate to FWGS button ](https://img.shields.io/badge/Donate_to_FWGS-%3C3-magenta )](Documentation/donate.md) \
If you like Xash3D FWGS, consider supporting individual engine maintainers. By supporting us, you help to continue developing this game engine further. The sponsorship links are available in [documentation ](Documentation/donate.md ).
2018-11-05 00:06:08 +01:00
## Fork features
2024-10-10 00:58:21 +02:00
* Steam Half-Life (HLSDK 2.5) support.
2023-10-28 08:58:09 +02:00
* Crossplatform and modern compilers support: supports Windows, Linux, BSD & Android on x86 & ARM and [many more ](Documentation/ports.md ).
2024-10-10 00:58:21 +02:00
* Better multiplayer: multiple master servers, headless dedicated server, voice chat, [GoldSrc protocol support ](Documentation/goldsrc-protocol-support.md ) and IPv6 support.
2023-10-28 08:58:09 +02:00
* Multiple renderers support: OpenGL, GLESv1, GLESv2 and Software.
* Advanced virtual filesystem: `.pk3` and `.pk3dir` support, compatibility with GoldSrc FS module, fast case-insensitivity emulation for crossplatform.
2024-10-10 00:58:21 +02:00
* Mobility API: better game integration on mobile devices (vibration, touch controls).
2023-10-28 08:58:09 +02:00
* Different input methods: touch and gamepad in addition to mouse & keyboard.
2018-11-05 00:06:08 +01:00
* TrueType font rendering, as a part of mainui_cpp.
2023-10-28 08:58:09 +02:00
* External VGUI support module.
* PNG & KTX2 image format support.
* [A set of small improvements ](Documentation/ ), without broken compatibility.
2018-11-05 00:06:08 +01:00
2021-03-15 10:23:25 +01:00
## Installation & Running
2022-01-15 02:48:04 +01:00
0) Get Xash3D FWGS binaries: you can use [testing ](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous ) build or you can compile engine from source code.
2021-03-15 10:23:25 +01:00
1) Copy engine binaries to some directory.
2021-07-03 21:54:31 +02:00
2) Copy `valve` directory from [Half-Life ](https://store.steampowered.com/app/70/HalfLife/ ) to directory with engine binaries.
2022-11-05 03:41:07 +01:00
If your CPU is NOT x86 compatible or you're running 64-bit version of the engine, you may want to compile [Half-Life SDK ](https://github.com/FWGS/hlsdk-portable ).
2024-08-10 14:03:07 +02:00
This repository contains our fork of HLSDK and restored source code for Half-Life expansions and some mods.
2022-01-15 02:48:04 +01:00
You still needed to copy `valve` directory as all game resources located there.
3) Run the main executable (`xash3d.exe` or AppImage).
2021-03-15 10:23:25 +01:00
For additional info, run Xash3D with `-help` command line key.
2018-11-05 00:06:08 +01:00
## Contributing
2024-10-10 00:58:21 +02:00
* Before sending an issue, check if someone already reported your issue. Make sure you're following "How To Ask Questions The Smart Way" guide by Eric Steven Raymond. Read more: http://www.catb.org/~esr/faqs/smart-questions.html.
* Issues are accepted in both English and Russian.
2020-06-23 15:21:43 +02:00
* Before sending a PR, check if you followed our contribution guide in CONTRIBUTING.md file.
2018-11-05 00:06:08 +01:00
## Build instructions
2024-10-10 00:58:21 +02:00
We are using Waf build system. If you have some Waf-related questions, I recommend you to read [Waf Book ](https://waf.io/book/ ).
2018-11-05 00:06:08 +01:00
2021-07-03 21:54:31 +02:00
NOTE: NEVER USE GitHub's ZIP ARCHIVES. GitHub doesn't include external dependencies we're using!
2020-05-25 21:35:34 +02:00
2018-12-13 07:17:11 +01:00
### Prerequisites
2024-08-10 14:03:07 +02:00
If your CPU is x86 compatible and you're on Windows or Linux, we are building 32-bit code by default. This was done to maintain compatibility with Steam releases of Half-Life and based on it's engine games.
2022-01-15 02:48:04 +01:00
Even if Xash3D FWGS does support targetting 64-bit, you can't load games without recompiling them from source code!
2022-11-05 03:41:07 +01:00
If your CPU is NOT x86 compatible or you decided build 64-bit version of engine, you may want to compile [Half-Life SDK ](https://github.com/FWGS/hlsdk-portable ).
2024-08-10 14:03:07 +02:00
This repository contains our fork of HLSDK and restored source code for Half-Life expansions and some mods.
2022-01-15 02:48:04 +01:00
2021-03-15 10:23:25 +01:00
#### Windows (Visual Studio)
2018-12-13 07:17:11 +01:00
* Install Visual Studio.
2018-12-13 07:23:21 +01:00
* Install latest [Python ](https://python.org ) **OR** run `cinst python.install` if you have Chocolatey.
* Install latest [Git ](https://git-scm.com/download/win ) **OR** run `cinst git.install` if you have Chocolatey.
2018-12-13 07:17:11 +01:00
* Download [SDL2 ](https://libsdl.org/download-2.0.php ) development package for Visual Studio.
* Clone this repository: `git clone --recursive https://github.com/FWGS/xash3d-fwgs` .
* Make sure you have at least 12GB of free space to store all build-time dependencies: ~10GB for Visual Studio, 300 MB for Git, 100 MB for Python and other.
2019-07-07 01:46:16 +02:00
#### GNU/Linux
2019-06-17 08:04:39 +02:00
##### Debian/Ubuntu
2024-10-10 00:58:21 +02:00
* For 32-bit engine on 64-bit x86 operating system:
* Enable i386 on your system: `$ sudo dpkg --add-architecture i386` .
* Install development tools: `$ sudo apt install build-essential gcc-multilib g++-multilib python libsdl2-dev:i386 libfontconfig-dev:i386 libfreetype6-dev:i386 libopus-dev:i386 libbz2-dev:i386` .
* Set PKG_CONFIG_PATH environment variable to point at 32-bit libraries: `$ export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig` .
* For non-x86 systems:
* Install development tools: `$ sudo apt install build-essential python libsdl2-dev libfontconfig-dev libfreetype6-dev libopus-dev libbz2-dev` .
* Clone this repostory: `$ git clone --recursive https://github.com/FWGS/xash3d-fwgs` .
##### RedHat/Fedora
* For 32-bit engine on 64-bit x86 operating system:
* Install development tools: `$ sudo dnf install gcc gcc-c++ glibc-devel.i686 SDL2-devel.i686 opus-devel.i686 fontconfig-devel.i686 freetype-devel.i686 bzip2-devel.i686` .
* Set PKG_CONFIG_PATH environment variable to point at 32-bit libraries: `$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig` .
* For non-x86 systems:
* Install development tools: `$ sudo dnf install gcc gcc-c++ SDL2-devel opus-devel fontconfig-devel freetype-devel bzip2-devel` .
2019-06-17 08:09:15 +02:00
2024-10-10 00:58:21 +02:00
* Clone this repostory: `$ git clone --recursive https://github.com/FWGS/xash3d-fwgs` .
2019-06-17 08:04:39 +02:00
2018-12-13 07:17:11 +01:00
### Building
2021-03-15 10:23:25 +01:00
#### Windows (Visual Studio)
2024-10-10 00:58:21 +02:00
0) Open command line.
2018-12-13 07:17:11 +01:00
1) Navigate to `xash3d-fwgs` directory.
2024-10-10 00:58:21 +02:00
2) (optional) Examine which build options are available: `waf --help` .
3) Configure build: `waf configure --sdl2=c:/path/to/SDL2` .
4) Compile: `waf build` .
5) Install: `waf install --destdir=c:/path/to/any/output/directory` .
2018-12-13 07:17:11 +01:00
#### Linux
2024-10-10 00:58:21 +02:00
If compiling 32-bit on amd64, make sure `PKG_CONFIG_PATH` from the previous step is set correctly, prior to running configure.
2022-01-15 02:48:04 +01:00
2024-10-10 00:58:21 +02:00
0) (optional) Examine which build options are available: `./waf --help` .
1) Configure build: `./waf configure` (you need to pass `-8` to compile 64-bit engine on 64-bit x86 processor).
2) Compile: `./waf build` .
3) Install: `./waf install --destdir=/path/to/any/output/directory` .