node-esms
Version:
A C++ esms module
609 lines (584 loc) • 33 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ESMS Administrator Manual</title>
<link rev="made" href="mailto:root@localhost" />
</head>
<body style="background-color: white">
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#esms_administrator_manual">ESMS Administrator Manual</a></li>
<li><a href="#1._general_information">1. General information</a></li>
<li><a href="#2._tutorial">2. Tutorial</a></li>
<ul>
<li><a href="#2.1_preparation">2.1 Preparation</a></li>
<li><a href="#2.2_creating_the_rosters">2.2 Creating the rosters</a></li>
<li><a href="#2.3_generating_league_schedule">2.3 Generating league schedule</a></li>
<li><a href="#2.4_creating_the_teamsheets">2.4 Creating the teamsheets</a></li>
<li><a href="#2.5_running_the_games">2.5 Running the games</a></li>
<li><a href="#2.6_updating_the_league">2.6 Updating the league</a></li>
<li><a href="#2.7_that's_it">2.7 That's it</a></li>
</ul>
<li><a href="#3._esms_configuration_files">3. ESMS configuration files</a></li>
<ul>
<li><a href="#3.1_league.dat">3.1 league.dat</a></li>
<li><a href="#3.2_language.dat">3.2 language.dat</a></li>
<li><a href="#3.3_tactics.dat">3.3 tactics.dat</a></li>
</ul>
<li><a href="#4._esms_programs_and_the_files_they_work_on">4. ESMS programs and the files they work on</a></li>
<ul>
<li><a href="#4.1_esms__the_main_engine">4.1 <code>esms</code> - the main engine</a></li>
<li><a href="#4.2_commentary_files">4.2 Commentary files</a></li>
<li><a href="#4.3_reports.txt">4.3 reports.txt</a></li>
<li><a href="#4.4_stats.dir">4.4 stats.dir</a></li>
<li><a href="#4.5_teams.dir">4.5 teams.dir</a></li>
<li><a href="#4.6_updtr__the_updating_tool">4.6 <code>updtr</code> - the updating tool</a></li>
<li><a href="#4.7_updtr_summary.txt">4.7 updtr_summary.txt</a></li>
<li><a href="#4.8_table.txt">4.8 table.txt</a></li>
<li><a href="#4.9_lgtable__table_updating_tool">4.9 <code>lgtable</code> - table updating tool</a></li>
<li><a href="#4.10_tsc__teamsheet_creator">4.10 <code>tsc</code> - teamsheet creator</a></li>
<li><a href="#4.11_roster_creator__creator_of_esms_rosters">4.11 <code>roster_creator</code> - creator of ESMS rosters</a></li>
<li><a href="#4.12_roster_creator_cfg.txt">4.12 roster_creator_cfg.txt</a></li>
<li><a href="#4.13_fixtures__generators_of_league_fixtures/schedule">4.13 <code>fixtures</code> - generators of league fixtures/schedule</a></li>
<li><a href="#4.14_an_essential_subset_of_tools">4.14 An essential subset of tools</a></li>
<li><a href="#4.15_end_of_round_cleanup">4.15 End of round cleanup</a></li>
</ul>
<li><a href="#5._epilogue">5. Epilogue</a></li>
<ul>
<li><a href="#5.1_what's_next">5.1 What's next</a></li>
<li><a href="#5.2_contact">5.2 Contact</a></li>
</ul>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="esms_administrator_manual">ESMS Administrator Manual</a></h1>
<p>This document is the official Administrator's manual for the
ESMS program.
It explains how to use the ESMS family of programs to run a fantasy soccer league.
Familiarity with the ESMS User's Manual is assumed.</p>
<p>
</p>
<hr />
<h1><a name="1._general_information">1. General information</a></h1>
<p>You are reading this document, which means that you have dowloaded ESMS and unzipped the
package. If, for some reason you haven't, please do this now. Put everything in a single
directory - I will call it the ``working directory'', or shortly the work dir. The work dir
contains ESMS programs, configuration files and a ``doc/'' directory with the documentation.</p>
<p>Some notation: <strong>administrator</strong> - the person who is in charge of a ESMS league. <strong>manager</strong> - a person
participating in a league and managing a team.</p>
<p>
</p>
<hr />
<h1><a name="2._tutorial">2. Tutorial</a></h1>
<p>I think that the best way to learn something is by going through an example.
This section guides you through running a very simple (though a complete !) league. It's trivial and
will take only a few minutes, but it will get you started quickly with ESMS.</p>
<p>This section swiftly goes through the steps - for an in-depth explanation of the programs
and options involved, see the next section.</p>
<p>
</p>
<h2><a name="2.1_preparation">2.1 Preparation</a></h2>
<p>Make sure that you have the latest ESMS package unzipped to your work directory. ESMS programs
are <strong>console based</strong> - that is, they don't have a GUI but provide a command line interface.
You can work with ESMS from Windows like with any other program, but for some people it is more
convenient to open a command prompt (Start->Run->cmd). Unix/Linux users almost always use a
command prompt.</p>
<p>Also, make sure you have a text editor at hand. Notepad should do, but it's better to have
something more powerful (for example Scite, Textpad, Ultraedit, GWD, etc). <strong>Do not</strong> use
Word or Wordpad unless you know very well what you're doing, since
ESMS understands only plain text files, and those editors usually add special
formatting characters that don't work with ESMS.</p>
<p>
</p>
<h2><a name="2.2_creating_the_rosters">2.2 Creating the rosters</a></h2>
<p>ESMS includes a program that creates rosters, which makes it simpler to initially setup leagues.
The program is called <code>roster_creator</code> and it has a configuration file - roster_creator_cfg.txt
Now run <code>roster_creator</code> - with its default options (which you can modify in roster_creator_cfg.txt).
It should have created 4 new roster files: ss1.txt, ss2.txt, ss3.txt and ss4.txt</p>
<p>Let us now decide on our team names. These are the abbreviations and full team names we will
use:</p>
<pre>
mac - Machos FC
bla - Blade Runners
esu - ESMS United
cra - Crazy Insomniacs</pre>
<p>First of all, rename the rosters to these abbreviations - the rosters should now be
mac.txt, bla.txt, esu.txt and cra.txt. You can take a look at the rosters, by the way.
The player names have been randomly generated by <code>roster_creator</code> - they're far from
perfect, but usually you will either let your managers pick their players' names on
their own, or will use real players names for your league. The rosters generated
by <code>roster_creator</code> are good as templates and for testing.</p>
<p>Next, we will set up the full names translation for ESMS. This is done in the main
configuration file - league.dat; you should have this file now in the work dir, open
it with a text editor.</p>
<p>In the bottom of that file there's an Abbreviations section. Insert the abbreviations
there as follows:</p>
<pre>
Abbreviations:
mac = Machos_FC
bla = Blade_Runners
esu = ESMS_United
cra = Crazy_Insomniacs</pre>
<p>Now ESMS will know the link between abbreviations and full team names. There is a lot
of other interesting settings in league.dat, but that's for the next section. Note the
underscores in the full teams' names. These replace spaces, just like in players'
names.</p>
<p>
</p>
<h2><a name="2.3_generating_league_schedule">2.3 Generating league schedule</a></h2>
<p>Now we will generate the schedule for our small league. A schedule sets which team plays
which and when. You don't have to do it manually, the <code>fixtures</code> program will help. First,
create a text file named teams.txt - it lists the teams <code>fixtures</code> will use. Edit the
file so it looks like this:</p>
<pre>
Machos_FC
Blade_Runners
ESMS_United
Crazy_Insomniacs</pre>
<p>Now, run <code>fixtures</code>. It should have generated a schedule
file named fixtures.txt - this file can be sent to the managers to know what games their
team will play during the league and when. Our fixtures.txt starts like this:</p>
<pre>
1.</pre>
<pre>
Machos_FC - Blade_Runners
ESMS_United - Crazy_Insomniacs</pre>
<pre>
2.
ESMS_United - Machos_FC
Blade_Runners - Crazy_Insomniacs
... and so on
...</pre>
<p>So, in the first ``week'' of the league, Machos_FC plays against Blade_Runners and ESMS_United
hosts Crazy_Insomniacs.</p>
<p>
</p>
<h2><a name="2.4_creating_the_teamsheets">2.4 Creating the teamsheets</a></h2>
<p>Now we'd like to run the first week of our league. But we need the teams' managers to send in
teamsheets, and there are no managers yet. So what can you do ? The <code>tsc</code> program is just
for that - it takes a roster and generates a basic teamsheet for it. The teamsheet isn't too
sophisticated - it has no orders, for example, but it generates correct teamsheets (it won't
name injured and suspended players).</p>
<p>Run <code>tsc</code> - it asks for a roster name, give it <code>mac.txt</code>, give it also a formation+tactic, for
example <code>442N</code>. It should now create a teamsheet for mac.txt and name it macsht.txt. Take
a look at the teamsheet. Now repeat the same operation for the other 3 teams. At the end you
should have 4 teamsheets, one for each team: macsht.txt, crasht.txt, esusht.txt and blasht.txt</p>
<p>
</p>
<h2><a name="2.5_running_the_games">2.5 Running the games</a></h2>
<p>Now we are finally ready to run the games of the first round in our league. Run <code>esms</code> (the
main engine). When it asks for a home teamsheet name give it macsht.txt, and for away teamsheet
give it blasht.txt (recall from the schedule that these two teams clash in the first round).
If everything is OK, ESMS will tell you that the game ended successfully.</p>
<p>Take a look at the commentary file that was created: mac_bla.txt - it lists the game events (note that ESMS inserted the full
team names where appropriate).</p>
<p>Repeat the same to run a game between ESMS_United and Crazy_Insomniacs (run <code>esms</code> with
esusht.txt and crasht.txt as the home and away teamsheets, respectively). You should get another
new file - esu_cra.txt</p>
<p>If you were running a real league now, you'd send each commentary file to the managers of the teams
who played in that match.</p>
<p>
</p>
<h2><a name="2.6_updating_the_league">2.6 Updating the league</a></h2>
<p>If you look at the bottom of the commentary files, you will see that players accumulated statistics
(such as goals and key tackles), got cards, lost fitness, etc. All this should be now reflected in
the rosters. Besides, you have to create a summary of the round, and create/update the league
table. The updating tool <code>updtr</code> does all that. It's as simple as a couple of clicks.</p>
<p>But first you should create a teams listing for the tool to know which teams it should update. Create
a new file - teams.dir (you do this only once for your league !), and put the following into it:</p>
<pre>
mac.txt
bla.txt
esu.txt
cra.txt</pre>
<p>Now run <code>updtr</code> and select option 6 (full update). When you press Enter, <code>updtr</code> runs and
gives you a full report of what it did. <code>updtr</code> did many interesting things - it updated
the rosters (you can take a look at them now), and created several new files. table.txt is
the league table, for example. updtr_summary.txt is a summary of the round that is ready to be sent
to the managers, together with reports.txt that lists all the results. Read in the next section
about what goes into these files.</p>
<p>
</p>
<h2><a name="2.7_that's_it">2.7 That's it</a></h2>
<p>Wasn't it simple ? Running the next rounds is even simpler, because you don't have to do
all the initializations like changing league.dat and creating the fixtures and teams.dir</p>
<p>What you should remember to do is delete the stats.dir file before the next round, so that
<code>updtr</code> won't do unnecessary updates. When you run the main engine for the next round, it
will create a fresh and relevant stats.dir file. The next section explains everything in
much more detail.</p>
<p>
</p>
<hr />
<h1><a name="3._esms_configuration_files">3. ESMS configuration files</a></h1>
<p>This section explains in detail each configuration file ESMS uses.</p>
<p>
</p>
<h2><a name="3.1_league.dat">3.1 league.dat</a></h2>
<p>ESMS is highly customizable, which allows every league to tailor it to its specific needs. The
main configuration file in ESMS is <code>league.dat</code>. This file is built from</p>
<pre>
key = value</pre>
<p>pairs. The keys are not case sensitive, so HOME_BONUS and home_bonus mean the same. The following
are the keys of <code>league.dat</code> ESMS understands:</p>
<ul>
<li><strong><a name="item_home_bonus">HOME_BONUS</a></strong><br />
</li>
The advantage that a home team has over an away team. The normal values are between 100 and 300. If it's
set to 0, there's no advantage to the home team. If it's negative, there is an advantage to an away team.
<p></p>
<li><strong><a name="item_cup">CUP</a></strong><br />
</li>
ESMS supports penalty shootouts, for occasions like cup games that end with a draw. This option is
for such occasions. If it doesn't exist in league.dat or is set at 0, all games are considered normal,
not cup games, and penalties won't be run. If it's set to 1, ESMS will ask you after each game whether
to run a penalty shootout. If it's set to 2, ESMS will run the shootout after each game, without asking.
<p></p>
<li><strong><a name="item_team_stats_total">TEAM_STATS_TOTAL</a></strong><br />
</li>
Set this option to 1 if you want team stats (signifying their strengths in defense, midfield and
attack) to be printed to the end of the commentary each 10 minutes. Usage of this option is
<strong>strongly discouraged</strong> in normal league games - use it only if you want to analyze a team's
performance or run test matches.
<p></p>
<li><strong><a name="item_num_subs">NUM_SUBS</a></strong><br />
</li>
Amount of substituting players that can be listed in a teamsheet.
By default (when this option isn't present in league.dat), ESMS assumes that the amount of subs
is 7. You can set it to another number if your league has different rules.
<p></p>
<li><strong><a name="item_substitutions">SUBSTITUTIONS</a></strong><br />
</li>
Amount of substitutions each team is allowed to perform during a game.
By default, ESMS assumes that it is 3.
<p></p>
<li><strong><a name="item_dp_for_yellow">DP_FOR_YELLOW</a></strong><br />
</li>
The amount of disciplinary points given for a yellow card.
<p></p>
<li><strong><a name="item_dp_for_red">DP_FOR_RED</a></strong><br />
</li>
The amount of disciplinary points given for a red card.
<p></p>
<li><strong><a name="item_suspension_margin">SUSPENSION_MARGIN</a></strong><br />
</li>
This options is used to decide when players are suspended. The common value leagues use is
10. That means a suspension for each 10 disciplinary points. At 10 DP, a player is suspended
for one game, at 20 DP - for two games, at 30 DP - for three games, and so on.
<p></p>
<li><strong><a name="item_max_injury_length">MAX_INJURY_LENGTH</a></strong><br />
</li>
The longest duration (in weeks) of a player injury.
<p></p>
<li><strong><a name="item_updtr_fitness_gain">UPDTR_FITNESS_GAIN</a></strong><br />
</li>
The average amount of fitness points a player gains after a game from getting a rest.
<p></p>
<li><strong><a name="item_updtr_fitness_after_injury">UPDTR_FITNESS_AFTER_INJURY</a></strong><br />
</li>
The average amount of fitness points a player has when he comes back from an injury.
<p></p>
<li><strong><a name="item_abilities">ABILITIES</a></strong><br />
</li>
The ``Abilities:'' section in league.dat lists the amounts of ability points given
for different events/statistics. The names of the options are self-explanatory.
<p></p>
<li><strong><a name="item_abbreviations">ABBREVIATIONS</a></strong><br />
</li>
The ``Abbreviations:'' section in league.dat lists the links between short and full team
names in <code>short = full</code> style. The ESMS tools use the short names (usually a 3 letter
abbreviation) for some things, and full names for some things, and this section is
read to establish the connections.
<p></p></ul>
<p>
</p>
<h2><a name="3.2_language.dat">3.2 language.dat</a></h2>
<p>ESMS is designed to allow easy translation to languages other than English. The <code>language.dat</code>
file is a single point of reference for language-dependent strings. By translating this file,
people can decide how ESMS prints out game commentaries.</p>
<p>Translation is not the only use of <code>language.dat</code>, however. It also allows to extend the
commentaries ESMS prints, and some leagues inded took advantage of this feature.</p>
<p>Take a look at <code>language.dat</code> - its structure is self-explanatory. Lines starting with <code>|</code>
are comments which explain how to translate each commentary group.</p>
<p>
</p>
<h2><a name="3.3_tactics.dat">3.3 tactics.dat</a></h2>
<p>When ESMS runs a game, it computes three major skill totals for each team, and uses
those to run the simulation. The totals are:</p>
<ul>
<li></li>
Team tackling - stopping the opponent's attacks.
<p></p>
<li></li>
Team passing - creating attacks.
<p></p>
<li></li>
Team shooting - has two effects: creating attacks (to a lesser extent than team passing), and
scoring goals from these attacks.
<p></p></ul>
<p>To compute these three totals, the contribution of each active player is summed. Each player
(except the GK) contributes to all three totals, depending on his major skills (Tk, Ps, Sh),
team tactic, and other factors (side, fitness, etc). The tactic acts as a multiplier on the
player's major skills. For each position the player plays, the contributions are different.
All these multipliers are set in the <code>tactics.dat</code> configuration file.</p>
<p>The defaults that come with ESMS withstood the testing of time, so it's adviced not to change
them, although that is possible if your league wants to modify tactics or even create new ones.</p>
<p>A sample from <code>tactics.dat</code> will explain its structure:</p>
<pre>
# P - Passing
MULT P DF TK 1.0
MULT P DF PS 0.75
MULT P DF SH 0.3
MULT P DM TK 0.87
MULT P DM PS 0.87
MULT P DM SH 0.28
MULT P MF TK 0.25
MULT P MF PS 1.0
MULT P MF SH 0.25
MULT P AM TK 0.25
MULT P AM PS 0.87
MULT P AM SH 0.68
MULT P FW TK 0.25
MULT P FW PS 0.75
MULT P FW SH 1.0
BONUS P L MF SH 0.5
BONUS P L MF TK 0.5
BONUS P L FW SH 0.25</pre>
<p>There are two types of lines here. MULT lines set the tactic multiplier - for each of the positions
(DF, DM, MF, AM, FW) - each of the contributions (TK, PS, SH). Thus, for example a DF in a team
playing P has his PS contribution multiplied by 0.75. BONUS lines add bonuses to certain tactics
against other tactics.</p>
<p>
</p>
<hr />
<h1><a name="4._esms_programs_and_the_files_they_work_on">4. ESMS programs and the files they work on</a></h1>
<p>ESMS consists of several programs and some files these programs read and write. For each program,
I list the input files it expects and the output files it generates</p>
<p>Note: Each of the ESMS programs can accept a command line argument <code>--no_wait_on_exit</code> that makes
it exit immediately after finishing, without waiting for you to press Enter. While the waiting is
convenient when running from Windows, people who use ESMS from the command line usually prefer to
supply this argument. For running automatic games, it is essential.</p>
<p>
</p>
<h2><a name="4.1_esms__the_main_engine">4.1 <code>esms</code> - the main engine</a></h2>
<p><code>esms</code> is the main game engine of ESMS. It runs a simulation of a soccer game between two teams,
given their teamsheets and rosters (you can learn in detail about teamsheets and rosters in the
User's manual).</p>
<p><strong>Input</strong>: Configuration files (league.dat, language.dat, tactics.dat), a pair of rosters and
a pair of teamsheets for these rosters.</p>
<p><strong>Output</strong>: A commentary file for the game, and adds a line to the reports.txt file, and a line to the
stats.dir file.</p>
<p>
</p>
<h2><a name="4.2_commentary_files">4.2 Commentary files</a></h2>
<p>A commentary file is generated by <code>esms</code> and contains the listing of all major events in the game.
It is intended to be read by humans, and is usually sent to the two managers of the playing teams.
The commentary file also contains a summary of game statistics and changes in players' attributes
which is used by <code>updtr</code> to update the rosters.</p>
<p>
</p>
<h2><a name="4.3_reports.txt">4.3 reports.txt</a></h2>
<p>reports.txt contains a summary of games' results. It is generated by <code>esms</code> and can be sent to
the whole league announcing all the scores in some round. This file is also used when updating
the league table.</p>
<p>
</p>
<h2><a name="4.4_stats.dir">4.4 stats.dir</a></h2>
<p>stats.dir contains a list of commentary files which <code>updtr</code> should use to update the rosters.
<code>esms</code> creates it and adds a line to it for each game it runs. In the end of the round, after
<code>updtr</code> did its updating, this file
should be deleted - it will be regenerated by <code>esms</code> in the next round.</p>
<p>
</p>
<h2><a name="4.5_teams.dir">4.5 teams.dir</a></h2>
<p>teams.dir is simply a list of the rosters that make your league. It should be created only once
in the beginning of your league season. This file is essential for <code>updtr</code> to know which rosters
it should update.</p>
<p>
</p>
<h2><a name="4.6_updtr__the_updating_tool">4.6 <code>updtr</code> - the updating tool</a></h2>
<p><code>updtr</code> is the second of the two most important tools an ESMS league administrator uses to run
a league. After <code>esms</code> runs all the games, <code>updtr</code> is used to handle all the rest - update the
rosters with player statistics, update the league table with the latest results, and take care
of injuries, suspensions and fitness. <code>updtr</code> can do it all just in a few clicks, and usually
runs smoothly if your league files are set up correctly.</p>
<p>When you run <code>updtr</code> you get the following menu:</p>
<pre>
What would you like to do ?
1) Update rosters
2) Decrease injuries
3) Decrease suspensions
4) Update league table
5) Decrease suspensions + update rosters
6) Decrease suspensions, injuries + update rosters, league table
Enter your choice -></pre>
<p>This lists the various functions <code>updtr</code> performs, and their combinations to make matters simpler. The
functions are:</p>
<p><strong>Update rosters</strong>: <code>updtr</code> looks at all game commentaries listed in stats.dir, and updates
the players' attributes from the played games in the team's rosters. For example, it adds
1 to the ``Games played'' statistic of all players who played, computes the injury periods of
newly injured players, etc.</p>
<p><strong>Decrease injuries / suspensions</strong>: Players in ESMS are injured for a certain amount of weeks and
suspended for a certain amount of games. <code>updtr</code> takes care to reduce the period of injury/suspension
of each injured/suspended player. These options are separated because in some occasions suspensions
and injuries are not parallel. For instance, in cup games that happen in the middle of the week, injuries
are usually not decreased, but suspensions are.</p>
<p><strong>Update league table</strong>: <code>updtr</code> takes table.txt and the latest results from reports.txt and updates
the table. If the table doesn't exist (like in the first league round), <code>updtr</code> just creates it.</p>
<p>The other options are combinations to make working with <code>updtr</code> more efficient. For instance, (6) is
used to update after league rounds - it does everything one needs. Most often, this is the single option
admins use after running league rounds. (5) is often used to run updates after cup games. The multitude
of separate options and their combinations were designed to provide the league administrator with a
maximal level of flexibility.</p>
<p><strong>Input</strong>: <code>updtr</code>'s input depends on the function you ask it to perform, but generally it uses:
the configuration file league.dat, stats.dir, teams.dir, commentary files listed in stats.dir,
rosters, reports.txt and table.txt</p>
<p><strong>Output</strong>: <code>updtr</code> updates the rosters, table.txt and creates a summary file to be sent to
the league managers - updtr_summary.txt</p>
<p>
</p>
<h2><a name="4.7_updtr_summary.txt">4.7 updtr_summary.txt</a></h2>
<p>A summary file created by <code>updtr</code> after each round. This file contains interesting information about
the league round, together with some statistics. It is usually sent to the managers of the league
after each round.</p>
<p>
</p>
<h2><a name="4.8_table.txt">4.8 table.txt</a></h2>
<p>This is a standard league table file. For example:</p>
<pre>
Pl Team P W D L GF GA GD Pts
-----------------------------------------------------------------
1 Blade Runners 4 2 2 0 3 1 2 8
2 Crazy Insomniacs 4 2 0 2 5 4 1 6
3 ESMS United 4 1 2 1 4 3 1 5
4 Machos FC 4 0 2 2 0 4 -4 2</pre>
<p>The columns are: Pl - place, Team - team name, P - games played, W/D/L - games won/drawn/lost, GF - goals
for (how many goals the team scored), GA - goals against (how many goals the team conceded), GD - goal
difference, Pts - points.</p>
<p>
</p>
<h2><a name="4.9_lgtable__table_updating_tool">4.9 <code>lgtable</code> - table updating tool</a></h2>
<p>The league table updating ability is so useful that a separate tool exists to handle it. League
administrators don't really need it to run a league, but I include it in the package because some
people find it convenient. <code>lgtable</code> does what <code>updtr</code> does in its table update - it updates table.txt
with results from reports.txt.</p>
<p><strong>Input</strong>: table.txt and reports.txt</p>
<p><strong>Output</strong>: updates the table.txt</p>
<p>
</p>
<h2><a name="4.10_tsc__teamsheet_creator">4.10 <code>tsc</code> - teamsheet creator</a></h2>
<p><code>tsc</code> assists managers to create template teamsheets. It is given a roster name and a formation+tactic
and creates a teamsheet. Don't expect <code>tsc</code>'s teamsheets to bring you the league title - they are
far from being sophisticated. <code>tsc</code> doens't care about fitness, sides and it doesn't create orders.
But the teamsheets it creates are <strong>correct</strong> (contain no injured/suspended players) - they will run with <code>esms</code>
so it is useful to just create template teamsheets for your team. Administrators also use <code>tsc</code> to create
teamsheets for managers that forgot to send a teamsheet for some game.</p>
<p><strong>Input</strong>: a roster</p>
<p><strong>Output</strong>: a teamsheet</p>
<p>
</p>
<h2><a name="4.11_roster_creator__creator_of_esms_rosters">4.11 <code>roster_creator</code> - creator of ESMS rosters</a></h2>
<p><code>roster_creator</code> creates as many random rosters as you want, using a configuration file - roster_creator_cfg.txt
It is very useful for creating random players and teams.</p>
<p><strong>Input</strong>: roster_creator_cfg.txt configuration file</p>
<p><strong>Output</strong>: one or more rosters, depending on what's set in the configuration file.</p>
<p>
</p>
<h2><a name="4.12_roster_creator_cfg.txt">4.12 roster_creator_cfg.txt</a></h2>
<p>This file sets the configuration options for <code>roster_creator</code> as <code>key = value</code> pairs.</p>
<ul>
<li><strong><a name="item_n_rosters">n_rosters</a></strong><br />
</li>
The amount of rosters to create.
<p></p>
<li><strong><a name="item_n_gk%2c_n_df%2c_n_dm%2c_n_mf%2c_n_dm%2c_n_mf%2c_n_">n_gk, n_df, n_dm, n_mf, n_dm, n_mf, n_am, n_fw</a></strong><br />
</li>
The amount of players to create for each position. <code>roster_creator</code> creates players that are suitable
for certain positions - for example players with high Ps for MF.
<p></p>
<li><strong><a name="item_average_stamina">average_stamina</a></strong><br />
</li>
The average stamina of players. The actual stamina (and all other ``average'' options) is created
by a pseudo-random process, and <code>roster_creator</code> tries to fit the average rating to the option
set in the configuration.
<p></p>
<li><strong><a name="item_average_aggression">average_aggression</a></strong><br />
</li>
The average aggression level of players.
<p></p>
<li><strong><a name="item_average_main_skill%2c_average_mid_skill%2c_average">average_main_skill, average_mid_skill, average_secondary_skill</a></strong><br />
</li>
Main skill is the primary skill for each position, like Ps for MFs. Mid skill is the skill
for the DM and AM positions. I.e. mid_skill = 11 means 11 at Tk and Ps for DMs (all in average,
of course). Secondary skill is the non-primary skill of players, like Tk and Ps for FWs.
<p></p>
<li><strong><a name="item_roster_name_prefix">roster_name_prefix</a></strong><br />
</li>
Given some prefix ``xx'', <code>roster_creator</code> creates rosters with the names ``xx1.txt'', ``xx2.txt''
and so on.
<p></p>
<li><strong><a name="item_generate_names">generate_names</a></strong><br />
</li>
Set this to 1 if you want <code>roster_creator</code> to create randomized names for the players. If this
option is not set, blank spaces will be left in the rosters instead of the names.
<p></p></ul>
<p>
</p>
<h2><a name="4.13_fixtures__generators_of_league_fixtures/schedule">4.13 <code>fixtures</code> - generators of league fixtures/schedule</a></h2>
<p>This program creates a schedule / fixtures list for a league. A league is played in two
rounds, N-1 games in each round (where N is the amount of teams). During a league run,
each team plays each other team twice, once home and once away.</p>
<p><strong>Input</strong>: table.txt - list of team names to create the fixtures for. Full names should be listed
here.</p>
<p><strong>Output</strong>: a list of fixtures in fixtures.txt</p>
<p>The input and output of this program is so simple that there's no point to list the files
it uses separately.</p>
<p>
</p>
<h2><a name="4.14_an_essential_subset_of_tools">4.14 An essential subset of tools</a></h2>
<p>You probably noticed that the only tools a league administrator <em>really</em> needs are <code>esms</code>
and <code>updtr</code>. All the rest are just auxiliary programs some administrators use, and some
don't.</p>
<p>
</p>
<h2><a name="4.15_end_of_round_cleanup">4.15 End of round cleanup</a></h2>
<p>Most of the files created by the ESMS programs during a run of some round are either
temporaries that are needed to communicate between the tools, or information files that
are to be sent to the league managers. The files that really last between rounds are
the configuration files, teams.dir, table.txt and the rosters.
All the other files are usually deleted after performing
their purpose, in order not to clutter the league directory. For example, after a round
is run, the commentary files, reports.txt and stats.dir should be deleted.</p>
<p>
</p>
<hr />
<h1><a name="5._epilogue">5. Epilogue</a></h1>
<p>
</p>
<h2><a name="5.1_what's_next">5.1 What's next</a></h2>
<p>That's about it for a guide on ESMS administration. Like with any unfamiliar program, it
may look intimidating at first, but once you get to know it, it is really very simple. When
your league is correctly set up, running the ESMS tools is very simple and only takes a few
moments. Seasoned administrators report that each week the bulk of their time (which isn't
more than a few minutes) goes into fixing mistakes in teamsheets sent in by managers. The
rest of the process - running the games and updates takes almost no time.</p>
<p>So if you are new to ESMS, the best advice I can give is <strong>practice</strong>. Go through the
tutorial again, make sure everything makes sense, run a few more rounds, set up a small
test league for friends. Practice brings perfection.</p>
<p>If you need any help at setting up a league, or have any questions and requests regarding
the ESMS programs, feel free to ask me.</p>
<p>
</p>
<h2><a name="5.2_contact">5.2 Contact</a></h2>
<p>This document, as is ESMS itself, was written and is maintained by Eli Bendersky. My email address
is <a href="mailto:eliben@gmail.com.">eliben@gmail.com.</a> Feel free to send me comments, feedback and questions. I usually answer emails
very regularly and will be glad to help.</p>
<p>ESMS also has a low-volume, but important mailing list at Yahoo Groups. In the list new features are
usually discussed, and
people often ask questions and request ideas for their ESMS leagues. To sign to the mailing list,
visit <a href="http://groups.yahoo.com">http://groups.yahoo.com</a> and look for <code>esms</code>.</p>
<hr><p>Eli Bendersky (<a href="mailto:eliben@gmail.com">eliben@gmail.com</a>)</p>
</body>
</html>