A modern, open-source reimplementation of MechCommander Gold (1998)
Features • Installation • Building • Usage • Roadmap • Contributing
MCG-NG is a "Bring Your Own Game" reimplementation of the classic 1998 real-time tactics game MechCommander Gold. It reads assets directly from your legal copy of the game and runs them in a modern engine built with SDL2 and OpenGL.
Note: This project does not include any copyrighted game assets. You must own a copy of MechCommander Gold to use this software.
| Component | Status | Description |
|---|---|---|
| Asset Extraction | ||
| FST Archive Reader | ✅ Complete | Reads MCG's main archive format |
| PAK Archive Reader | ✅ Complete | Reads packet-based archives |
| LZ Decompression | ✅ Complete | Native LZ decoder (no zlib required) |
| ZLIB Decompression | ✅ Complete | Optional zlib support |
| FIT Config Parser | ✅ Complete | Parses game configuration files |
| Extraction Tool | ✅ Complete | CLI tool to extract all game assets |
| Core Systems | ||
| Engine Framework | ✅ Complete | Main game loop and state management |
| Configuration | ✅ Complete | Settings and preferences system |
| Memory Management | ✅ Complete | Pool allocators and tracking |
| Graphics | ||
| Renderer (SDL2) | ✅ Complete | Window, textures, and 2D rendering |
| VFX Shape Reader | ✅ Complete | Load sprites from shape tables |
| Palette System | ✅ Complete | 256-color palettes, indexed→RGBA |
| Sprite System | ✅ Complete | Multi-frame sprites, animation |
| Terrain Renderer | 🔶 Stub | Isometric tile rendering |
| UI System | 🔶 Stub | Interface elements |
| Audio | ||
| Audio System | 🔶 Stub | SDL2_mixer integration |
| Music Manager | 🔶 Stub | Background music playback |
| Video | ||
| SMK Player | 🔶 Stub | Smacker video playback |
| Game Logic | ||
| Mech System | ✅ Complete | Mech components, weapons, database |
| Combat System | ✅ Complete | Damage, projectiles, hit resolution |
| Mission System | ✅ Complete | Objectives, triggers, spawns |
| ABL Scripting | ❌ Not Started | Mission scripting language |
Legend: ✅ Complete | 🔶 Stub/Partial | ❌ Not Started
- Windows 11 or later
- MechCommander Gold game files (ISO or installed copy)
- Visual Studio 2022 (for building)
- CMake 3.16+
- SDL2 - For graphics/input (game executable)
- SDL2_mixer - For audio (game executable)
- OpenGL/GLEW - For rendering (game executable)
- zlib - For ZLIB-compressed assets (optional, has fallback)
# Clone the repository
git clone https://github.com/sp00nznet/mcgoldng.git
cd mcgoldng
# Configure (tools only - no SDL2 required)
cmake -B build
# Build
cmake --build build
# The extraction tool will be at: build/Debug/mcg-extract.exe# Install dependencies via vcpkg
vcpkg install sdl2 sdl2-mixer glew zlib
# Configure with vcpkg toolchain
cmake -B build -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake
# Build
cmake --build buildSee docs/BUILDING.md for detailed build instructions.
# Extract all assets from game folder
mcg-extract.exe "C:\Games\MechCommander Gold" "C:\MCG-Extracted"
# Or from an ISO mounted as D:
mcg-extract.exe "D:\" "C:\MCG-Extracted"# Run with extracted assets
mcgoldng.exe --data "C:\MCG-Extracted"
# Or point directly to game folder
mcgoldng.exe --data "C:\Games\MechCommander Gold"mcgoldng/
├── CMakeLists.txt # Build configuration
├── cmake/ # CMake modules
│ └── FindSDL2_mixer.cmake
├── src/
│ ├── main.cpp # Entry point
│ ├── assets/ # Asset loading
│ │ ├── fst_reader.* # FST archive format
│ │ ├── pak_reader.* # PAK archive format
│ │ ├── fit_parser.* # FIT config format
│ │ ├── shape_reader.* # VFX shape table format
│ │ └── lz_decompress.* # Decompression
│ ├── core/ # Engine core
│ │ ├── engine.* # Game loop
│ │ ├── config.* # Settings
│ │ └── memory.* # Memory management
│ ├── graphics/ # Rendering
│ │ ├── renderer.* # SDL2 2D rendering
│ │ ├── sprite.* # Sprite and animation
│ │ └── palette.* # Color palettes
│ ├── audio/ # Sound
│ ├── video/ # Video playback
│ └── game/ # Game logic
│ ├── mech.* # Mech units
│ ├── combat.* # Combat system
│ └── mission.* # Missions
├── tools/
│ └── mcg_extract.cpp # Asset extraction tool
└── docs/ # Documentation
- FST archive reader
- PAK archive reader
- LZ/ZLIB decompression
- FIT config parser
- Extraction CLI tool
- Engine framework
- Configuration system
- Memory management
- Resource manager with caching
- SDL2 window creation
- 2D renderer with textures
- VFX shape table parsing
- Sprite loading from PAK
- Palette handling (8-bit indexed → RGBA)
- Sprite animation support
- Isometric terrain rendering
- UI rendering
- Resolution scaling
- SDL2_mixer audio playback
- Music streaming
- Sound effects
- SMK video decoder
- Mech data structures
- Combat system
- Mission system
- ABL script interpreter
- AI behavior
- Pathfinding
- Save/load system
- Full campaign support
- Multiplayer (stretch goal)
- Mod support
| Document | Description |
|---|---|
| Building | Detailed build instructions |
| Architecture | Code organization and design |
| File Formats | MCG file format specifications |
| Contributing | How to contribute |
Contributions are welcome! Please read our Contributing Guide before submitting PRs.
- Graphics Programming - SDL2/OpenGL rendering implementation
- Audio Engineering - Sound system implementation
- Reverse Engineering - Documenting undocumented file formats
- Testing - Testing with different game versions
- FASA Interactive - Original MechCommander developers
- Microsoft - MechCommander 2 source code release
- SpinelDusk - FstFile/PakFile format research
- ModDB Community - Documentation and modding resources
This project is not affiliated with Microsoft, FASA Interactive, or any rights holders of the MechCommander franchise.
MechCommander is a trademark of Microsoft Corporation. This project is a clean-room reimplementation that requires users to provide their own legally obtained copy of the game.
This project is licensed under the MIT License - see the LICENSE file for details.
For the glory of House Steiner!
