For macOS 13 and later · Apple Silicon & Intel
The Battle for Middle-earth, ready to play on your Mac.
Second Age is a native Mac app that installs BFME, BFME II and The Rise of the Witch-king, sets up CrossOver for you, and works around the startup crashes and fullscreen problems these games run into on macOS.
Free and open source. Uses CrossOver when it is installed, or downloads Wine for you.
The battle begins
The Battle for Middle-earth II
Return to Middle-earth. Lead your army.
Everything between buying the game and your first battle
These games were made for Windows PCs from 2004 to 2008. Second Age handles the setup and the macOS-specific problems, so you can press Play.
Install in one step
Downloads the games from the community BFME archive, checks every file against its checksum, and writes the registry entries and settings each game expects.
A Wine setup that fits each game
Games run in dedicated CrossOver bottles. You can switch Direct3D 9 to Vulkan (DXVK), turn on faster texture loading, or give the game its own macOS Space.
Fixes for Apple Silicon
Works around the known Rosetta startup crash, picks fullscreen sizes your display really supports, and offers a Medium preset with lighter effects for smoother battles.
Mods and maps
- Guided setup for Edain and Age of the Ring
- Browse and install mods from GameFront
- Search and install community maps from BFME II Heaven
- Switch between mod profiles without reinstalling
Your saves, screenshots and settings
Browse saves with their date and map, view screenshots in a gallery, and edit graphics, audio and controls without opening Options.ini by hand. Every edit makes a backup first.
Second Age Runtime built in
Turn on the Second Age Runtime for BFME II and Rise of the Witch-king to add scripting, controller support and an in-game console. Its settings get their own editor, with toggles instead of code.
Four games, one library
Each game has its own card, settings and tools. Your choice is remembered, and Silent mode can start your last game the moment you open the app.
The Battle for Middle-earth
lotrbfme.exe
Installed and patched in its own bottle.
The Battle for Middle-earth II
lotrbfme2.exe · 1.06 / 1.09
Switch between the base game and the 1.09 community patch.
The Rise of the Witch-king
lotrbfme2ep1.exe · 2.01
Supports Edain and Age of the Ring profiles.
Command & Conquer 3
Steam app 24790
Sign in with your Steam account to download it. It then plays without the Steam client running.
Second Age Runtime
A script runtime that loads inside BFME II and Rise of the Witch-king. It embeds Lua 5.4 in the game, so you can write scripts against live game state, and it ships with controller support and gameplay options ready to use.
Scripting inside the game
Drop .lua files into the dev folder. Scripts react to every frame and every key press, and reload in seconds without restarting the match.
An in-game console
Run Lua while you play, with command history kept between sessions. An on-screen log shows script output and a live frame counter.
Play with a controller
A layout modelled on the Xbox 360 edition: the triggers open the Palantir, the D-pad cycles heroes and builders, and the sticks pan, rotate and zoom the camera.
Live game data
Read units, buildings and gold, use powers, and respond to events such as construction finishing, buildings falling and units dying.
Gameplay options
Rebalance walls, gates and fortresses, add a one-click builder button, and skip the intro videos. In LAN games the host's rules apply.
Encrypted save sync
Keep saves in step between computers through your own server. Files are encrypted with AES-256-GCM before they leave the game.
local bfme = import("bfme") return { onInput = function(event) -- F8 selects your next builder if event.key == "F8" and event.pressed then local ok, reason = bfme.selectBuilder() if not ok then bfme.log(reason) end end end, }
| ` | Open the Lua console |
| Ctrl Shift F5 | Reload every script |
| Ctrl F9 | Show or hide the on-screen log |
Second Age installs the runtime for you and keeps a backup of the original game files. If a game version doesn't match what a feature expects, that feature switches itself off instead of risking a crash.
Beyond the Mac
The same project also takes BFME II to the Steam Deck and includes a small launcher for Windows.
Steam Deck
A self-contained package that runs BFME II through Proton at 1280×800. Run the installer once in Desktop Mode. It adds the game to your Steam library with cover art, then updates the Second Age Runtime on every start and launches without prompts.
./install.sh
Windows
A minimal launcher with four buttons: install BFME II 1.09, install or update the Second Age Runtime, restore the original files, and play. It needs only Python, and you can test it on a Mac.
py -3 launcher.py
Requirements and setup
The app is signed for local use but not notarized by Apple, so macOS asks for confirmation the first time you open it.
| macOS | 13 Ventura or later |
|---|---|
| Mac | Apple Silicon or Intel |
| Runtime | CrossOver (recommended), or Wine, which the launcher downloads for you |
| Apple Silicon | Rosetta 2, which macOS installs when asked |
| Disk space | 4–7 GB per game |
| Command & Conquer 3 | A Steam account that owns the game |
- Download the appGet the latest release from GitLab and move Second Age.app to Applications.
- Open it the first timeControl-click the app, choose Open, then confirm. After that it opens normally.
- Choose a game and press DownloadSecond Age installs the game and sets up its bottle. It takes a few minutes per game.
- Press PlayAdjust graphics, mods and fullscreen later from the game's tools.
Ready to return to Middle-earth?
Free download for macOS 13 and later.