Jump to content

The Making of FM squad analyzer (spreadsheet)


Recommended Posts

I've always felt there should be way more tools in Football Manager to analyze teams - especially our own. The data is all there, and the sky is the limit. Sports Interactive would make a major breakthrough in the series if they ever made Football Manager mod-friendly, exposing some kind of API to process the game data. It would help tremendously to play the game, and open limitless possibilites. The commnity contributions to the game (via tools, scripts, you name it) would simply explode, making the game exponentially more fun to play. For example, I'd really love to be able to view my players' attributes in a way that provided cues as to how good the attributes are in league standards. Lower league management is very different from top league management - having such a possibility would help gain perspective when managing different teams. With this in mind...

...I created a Libreoffice Calc document ("Excel") into which you can paste the attributes of the players from your Football Manager squad.
The main purpose of this spreadsheet is to color the attribute cells of the players according to how good / bad the attribute is for the league of your team. For example, if a player has 14 acceleration and the max average acceleration on the league is 12, I want the cell to turn green. On the other hand, if the min average acceleration were to be 16 I would want the cell to turn red.

Spoiler

1.thumb.png.a5a6d9566c776037760b0585dc0edfda.png


Just a reminder of how to export the squad data from Football Manager:

Spoiler
  • From your squad screen, click FM -> Print Screen.

2.png.9c56a4347799bed4508838341668ee40.png

  • Select "web page", click OK.

3.png.9121967d1605a5560182ba0c699e9757.png

  • After you've saved the file, open it (eg. with a browser). Select all the rows and columns and copy (CTRL + C).

4.png.5353b28436eaaa6d25e48b3bb90f6732.png

  • You can now paste (CTRL + V) the data into a spreadsheet, like the one I'm talking about now!

 

So anyway, the spreadsheet I'm making is meant to help you interpret your squad's attributes by comparing it with the league's average attributes.

Spoiler

5.thumb.png.44bd79537a1266171cae92a82107a3c6.png

 

This is where the various tabs come in. There are tabs to insert the average attributes on the league. More specifically, there is one tab to insert the average league attributes for each general position:

  • Goalkeepers
  • Defenders
  • Midfielders
  • Strikers
Spoiler

6.thumb.png.c640489cda45355e57f7e6d8e02cf89f.png

 

For each attribute, there is a max average value and a min average value, that you can find out ingame via Team report -> comparison.

Spoiler

7.png.931e8bdf42e6b951c108618c95453588.png

 

The tab where you insert the min and max average attributes for each position looks like this (goalkeeper tab displayed as an example):

Spoiler

8.thumb.png.9b44e553bda1c83aafb740e649455863.png

 

--


The essential Libreoffice Calc feature that will allow me to color the player attributes the right way is "Conditional formatting". This is what will allow me to make Calc color the cells for me, depending on how good or bad the attributes are in league standards. 

Spoiler

9.thumb.png.dfd5b05057371274680c50466b891c0f.png10.thumb.png.b3b89ecf42edf5d43eb9e33cddb50c38.png

 

The hardest part will be to have each cell compare its value with the right "minimum" and "maximum" values (the ones from the league, that is).

The threshold values depend on the attribute we're talking about, but also on the player's position. For example, if the cell is a defender's acceleration, we might want to compare this value with the league's defenders acceleration. So, we need to figure out a way to embed on the Calc sheet an option to pick each player's position. Only then will we be able to tell Calc whose attributes will we compare the player with.

This is where the first column comes in:

Spoiler

11.thumb.png.d24dad7c476f0f29c50ea2ca67d8a9e8.png

 

In this column, we can choose which position Calc should assume for each player.


--
 

Ok, so, so far we have our squad attributes on a sheet. We have a way to pick the assumed position for each squad player. And we have the min and max league attributes for each position. Cool! So all we have to do now is compare the attributes from each player with the attributes of the league players in the same position. Right?
....
Well...

What if, instead of comparing our defender's speed with the league defenders speed, we could compare our defender's speed with the league's strikers speed?

That would make more sense, right?

We could then predict if our defender would likely be outrun by most strikers. Honestly, only rarely do defenders from opposing teams challenge for a ball..
 

This is where the problem gets hairy. Very hairy. We need tofigure out a way to store, on the Calc sheet, what we will compare each position's attribute with.  Best explained with examples:

  • A defender's acceleration shall be compared with the league strikers' acceleration
  • A striker's height shall becompared with the league defenders' height
  • etc

This is where the last tab comes in:  "Configurations". This tab holds the position profiles - where we program what each attribute from each position will be compared to.

Spoiler

12.thumb.png.c94b5cf551addc0987067465b77c3043.png

 

The possible options for position profiles are inserted on the first column. In this case, we have:

  • A profile for goalkeepers
  • A profile for defenders
  • A profile for midfielders
  • A profile for strikers
Spoiler

13.thumb.png.4e343a228027ce6e7055431ec3f424a1.png

 

Then, for each profile (which corresponds to one row on the sheet), we specify where to get the comparing value for each attribute (which corresponds to one column on the sheet).

Spoiler

14.thumb.png.bd386ebd3462ec947e81109a03b1ce30.png

 

Now, back to the Team data, the sheet that holds our squad's information anda ttributes. There, the conditional formatting will be set up to find the comparing value from the right cell (determinedin the "Configurations" tab), depending on the cell's attribute (first cell from that column) and the assumed position for that player (first cell from that row).

Spoiler

15.thumb.png.c77c37843268d3b30766525e13287df0.png

 

The formula I wrote to make all that processing, unfortunately, is ridiculously long, unreadable and... well, a mess. IT was the only way I figured out to solve the problem I had, though.

Spoiler

16.thumb.png.e88e5ad410a7e69e55ea3ff6987b8c13.png


Anyway, I'm going to attach the spreadsheet file as it is now, so you can explore it, fiddle with it, and whatnot. It's the .ods file. Libreoffice is better to open it, there might be some incompatibilities with Microsoft Office.

At this moment, the sheet is working - player attributes higher than the league max average attribute are lighted green; lower than the league min average attribures are lighted red. players with only one prefered foot are lighted red; players with proficiency on both feet are lighted green.

  • There is one caveat though - if a league's minmax attribute column is left blank, the value is assumed to be "0" by Calc. So any possible attribute value (1-20) will be higher than the league's max, and the cell will be lighted green. Argh... I will need to figure out a workaround. If you have any suggestions, they will greatly appreciated.

There are more details, caveats and whatnot, but for now I'll keep the post like this, without digging even more into the nitty gritty. The post is very long already.

 

I hope you find this somewhat useful and inspiring. 

Cheers, everyone

FM data processor final 2.ods

Edited by Zanman777
Link to post
Share on other sites

There was very brief chat about an API, although that may have been for FM LIve right around the time it started its death rattle.

It's a really untapped market, I believe. Maybe they're reluctant to hand over much control in that way, which is their perogative, but I think you could end up with some really great stuff.  

With a cynic's hat on, perhaps they worry that people might build a "better" version of something that's in-game (better being subjective of course) so want to keep everything in-house.  Who knows.

Link to post
Share on other sites

  • 3 weeks later...

Would love FM to have more options in getting the average ratings for the league.  I mean what to classify a FB? A DM? A winger? Are they defenders, midfielders attackers?  I guess it depends on your system.  Whilst I can change the classification in your spreadsheet (or make new ones for my team), I can't then compare them to other team's average.  

 

I wonder if something can be done with player descriptions and comparing them?  I know this would require huge amounts of work, but say I would get all the "attacking full backs" for the league and getting the attributes for them and creating your own average?  Then perhaps they may also need to be divided into whether they are developed or developing (or star, first team, backup etc) in order to get an idea of how they compare to other players that are in a similar stage of development rather than having the average attribute changed by youth players etc.

 

I am fully aware that means going through every team and analysing them! Ouch! You seem to love creating spreadsheets for analysis (including role analysis!), any chance of a spreadsheet that automatically analyzes every team and creates user changeable averages? (just kidding!) ;) 

Link to post
Share on other sites

35 minutes ago, LordAEM said:

a Full Back is a Defender, a DM a midfielder (Defensive midfielder), an AM is an attacking Midfielder

 

 

 

 

but are they really? a FB in an attack role is a defender?  Can the FB Att be grouped in with a CB? An anchor man DM is a midfielder? Just like a Just like a CM attack? an AM Advanced playmaker is the same as a shadow striker? 

 

Therefore, when averaging defenders, a team with FB that are on defend duty will have different averages than those that have attacking Fbs.  In addition, maybe crossing on defenders averages about 9, but for a Cb it is 7, for a FB it is 12.  An average winger may have crossing at 14 whilst an IF has 11.

 

So my argument is more in-game categories in the position comparison would be beneficial.  I like the work that Zanman777 is putting in, I think we just need more data to make it work better.  If the game doesn't have the tools for this, then perhaps the community can start creating the analysis.

Link to post
Share on other sites

  • 10 months later...
On 30/11/2019 at 00:17, forameuss said:

There was very brief chat about an API, although that may have been for FM LIve right around the time it started its death rattle.

It's a really untapped market, I believe. Maybe they're reluctant to hand over much control in that way, which is their perogative, but I think you could end up with some really great stuff.  

With a cynic's hat on, perhaps they worry that people might build a "better" version of something that's in-game (better being subjective of course) so want to keep everything in-house.  Who knows.

I'd love an API, even if it was a read-only one. There would be so many useful things that could be done with easy access to FM game data.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...