Glsmac
Unofficial open-source OpenGL/SDL2 reimplementation of Sid Meier's Alpha Centauri ( + Alien Crossfire )
Install / Use
/learn @afwbkbc/GlsmacREADME
GLSMAC
Unofficial open-source OpenGL/SDL2 reimplementation of Sid Meier's Alpha Centauri ( + Alien Crossfire ).

Note: you will still need to own the original game and expansion - GLSMAC will load its resources like images or sounds.
Check Screenshots and Videos for current state and history of project.
GLSMAC discord : https://discord.gg/fWG3xK7cUx
Quickstart
-
Download latest stable release or latest development build for your OS (only 64-bit windows and ubuntu for now)
-
Unpack all files into your SMAC directory (must have SMACX expansion too)
-
Run GLSMAC
Why?
SMAC was a great game, possibly the best in 4x genre, but it's outdated so much it barely runs on modern systems. Especially multiplayer (which is based on ancient directplay). Also it can't be modded as thoroughly as many would like.
What will be same between GLSMAC and original game?
Models, images, movies, texts, lore, factions, game rules (such as tech trees, types of armor/weapons etc), UI
What will be completely different?
Graphics engine, network code are fully rewritten to allow it run as smoothly as possible.
What may differ slightly?
Random maps generation, AI, dynamic music, some UI parts. While I'll try to get them as close as possible to original logic, they will still be recreated from scratch.
Compatibility?
Network won't be compatible to original client (so you can't play together with somebody running it).
Maybe I'll make saves and maps compatible, but it's very low priority.
Mod compatibility - it should work with asset mods that replace .PCX, .WAV or other asset files in SMAC directory (later it will also accept upscaled versions). It won't work with mods that modify or link to terranx.exe. Mods that change .txt files - probably not, maybe some settings and rules will be read from original SMAC's .txt but not all of them.
Modding
Early stage of modding support is already here. Under the hood GLSMAC loads ".gls.js" scripts (language similar to JavaScript but simplified and optimized for our needs) for game logic decisions.
You can check core scripts here: https://github.com/afwbkbc/glsmac/tree/main/GLSMAC_data/default
I also made 'demo mod' to demonstrate how scripting can be used: https://github.com/afwbkbc/glsmac-demo-mod , I'll keep updating it as GLSMAC scripting gets more features over time.
Some things are still hardcoded in C++ for now, but in the end everything will be exposed to scripts, for maximum tweaking potential.
Other improvements?
Once I replicate original game, I'll focus on other things, such as: larger maps, larger maximum number of players, online services such as game browser or hosting long-turns games (where people can login and make 1 turn per day or so), alternative art packs (used instead of original, this may mean better graphics). See "GLSMAC v2.x+ features" section below.
Current Version:
v0.3+
Roadmap
Versions 0.x+: replicating original SMAC gameplay as closely as possible (but without bugs and some technical limitations)
-
v0.1: fundamental engine functions, such as: rendering, UI, netcode, sound system
-
v0.2: basic map functions, such as: tiles, mapgen, creating/saving/loading games, map rendering
-
v0.3: basic multiplayer: ability to host and join games, lobby, save/load games with same players. multiplayer support will be maintained during further steps from now on
-
v0.4: game processing, such as: game turns, units (only scout patrols, formers and colony pods), buildings (only recycling tanks), technologies (only centauri ecology), building of bases (only land bases), terraforming (only farms, mines and solar arrays), unit combat, victory by conquest
-
v0.5: all remaining SMAC units, buildings, terraformings, technologies, etc
-
v0.6: all remaining victory types
-
v0.7: AI (computer opponents, cities automation, units automation, etc) and diplomacy
-
v0.8: alien lifeforms, ecology
-
v0.9: all remaining in-game UI, including game settings
-
v0.10: non-crucial things like movies, interludes, dynamic music
-
v0.11: final polishing and bugfixing
Versions 1.x+: fixing bugs, adding optional small features that weren't present in original SMAC but won't change it's gameplay drastically. See 'GLSMAC v1.x+ features' section at the end
Versions 2.x+: adding all kinds of features, as long as they are worth the time. See 'GLSMAC v2.x+ features' section at the end
Versions 3.x+: not sure yet, probably something cool.
Hardware requirements
Minimum recommended (for at least 60 FPS):
- GPU: Intel HD 4400, AMD Radeon R7, Geforce GT710 or similar
- RAM: 2-4GB
- HDD: 50MB
Requirements may go up slightly as more features are added to game. But I'll try to keep FPS above 60 on low-end cards as above. Amount of RAM will limit maximum size of map you can play on (until some kind of disk caching is implemented, but that will cost performance). Disk space is needed for GLSMAC binary, config files, saves, maybe map files and replays.
Build instructions
Supported platforms:
- GNU/Linux with GCC compiler
- FreeBSD with Clang compiler
- Windows ( Visual Studio + Clang )
- Windows ( MinGW )
Other platforms/toolchains weren't tested but you can try and please report results if you do (or pull request if you manage to get it running on more OSes).
Linux / FreeBSD
You will need CMake and working compiler (gcc or clang).
You will also need following libraries (unless you build with -DVENDORED_DEPENDENCIES=YES):
- FreeType
- SDL2
- SDL2_image
- GL
- GLU
- GLEW
- uuid-ossp
- yaml-cpp
Gentoo: emerge cmake libsdl2 sdl2-image freetype glu glew ossp-uuid yaml-cpp
Ubuntu: apt install cmake build-essential libfreetype-dev libsdl2-dev libsdl2-image-dev libglu-dev libglew-dev libossp-uuid-dev libyaml-cpp-dev
ArchLinux:
pacman -Syu cmake base-devel freetype2 sdl2 sdl2_image glew yaml-cpp (you'll need to install ossp-uuid manually because it's not in repos)
AUR-package: https://aur.archlinux.org/packages/uuid
FreeBSD: pkg install pkgconf cmake sdl2 sdl2_image glew ossp-uuid yaml-cpp
Fedora: dnf install cmake make automake gcc gcc-c++ freetype-devel SDL2-devel SDL2_image-devel glew-devel uuid-devel yaml-cpp-devel
OpenSUSE: zypper install -t pattern devel_basis && zypper install cmake-full freetype2-devel SDL2-devel SDL2_image-devel glew-devel uuid-devel yaml-cpp-devel
It is highly recommended to build project using CMake and make (ninja works too) instead of adding .cpp and .h files manually to IDE (don't report bugs if you try the latter).
It is recommended to build in separate directory. For example: cmake -S . -B build (remove build directory when you'll want a clean build for some reason).
For release build (default): cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && make -C build
For debug build: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug && make -C build
For 'fast debug' build (gdb and most asserts work, removed expensive checks and sanitation): cmake -S . -B build -DCMAKE_BUILD_TYPE=FastDebug && make -C build
( for debug or 'fast debug' build you can also add -DSANITIZER=YES to use asan, it does not work reliably on all OSes so is disabled by default. an alternative is to use valgrind tool )
For portable build (binary that can be executed on different machines): cmake -S . -B build -DCMAKE_BUILD_TYPE=Portable64 && make -C build ( or Portable32 for 32-bit )
For same build as before (or Release if it's first build): cmake -S . -B build && make -C build
Add -j parameter to make to speed up if you have multiple cores, i.e. make -C build -j9 for 8 cores.
Optionally, add -DVENDORED_DEPENDENCIES=YES to cmake parameters to download and build all required libraries, instead of using system-installed ones. By default this is enabled on Windows and disabled on other OSes. You can't disable it on Windows. Portable32 and Portable64 enable vendored dependencies automatically.
Optionally, use VERBOSE=1 make -C build to see actual compiling/linking commands (useful when build fails)
You can also just download binary releases from github, they are built for ubuntu but will run on most linux distros (only 64-bit for now). Windows and other binaries coming soon :)
Apple/Mac
In order to build it on Mac install XCode from AppStore - it is free, no Apple Development Program is required. Then install the following dependencies:
- Brew as a package manager from https://brew.sh
brew install cmake PkgConfig sdl2 sdl2_image ossp-uuid glew yaml-cpp freetype- In case of missing packages just install it using brew.
Package ossp-uuid is visible as uuid. Additionally we must link with OpenGL framework (dependency added to make file)
Then we can follow with build commands as for Linux versions: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug && make -C build
Game is build correctly however there are problems related to OpenGL currently which crashes the game.
Windows
Visual Studio
Building with Visual Studio is recommended for windows. You will need git (for example, Git SCM) and Visual Studio 2022 installed. Use the Visual Studio Installer, select Desktop development with C++. Then click modify->individual components on Visual Studio 2022.
You will need to install the following C++ CMake tools for windows, C++ Clang Compiler for windows, C++ Clang-cl, Windows 11 SDK (10.2.22621.0), Windows Universal CRT SDK, Windows Universal C Runtime.
Once that is done you should clone the git, then open the folder. Press the top button Project->**Configure
