FGO Team Builder
Web App · Game Planner
Farming in Fate/Grand Order comes down to one question: which servants, craft essences and skills let one Noble Phantasm wipe each wave, three turns in a row? After years of play there are too many servants and CEs to work that out by hand.
You enter your roster once: each servant's level, NP level, skill and append levels, the CEs you own and whether they are max limit broken, the friend supports you can usually borrow, and your mystic codes. Then you pick a quest. Enemy HP, classes and traits come straight from the Atlas Academy game database.
How it searches
The planner reads every skill, NP and CE effect from the game data and simulates the fight turn by turn: buff durations, cooldowns, NP gauge, overcharge, and the NP gauge refunded per hit, including the overkill bonus. Damage uses the game's formula at the lowest random roll, so any plan it lists works on every roll.
- It first ranks attackers by how well their NPs hit the quest's enemies, and supports by what their skills give other servants.
- For each team shape (one looping attacker, or two or three attackers splitting the waves) it picks the CEs that close the NP gauge gap.
- A best-case check skips any team that can't clear a wave even with every skill used. The rest go through a branch-and-bound search over which skill to use on which turn, trying the fewest taps first.
- The work is split across Web Workers, so the page stays responsive while results stream in.
Plans are ranked by fewest turns, then fewest skill taps, then the widest damage margin. When nothing works, it shows the teams that came closest and why each fell short.
How it was built
Tariq described the problem from his phone: after years of play he had too many servants and craft essences to plan farming teams by hand, and a plan that overshoots the damage is better than one that relies on a lucky roll. That last point became the rule that every damage check uses the lowest random roll.
In planning he chose live game data over a bundled snapshot, picking quests from the database rather than typing enemies in, and ranking by fewest turns and then fewest skill taps. Claude built it in a single session, and the engine is covered by unit tests and an end-to-end test at phone width.
Tech stack: Next.js · TypeScript · Web Workers · IndexedDB · Atlas Academy API · Vitest