Skip to content
UltimateMacro

Documentation / Setup

Setup guide

Ultimate Macro reads Tower Defense Simulator the same way you do — through image detection and OCR on your screen. That makes your display settings the single biggest factor in whether a run works. Work through this page once and you should not have to touch it again.

01

Requirements

Ultimate Macro is a Windows-only AutoHotkey v2 application. It runs locally on your machine, does not inject anything into Roblox, and does not need an account.

  • Windows 10 or Windows 11.
  • AutoHotkey v2.0, 64-bit. The 1.1 branch cannot run the script, and the macro warns you on startup if it detects 32-bit AutoHotkey.
  • A 1920×1080 Windows display resolution at 100% scaling. Both are Windows settings, not Roblox ones.
  • The English (US) OCR language pack installed in Windows. The macro checks for it and offers to open Windows language settings if it is missing.
  • A visible Windows taskbar. The macro will not work with it hidden.
  • A reasonably fast CPU. On slower machines, enable Potato Mode and increase the delays rather than expecting the defaults to work.
  • No Roblox multi-client tools running. The macro refuses to start while Roblox Account Manager or a similar multi-instance utility is open.

02

Install

  1. Download the release

    Get TDS_Macro.zip from the download page. Every build is also on the official GitHub releases page — download from nowhere else.

    Download page
  2. Extract the whole archive

    Right-click the ZIP and extract everything into its own folder. Running Main.ahk from inside the ZIP will not work — the macro detects this and refuses to start, because it needs its lib, Resources and submacros folders next to it.

  3. Install AutoHotkey v2.0

    Download it from autohotkey.com/v2. If you already have AutoHotkey 1.1 installed, v2 can sit alongside it — just make sure .ahk files open with the v2 launcher.

  4. Run Main.ahk

    The Ultimate Macro window opens: a dark 700×565 window with Main, Record, Party, Discord, Settings, Tools and Credits tabs, and the installed version in the bottom-left corner. On the first launch it shows the full list of settings covered below.

03

Display settings

These are the settings the macro asks you for on first launch. Three different things are involved and they are easy to confuse: your Windows display resolution, your Windows display scale, and the settings inside Roblox and TDS.

Windows

SettingValueWhy
Windows display resolution1920×1080 Required. The macro's image detection is built around this resolution. This is your Windows resolution, not a Roblox setting.
Windows display scale100% Scaling stretches everything on screen, so detected coordinates land in the wrong place. 125% or 150% will break the macro.
Windows taskbarVisible The macro will not work with the taskbar hidden.
OCR language packEnglish (US) Required for reading wave numbers, currency and result screens.

Roblox

SettingValueWhy
Maximum Frame Rate60 FPS Keeps animation and UI timing predictable so the macro's waits line up with reality.
Camera ModeClassic Camera alignment during placement assumes the classic camera.
Graphics ModeManual Automatic graphics change the picture mid-session, which changes what image detection sees.
UI Navigation ToggleEnabled Required by the macro's menu handling.

Tower Defense Simulator

SettingValueWhy
TDS UI ScaleLarge The macro's reference images of buttons and menus are captured at this scale.
TDS Screen ShakeDisabled Shake moves the interface mid-frame and causes missed clicks and false detections.
TDS Vertical UpgradesEnabled "Prefer Vertical Upgrades" fixes the upgrade panel layout so the path buttons are always where the macro expects.
TDS DialogDisabled Dialog boxes cover parts of the screen the macro reads.
Show Tower OptionsEnabled The macro needs the tower option panel visible to upgrade, sell and change targeting.
Do not use custom Roblox fonts — altered letterforms break the OCR that reads wave numbers and currency. Newer builds can apply the Roblox side of this list for you with Auto Configure Settings, restoring your originals afterwards.

04

Your first run

