2D Improvements Update - v1.0.15

Empire Eleven — Update v1.0.15
58 fixes — saving, the season rollover, competitions, club presidency, tactics, training, mods and the match engine — plus the improvements announced in v1.0.14 that only reach the game now. And the new 2D: the stadium seen from above, highlights mode and redesigned dots.
Existing saves keep working. Screen fixes apply immediately; season and competition fixes apply fully in a new career.
Thank you to everyone who reported. Empire Eleven is made by one person, and every report with a screenshot and context turns into a quick fix. Keep them coming on the community forum.
Steam workshop is now available for mods.
💾 Saving took too long, looked like it happened twice, and the percentage froze
- On some machines the save took minutes, the bar appeared to restart, and the game sat frozen at a percentage. On others, including the development machine, it worked normally — and that difference is exactly what pointed to the cause.
- The bar went to 100%, back to 0%, and ended at 67%. The save is stitched from three blocks, and the percentage was computed following a different order from the one the stitching actually uses. Anyone watching the bar complete, restart from zero and then switch messages described it, rightly, as "two saves". It now runs from 0 to 100 once, weighted by the size of each block.
- The heavy part had a snowball effect that depended on your frame rate. The work was measured against a stopwatch that also counted the time the game spent drawing the screen. Every pause to hand back the frame shortened the work done before the next pause, and the effect compounded. Measured: the same save took 2.9s, then 10.7s, then 15.4s in a single session — with the real work constant at 2.5s.
- Above a certain frame cost, the save stopped finishing in any reasonable time. The cut-off now measures work and nothing else: 423 blocks and 111 items per block, identical at frame costs of 0, 8 and 20 ms. Total time still grows on a slower machine, as it should — what disappeared was the blow-up.
📅 The season stopped rolling over and the world ran out of fixtures
- In long careers the game reached a point with no matches scheduled: no fixtures, no season rollover, no U21. In one reported save the date was May 2029 and the last season generated was 2027.
- The rollover requires the season to be over — and it was also looking at matches in the future. A competition scheduled entirely in the following year counted as an "unfinished season" and blocked the rollover forever. The block was unsolvable by construction: the very match that held everything up was, correctly, refused by the code that could have resolved it, because its time had not come.
- The question is now about the season being closed, not about every match that exists in the world. Next year's match belongs to next year. An overdue match still holds the rollover, as it should.
- And each competition's window is checked against its own fixtures again. An earlier fix had started trusting the window stored in the save, even when the scheduled matches contradicted it. Now, when a pending match falls outside the declared window, the matches decide — and the game reports when that changes a competition's calendar, instead of doing it silently.
- Careers that were already stuck start moving again on load, with no separate repair needed.
🏆 Cups were crowning the wrong champion — sometimes in alphabetical order
- A competition's champion was read from the top of the points table. In a league that is the right answer. In a pure knockout, where everyone finishes on zero points, the final tie-break is alphabetical — and that is what decided it.
- The result showed up in club history and in the trophy cabinets: a lower-division club as national cup champion, another as English cup champion, a third as intercontinental tournament champion.
- Measured across 103 archived competitions from a real save, using the champion the save itself recorded as the truth: 29 change champion, 54 stay the same — those are the leagues, where the table IS the answer — and 17 are refused.
- That is why the fix went where the champion is decided, not into the table sorter. Changing the sorting would have fixed the cups and broken the 54 leagues.
- The 17 refused are cups that end the season with no champion declared — a defect older than this one, which now shows up with a name and a number instead of turning into an invented champion. It is in the queue.
🏆 Knockout cups ended the season without crowning anyone
- Coppa Italia, Copa del Rey, the German Cup, Taça de Portugal, the French Cup, Copa Argentina and the youth competitions simply crowned nobody — the season rolled over and the trophy never reached any club's history.
- Measured across 22 saves: 253 competitions finished with no champion declared. Concentrated in Coppa Italia (15), the German Cup (15), the Paraguayan Apertura (14) and Taça de Portugal (12).
- The cause was a question with two possible answers and only one handled. Pure knockout competitions do not use "phase state" — they are organised by bracket, and that absence is normal for them. The game read the absence as "I don't know whether it is over" and deferred closing. Forever.
- The absence now has two separate meanings: in a pure knockout format the bracket decides; in a format that genuinely uses phases and is missing them, the game keeps deferring — because crowning on top of a state that does not exist would be worse.
- Verified in the field: across a full simulated season, 21 cups closed at the rollover and none was left without a champion.
📆 The new season was born with the wrong year's dates
- At the season rollover, some competitions were recreated with an old season's window and their matches scheduled for the day the rollover happened. In one reported save the Scottish league had a declared window from 2027 and all 198 of its matches dated February 2029.
- Two errors added up. The configuration always advanced one year from the debut season instead of moving to the season being created — so it produced the same wrong year in any career. And a "never schedule in the past" guard took that expired date and marked everything for "today".
- Generating a season whose window has already passed is no longer a reason to improvise a date. It is a reason to refuse and report: the game names the competition and the window, instead of producing a league that looks playable with dates that make no sense.
- This is the root cause of "the world ran out of fixtures". Long careers reached a point with no matches scheduled, no rollover and no U21 — and this is where it came from.
🗓️ Matches escaping their own competition
- When the conflict rescheduler found no free date inside the competition, it scheduled the match for after the competition's end — deliberately. Another mechanism then pulled that match back and stacked it on the very last day. One pushed it out, the other piled it on the edge.
- The effect measured in a real save: 61 competitions with 1,262 matches stacked. The Argentine Clausura had 206 of its 240 matches on a single day. One club played a semi-final, the semi-final second leg, the final and the final second leg on the same afternoon.
- And in knockout football this killed the competition. The first leg of a tie ended up months ahead, the second leg was played before it, the tie never resolved and the following rounds were never drawn — hence the "opponent to be confirmed" that stalled the national cup.
- Now, with no free date, the match stays where it is and is played on the next day-advance, one day late, instead of leaving the competition. And a competition's end date can no longer be stretched indefinitely: it has a ceiling anchored to the duration the competition itself declares.
- Verified: across a season and a half simulated from scratch, no competition ended with a match outside its own window.
⚽ The same club playing twice on the same day
- On a day-advance, a club could play two matches at once. The game had four different points where a match could be simulated, and each kept its own list of "who has already played today" — or kept none at all.
- The partial lists became one. The fact "this club has already played in this advance" is now recorded at a single point, which every match result passes through. Whoever simulates does not have to announce it: applying the result is enough.
- Measured across a season and a half simulated: from 20 clubs playing twice in an advance to zero, over 540 days and 30,445 matches.
- The match that gives way is not lost. It becomes "overdue" and the next day it has priority over any newer match — so it never waits indefinitely.
🥅 Extra time and penalties in the match that decided nothing
- In a two-legged tie, the game decided whether there was extra time by asking "is this the second match?". And "second" was decided by the order the matches were registered in, not by which of them closes the tie.
- When the order flipped — and it did flip — the match that actually decided the tie ended level with no extra time, and the tie was left with no winner.
- The question is now a different one: "after this one, is any match of this tie left?". If none is, this is the decider — whether it is the first leg or the second. And the aggregate score is now summed per club, not by position in a list.
🧬 Mods rewrote the career on every load
- With an update pack enabled, every save load replaced whole players with the pack's versions — taking with them everything the game had derived about those players.
- The damage is large: current ability, personality, preferred foot and the positions each athlete can play were recalculated on load and then wiped by the pack. Measured: 25,821 of 25,824 players.
- The pack now writes only IDENTITY on load — name, club, nationality, what it exists to correct. What the career built stays.
- The same problem also affected your club's staff, journalists, sponsors and multi-club groups: loading the game with a pack enabled could bring back a staff member fired months ago, with their old role and club. And by reinstalling people who should no longer be there, the per-role staff limit ended up firing people from YOUR OWN club automatically, on every single load.
- The pack now respects what your career has already built for these categories too, and the staff limit never touches anyone on your club.
🧒 Youth squads were born far too small
- Every U21 side was born with 16 players and never grew: across 471 measured youth sides, all 471 sat at exactly 16. The number was not a floor — it was the whole squad.
- They now start with 25, in a proportional shape: 3 goalkeepers, 8 defenders, 9 midfielders and 5 forwards.
- And the youth side gained a right midfielder. The old template had a left midfielder and none on the right — a hole on one flank, not a shortage of numbers.
- The cost was measured and accepted: around 18 MB more in the save and a small addition to the daily training processing.
🎨 Table colours stayed in last season
- The colour bands in the standings — continental places, relegation — did not follow changes to the competition format. If the number of places changed, the colour stayed where it had been the previous season.
- The band is now re-anchored by the format's geometry rather than by its label — so it follows the real places.
🏅 The title went to the wrong club
- A title won was credited to the club the manager is at today, not to the club they were managing when they won it.
- The trophy now stays with whoever won it. Changing clubs does not take the cup along.
📬 U21 champions receiving "promise not kept"
- Winning a competition with the youth side earned a complaint about an unmet objective — the game was assessing the result against the wrong club's targets.
- The screen you are looking at is not necessarily your club, and that was what the assessment used to decide. It now asks for the club you actually manage.
🏆 Continental cup groups with three clubs
- Two of the eight groups of the main South American continental cup were born with three teams instead of four. The same applied, more severely, to other competitions with qualifying rounds.
- The cause was not the group draw — it was who reached it. Four clubs that do not play that cup (three of them entered in the secondary continental cup) got into the second qualifying round, won their ties, and were correctly barred from the next round. Having already eliminated legitimate opponents, two places were left empty.
- The filter that decides who may play each competition was not stored in the save. On load it came back empty — and empty meant "no restriction, anyone may enter". The wrong admission happened at load time and was only noticed a round later.
- The filter is now rebuilt from the competition's configuration on every load, which is where it is declared and does not change over time. In the four competitions whose field depends on that year's standings, it comes from the edition's own entrant list — rebuilding it would give another year's answer.
- And when a qualified club is refused, the game now says which club, in which competition, and why. It used to vanish in silence, which is why only an odd-looking group on screen gave the problem away.
🎩 A president in the directors' box still had the manager's menus
- Watching a match as president, the tactics, mentality, instructions and team-talk menus were still available.
- The gate that separates "managing" from "watching" existed — and sat in the file the game does not use. The match screen has two possible builds, and it ended up in the one kept as a fallback.
- Spectator mode is now spectator mode: someone who bought the club and hired a manager watches from the box, without the controls of the person picking the team.
- In some derbies, the president was left staring at an empty stadium for about 7 seconds before the match appeared. Two versions of the opening screen tried to open at the same time, and one of them hid the head-to-head card behind the other. Now only one opens, at the right time.
📨 A completed transfer notified nobody
- A negotiation closed and nothing appeared in the inbox — no figures, no instalments, no confirmation.
- The notice already existed in the code, finished, with nobody calling it. The message was not missing: the call was.
- Completing a deal now produces the notice with the agreed figures, on the buying side and the selling side.
🤝 Selling a club is not deleting it
- Selling a club left parts of it behind. Philosophy and priorities, building work under way, medical department level, scouting network, signed sponsorship contracts, bank loans and the crisis history — ten states that belong to the CLUB, not to its owner.
- And this is not bookkeeping detail. A bank loan disappearing on sale would be money created from nothing, and buying an indebted club cheaply to resell it clean would become an exploit.
- The buyer now inherits the whole club, and whatever deliberately does not change hands is declared as such — instead of looking like an oversight.
🎯 "Promotions: 0/2 (met)"
- The youth objectives review showed a figure and a verdict that did not match: zero of two promoted, with the objective shown as met.
- The figure and the label came from different counts. One counted promotions from the youth record, the other from credit already recognised — and both appeared side by side as if they were the same thing.
- It is now a single count, and the text reflects what was assessed.
⭐ Manager reputation showed as a raw number
- Your profile showed "34" and "0" without saying what that means. A number without a scale only informs someone who already knows the scale — and the scale was nowhere on screen.
- It now reads as text, and by the SAME criterion the game already uses to decide whether to offer you a job. Inventing display-only bands would have the screen say "High" while the job market treated the same number as a different tier.
⚽ Goals from the round's other matches never reached the scoring charts
- The matches simulated by the match screen — the others in your round — did not go through the shared end-of-match handling, so their goals never reached the top-scorer tables.
- It was a second end-of-match pipeline, built by hand, with fewer steps than the original. Those matches now go through the same door as the rest of the world.
- This is the first step of a larger fix — the same path applies to your own club's match, and that comes next.
🥅 The huddle around the ball was manufactured by the maths
- Players piled up near the ball instead of occupying the pitch. The natural suspicion was a tactical decision — two markers going for the same opponent, for instance.
- Measured across 54 matches, it was arithmetic: the point a player ran to was halfway between the ball and the NEAREST passing option. And halfway to the nearest option is, by definition, near the ball. 69.7% of those targets fell inside the 6 metres that define the huddle, and 10.8% within 2 metres — on top of the ball.
- The previous hypothesis was discarded by the same measurement. Duplicate marking does happen, but in 28% of the time, and would account for roughly 5% of the effect. Fixing it would have been delivered as "the huddle fix" — and it was not.
🏃 Counter-attacks triggered without checking for space
- On every regain, forwards, attacking midfielders and full-backs surged 15 to 23 metres — even with the route blocked.
- The counter-attack rule has two conditions: the window right after the regain AND clear space ahead. The behaviour required only the first; the second existed and nobody consulted it.
- Both now apply, using the same function and the same constant the diagnostic already used — no new number was invented. Measured across 40 paired matches: the extreme-case trigger fell by 16%.
⏳ Loading a save produced thousands of false errors
- Every load produced more than three thousand error entries, each with a full trace — and none of them was a real problem.
- The player-club link check treated "no club" as "a club that vanished". Every free agent in the world was reported as a broken link.
- This was not only noise: in the editor each such entry costs time, and it was part of what made loading look frozen.
🪑 An owner who stepped down as manager got flagged as "clubless"
- If you bought a club and wanted to stay purely as president, the game started treating you as unemployed. Personal cost of living, the job search and dozens of other screens read your situation wrong — even though you own a club.
- Firing the manager while you're the owner also hired a replacement on its own, within a few days, without asking you anything. The vacancy that should have stayed open for you to fill was getting filled by the AI before you ever got the chance.
- Stepping down is now a real option: you stay the owner, your manager vacancy stays open until you hire someone, and the game recognises "president" as its own career stage — it stops calling you a youth coach for the rest of the career.
🔑 Buying a club left you "stuck" to the old one, in three different ways
- After buying a new club, screens like Coaching Staff and My Club could keep showing you as the manager of the OLD club — or, on loading the game, create a second, ghost copy of you with an outdated link.
- The "Stay at the current club" button, on the purchase newspaper overlay, still appeared even after the link to the old club had already been broken by the purchase itself — a choice that led nowhere.
- Buying a club now ends the link to the old one AT THE MOMENT OF PURCHASE, consistently across every screen — except when you buy the club you already manage, where nothing changes. Old saves left with this leftover are repaired on load.
🎙️ Being just the owner, not the manager, now changes who decides what
- At the club you only own — without managing the team — the board no longer imposes season objectives on you: the invitation is now for YOU to set the objectives, as the owner.
- Press conferences for your club are now answered by the manager, and are no longer expected of you — the game used to expect your presence at an interview that isn't yours.
- Tactics and setting squad leaders are now read-only for someone who is only the owner: you see everything, but the hired manager is the one who makes the changes. And if you try to change something, the game now tells you why you can't.
💼 Businessman reputation became your own number, separate from manager reputation
- Your reputation as a businessman (owner of stadiums, sponsorships and other ventures) is now tracked separately from your reputation as a manager — the two no longer mix. It counts in your favour when a club's board weighs whether to sell to you.
- Staff hired to run your businesses (stadium, sponsorship) are now paid from YOUR personal wallet, not from any club's coffers — and they don't count against any team's wage bill or squad.
- Investments: one more factor from the game world now feeds into your monthly return. The product menu and the risk scale stay exactly as they were.
🗂️ The career editor now works on any club — with a serious warning before you turn it on
- The career editor, used to adjust your own career in progress, was locked to your current club. It now works on any club in the game.
- Turning on the editor now PERMANENTLY locks your achievements, and the game warns you clearly before you confirm — not after. It's the same rule as always (editing the game takes you out of the achievement race), just now impossible to miss.
- And the player list inside the editor, which used to squeeze every row until it was unreadable, scrolls normally again.
💳 Paying off a club's debt wasn't actually closing it
- The debt payoff button, on the Group Finances screen, didn't work — clicking it did nothing visible. Fixed: the button responds, with a confirmation before debiting.
- And paying off a debt now closes the entire payment SCHEDULE, not just the amount owed — before this, the club kept being charged, month after month, for a debt you had already paid off.
- The Finances screen also had a scroll that never stopped, at some screen resolutions — fixed.
📊 After your match, the round's other results now show up right away
- When your match ends, you now see the scores from the round's other matches straight on the result screen — no need to navigate to Competitions or the Calendar to find out what happened elsewhere that day.
🏆 Winning a title could fail to unlock the matching Steam achievement
- Under certain conditions, winning a title could fail to convert into the matching Steam achievement — even though it showed up correctly in your in-game history. Crediting the title depended on opening a screen before notifying Steam; if that path failed midway, the trophy stayed on record in the game but never reached Steam.
- Crediting now happens independently of any screen — it always runs first, and never depends on anything opening in front of you to count.
🌐 What leaked in Portuguese when the game was in another language
- Playing in Spanish (or any language besides Portuguese), several screens still showed plain Portuguese text. It happened on the Competitions tabs ("TABLE/OVERALL PHASE/ALL PHASES"), in the standings colour-band legend (over a hundred terms like "Automatic Promotion" and "Relegation", across nearly 50 competitions), in the newspaper ("Morning" showed up untranslated), in the match-reschedule notice, and on the four screens that show your kit's sleeve sponsorship.
- And "Copa de Espanha" (Spanish Cup) stayed in Portuguese even with the game set to Spanish — the Copa del Rey, along with 15 other national competitions, had no country recorded internally, and without it the game couldn't build the translated name.
- All of these screens now go through real translation, in every supported language. A career already in progress inherits the new colour legend at the next season rollover; until then, the old (still readable) text keeps showing.
🎯 Tactics: where you place the player on the pitch now sticks, and the auto-bench picks your best
- Dragging a player to a different spot than the original formation only changed the drawing on screen — the rest of the game kept treating them by their factory position. A midfielder dragged back to centre-back kept getting flagged as "out of position", the Best XI ignored the drag when picking a line-up, and the same confusion applied to position swaps made LIVE, during the match.
- Now wherever you place the player is what counts — on confirming the line-up, in the fit warning, in the Best XI, in squad chemistry and in live swaps.
- The auto-bench used to pick roughly the first twelve names in the squad, without looking at quality or role. You could end up with no real backup goalkeeper, or a bench packed entirely with centre-backs. It now guarantees a fit backup goalkeeper, covers every line (defence/midfield/attack) and fills the rest with the best available — measured: average bench quality rose from 94.4 to 96.4 across twelve tested teams, with zero cases of a missing backup goalkeeper or an uncovered line.
📆 The month's training plan vanished on save
- Adjustments made to specific dates in the monthly training plan didn't survive a save/load — reloading reset the month back to the weekly default, as if you'd never touched it. Whoever noticed this saw "the training is wrong", not "the training is empty", because the default weekly template was still sitting underneath.
- The monthly plan is now actually saved. Careers that already lost their plan before this fix don't get it back — the month needs planning once more — but from here on it stays saved.
🧒 In command of the U21s, My Club treated your own team as if it belonged to someone else
- Whoever manages the U21 side saw the My Club tab ask them to hire an analyst before showing information about their OWN club — the game was confusing "your club" with "the team currently on screen", and for someone managing the youth side, those are different things.
- My Club now correctly recognises your club, whether you're managing the first team or the youth side.
🧒 With an update pack enabled, youth prospects were born far weaker than they should be
- Clubs with a data pack enabled generated youth players with extremely low attributes — in the 13-to-20 range, where 36-to-44 would be expected. In the reported case, the youth side's prospects were born at the game's absolute floor.
- The cause was a scale conversion: pack data about a club's facility quality came on a 0-to-100 scale, and the game read it as if it were a completely different scale — 0 to 4, and inverted. The result was facilities read as catastrophically bad even at well-equipped clubs, which dragged down the quality of every youth player generated there.
- The conversion is now done correctly, and saved careers are repaired on load. Prospects already born weak because of this, before the fix, are not automatically regenerated — they stay as they are, for now.
🧊 The game froze on the loading screen when entering the club dashboard
- After the previous update, starting a new career or loading a save froze the game on the loading screen, with no error message. It was not the save: it was the way the new monthly training plan was stored, which made the game walk the entire world several times over on every screen change.
- Fixed at the root. The monthly plan is still saved, and screen changes are immediate again. Saves made while this was happening load normally.
📅 The Under-21 calendar fell apart over the season
- Under-21 matches showed up rescheduled to dates that had already passed, and matches already played came back onto the schedule as if they had never happened. Two automatic reschedulers were at work — one that guarantees minimum rest between matches and one that fills gaps when a cup changes round — and neither respected today's date or a result already recorded.
- No match is moved into the past anymore, and a match already played stays where it is. A save already affected does not repair itself: if your Under-21 schedule looks wrong, reload an autosave from before the problem.
🧒 In charge of the Under-21s, offers for your youngsters came to you — and the search did not recognize your club
- Whoever runs the youth side received transfer offers for Under-21 players as if they were the one deciding the sale. The senior club's board decides, and the offer arrived with a single "View in market" button and nothing to do. Those offers now go straight to the board, and you are only told the outcome.
- In the global search, your own senior club showed up as any other club, with a button to scout it. The search now recognizes the club you are tied to — senior or youth — as yours.
📨 "Sale completed" showed your club as the destination, and the reinforcement request repeated positions
- In the "Deal done" message for a sale, the "To" field showed your own club instead of the buyer. The message only stored the club receiving it; it now stores the actual buyer, and the card shows the right destination.
- When requesting a reinforcement for the youth side, the position list had repeated entries — "Centre-back" twice, "Midfielder" twice, "Forward" three times. The list now groups positions by the name shown, and the scout searches every position in that group, not just one.
- A competition that already existed was recreated every day in loaded saves, producing one error warning per day in the game log. It did not affect play; it has stopped.
🏁 Leaving a match after the final whistle recorded 0x0, and the end of a match could stall with the players at the tunnel
- In some matches, after the final whistle the players walked to the tunnel and the match never moved on to the result screen. Anyone who clicked "Leave match" saw the game recorded as 0x0, ignoring the real score that was on screen.
- There was a window, between the whistle and the recording of the result, where any hiccup left the match without a conclusion — and leaving during that window saved an empty score. In a cup, that window included extra time and penalties, which ran without the players moving on the pitch, as if the game had frozen.
- The real result is now recorded before anything else, and leaving a match after the whistle saves the true score. If the match is a knockout that still needs extra time or penalties, they are decided at the moment you leave. A problem in any post-match step is logged, but no longer blocks the result screen. And during extra time the pitch shows the players moving again.
- About the pitch freezing around the 3rd minute with the clock still running: we could not reproduce it, but we found the spot where an error went unnoticed and stopped the players without stopping the clock. That spot now protects itself, and the match leaves a diagnostic in the game log if it happens again. If it happens to you, the Player.log file right after the match is what we need.
🛠️ Career editor: attributes, colours, crest and stadium
- The squad list clipped its rows and showed only two. Rows are taller and the list scrolls instead of squeezing.
- Club and kit colours got a colour picker — click the swatch and choose; the code field is still there for those who prefer typing.
- The club crest can be chosen from a file (square, 128 to 1024 pixels). It is only written when you confirm, and applies to this career only.
- The player sheet now edits attributes, by group, and shows the calculated overall live. The Overall field stays as a shortcut: it rescales the attributes to hit the value. Nothing is written until you confirm, and training keeps working afterwards.
- The stadium now edits capacity and value. They are one-off entries: an expansion made later is not undone on load.
🧩 Tactics: live substitutions need confirmation, and the starter no longer vanishes
- In a live match, dragging a substitute onto a starter only stages the change. It is executed by "Apply Tactic", and a "Revert" button undoes the last staged one. Leaving the screen without applying discards them.
- Dragging a starter to the list did not make him vanish by chance: the gesture removed him from the team without putting anyone in his place. Now, outside a match, dropping onto a substitute swaps the two and dropping on empty space returns him to the available list, visible. Live, dropping onto a substitute stages the substitution and dropping on empty space is refused with a notice.
- Dropping a player or a position outside the pitch left it stuck to the sideline. It now returns to where it came from.
- When you click and hold a starter, the bench highlights who fits that position: green for natural position, orange for a good fit.
🗄️ Database Editor: edited dates only existed on paper
- Changing a competition's date in the editor changed nothing when starting a new game. Nobody read the edited date when building the calendar, and the new-game wizard still reloaded the whole database before starting, wiping the edit.
- The edited date is now preserved and shifts the whole competition, rounds included. It also travels in the exported mod.
- The "In-Game Editor" is now called Database Editor, and coaching staff attributes are edited on the right scale, 1 to 100, instead of 1 to 20.
- The main menu titles were never translated in any language; now they are.
🔎 Global search: your parent club identified, and the full squad at hand
- When you run the youth side, the senior club shows the PARENT CLUB badge, and your own club shows MY CLUB.
- On the Squad tab of a scouted club, the left card lists the full squad — number, name, position, age and overall — and clicking a player opens the dossier.
📄 Manager contract: alignment, and the renewal or raise request
- Wage, expiry and clauses were misaligned on the card. They now sit in three columns, each value under its own label.
- New "Request renewal / raise" button next to "End contract". Renewal adds two seasons to the expiry. The raise goes from 10% to 25% depending on your reputation, respects the club's wage bill and its odds follow the board's confidence. One request every 90 days, with the answer in your inbox.
🧒 Reinforcements requested for the youth side came as players worth hundreds of millions
- The target list was the world's top talents in that position, with no regard for budget, club size or the player's interest.
- The scout now thinks like a scout: only who fits the senior club's budget, only who would accept coming, and within a potential range useful to your youth side. The list mixes two realistic names, one "dream" slightly above budget and one free or expiring player, each line with value and reason. When there is nobody, the message says how many dropped at each filter.
👔 Closing a deal with a staff member could end in "not released" after the agreement
- The release by the current club was rolled a second time at the inbox confirmation, after the screen had already announced "Staff hired!". It is now decided once, before the announcement; the confirmation only hires.
- The negotiation hint box was always green, even when the text was a refusal. Its colour now follows the verdict: green accepted, yellow counter-offer, red refused. And the screen stops re-evaluating the offer after the deal is closed.
- The urgent injury message can be deleted. It asks for no action, so it must not lock the inbox.
🏟️ The 2D pitch is now the stadium seen from above
- The live match left the green rectangle behind. The pitch is now the 3D stadium's grass seen from above — stands, dugouts, and a crowd that moves — like a broadcast seen from above.
- Players are still the 2D dots, but aligned to the real grass. The pitch rectangle is measured on the stadium model itself, not on an image with hand-tuned edges: the byline is the byline, and the goals sit on the posts. If a test build ever showed players "scoring into the stands", that was it — and it's gone.
- Full screen with the interface on top. Score, clock, speed and the tactical buttons float over the grass. The play-by-play feed hides during live play: it would tell the outcome before the picture showed it.
🎬 Highlights mode
- The "highlights only" switch in Settings existed and did nothing. Now it does. During a match there's also a button next to the menu to enter and leave the mode at any time — the fast-forward icon enters highlights, the whistle returns to the full match.
- Between highlights, a momentum panel. The pitch in six bands, each painted with the colour of whoever dominates that stretch, plus the bar of who's on top. In the two teams' colours, not generic red and blue.
- When a highlight comes, the screen cuts to full-screen 2D — and the play starts at the build-up and ends in a shot, a save or a goal. Never a play that goes nowhere. The trick: the engine runs a few seconds ahead of the screen, so by the time a play is shown its outcome is already known. Measured over 24 matches: 100% of goals and 100% of shots inside a highlight, and no highlight without a finish.
- Everything on screen lives in the same moment. Score, clock, the "GOAL!" and the sound happen when the ball crosses the line on your screen — not before, as in the first test builds.
- Your speed is respected. Outside a highlight, dead time runs at 32×; inside it, the speed you chose applies, capped at 2× so you can follow. Pausing no longer freezes the mode.
🔵 Redesigned dots
- Team colours: the primary colour fills the dot and the secondary draws its border, with a home rule — if both primaries look alike, the visitors wear their alternate.
- A shadow for depth, and a "nose" pointing where the player is heading.
- The name shows only on the player with the ball, in a badge above the dot. Twenty-two names under twenty-two dots were noise; you read the game by the shape of the teams.
- Referee and assistants marked "A", and the coaches on the bench. The assistants track the ball along the touchline, each in their own half.
⚽ Match engine: more goals, and the right way
- The ball no longer flies through the keeper to the line and then "returns" to his hands. The save happens where the keeper is. Measured over 40 paired matches: no change in goals or shots — only the picture became honest.
- Box occupation. On crosses, attackers now take the near post, the far post and the penalty spot instead of computing the ball's path. When a midfielder has the ball unpressured facing the box, two forwards break the line. And on a loose ball inside the box the attack sends two men, not one. Measured over 40 paired matches: from 1.5 to 2.8 goals per game without inflating counter-attacks — the diagnosis behind it was that the ball reached the box before the attackers did.
- Goal kicks with both teams in formation, instead of everyone bunched on the edge of the box.
- Offside exists again. A test allowance had been left on in the engine and no pass was ever offside: a receiver beyond the line was pulled back at the moment of the kick. The linesman now has 1 m of tolerance, like the real one, and the rest is flagged.
🔧 Match fixes
- Sendings-off: the text, the tactics screen and the 2D agree on who was sent off. Each used to tell its own story — and a sent-off player could even return to the pitch. The lineup treats the sent-off player as sent off: you play with ten, rearrange them, and nobody forces you to substitute someone who can't be substituted.
- The AI no longer swaps a full-back for a goalkeeper. A keeper comes on for a keeper, and for nobody else.
- Live mentality and instructions now apply. The message reached the wrong place while the screen still said "applied".
- The final whistle sounds — the clip was in the game and not wired — and a "Loading…" covers the transition to the post-match.
- A president who took the coaching job sees "Play match", not "Watch".
- The rest-of-round results are centred.
📦 Mods and the Database Editor can now deliver new competitions
- A competition created in the Database Editor, or brought by a mod, never showed up in a career. The game's calendar was built only from the competitions shipped with the game; what the editor exported and what a mod carried stayed in the display list only.
- Competitions from enabled mods and those created in the editor now enter the calendar and the new-game wizard. For modders: inside the mod file, a "tournaments" folder with one file per competition, in the same format as the game's own competitions. The Database Editor already exports it that way.
- Limit in this version: a new competition enters a new career. In a career already under way the season's calendar already exists and it is not inserted mid-season.
🧒 With a mod enabled, starting a career in the U21 side fell into the senior job
- Starting as youth coach at a European club with a mod enabled opened the career as head coach. Some mods already ship ready-made U21 sides for Brazilian clubs, and the game's generator read "a reserve already exists" as "no need to create any" — the chosen club was left without a U21 side, and the game silently made you head coach.
- The generator now keeps the U21 sides the mod brings and creates only the missing ones. And if for any reason the club's U21 side does not exist, the game refuses the youth start with a notice instead of silently changing your job.
🗄️ Database Editor: the promotion-places warning ignored what you set
- When creating a division, the warning said "promotes 3, relegates 2" even with 2 up and 2 down set, and would not go away. The warning added the default template's promotion play-off without checking whether it was enabled, and the "Promoted" and "Relegated" fields wrote to a place neither the warning nor the season rollover reads.
- The fields now write to the configuration the season rollover uses, and the warning counts exactly what will happen. A league's basic tab shows "Promoted (direct)", "Promoted via play-off" and "Relegated", and the play-off only counts when it has places.
💾 The main menu stalled while reading the latest save
- Every return to the main menu stalled: the "Continue" card read the entire save just to show club, season and date, and the "Load" screen did that for every save in the list.
- The summary is now written alongside the save, in a small file next to it, and the menu reads only that. Older saves get their summary on first read, in the background, without stalling. Listing saves also no longer waits for the autosave to finish.
📤 Publish mod: two paths, and the folders the game created without using
- The "Publish Mod" dialog now has only "Save to my game" and "Publish to Steam Workshop". Direct upload to the website is gone; with three buttons the dialog overflowed.
- The game created a few folders in its data directory that it never used. They are no longer created; the mods folder and the crests folder remain.
🔧 What we are still fixing
- Three competitions still start with a badly sized field, and we know which. The world club tournament starts with 14 clubs in a format designed for 32. The secondary South American continental cup declares eight groups of four and receives 28 clubs — two groups end up with three.
- And two European rounds have sums that do not add up: in the two secondary European continental cups there are rounds declaring that more clubs advance than take part, and two-legged knockouts with an odd number of qualifiers.
- None of this is a shortage of clubs in the world. These are authored numbers in the competitions' configuration that do not agree with each other — which is why the fix is quick and comes in the next update.
- If you run into a group of three clubs or a round with an odd count, it is not your save. We would rather tell you than let you hunt for a problem that is already mapped.
Posted by the game’s developer or publisher to its Steam community hub and published by Valve through Steam’s public news API. Sifter reproduces it unedited and writes none of it.