Properties3
TypeConcept
Note createdMar 9, 2026
Last updatedMar 18, 2026

The gameplay modules are Sider Lua modules for PES 21 that handle match logic, stamina, exhibition match customisation, environment settings, and gameplay mod loading. For the main gameplay overhaul, see 30 YEARS Simulation Version.

GameplayLoader

By Baris (v2.6, originally published for PES 2020 on pesnewupdate.com). Loads gameplay parameter sets from content/gameplay-loader/ at runtime via Sider’s livecpk system. Each gameplay mod is a folder containing the 9 standard constant_*.bin files at common/match/constant/. Supports switching between gameplay mods via overlay hotkeys (PageUp/PageDown to browse, 7 to set favourite, 9 to toggle random selection).

Available gameplay mods:

ModContents
Simulation_Version (favourite)9 constant_*.bin files extracted from Holland’s 30 YEARS Simulation Version dt18 CPK
Allstar Mix v1.19 constant_*.bin files
Allstar Mix v1.1-test9 constant_*.bin files
Allstar Mix v1.1b9 constant_*.bin files + 6 .o animation overrides
No ModVanilla FL26 gameplay

For the process of adding new gameplay mods, see Installing Gameplay Mods via GameplayLoader.

Custom modifications

Two fixes were applied to the original GameplayLoader code:

  1. \r carriage return trim — the readMapTeams() function now strips \r from CSV entries via :gsub("\r", ""). Without this, Windows-style line endings (\r\n) in gameplay-mods.csv caused the parsed mod name "Simulation_Version\r" to not match the favourite setting from config.ini (which is parsed by a regex that naturally strips \r). This caused the favourite to silently fail and fall back to “No Mod” on every boot.

  2. load_ini() regex underscore bug — the INI parser regex ([-%w%d. ]+) could not capture values containing underscores, because Lua’s %w matches [a-zA-Z0-9] (no underscore, unlike most regex flavours where \w includes _). This caused favorite_gameplay_mod = Simulation_Version to be parsed as just "Simulation", which didn’t match any mod name. Fixed by changing the value capture group to ([-%w%d._ ]+).

matchset

By juce (Anton Jouline). Part of the official sider7 repository. Sets match settings programmatically, including difficulty level (Beginner through Legend), extra time, penalty shootout rules, and number of substitutions. It differentiates between exhibition matches and competition matches.

env

By juce. Part of the official sider7 repository. Originally a debugging/diagnostic module that prints all Lua globals and the Sider context to the log. The version in FL26 may have been repurposed or extended to handle environment/weather settings.

Anti-Cheat

A Football Life-specific module. Despite the name, this is not about online multiplayer anti-cheat (FL26 is offline). It likely prevents external memory editors (such as Cheat Engine) from tampering with gameplay values during a session, enforcing the integrity of FL26’s gameplay tuning.

stamina

Modifies player stamina drain rates and recovery during matches. Aligns with FL26 v2.0’s gameplay philosophy of being “challenging, reasonably slower, and more tactically demanding, punishing haste.”

CustomExhibitionMatch

Extends the exhibition match setup screen with additional customisation options not available in the default game.

Libraries

Two shared Lua libraries support the modules above:

  • CommonLib.lua — common utility functions shared across multiple modules (FL26-specific, not in the sider7 repo)
  • nesalib.lua — shared library by nesa24 and juce providing INI parsing, memory caching, overlay UI, and input handling. Used by all camera modules and other nesa24 modules

Current configuration

All six gameplay modules (including GameplayLoader) and both libraries are active in my FL26 setup.