This site is proud to be the host of the most recent and updated version of ESMS PLUS (ESMS+). Chris Knight has released the source code for ESMS+ v3.33, which contains a few bug fixes and some modifications to the existing code. The files will be made available in the File Gallery and below I present the releases notes by Chris Knight.

ESMS+ V3.33 release notes

Recent History

This version (v3.33) is intended as a position for esms+ to move on from: a working exe with a couple of known bugs fixed, and a compilable code-base for the community to move on from.

The code and development histories of v3.08, v3.09 and v3.10 have become lost in the mists of time, which hampers the development of the engine.

The number (v3.33) is because the code is based on the Source Code that Matt Birch sent me (Chris Knight) a couple of years ago for his v3.32 project. In that, Matt was trying to add 2 new positions to the engine (Wing backs and Strikers) but it was not working (bugs in code etc). He also heavily tweaked the tactic multipliers in his version.

This v3.32 code was fixed by me with the 2 new positions removed. The engine at this point was modified to allow much higher skill values (up to 100) and compiled/released as v3.32 specifically for the Back of the Net (BOTN) league. The tactic multipliers were Matt Birch's at this stage but these multipliers were subsequently found to be terrible to play with in a league, so v3.32 waas recompiled and redisrtibuted to BOTN with the standard multipliers returned.

v3.33 does not accomodate the large skill ranges (1-100) of v3.32 but is supposed to supercede v3.32 for the moment, hence it is number 3.33. Large skill ranges need a little thought to implement accurately but remain on the to-do list.


Changes in V3.33


I took Matt Birch's tweaked version of v3.08 (which he originally called v3.32 I believe) and did the following:


1) (**) Fixed an error in use of random numbers, meaning with high stats, some players could not possibly be awarded events early in the match at least (key passes etc)
2) (**) Fixed an error in use of random numbers, meaning players early in the roster have more chance of an event than equally statted players later in the roster
3) Fixed bug introduced by Matt's addition of wing backs and strikers (he didn't increase bonus array size)
4) Fixed another minor array size bug somewhere else
5) (**) Changed the engine/code so that Ps are included in Skill Abs - ie if skill abs option is enabled, a player's Ps score is subtracted from the Abs awarded for each KPs in a match. This is already the case for (I think, from memory) KTk, Goals, Saves, Assists, but not for Passes. Never understood why not, so added this in. May slow down Ps gains in some leagues ;-)
6) Disabled the wing backs and strikers code, so they are NOT part of the engine
7) Increased a little bit the debugging produced (in details.txt file) when stats_details set to 1 in league.dat
8) Added a framework (not turned on in the engine yet) for changing TACTIC based on opponents TACTIC
9) I fixed the fitness bug in T Tactic, whereby after updating rosters, players from T sheet are more tired than their non T-sheet opponents

(**) = important change

1) and 2) are genuine bugs in esms+, hopefully now fixed
3) (and possibly 4)) were bugs introduced by Matt Birch
5) is an ad-hoc change by me, but I think a potentially very useful one
6) is because I don't think the game needs WB/ST, and they would need more thought
7) is minor, but may be helpful to one or two people
8) is just experimentation by me
9) is a bug (I believe) and hopefully was originally fixed between v3.08 and v3.09 (or maybe 3.10)

Note on Increased Skill Ranges

Firstly, the v3.33 engine DOES NOT accomodate higher (1-100) skill ranges.
However, I thought a few lines on the potential development woudl not go amiss.
The engine can cope with bigger numbers for skills, BUT there are several formulae with hard coded numbers in them, which do not operate in a linear fashion, and hence the chances of various events (eg a shot on target beating the keeper) shifts significantly with higher stats ranges. Thus these formulae need investigating and potentially scaling appropriately. The best way to do this would be consistently and programatically (the engine code calculates scale factors based on ranges in the league, maybe through league.dat setting) rather than through hard-coded 'magic numbers'

Chris Knight