Version 3.0.8 reworks the scouting and recruitment loop (idle scout capacity, shortlist-returning talent searches, quality-based signing recommendations with plain-English verdict descriptors), replaces one-off production providers with popularity-gated broadcast contracts that expire and prompt renewal, adds a motivation adjustment to comeback negotiations, rebuilds the Legacy Ledger as a filterable sortable table with score breakdowns, and moves Fighting Academy and Combat Sports into the main navigation as normal management screens. Version 3.0.7 included the complete 3.0.6 feature merge plus compact duplicate-fighter markers and idempotent champion tags throughout player-facing screens and Fight Night playback. The 3.0.6 feature set includes player-funded MMA AI child promotions with configurable startup capital, Youth Prospects/Big Names/Merit strategy, parent profit sharing, protected fighter loans and recalls, combat-sports youth prospects, staff contracts and effects, academy progression, finance and save integrity, Dark Mode, sortable tables, and full commentary. See CHANGELOG.md for the complete release notes.
When taking control of an AI promotion, stale zero-month inherited deals are renewed for 12-24 months so the promotion's roster stays intact.
Build Portable.bat now builds both MMA Warriors.exe and MMA Warriors Database Editor.exe into dist\\MMA Warriors every time.
The MMA Child Promotions manager includes live cash/stability/AI-mode metrics, roster filters, contract and potential data, fighter detail inspection, loans, recalls, and parent transfers.
Child promotion transfers renew an expired AI-signed fighter for a normal contract term, and parent profit shares appear in the main company's finance history.
This release expands the living-world simulation, improves watched fight-night presentation and commentary variety, adds career journeys and directed scouting, introduces the shipped Universe Database Editor, and strengthens UI scaling, AI scheduling, finance stability, contract negotiations, accessibility, and release packaging. Version 3.0.7 also consolidates starting-career selection into one dropdown and one Start action. Fighter source markers are kept as internal database metadata so intentional historical snapshots remain distinct without cluttering player-facing names. See CHANGELOG.md for the 3.0 release notes and hotfixes.
MMA Warriors is a deep Windows desktop promotion-management simulation. Choose any real-world-inspired promotion, take control of an existing company, or create a new one from scratch. Build a roster, negotiate contracts and transfer deals, book cards, develop prospects, manage finances and media, and try to turn a regional operation into the sport's defining brand.
Every career lives inside a persistent MMA world. Fighters age, improve or decline, move between promotions, chase titles, suffer injuries, join gyms, build rivalries, and eventually retire. Rival companies sign athletes, run events, spend money, and pursue their own identities, so your decisions reshape a living competitive landscape instead of a static roster.
The current development build hardens the systems exercised by an end-to-end custom-promotion QA career. Loads are transactional, repeated loads do not duplicate Results cards, and saving no longer changes roster/champion state or advances simulation randomness. Contract inputs reject negative or out-of-range values, agreed purses are paid in full, bonuses and PPV clauses share one forecast and payout calculation, guarantees advance on official bouts, and expired deals cannot renew for free.
Scouting actions are safe before the Staff screen is first opened, automatic idle-scout work is a player setting, and academy guidance follows the live staff state. Regional team data and the Eurasian circuit label are corrected, opening gym loads are capacity-aware, and Regions follows the active dark theme. Negative company cash now creates visible stability and morale pressure instead of functioning as consequence-free credit.
The Simulation Lab audit now emphasizes realistic matchups within six overall points and reports low-, mid-, and high-tier finish rates. Its gate/profit output remains a labelled synthetic stress test; use completed career events and the Finance ledger for the actual player economy.
Double-click:
Launch MMA Warriors.bat
Or run directly:
python main.pyThe packaged EXE has no Python requirement. Keep the whole MMA Warriors folder together and run it from a normal local folder, not from inside a ZIP archive. The game stores quick saves, save slots, databases, and logs beside the app when that folder is writable. If it is installed in a protected folder such as Program Files, it automatically uses %LOCALAPPDATA%\MMA Warriors instead.
The shipped starting universe is one editable file: Databases\Default Universe.universe.json. It contains MMA fighters, combat-sport athletes, companies, media, and regions. Cloned custom universes are separate files created only when the player makes one.
MMA Warriors Database Editor.exe ships beside the game EXE. It is a developer-facing editor for universe files, with a database selector, browse/copy-current/save/save-as workflow, automatic backups, validation, bulk fighter/company changes, and per-record JSON editing. It edits starting databases only, never an active career save.
The game starts in the explicit Dark Mode theme. Themes can still be changed from the in-game theme selector, and native list controls follow the selected palette immediately.
All tab, detail-window, and popup tables support sorting by clicking their column headings. Numeric ratings, money, records, durations, dates, and text columns use the same shared sort behavior.
Each game now owns a self-contained folder, for example Saves\Game 1\savegame.json. Its two rolling recovery backups, autosaves, crash recovery files, and spectator archives stay inside that same Game 1 folder, so multiple careers cannot overwrite one another. Autosaves use the same two-slot rolling policy per cadence, overwriting the oldest snapshot instead of accumulating files. Spectator Mode also writes a permanent archive at every completed decade, such as Game 1 - 10 Years.json.gz, under Saves\Game 1\Snapshots. Existing flat saves remain loadable and move to the folder layout the next time they are saved. Runtime diagnostics live in Logs\mma_warriors.log; unexpected failures create a separate report in Logs\Crashes.
Before moving a build to another laptop, run Portable Check.bat from the packaged folder. It confirms that the EXE is present and tells you whether runtime data will be stored beside it or in the user profile fallback.
Fight Night uses one live broadcast viewer for MMA, boxing, kickboxing, Muay Thai, wrestling, and Brazilian jiu-jitsu. Other-sport replays include sport-native round/period/match starts, clocked exchanges, cumulative scoring, stamina and condition reads, and an official result. Fight playback retains every generated play-by-play call and the original round-summary telemetry; it does not deduplicate repeated calls or insert middle-exchange omission markers. Title/main-event rules can be extended to seven rounds, and the live viewer follows the configured count without losing late-round text. Official judge cards remain sealed until the result. Champion, interim, and duplicate display markers are applied idempotently so replay and live commentary never show duplicate tags. The viewer is laptop-sized, has visible scrollbars, adjustable text size, a Follow live toggle, round/period navigation, and paced holds for round summaries and finishes.
A 36-file, field-recording-based crowd-audio pack is integrated into Fight Night from assets\crowd_audio. Its 12 trigger families each have three genuinely different variants for arena buildup, walkouts, opening roars, strikes, knockdowns, submission danger, inactivity, round endings, finishes, decision tension, split-card boos, and respectful post-fight applause. Fight Night randomly rotates variants without immediately repeating a take, honors their recommended mix gain, and limits overlapping or frequent reactions so commentary stays clear. Hometown appearances receive the strongest crowd lift; national, adopted-home, and training-base connections receive smaller boosts, and the live introduction explains who has the local support. The accepted revised-pack mixes remain Variant 1, while Variants 2 and 3 use alternate recordings rather than pitch-shifted copies. Brief gasp and "ooh" reactions are mixed below the sustained arena response. The manifest and LICENSES.md preserve trigger metadata, attribution, and CC0 provenance. A 0-100 slider in the live viewer changes the next cue's volume immediately and saves the same setting exposed under Game & Saves -> Game Settings. If the pack or Windows playback is unavailable, events continue with the original procedural fallback cues.
Striking commentary uses action-specific situation banks rather than shared generic calls. Boxing, kickboxing, Muay Thai, Lethwei presentation, and MMA distinguish entries, counters, body work, leg damage, kick checks, pocket/clinch work, rope or fence pressure, defensive exits, knockdowns, cuts, and damage-aware follow-up attacks. Recent-line memory prevents the same broadcast template from cycling repeatedly during a watched fight.
Every implementation update, improvement, fix, balance adjustment, data change, UI change, tooling change, or packaging change ships as one complete change package:
- Add a meaningful entry to the current release in
CHANGELOG.md. - Update
README.mdwherever the feature, workflow, compatibility note, test coverage, or build instructions changed. - Update
AGENTS.mdwith the affected architecture, invariant, integration point, pitfall, or verification rule. - Add or update focused automated regression coverage and run the affected test suite. When a behavior cannot be automated reliably, document and perform a reproducible manual check in addition to the closest stable automated invariant.
Documentation-only edits do not need artificial runtime tests, but their links, commands, formatting, and diff integrity must still be checked. A change is not complete merely because the code works; its tests and all three documents must describe the same behavior.
Before shipping a build, run:
Run Smoke Tests.bat
The test launcher runs smoke_test.py, stability_test.py, and media_system_test.py. The smoke test checks release-document/version synchronization, startup, the reusable please-wait overlay and save-load phase wiring, responsive Inbox and Matchmaking panel order, compact wide/medium/narrow Show Details placement and field wiring, Matchmaking table-view coverage and selection preservation, direct fighter comparison, responsive booking actions, startup sash sizing and player-adjusted sash preservation, visible action footers, disclosure-state persistence, filter-aware mail counts, discovery-cue contrast across every theme, the responsive long-name header, fighter and staff contract-duration scoring, staff expiry and legacy-save migration, role-effect coverage, core promotions, roster sizes, gyms, save/load serialization, and full five-round commentary integrity. The stability playtest additionally completes normal and retirement events, verifies two-year retirement-card thresholds, popularity ordering, weight-safe matchmaking, weekly card caps and contract-expiry releases, opens every major UI viewer, exercises academy scouting, all-eligible showcase matchmaking, cooldowns, structured amateur history, adult-weight graduation, and child-sport pathways, round-trips a progressed world through JSON, and advances several independent worlds while watching for Tk callback errors. The media test covers editable outlets, player and AI offers/contracts, campaign limits, audience reporting, old-save migration, and a save/load round trip.
The launcher also runs persistence_regression_test.py, contracts_finance_regression_test.py,
ui_data_regression_test.py, and qa_tooling_regression_test.py for transactional persistence and
Results-index idempotence, contract/finance boundaries, lazy scouting UI, scheduled-fighter
protection during AI roster reviews, world-data validation, audit isolation, and portable batch
paths. These focused checks run before the longer stability playtest and protect the exact failure
modes found by hands-on QA.
The current development model is documented in docs/FIGHTER_DEVELOPMENT_GUIDE.md; current clinch, cage, ground, and damage mechanics are documented in docs/FIGHT_DAMAGE_AND_CLINCH_AUDIT.md; shared per-theme tab colors and WCAG ratios are documented in TAB_ACCESSIBILITY.md.
Run:
Build Portable.bat
The script runs the shipping tests first, installs PyInstaller if needed, then creates:
dist\MMA Warriors\MMA Warriors.exe
Run Build Database Editor.bat separately to validate the shipped universe and build dist\MMA Warriors\MMA Warriors Database Editor.exe.
Close the packaged game before rebuilding. The build script preserves packaged Saves, Databases, and Logs in a staging backup and restores them after PyInstaller replaces the folder.
- Choose an established promotion,
Create New Promotion..., orSpectator Modefrom the Starting Promotion dropdown, then use the singleStart New Game With Selected Promotionbutton. Established choices include BAMMA, UFC, PFL, ONE Championship, RIZIN, KSW, Cage Warriors, LFA, Oktagon MMA, BRAVE Combat Federation, ACA, PRIDE Fighting Championships, Strikeforce, and World Extreme Cagefighting. The legacy promotions include prime-era legends such as Kimbo Slice, Kazushi Sakuraba, Gilbert Melendez, Cung Le, Miguel Torres, and more. - Change control to another promotion through the company screen, or begin a custom-promotion career with its own region, scale, divisions, identity, and initial roster draft.
- Guide fighter career journeys from Roster > Career Goals: academy graduates can pursue a homegrown title, veterans can request a final run, troubled prospects can reset their habits or weight cut, camp fit can be rebuilt, and champions need real opponents, visibility, and contract security to stay invested.
- Start a Spectator Mode save to hand the selected player promotion to the AI, fast-forward the living world by week, month, year, or a chosen date, and watch any promotion's latest card in the live fight-night viewer before taking control of a company.
- Book main cards, prelims, early prelims, title fights, TBA fights, and career-affecting 4/8-fighter one-night MMA tournaments. Tournament entrants are seeded by rank, use the normal camp and weigh-in system, accumulate fatigue between rounds, can crown a champion in the final, and remain reserved from other bookings.
- Schedule shows by month and week, then watch or instantly simulate them.
- Advance from the persistent responsive top bar; long promotion names use the flexible center field while popularity, stability, cash, date, and advance controls remain readable. World simulation runs in queued steps with live phase/progress feedback, guarded controls, and efficient batched spectator fast-forward.
- Quick Load and Save Manager slot loads show a themed, modal please-wait panel with named phases and a high-contrast accent progress bar while large career files are read, rebuilt, and refreshed. If Quick Load needs a recovery snapshot, the same panel identifies that recovery attempt before the result is shown.
- Mail / Decisions reserves a fixed two-row action area so all eight buttons are visible immediately without requiring a sash drag; the message table alone shrinks when vertical space is tight. It explains how many messages are shown, stored, filtered, unread, and actionable, and lets Show All clear every visibility filter. Owner Goals always retains a summary and labelled Expand / Collapse control, while compact guidance in Message Detail explains how to reveal context without a full-width onboarding alert.
- Matchmaking keeps Current Fight Card and its action buttons on-screen: the card sits beside Available Fighters on wide displays and moves above them on narrow displays. Expanded Show Details uses two compact control rows at wide widths, a three-row medium layout, and a safe stacked narrow layout while retaining every event field, scheduling action, status, forecast, and show tool. Its empty state explains how to add the first bout, and every fight keeps slot, matchup, weight, hype, build, fatigue, and medical-return information visible without page-level horizontal scrolling. Available Fighters opens in a focused Essentials view, with Readiness, Form & Fitness, and All 20 presets that preserve every scouting metric and the selected rows. Every ordinary row click toggles that fighter into or out of the selection, allowing pairs and 4/8-fighter tournament groups to be built without holding Ctrl; double-click opens the fighter directly under the pointer. Its five booking actions use one row when space permits and a two-row grid at the minimum pane width. Matchup Insight keeps step-by-step selection guidance, history, booking context, and the row-colour guide behind a labelled persistent disclosure, empty alert bands no longer consume table height, and Compare Selected opens the full side-by-side fighter viewer.
- Fight-night viewer with play-by-play, a tale-of-the-tape scoreboard, live round-by-round scores, high-contrast red/blue gas and condition bars on dark tracks, card progress and bout states, colour-coded knockdowns and finishes, auto-play, round timing, scorecards, skip controls, post-event bonuses, and live/completed tournament bracket viewing.
- End-of-year awards (Fighter, Fight, Knockout, Submission, Prospect, Veteran, and Promotion of the Year) crowned automatically each January, with a browsable awards history.
- A living world where fighters age a year each season, prospects break out, veterans decline, title contenders emerge on win streaks, and busy regions grow.
- Regional feeder circuits where 16+ prospects build records, develop, graduate to free agency, and can return to stay active; AI promotions scout them through budgeted, stealable contract offers.
- Fighting Academy and Combat Sports are main management screens in the left navigation, alongside Roster, Contracts, and Finance. Selecting either opens it in place instead of a separate window, so switching between management areas never loses the main application context. Detail views — academy prospect profiles and card replays, child-promotion management, and circuit records and history — still open as focused popups.
- Player-built Fighting Academy with hired-scout regional networks that take eight weeks to establish, scout-quality-driven lead strength and report accuracy, and no fallback phantom scout. Only one network can be active, and its live recruitment list caps at eight leads. Prospects arrive aged 12–15 with 30–60 current rating; potential is normally 60–98, while 99–100 generational prospects are exceptionally rare. Pros can graduate from age 16 (16–17 requires an early-debut confirmation) into MMA or any open child-sport promotion. Every eligible prospect receives safely matched biweekly full-engine amateur bouts with cooldowns and suitable guest opponents. Recurring development challenges let the player choose between specialist camps, pressure tests, and coach-alignment decisions, with consequences recorded in each prospect's academy story.
- Playable Media Desk with a laptop-safe vertical layout: company media strategy, limited weekly campaign actions and fighter cooldowns, campaign risk/outcomes, public trust and buzz, contract offers, deal buyouts, delivery standards, outlet relationships, audience ratings/viewership, campaign history, a persistent editable outlet market, and direct Chronicle/news context. AI promotions negotiate, campaign, deliver, and renew through the same media-contract rules. Older headline-only saves and rights deals remain compatible.
- Detailed fight engine using striking, wrestling, grappling, clinch, physical, mental, stamina, momentum, traits, morale, camps, and fight context.
- Playable Boxing, Kickboxing, Muay Thai/Lethwei, Wrestling, and Brazilian Jiu-Jitsu child promotions with AI promotions, manual or smart cards, titles, finances, sport-specific development, and paced live replays. Opening one creates an empty branded promotion named for your chosen parent company, such as
UFC BJJ: sign athletes, select two roster members, add a matchup to Your Booked Card, then run/watch the event. Child-promotion setup, signings, and card profit/loss feed into parent-company cash while also tracking their own revenue, costs and history. Native development follows each sport's own technical skill pool, potential ceiling and prime/decline curve; gym quality, facilities, fit, dedication, professionalism, morale, activity, fatigue and injury all affect progress. Child-promotion rosters and athlete profiles show a normalized Sport Rating, career stage, potential runway, 12-month trend and recent development instead of misleading MMA overall growth. BJJ playback tracks standing, guard, side-control, mount, and back-control ownership so takedowns, pulls, sweeps, passes, escapes, recoveries, and submission chains follow legal positional sequences; submission results now end on a visible winner-led tap sequence. Each circuit uses its own authentic weight ladder (including kg wrestling classes and IBJJF-style BJJ classes), with 270 real athletes seeded into career-appropriate prime divisions. - Division Management is available from Roster. Closing a gender/weight division releases its athletes to free agency, vacates its belts and removes booked bouts; it can later be reopened for free. Closed divisions are removed from roster and Matchmaking selectors but their free agents remain visible and highlighted. Free-agent information visibility is controlled persistently in Game & Saves → Game Settings; new games require scouting reports by default.
- Expanded style identities including Dutch kickboxing, Taekwondo, Sanda, freestyle and catch wrestling, Luta Livre, and submission grappling; styles influence action selection and matchup context.
- Shared weight-management model across live cards, AI cards, and the Simulation Lab: walking weight, natural size, cutting skill, camp length, camp quality, scale weight, missed weight, and cut penalties all affect the bout. Player fighters can only change division when their body can credibly make the move.
- Simulation Lab with gender and weight-class filters, side-by-side fighter scouting cards, full profile access, one-off fight watching, engine audits, and sandbox 4/8/16-fighter tournaments that never alter careers or saves.
- Fighter profiles with portraits, nationality, records, rankings, detailed skill sheets, camp info, morale, annual overall peaks, and fight history. Intentional duplicate career snapshots use a compact
(D)marker after the display name instead of exposing internalLegend,FA, orBAMMAsuffixes; durablefighter_idvalues still distinguish the records. - Curated real-fighter profiles with deterministic ratings, real fighting styles, career-appropriate traits, and one-time migration for older saves; see
docs/REAL_FIGHTER_RATING_AUDIT.md. - Company and world rankings by gender, division, company, and worldwide scope.
- Contracts, bidding wars, exclusive/non-exclusive deals, market churn, and AI signings. Player negotiations cap terms at 60 months, and long-term security only adds meaningful value when compensation is competitive.
- Rival AI promotions run shows, manage budgets, sign fighters, and produce event histories.
- World regions with cities, local popularity, economy, drug-testing accuracy, venues, and promotional benefits. Canada's selectable event and generated-fighter locations include the Ontario cities of Belleville and Kingston, and authored Canadian free agent Brett Akey starts from Belleville.
- Gym system with quality, facilities, reputation, morale, specialties, capacity, scouting, camp development, and a gym viewer.
- Fighter development, aging, retirement, unretirement flow, morale, injuries, fatigue, weight cuts, traits, rivalries, and media callouts. Promotions do not renew declared retirees at contract expiry; retirement-pending free agents can receive ordinary showcase bouts, while a two-year queue of at least ten pairable veterans creates a popularity-ordered independent retirement card. Cards stay within gender/weight classes, carry at most 12 bouts, and are capped at two in one week even under a severe backlog.
- Staff management with a Roster & Market view and an Expiring Contracts tab: hire candidates, negotiate salary and term, renew deals, fire staff with severance, and inspect a plain-language explanation of all seven staff roles. Staff skill and morale affect scouting, medical recovery and costs, marketing, matchmaking, testing, broadcast production, and fighter negotiations; the fighter Contracts tab provides the parallel fighter renewal workflow.
- Full database editor with searchable world roster, fighter identity/combat/contract editing, promotion/free-agent transfers, retirement, editable detailed fight attributes, save slots, database export/load, searchable results, and event replay archive.
- Run
Run Smoke Tests.batand confirm the smoke, stability, and media-system playtests all pass. - Start the game from
Launch MMA Warriors.bat. - Confirm the Game Menu company picker shows every listed promotion once, including Oktagon MMA, BRAVE Combat Federation, and ACA.
- Schedule a small event for the current week and simulate it.
- Save, close, relaunch, and load the save.
- Run
Build Portable.batfor the distributable exe. - Run
Build Database Editor.batso the validated editor executable is copied into the distributable folder. - On the target laptop, extract/copy the complete
dist\MMA Warriorsfolder to a local writable location, then launchMMA Warriors.exeonce before moving across any existing saves.