The Proving Ground (TPG) - Official combat gamemode from ACE developers

The Proving Ground (TPG) - Official combat gamemode from ACE developers

⚔️ GamemodesUpdated 1 month ago•36 views
Learn about The Proving Ground (TPG) gamemode, it's history, it's features and E2/SF commands

The Proving Ground — Overview The Proving Ground (TPG) is a team-based armored-combat gamemode built on ACE/ACF. Two teams — Green and Red — build vehicles, fight over objectives, and drain each other's tickets to zero.

How a match flows

- Map load → the server briefly waits for everyone to finish loading in.

- Preparation period → once both teams have players, a 30-second staging window where you build and position in your spawn (you can't leave yet).

- The round → fight over the objective for whichever mode was rolled.

- Win → drain the enemy's tickets to 0.

- After 2 round wins total , a map vote starts.

Modes rotate randomly each round: Control Points · Capture the Flag · King of the Hill · Deathmatch , with a re-roll that stops the same mode landing twice in a row. The per-player economy is a separate layer that switches on for some rounds (see Per-Player Economy ).

Game Modes Both teams start every round at 300 tickets . Reach the enemy's 0 to win. How tickets drain depends on the mode.

Control Points (CP) Multiple capture points on the map. Stand on a point to capture it; the more points your team holds, the faster the enemy's tickets bleed. The most common mode.

King of the Hill (KOTH) One central hill. Hold it and the enemy bleeds; lose it and it stops. It's a long grind — a dominant hold takes ~20 minutes to close a round, and contested rounds run longer. Contesting the point (standing on it as an enemy) neutralizes it and stops the drain.

Deathmatch (DM) No objectives — kills are the only drain. Killing an enemy costs their team tickets scaled by the tonnage of the vehicle they were fielding (a 40-ton tank hurts far more than a buggy). After 10 minutes , overtime kicks in and both teams start bleeding on a timer, so passive rounds always resolve.

Capture the Flag (CTF) One neutral flag. Grab it and carry it to your own spawn to score, draining the enemy 40 tickets per delivery. Kills also bleed a small amount. See the dedicated Capture the Flag page.

Tip: In DM, bringing a bigger, more expensive tank makes you worth more tickets when you die. Trading a 40-ton monster for a cheap tank destroyer is a bad deal.

Tickets & Winning
- Every round both teams start at 300 tickets .

- The mode determines how the enemy's tickets drain (hold points, hold the hill, get kills, deliver flags).

- First team to 0 tickets loses the round.

- If both hit 0 in the same instant, the team with the higher remaining fraction wins (a dead tie is a coin flip).

- First to 2 round wins on a map triggers the map vote .

Your HUD shows both teams' ticket bars at the top center — green on the left, red on the right.

Building & Budgets You build with the physgun, toolgun, and duplicator — but only inside your safezone .

Team limits (default mode)

- Props , weight , and an ACE point budget are capped per team.

- Team point budget: 5,000 ; per-player share: 2,500 .

- Single-dupe weight cap: 250 tons. No one contraption can exceed it.

Duplicator cooldown

- After pasting a build, there's a cooldown before your next one. It scales with the build: heavier and more expensive dupes cool down longer.

- There's a 60-second grace at the start of each round so you can get set up.

- While the per-player economy is active, there's no dupe cooldown at all — your wallet is the limiter instead.

Stock vehicles (jeep, airboat, APC) carry no ACE value, so under the economy they cost a flat fee to field.

Note: You can only spawn props/vehicles/dupes inside your safezone. Try to build outside and it's removed.

Per-Player Economy A secondary mode that switches on for some rounds (or an admin can force it). When it's active, you'll see "PER-PLAYER ECONOMY" on your HUD and a Your Budget box.

The core rule: instead of a shared team budget, you have a personal wallet , and destroyed vehicles are NOT refunded. Every build is a real purchase — lose the tank, lose the money.

Numbers

- Start each round with 6,000 points (wallet cap 60,000 ).

- Income every 10 seconds:

- +150 passive (just for being alive on a team).

- +100 per control point you're within 30 m of — and it stacks if you're near several.

- Kill reward: +400 base, plus 8% of the victim's vehicle value , capped at 4,000 . No reward for kills made from (or against someone in) a safezone.

- Team kill: −400 .

Reading your budget: every change floats a small +N / −N popup off the budget box telling you why — kill , income , point hold , vehicle , team kill . Sitting on a point shows up as a bigger "point hold" tick instead of plain "income" , so yes — standing near a point visibly pays you more.

Tip: Camping spawn to save up is a losing play — you earn far more by holding points and getting kills than by sitting still.

Safezones & Spawn Protection Your safezone is a 750-unit radius around your team's spawn.

- Inside it you're in godmode — you cannot be hurt (not by enemies, not by teammates).

- Leaving gives you a few seconds of lingering spawn protection ( 5 seconds , or 8 if your team is the underdog). Once it expires, you can take damage.

- Don't shoot out of your safezone. If you land a kill while standing in your own safezone, you're killed as punishment — and safezone kills pay no economy reward. No spawn-sniping.

- Entering the ENEMY safezone kills you. Stay out.

- Noclip outside spawn or drowning also kills you.

- Friendly fire is ON outside safezones — watch your teammates. A team kill costs the shooter −15 rating (and −400 under the economy).

Spectators (not on a team) can build freely with no limits, are permanently godded, and deal no damage to anyone.

The Preparation Period Every round opens with a staging window . Once at least 2 players are split across both teams , a 30-second countdown begins (shown on your HUD).

During prep you are confined to your safezone — wander outside and you're teleported straight back . Use the time to build and position so both sides start the fight ready, instead of one team already rolling out.

Before both teams have players there's no confinement, so a lone player can still move around.

Capture the Flag (Details)
- Where it spawns: on the central hill about half the time , otherwise on one of the map's capture points — so the flag isn't always in the same spot.

- Grabbing it: get close to the neutral flag to pick it up. A world marker and top banner show where it is and who holds it.

- Scoring: carry it into your own safezone to deliver — that drains the enemy 40 tickets . (It takes several deliveries to close a round.)

- Carry timer: you have 150 seconds before the flag auto-returns to stop hoarding. Watch the countdown bar in your HUD while carrying — it drains and turns red as time runs out.

- Dropping it: if you're killed while carrying, the flag drops where you fell (it falls to the ground even if you died in the air) and returns to its point after 25 seconds if nobody grabs it.

- Kills bleed too: in CTF, kills drain a small amount of enemy tickets on top of flag deliveries — flags are still the decisive scoring.

- Enemy spawn? Bringing the flag to the enemy spawn just gets you killed — you can only score at your own.

Ranks & Your Profile You have a lifetime rating that persists across every map and session. Everyone starts at 1000 .

How rating changes

Action

Change

Kill

+10 (plus up to +20 for killing expensive armor)

Capture a point

+15

Deliver a flag

+25

Round win

+30

Round loss

−10

Death (to an enemy)

−4

Team kill

−15

The ladder — 12 ranks, from Traffic Cone at the bottom up through Rust Bucket , Duct Tape Engineer , Turret Whisperer , Sabot Sommelier , Steel Baron , Ballistic Computer With Legs , to Global Proving Elite at the top.

Open F2 → Profile to see your rank, progress to the next one, your K/D, captures, flags, win rate, and the server top-10 leaderboard .

Underdog Comeback Bonuses If your team falls far behind — at 60% or less of the enemy's tickets and at least 60 tickets behind — your whole team gets comeback perks until you claw back:

- 8 seconds of spawn protection (up from 5).

- A free smoke grenade and a free medkit on spawn.

- +2 rockets on the launcher ammo floor.

- +25% economy income (while the per-player economy is active).

These switch off automatically once the gap closes.

Loadouts & Bonus Gear Open F3 to set your loadout: armor tier plus Primary / Secondary / Special weapons.

- Armor trades speed for survivability — heavier armor is tougher but slower. Heavier weapons slow you down too.

- Launchers (AT-4, Javelin, etc.) spawn with a useful ammo reserve rather than a single rocket.

- Bonus Disposable AT: if you bring no launcher and no mines in your Special slot, you get a free single-use AT tube so you always have an answer to armor — with a 20% chance it's upgraded to a Stinger or Javelin instead.

Expression 2 & Starfall TPG exposes a small, team-scoped API for contraptions. You only ever get data about your own team — enemy names, positions, and loadouts are never exposed. Spectators get empty results.

Expression 2 (extension tpg ) Team-wide:

tpgTeamCount() # number - players on your team
tpgTeamName() # string - your team's name ("" if none)

tpgTeammates() # array - your teammates as entities

tpgTeammateNames() # array - their names as strings

Per-player (return blank for enemies / non-teammates):

Ent:tpgIsTeammate() # number - 1 if on your team, else 0
Ent:tpgArmor() # string - their armor tier name

Ent:tpgPrimary() # string - their primary weapon class

Ent:tpgSecondary() # string - their secondary weapon class

Ent:tpgSpecial() # string - their special weapon class Standard entity():team() also works: 2001 = Green, 2002 = Red, 0 = none/spectator .

Example — mark the nearest teammate's position:

@name Teammate Beacon
@outputs Target:entity

interval(500)

Mates = tpgTeammates()

Best = noentity()

BestDist = 100000

Me = owner():shootPos()

foreach(I:number, M:entity = Mates)

{

if(M != owner() & M:isAlive())

{

D = M:shootPos():distance(Me)

if(D < BestDist) { BestDist = D, Best = M }

}

}

Target = Best

Starfall (library tpg , server realm) tpg.getTeamCount() -- number: players on your team
tpg.getTeamName() -- string: your team's name

tpg.getTeammates() -- table: array of teammate entities

tpg.getRoster() -- table: array of { player, name, pos,

-- primary, secondary, special, armor }

ent:tpgIsTeammate() -- boolean

ent:tpgGetLoadout() -- table: { primary, secondary, special, armor } ({} for enemies)

Example — print your team roster:

--@name TPG Roster
--@server

for _, m in ipairs(tpg.getRoster()) do

print(("%s | %s | %s"):format(m.name, m.armor, m.primary))

end

Reading objectives & game state Control points ( tpg_controlpoint entities) carry networked fields you can read:

cp:getNWInt("CapOwnership") -- -1 Red, 0 Neutral, 1 Green
cp:getNWString("PointName") -- e.g. "The Hill"

cp:getNWFloat("CapProgress") -- capture progress

cp:getNWInt("PointID")

Player wallet (per-player economy): ply:getNWInt("TPG_Money").
Globals: GetGlobalBool("TPG_EconomyActive"), GetGlobalBool("TPG_PrepActive"), GetGlobalFloat("TPG_PrepEnd").

Positions & PVS: server-side E2 and Starfall always see every entity's true position, so server-side radar/GPS contraptions are accurate map-wide . Client-side Starfall is limited to what the engine networks to that client (things outside your view can read stale). If you need live positions, keep the logic server-side.

Was this article helpful?

See More

Discussion(0)

No comments yet. Be the first to ask a question!

Have a question? Sign in to join the discussion.