Skip to content

sp00nznet/mcgoldng

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MechCommander Gold: Next Generation

MCG-NG Banner

A modern, open-source reimplementation of MechCommander Gold (1998)

FeaturesInstallationBuildingUsageRoadmapContributing

Platform C++17 License Status


About

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.


Features

Current Implementation Status

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


Installation

Requirements

  • Windows 11 or later
  • MechCommander Gold game files (ISO or installed copy)
  • Visual Studio 2022 (for building)
  • CMake 3.16+

Optional Dependencies

  • 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)

Building

Quick Start

# 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

Full Build (with Game)

# 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 build

See docs/BUILDING.md for detailed build instructions.


Usage

Extracting Game Assets

# 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"

Running the Game

# Run with extracted assets
mcgoldng.exe --data "C:\MCG-Extracted"

# Or point directly to game folder
mcgoldng.exe --data "C:\Games\MechCommander Gold"

Project Structure

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

Roadmap

Phase 1: Asset Pipeline ✅

  • FST archive reader
  • PAK archive reader
  • LZ/ZLIB decompression
  • FIT config parser
  • Extraction CLI tool

Phase 2: Core Engine 🔶

  • Engine framework
  • Configuration system
  • Memory management
  • Resource manager with caching

Phase 3: Graphics 🔶

  • 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

Phase 4: Audio & Video

  • SDL2_mixer audio playback
  • Music streaming
  • Sound effects
  • SMK video decoder

Phase 5: Game Logic

  • Mech data structures
  • Combat system
  • Mission system
  • ABL script interpreter
  • AI behavior
  • Pathfinding

Phase 6: Polish

  • Save/load system
  • Full campaign support
  • Multiplayer (stretch goal)
  • Mod support

Documentation

Document Description
Building Detailed build instructions
Architecture Code organization and design
File Formats MCG file format specifications
Contributing How to contribute

Contributing

Contributions are welcome! Please read our Contributing Guide before submitting PRs.

Areas Needing Help

  • Graphics Programming - SDL2/OpenGL rendering implementation
  • Audio Engineering - Sound system implementation
  • Reverse Engineering - Documenting undocumented file formats
  • Testing - Testing with different game versions

Acknowledgments

  • FASA Interactive - Original MechCommander developers
  • Microsoft - MechCommander 2 source code release
  • SpinelDusk - FstFile/PakFile format research
  • ModDB Community - Documentation and modding resources

Legal

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.


License

This project is licensed under the MIT License - see the LICENSE file for details.


For the glory of House Steiner!

About

A modern, open-source reimplementation of MechCommander Gold (1998)

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors