Premiership Coach

Remove this Banner Ad

One of the things I'm doing at the moment for starting a new game from an existing PC2011 save is recalculating the full match stats of all historical matches. This is only possible for retired players (which is required for a full recalculation) if the backup folders are present.

Basically this is coming under the banner of stats improvements.

There's more I can consider doing from capturing historical data from the backups. Could get year by year for all attributes for all players, but might not be useful. Considering re-capturing the ratings history. The main thought I have is that as you play PC2011, you do lose the ability to see certain things from the past as players retire, etc, and that's one of the primary things I want to improve.
 
Looks like a full reconstruction of all matches won't be possible unfortunately because when a player retires and that season ends their player file is removed from the players folder and converted into a single record in that year's past players file without their matches. I thought this would be fine, because I can still find the same player's file from the year before they retired using the backups, but that will unfortunately not include any of the matches they played during their retirement year. And that data does not exist anymore because the backups happen after the retirements are processed at the end of the season, otherwise their player file from their retirment year would still be there.

In practice, in my save file that's in the year 2104, this has meant that practically all matches (18,085 out of 18,228) have at least 1 player's performance missing. That's kind of a fun fact in itself, that practically all matches have involved a player who went on to retire that year.

In the past player record for the retired players, we do still have their career stats so we can use all of the matches they'd played by the end of their penultimate season to extrapolate their final season's stats, but I can't think of a way to further split that across the matches they would have played. Although, it would be possible in some cases to figure out what their match stats could have been (e.g. if they played 1 match that season) but not which match that would be from. Although that would also be possible in some isolated cases, because there might be 1 player peformance missing from a match for the club that player played for, and so we could connect the dots there. Similarly I have the Brownlow votes for each match, so if a retiree got 1-3 votes in a match in their final season I could then pinpoint that they played in that match, but still not what their stats were in the match. Similar kinds of shenanigans for cross referencing injuries, suspensions, reports. But this is all no where near enough to cover the hole.

So, unless I can magic up these retired player's match by match performances from their last season, I'm going to have to settle for an incomplete set of match performances and that means I'm going to have to settle for an incomplete picture of historical match stats. I.e., I'm going to have to record the match scores separate to calculating them from the performances.

What is absolutely hilarious here though is that for the preseason matches, all of the player performances are actually stored centrally in the /Misc/PSmatches.xml file, so it's entirely possible to reconstruct the preseason matches regardless of player retirement. I would be much happier if it were the other way around, but at least it's funny!

All this said though, it's 90% of what I want. I can still have accurate career and season stats. I can still use the matches I do have for the match records. The likelihood of a player in their final season, when they are presumably at their worst, setting a match record is not zero but it's not high. It is higher than I'd like, because I know it is not uncommon in PC2011 for players to retire when they are still good, but it's still unlikely.
 
So, I have the new game database generating now from a PC2011 base folder or save folder. I'm probably not quite done with it yet, might want to add a bit more data from save folder backups (if they exist) for instance, and maybe tweak a thing here or there, but it's a milestone.

This means right now my project is functional at least as a collation tool for a PC2011 save folder now, and so I'm looking at my epic save's stats and I'm quite amused at the remarkable wing/half-forward I had once upon a time who managed to register 10,145 kicks. But the part I find amusing is the ratio to handballs, 2,044 handballs for a ratio of practically 5:1!
 

Log in to remove this ad.

The plot really thickened after all that. More misinterpretations of the retired players files that I've had to discover and accomodate.

The new full understanding is that there are three kinds of retired players which follow more or less the same data format but with different meaning and nuacnes:
  • A Pre2009 retired player typically only has a total career games and goals (except for Gary Ablett Sr who does not have a games tally, seems to be the only one) and no seasons stats.
  • A Modern retired player has a full complement of career stats split amongst the clubs they played for but for whatever reason they're called seasons in the XML, and the year for each season seems to be just one of the years they played for that club.
  • And then a yearly retired player has a full complement of career stats not split amongst clubs but instead listing the club from their last contract when they retired.
This means I was using the data wrong up to now, particularly the stats of the "Modern" retired players, so I've had to concede that there are in fact not any season stats available from the original PC2011 base files for those players, and I've had to update my calculations to use the stats as career stats instead of season stats.

But it also means I do have a definitive way of filling in the gap of which club a yearly retired player played for during their final season. And I can still extrapolate their final season's stats from the difference of their final career stats from the totals of all their performances from all of their other seasons.

So that leaves us with the following:
  • Historical players have games and goals for their career (in some cases only for one of the clubs they played for, and in some cases only goals)
  • Modern retired players have all stats for their career per club
  • Yearly reried players have all stats for their career per club and all stats for all of their seasons
So this means there's degrees of consistency there to work with.

Another thing to combine with this is that it's entirely realistic to consider including the missing historical/modern stats. But I expect it will only be as part of a new base ratings. Most of this analysis is relevant only for the target use cases of starting a new game from the original PC2011 base folder and an existing PC2011 save folder (which is presumed to have started from the original PC2011 base folder, or a different base folder built ontop of the original PC2011 base folder).

(It is entirely possible that more work would be needed to fix some loose ends in the case of starting a new game from a PC2011 save folder originally started from an unofficial base folder, or from an unofficial PC2011 base folder alone - but these will likely need to be a bit of a case-by-case take it as it comes scenario.)

In other news I also spent far too much effort trying to get the start new game from a 100 year PC2011 save file to be faster to execute on my machine. All up it generates a 167mb sqlite database now and uses all my CPU cores at least some of the time. The good part of this is I'm sure I'm testing with an extreme case that probably no one else would ever get anywhere near. Starting from a PC2011 base file is practically a blink compared to loading my 100 year save. It turns out reading, re-calculating and saving 657,418 match performances from retired players is not an instantaneous operation.
 
Honestly PC11 is a fantastic game as it us. Any updated version really only need have the 18th team added and longer term coaching contracts.

Gravy would be someway for non-tech heads to set the base year when starting a new sim. that would future proof the system and make it easier for a community members here to update lists each year without having to edit player birthdays for instance.
 
Current task at the moment is replicating the ratings calculations exactly, which is slightly more nuanced than one might expect due to differences in semantics from VB to C#. But to aid me in that process I've also made a start on the Squad page and the Player popup.

1695024277384.png

1695024293252.png
 
Honestly PC11 is a fantastic game as it us. Any updated version really only need have the 18th team added and longer term coaching contracts.

Gravy would be someway for non-tech heads to set the base year when starting a new sim. that would future proof the system and make it easier for a community members here to update lists each year without having to edit player birthdays for instance.
My plan is when starting a new game, the starting year is derived from the dates in the base ratings, etc. So, as long as that becomes an easy thing to configure, I think that will solve that.

In my mind the ideal way to configure lists for each year is an import/export gui of some kind.

You mentioned not wanting to edit birthdays. Any other things like that? What's the ideal stuff to enter?
 
My plan is when starting a new game, the starting year is derived from the dates in the base ratings, etc. So, as long as that becomes an easy thing to configure, I think that will solve that.

In my mind the ideal way to configure lists for each year is an import/export gui of some kind.

You mentioned not wanting to edit birthdays. Any other things like that? What's the ideal stuff to enter?

I did a complete list build in 2022 and it was a very long process. Took around 15-20 hours just to do ratings and birthdates. I had to edit each notepad file individually (using notepad+) and relying on windows search function to find players files. I never got around to doing historical stats because it was too laborious.

Below are recommendations based on my experience last year. I haven't yet tried the editing app posted recently above in this thread.

1. As i mentioned, having the game start year set by the player when starting a new game or at least editable in a single place inside the list files. In the current version you have to change each players birthday minus one year each time you do a list update.

2. all fields editable inside the game app. Currently only the headline player ratings are. Things like leadership, hidden parts of potential and basics like birthdate are only editable in the notepad files. Having it all editable inside the game app is handy for players wanting to make minor edits to a list developed by another community member.

3. An import method like you mentioned would be pretty handy. It might become a bit unwieldy but if formatted correctly it'd probably be simplest way to run new season updates. Particularly if formatted in a way that aligned with AFL tables so you copy a season's data into a spreadsheet, put a few lookups in there and port over all stats with no more than a few minutes work.

Whatever process you decide on, for longevity's sake it'd have to be really easy to operate by a layman. It really can't be reliant on any coding experience. There's already a fair bit of labour commitment associated with taking on a list update and if people have to learn a new difficult skill ok top of that, they just won't bother to take on the project. As it is currently, the best we've got is one guy who starts a new thread every year and has actually delivered maybe once in the last eight years of promising it. The best we get is makeshift updates like i did last year, with only the bare minimum of edits made, rather than a comprehensive update.
 
I did a complete list build in 2022 and it was a very long process. Took around 15-20 hours just to do ratings and birthdates. I had to edit each notepad file individually (using notepad+) and relying on windows search function to find players files. I never got around to doing historical stats because it was too laborious.

Below are recommendations based on my experience last year. I haven't yet tried the editing app posted recently above in this thread.

1. As i mentioned, having the game start year set by the player when starting a new game or at least editable in a single place inside the list files. In the current version you have to change each players birthday minus one year each time you do a list update.

2. all fields editable inside the game app. Currently only the headline player ratings are. Things like leadership, hidden parts of potential and basics like birthdate are only editable in the notepad files. Having it all editable inside the game app is handy for players wanting to make minor edits to a list developed by another community member.

3. An import method like you mentioned would be pretty handy. It might become a bit unwieldy but if formatted correctly it'd probably be simplest way to run new season updates. Particularly if formatted in a way that aligned with AFL tables so you copy a season's data into a spreadsheet, put a few lookups in there and port over all stats with no more than a few minutes work.

Whatever process you decide on, for longevity's sake it'd have to be really easy to operate by a layman. It really can't be reliant on any coding experience. There's already a fair bit of labour commitment associated with taking on a list update and if people have to learn a new difficult skill ok top of that, they just won't bother to take on the project. As it is currently, the best we've got is one guy who starts a new thread every year and has actually delivered maybe once in the last eight years of promising it. The best we get is makeshift updates like i did last year, with only the bare minimum of edits made, rather than a comprehensive update.
Those updates are still appreciated good man 🤝
 
So, I knew this was a possibility but hadn't really run into any consequencial examples of it until the tail end of trying to get the ratings to match PC2011. The source as I understand it represents the point that the code was at somewhere along the lines from PC2011 to PC20xx and that is not just inclusive of an 18th club but also some miscellaneous other changes, which includes the formulas for ratings calculations.

I have now been able to confirm that I did get my ratings working right according to the new formulas but not according to the old formulas - I was scratching my head about it for a bit though. Now I am able to make some tweaks and test against the original PC2011 DLLs and confirm that I'm able to match the original better.

It is a bit of a thing to contemplate though, what am I striving for? Am I making a PC2011+ or a PC20xx? In my head I've been aiming for PC2011+, but do I really have what I need to realistically achieve that? What else is going to be a mismatch? Am I going to be able to work around that? Does it really matter?

There's plenty of opportunities to pivot along the way here. I think I'm going to keep treking in my current direction of a PC2011+ and see where it takes me. If I have to pivot, I'll pivot. It's a hobby project afterall and we all know how those go.
 
I did a complete list build in 2022 and it was a very long process. Took around 15-20 hours just to do ratings and birthdates. I had to edit each notepad file individually (using notepad+) and relying on windows search function to find players files. I never got around to doing historical stats because it was too laborious.

Below are recommendations based on my experience last year. I haven't yet tried the editing app posted recently above in this thread.

1. As i mentioned, having the game start year set by the player when starting a new game or at least editable in a single place inside the list files. In the current version you have to change each players birthday minus one year each time you do a list update.

2. all fields editable inside the game app. Currently only the headline player ratings are. Things like leadership, hidden parts of potential and basics like birthdate are only editable in the notepad files. Having it all editable inside the game app is handy for players wanting to make minor edits to a list developed by another community member.

3. An import method like you mentioned would be pretty handy. It might become a bit unwieldy but if formatted correctly it'd probably be simplest way to run new season updates. Particularly if formatted in a way that aligned with AFL tables so you copy a season's data into a spreadsheet, put a few lookups in there and port over all stats with no more than a few minutes work.

Whatever process you decide on, for longevity's sake it'd have to be really easy to operate by a layman. It really can't be reliant on any coding experience. There's already a fair bit of labour commitment associated with taking on a list update and if people have to learn a new difficult skill ok top of that, they just won't bother to take on the project. As it is currently, the best we've got is one guy who starts a new thread every year and has actually delivered maybe once in the last eight years of promising it. The best we get is makeshift updates like i did last year, with only the bare minimum of edits made, rather than a comprehensive update.
I think if what I'm doing is to reach a releasable conclusion, some kind of mechanism which addresses these three concerns would be a pre-requiste to that. The way I would envision it would be:
  • Games can be started in years other than 2011
  • A way to adjust dates in bulk
  • A way to edit multiple players in one place
I think the first and last of my points are achieved in some capacity already by switching from XML to SQLite (albeit not exactly as layman friendly as we may be aiming for). I've attached an example of the current database schema inside a zip file to this post. I'm not necessarily committing to this being the way to edit the data (i.e., in lieu of a built-in editor), but if you take a look at it it's not too hard to envision what a CSV-esque import/export to/from could look like (e.g. for things like PlayerAttributes).

(An easy way to open this file would be to unzip it and use something like DB Browser for SQLite - but your mileage my vary.)
 

Attachments

  • 1348c475-c93b-4d26-a3d3-d1109af493d8.zip
    858.1 KB · Views: 23

(Log in to remove this ad.)

Tried the SQLite program and am very much confused about how it will work. Quite willing to try it if you can post a detailed run through if/when the time comes. Also had a look at the old editor app you posted and it's relatively handy. Only thing is there's no button to age everyone by one year as there was in the screencap you shared. Am I missing something?
 
A couple of general suggestions I should note about my gameplay experiences

1. Draft logic is a little unbalanced. NPC teams could benefit from considering player potential a little bit more. I usually can find mid 80s potential players in the second and third round of every draft, so it's easy to set up a farm system that makes you a perenial contender. These players should be off the board earlier in an ideal world.

2. There are very few auto generated players who are small defenders and worth drafting. Small defenders have a very low potential and so I usually end up playing outside mids at half back. Whatever the spawn logic is that restricts small defenders potential could be eased a bit.
 
Tried the SQLite program and am very much confused about how it will work. Quite willing to try it if you can post a detailed run through if/when the time comes. Also had a look at the old editor app you posted and it's relatively handy. Only thing is there's no button to age everyone by one year as there was in the screencap you shared. Am I missing something?
I can make something that connects the dots a bit more so it's not confusing, but I probably won't explore that too deeply until I get the whole game closer to completion. But in the interests of exploring it a bit just now, the way you use the program is:

Use the "Browse Data" tab and the "Table" dropdown to switch between different kinds of data. To look up individual players attributes, grab their "PlayerGuid" and then cross reference it in the other tables (e.g. "Player Attributes").

1695178143587.png
1695178180585.png

Tried the SQLite program and am very much confused about how it will work. Quite willing to try it if you can post a detailed run through if/when the time comes. Also had a look at the old editor app you posted and it's relatively handy. Only thing is there's no button to age everyone by one year as there was in the screencap you shared. Am I missing something?
Could you post a screenshot? Might be something I can spot. But also might be just that something in the program is broken. It's old and was never really "polished".
 
A couple of general suggestions I should note about my gameplay experiences

1. Draft logic is a little unbalanced. NPC teams could benefit from considering player potential a little bit more. I usually can find mid 80s potential players in the second and third round of every draft, so it's easy to set up a farm system that makes you a perenial contender. These players should be off the board earlier in an ideal world.

2. There are very few auto generated players who are small defenders and worth drafting. Small defenders have a very low potential and so I usually end up playing outside mids at half back. Whatever the spawn logic is that restricts small defenders potential could be eased a bit.
I managed to get it so every draft I would get a top 5 pick, maybe a pick between 20-35, picks 61 and 62 (sometimes 63 if I could swing it and had the list space). Draft the highest rated talls with the picks in the 60s and you could trade them in 2-4 years time for a early 2nd rounder which you then use to manipulate a higher draft pick

I found Taggers worked well as small defenders as well
 
I can make something that connects the dots a bit more so it's not confusing, but I probably won't explore that too deeply until I get the whole game closer to completion. But in the interests of exploring it a bit just now, the way you use the program is:

Use the "Browse Data" tab and the "Table" dropdown to switch between different kinds of data. To look up individual players attributes, grab their "PlayerGuid" and then cross reference it in the other tables (e.g. "Player Attributes").

View attachment 1808687
View attachment 1808689


Could you post a screenshot? Might be something I can spot. But also might be just that something in the program is broken. It's old and was never really "polished".
Screenshot 2023-09-20 152253.jpg

That's what it looks like for me. Quite a few buttons missing.
 
Added the sections missing from the Squad page.

View attachment 1808856

Contracts page looking pretty good now. Buttons don't work but selecting players does.

View attachment 1808851


That looks like I've made a whoops and not uploaded the latest version of it. Here you go: https://github.com/DanielLaneDC/CrazoFooto/releases/download/v1.0.1/CrazoFooto.zip
I had a go at this last night but was wondering if there is a way to edit the regional players? I would like to start a 2011 season then update the draft classes as i go year to year.
 
Current task at the moment is replicating the ratings calculations exactly, which is slightly more nuanced than one might expect due to differences in semantics from VB to C#. But to aid me in that process I've also made a start on the Squad page and the Player popup.

View attachment 1807141

View attachment 1807143

Are you able to share your player rating calculations. What I'm trying to achieve is a way to export player data and work out their position rating so I can find undervalued generated players without having to manually check all of them one at a time
 
Last edited:
I managed to get it so every draft I would get a top 5 pick, maybe a pick between 20-35, picks 61 and 62 (sometimes 63 if I could swing it and had the list space). Draft the highest rated talls with the picks in the 60s and you could trade them in 2-4 years time for a early 2nd rounder which you then use to manipulate a higher draft pick

I found Taggers worked well as small defenders as well

You don't have to wait multiple years, it is more efficent just to cycle them straight away, before you know it you'll monopolise the first half of the first round. The trading system is really broken.
 
Are you able to share your player rating calculations. What I'm trying to achieve is a way to export player data and work out their position rating so I can find undervalued generated players without having to manually check all of them one at a time
Yes, but it's got a few steps. I won't go into it all now but here's an example:

A player's overall rating is the max of their rating in all positions: Inside Mid, Outside Mid, Ruck, Small Back Defending, Small Back Attacking, Small Forward, Tagger, Tall Back and Tall Forward. Each of these are different calculations.

For example, Inside Mid is weighted 15/5/20/35/25% to separate calculations for Tackling/FootSkills/GetToContest/HardBallGet/HandsInClose and then minus penalties for Endurance/Height/HardBallGet minimums (70/188/70). Tackling for example is weighted 35/35/30% to Aggression/ManMarking/Tenacity then plus bonus from improvement and minus penalties for degradation and particular injuries. Some of these calculations involve an age modifier which adds or subtracts from specific calculations.

So, to give a full rundown you can see I'll need to write a very big post!
 
Is the PC2011 source code still available anywhere? I've messed around with writing a match engine a few times but got bored in the progress, thought it might an interesting idea to instead rewrite the PC engine seperately then adjust from there.
 

Remove this Banner Ad

Back
Top