The quickest way to see the macro work is to start from one of the strategies that ship with it rather than recording your own.

  1. Pick a strategy on the Main tab

    The Community Strategies browser lists strategies shared through the Discord, each with its map, mode, run time and income. Press Load to download one that matches a map and mode you can actually queue for, or use Browse to pick a file you already have.

  2. Check your loadout

    A strategy expects specific towers in specific slots. Tick Auto Equip Towers and the macro equips what the strategy needs before the match starts. If a strategy asks for a golden tower, you need to own it.

  3. Confirm your keybinds

    Settings → TDS Keybinds must match your in-game binds. The defaults are Call of Arms C, Drop The Beat B, Support Caravan J, Raise the Dead V, Hologram K, Reposition L, upgrade E, bottom path Z and cancel placement Q. Abilities silently do nothing if these disagree with the game.

  4. Start with F1 and watch the first match

    Press Start on the Main tab or hit F1, then leave the Roblox window where it is. Watch one full match before walking away — that is when a wrong setting shows itself.

  5. Stop with F2

    F2 stops the macro and releases any held input. Use it rather than killing the window, so cleanup runs properly.

05

Recording a strategy

You never have to write a strategy file by hand. Fill in the Record tab, press Start Recording, play a run normally, and the macro saves what you did as a replayable .strat file.

Before you press record

  • Map and Mode — pick them from the dropdowns. Modes include Easy, Casual, Intermediate, Molten, Fallen, Frost, Hardcore, Voidcore and Arcade, plus the map-specific ones.
  • Towers — a comma-separated list, e.g. Minigunner, Ranger, Commander, DJ. Prefix a tower with G (as in G Minigunner) if the strategy needs the golden version.
  • Modifiers — hold Ctrl to select or deselect more than one.
  • Ability toggles — Use Call of Arms, Use Support Caravan and Use Drop the Beat, plus Auto Skip Waves and Abilities Spam.
  • Move — optionally walk your character in a direction for a set number of milliseconds at the start of a run.

Recording hotkeys

These are the defaults; all of them are rebindable under Settings → Recording Hotkeys.

ActionDefaultNotes
Place TowerF Records the placement at the cursor.
Upgrade TowerCtrl + U Split upgrade paths are supported — top and bottom are recorded separately.
Sell TowerCtrl + X
Change TargetsCtrl + ` Records a tower targeting change.
Change DJ TrackCtrl + D Records a DJ disc change. Discs can also be put on a wave-based schedule so they switch automatically.
Align CameraCtrl + T
Hologram TowerCtrl + Alt + H
Delete RecordCtrl + B Removes the last recorded action.
Record InputsCtrl + Shift + E

Raise the Dead (Necromancer) and Brawler reposition are recorded by pressing Ctrl together with your in-game keybind for them, rather than a separate recording hotkey.

Recording well

  • Play deliberately. The recorder captures what you actually did, so a messy run replays as a messy run.
  • Consider a timescale ticket when recording a long or complex strategy — the macro's own tutorial recommends it.
  • Name it for what it does, e.g. pw2_solo_farm.strat. Future you will not remember strat3_final_v2.strat.

06

Longer sessions

Strategy Rotation

The Main tab holds two strategies. Tick Strategy Rotation and set Swap after a number of Runs or Minutes to alternate between them — useful for splitting a session between a coin farm and a gem farm, or across two different maps.

Goals

Instead of counting runs, set a Goal — a currency target — and let the macro pick compatible strategies and keep going until it is met.

Timescale

If you have timescale tickets, set Timescale to 1.5x or 2x in Settings. It cuts the time per run considerably.

Party and VIP servers

Paste a private server link into VIP Server Link and tick Use VIP Server to keep runs off public servers. The Party tab runs the macro on several accounts in the same party: pick whether you are the Host (creates the party and invites everyone) or a Member (waits for the invite), fill in the host's display name and the members' names, choose whether to return to the lobby when all or any member is gone, then save.

Between matches

Click Restart button is used when you lose and Click Play Again button when you win — both on by default. Turn Restart off if you are running a win strategy and the macro sometimes ends up on the wrong map. Check the map verifies the map after joining and reloads if it is wrong; leaving it on is recommended. Collect playtime rewards claims playtime and daily rewards as they come up.

Recovery

Recent builds run pre-run diagnostics before a session starts, checking resolution, scaling, OCR and dependencies. Startup is resume-aware, so launching the macro while you are already sitting in the lobby or on the Ready screen works. If Roblox disconnects, it reconnects and re-enters the game on its own.

When something is slow

Raise the Upgrade Delay and the Mouse Delay / Key Delay values before assuming something is broken — most "missed click" reports are timing, not detection. Potato Mode reduces the macro's own overhead on weaker hardware.

Legacy Mode changes how image detection works and is only a fallback. It only works at 1920×1080, and Auto Equip and changing tower targeting do not work while it is on. Leave it off unless you really need it.

07

Discord & profiles

The Discord tab sends real-time logs, screenshots and currency stats to your own server, so you can check a session from your phone. To get a URL: create a Discord server, open any channel's settings → Integrations → Create Webhook → Copy Webhook URL. Paste it in, tick Enable Webhook, then use Test Webhook to confirm it works before saving.

  • Send Statistics — currency and session numbers read with OCR.
  • Debug Logs — the same lines the macro logs locally.
  • Automatic screenshots — periodic screenshots during a run.
  • Triumph and Loss screenshots — the end-of-match result screen, optionally posted to a second webhook in a different channel.
Treat your webhook URL like a password — anyone who has it can post to that channel. Use a private channel, and remember screenshots may include your username and other on-screen information.

Remote control

The official EngineerBot integration adds remote control from Discord: start and stop the macro, check its status, request a screenshot and query the version, stats, logs and selected strategy. A personal bot with a custom command prefix can be used instead.

Profile Manager

The Profile Manager imports and exports your settings, hotkeys and strategies as a single bundle, with previews and backups. Use it to move a setup to another machine, or to snapshot a working configuration before you change something.

08

Tools

The Tools tab holds three small utilities that run separately from a strategy. Click one and it opens in its own always-on-top window; F3 starts it and F4 stops it.

  • Auto Call of Arms — presses Call of Arms and Drop the Beat on intervals you set in seconds, using the keybinds from Settings. Either ability can be toggled off on its own.
  • Auto Spin — claims prizes from the spinning wheel and counts the tickets it has used.
  • Auto Open Consumable — opens consumable crates and counts how many it has opened.

09

Troubleshooting

Work down this list before reporting a bug — most problems are one of these.

The macro clicks in the wrong place, or does nothing

Almost always display settings. Check your Windows display resolution is 1920×1080, your Windows display scale is exactly 100%, your taskbar is visible, TDS UI Scale is Large and TDS Screen Shake is off.

Then confirm Roblox is the focused window and has not been moved or resized since the session started.

Main.ahk will not start

Three common causes. You have AutoHotkey 1.1 rather than v2.0; you are running the script from inside the ZIP without extracting it; or a Roblox multi-client tool such as Roblox Account Manager is open, which the macro refuses to run alongside.

If it warns about 32-bit AutoHotkey, install the 64-bit build of v2.0.

Waves or currency are read wrongly

That is OCR. Install the English (US) Windows language pack — the macro offers to open the right settings page for you — and remove any custom Roblox font mods, since altered letterforms are the usual cause.

Upgrades are skipped or land on the wrong path

Raise the Upgrade Delay in Settings; on slower machines the upgrade panel lags behind the click. Confirm TDS Vertical Upgrades is enabled, since it changes the panel layout, and that your upgrade and bottom keybinds match the game.

Abilities never fire

The macro presses your configured keybinds. If the binds under Settings → TDS Keybinds do not match the ones in TDS, nothing happens and no error is raised. Check both sides match.

Auto Equip or target changing stopped working

Check whether Legacy Mode is on. Neither feature works while it is enabled — that is expected behaviour, not a bug.

I need to report a bug

Turn on Debug Logs in Settings, reproduce the problem, then post the log in the Discord or open an issue on GitHub. Include your macro version (bottom-left of the window), your Windows display resolution and what you were doing when it happened. A reproducible report gets fixed; "it broke" does not.

10

Safety & licence

  • Official sources only. Ultimate Macro is distributed through this site and the official GitHub releases. Builds from anywhere else are not ours, whatever they are named.
  • Automation carries risk. This is a third-party tool. It is not affiliated with, endorsed by or connected to Roblox Corporation or Paradoxum Games. Use it at your own discretion.
  • It runs locally. The macro is an AutoHotkey script on your own machine. It does not inject code into Roblox and does not require an account. It reaches the network only to fetch community strategies and to talk to the Discord webhook and remote control you configure yourself.
  • It is open source. Released under the GNU General Public License v3.0 — you can read every line, fork it and redistribute it under the licence terms while preserving the copyright, licence and attribution notices.

Ultimate Macro was started on 30 March 2026 by Darksen (DarksenDev/tds-macro). The New Era continues the project and would not exist without his work.