Skip to content
Francisco Dias edited this page Apr 9, 2026 · 7 revisions

extgen - GameMaker Extension Code Generator

extgen is a schema-driven code generator for GameMaker native extensions.

From a single GMIDL input file, extgen generates:

  • GML bindings (plus optional runtime helpers)
  • Native glue code for multiple platforms (Android / iOS / tvOS / consoles)
  • A complete CMake project and presets
  • Optional documentation output for downstream tooling
  • NDA-compliant console configurations (user-specific SDK paths, gitignored)

The goal is a single source of truth that produces consistent, repeatable extension output across all targets.


Quick Start

1) Initialize a project folder

extgen --init ./my-extension

This creates:

  • config.json
  • extgen.schema.json

2) Edit config.json

Set your GMIDL input (input), output root (root), desired targets (targets.*), and build emission (build.emitCmake).

3) Generate

extgen --config ./my-extension/config.json

Wiki Navigation

Getting Started

Development


Key Concepts

Schema-driven configuration

config.json is validated via extgen.schema.json. If the schema validates, extgen will run.

Target-driven output

extgen is target-driven, not language-toggle driven. Enabling a target (such as Windows or iOS) automatically implies the correct underlying emitters - C++ where required, platform glue where needed.

Profiles

Profiles control what categories of output are generated:

  • Full - bindings + native glue + build system
  • BindingsOnly - only bindings (no native/build output)
  • BuildOnly - only build system (CMake / presets)

Need Help?

Clone this wiki locally