Jump to content

alexfall862

Big Ten
  • Posts

    604
  • Joined

  • Last visited

  • Days Won

    35
  • Points

    1,485 [ Donate ]

Everything posted by alexfall862

  1. Hi! Modeling Players In order to build a player, you need to create attributes that the engine will use to approximate baseball skills and abilities. So far, we have the abilities in the spoiler tab below (explanation included) Player Abilities Player Generation and Progression The player creation engine generates players based on the premise that the pool of players should represent the full selection of high level high school, college, and international players that feed into the MLB system. Those players, largely, suck. Additionally, many players with 1 or 2 'MLB tools' end up flaming out with little to show for it other than a couple at-bats with the Altoona Curve. On the flip side, occasionally a player will emerge from the murk and mud of the farm teams and blow everyone away after they finally put all the pieces together - sometimes without any club really noticing their potential in the first place. To capture these aspects of the helter-skelter MLB player development environment, the player creation engine generates players without an overall potential. Instead, each attribute contains it's own potential for growth. A player's overall potential is simply a reflection of the average potential each of their relevant attributes contains. Additionally, while a completely emergent and self-dictating system would be awesome, there's just a very early influence in developmental baseball that forces players to specialize after high school - and so the roster also designates pitchers and position players when generating the initial batch. Players are generated as '15 year old' blank slates, with 0 for all attributes, and only their growth potential - and then they go through their first round of progression before being joined with the master roster. What kind of profile a player might have for their potentials on each attribute is guided, loosely, but largely dependent on the random assignment of potential. As mentioned below, the vast, vast, majority of these player will be straight dookie - as is a strong baseball tradition among feeder leagues. How Generated What potential means for these specific attributes is not whether it will increase with 100% certainty, but the general trend of outcomes will favor higher potential ratings compared to lower potential ratings. This works by generating a random increase year to year based on a normalized distribution of the value the attribute may increase by. Math snippet below: The way this math works is this: left hand side is the age of the player, the two values inside the parenthesis are the mean baseline ability increase, and the standard deviation of the desired normalized curve around that mean. As you can likely guess - among the specific values showing the top row is the best potential, and lower is worse. The top is A potential, followed by B, C, D, and F. The bottom-most row with an average of 0 growth is 'N' which is for players that don't use that attribute - 'N' for 'not used' more or less. Most position players will have at least half of their pitching attributes as this lowest growth potential, and pitchers are the same for position roles. Due to the random nature of the normalized curve, it is vanishing unlikely, but still possible, for a player with mostly 'N' potential to develop into a Shohei Ohtani type batter while being designated to develop as a pitcher. But very unlikely. Once a baseline value is set, the baseline is transformed in a logarithmic function to it's 'play' value that will be displayed to the game engine to run plays and shown (probably fuzzed a little) to users for making roster decisions, etc. These transformed values largely adhere to a 0-100 format, with sub-20 being HS/College level play, and 80+ being truly superlative abilities. A player averaging above an 80 would likely be the best player in the sim. This is loosely inspired but not mapped 1:1 with baseball's 80-20 scouting scale. More About Potential All A potential skills averaged together will outpace all B potential skills by about 10-15% - but the individual outcomes have a pretty fair likelihood of showing any single B potential skill could grow higher than any particular single A potential skill - it's just that it's more likely that B potential will peak lower than an A potential skill. Growth for all players and their abilities starts the strongest early in their careers and the scope of outcomes narrows or 'locks in' more as they age. This means both that high potential players become more likely (though not with complete certainty) to be busts if they don't hit early, and it also means that lower potential players are more likely to be useful even if they don't have high potential as long as they peak before their 'locked in' age (around 26-29) This 'spread' between potentials create the kind of uncertainty in development that leads teams to roster and play players that have high potential, but aren't producing quite yet, as well as provide incentive for teams to hang on to some that don't have impressive potential, but have higher 'right-now' skill than would normally be expected given their potential. Examples Aside from blabbering on, here are some concrete examples of the distribution of talent in a sample generation of the league (overall in these graphs is calculated as an average of all attributes, not weighted to favor specific attributes that are more impactful at the moment, but that's largely inconsequential for this exercise) Below is a map of a sample league with about 1.5k players generated - left hand axis is cumulative overall, and bottom is age: As you can see, the general trend is that players get better over time, but specific players actually show a wide variety of career 'shapes' - while still maintaining adherence to the general trend that higher potential players will outgrow lower potential players. Below are a couple specific players pulled from a test batch: Here we have Jordany Kraynak, who had an absolutely terrible bat (F for contact and power) but A potential speed, which finally hit it's big 'jump' after his age 20 season, along with a B throw accuracy he would probably be a usable MLB 2nd baseman. This is Norbert Wolf, who had a B for pitching endurance, but not a single C potential pitch in his arsenal. He was a certified garbageman (throwing trash), and so while he was solidly competitive early in his career (HS, College) his lack of likelihood to have his pitches grow ended up becoming reality and he retired at 30. Here is Brock Wolters (from a different test set, I tend not to run one's bigger than 1.5k between tunings due to time), who had a B average potential across all his ratings, and ended up hitting on most of them - probably one of the better players in the league all the way through to his age 39 season where he retired. Lastly, this is T.C. Arango, who didn't cross the MLB-playable threshold until he was 26, and for that matter also ended up in a similar position as a late bloomer in HS - showing little growth as a HS kid and taking off at 18 and then again after for his junior year... but then didn't really meaningfully develop after that for a while. Attribute/Player Development Meta During the current test runs of the roster generator, about 2% of generated players reach 'MLB-starter'. This is actually a little generous, as among high school seniors, about .5% of boys baseball players can expect to end up drafted and of those only 20% will make the MLB - so .1% or a 'one in a thousand' shot to play in MLB. That said, I think it's fair for the engine if we skip generating the completely useless players and avoid turning it from a player engine into an insurance salesmen engine. Further tuning is needed, but ideally this engine should supply enough players that we could generate at least a partial college recruiting class and full MLB draft class each year. The expected size of that roster is likely around 750-1000 new players each year. To fill the eventual NCAA rosters, we'll likely generate an 'oops, all F' box of players to fill out recruiting/playing. This is a WIP of course and the particulars will likely change. Player Elimination All players keep the dream alive until the age of 30, where the average progression of all players drops below zero and there's very little chance of a late career bloom. After 30, the lower the overall of a player, the higher the likelihood of their retirement, with all sub-AAAA players having effectively a 100% chance to retire. Desired Outcomes - Player potential means something tangible, but holds an element of risk - Being able to hold more 'solid' prospects will likely generate more actual pro-level players than betting the farm on 1-2 superlative prospects - That said, high potential players are very much capable of reaching much higher highs than most other players. - The vast majority of players generated for college/juco/draft should not play against the MLB level players or expect to last long above A ball. Side-Effects Assigning potential for the individual attributes does follow some loose trends and rules (catcher abilities are less likely to have high growth potential, pitchers and batters are very unlikely (though it's not impossible) to get cross-compatible skills, pitchers generally have higher throwing ratings for fielding), but by and large it's randomly distributed from there. There are lots of odd combinations of player skills and sometimes wide gaps between abilities on a single player. In order to have some of those players turn out as useful, making the most of player development is going to be key to fielding solid teams. What Role You Play So outside of all of that growth potential, players still get coached and helped along while playing. One of the features that you will have in the college/farm/MLB level is to 'train' an attribute and functionally increase it's development for that year by 2 potential levels. This will likely be applicable to a selection, and not all, of your players. You could choose to shore up a player's weak spot, choose to double down on a strength, or develop positional versatility in all kinds of ways by focusing fielding or catching skills. The one thing you have to remember is that as players age, the ability rating 'locks in' and it's harder (but not impossible) to get large increases in skill - so focusing on younger players may be a good thing. But on the flip side, you could focus on making sure your 1 all-star level player gets that extra boost before they hit 30 to really maximize their value. Additionally, choosing to put players in the right league for their circumstance will also help their development, as a player wildly overmatched in a developmental league (A, AA, AAA) will get a slight malus to their progression. This will be measured using a version WAR fit for the sim and the impact will be the same as dropping 1 potential level across all skills. This Diary's Poll 1. How should players be assigned to teams? Fantasy draft? Random distribution? Partial draft, partial distribution? Other? 2. In order to facilitate players joining teams, some sense of economic baseline should be established first. Since owners have voted for a split revenue model, what would be the best way to assign media market strength? 3. The current attributes were created with some consultation from other users, and I definitely appreciate their help! That said, I know there's at least 20 other team owners that would be interested in helping out. Share ideas/input on this process or questions you might have. Link to Poll Here: https://forms.gle/qfLrm9LWiqFU5BBA7 Last Diary's Poll Results While the largest section of voters were in favor of Tuesday-Friday simming, the majority of voters did ask for some kind of break in between series of games. So I think what we'll do is split the difference and do Tuesday-Wednesday-Friday-Saturday to give everyone time to make moves between most series during the season. Thanks, Alex
  2. Don't hate on me, hate on Manfred for that one.
  3. As of right now, that mechanic between games is set up for all players, but the impact/tuning is only set up for pitchers to handle the motivation behind pacing appearances. If a season was run today position players could theoretically play 162 games just like their 1st game of the season. I'm working on setting that up right now, so some kind of position player game to game stamina will likely exist. The hope with the pacing of games is that (if we go with a non-do-it-all-at-once approach) is that you would have time to adjust lineups between series. It is unlikely that we'll set things to have between games inside of series, just from an admin (and opponent] sanity standpoint as some kind of snipping seems likely with swapping starting pitchers in/out.
  4. Hi! One of the key components of running a baseball team is playing other baseball teams and charging admittance and broadcasting rights for people interested in watching. Well you can't do that without scheduling the games ahead of time! Not only that, but there's all kinds of other league business that has to go on while that's happening. So today we're going to talk about scheduling in simMLB. Scheduling So if you've been in a fantasy football league, or run a simNFL or simFBA team while trying to book OOC games, you may well be familiar with the struggles of trying to line up the opponents you're interested in playing with and the ability to play then in an open week. Well boy howdy does MLB suck a fat egg when it comes to making schedules that make a lick of sense. Much like medical resident hours being set by a coke fiend from 100 years ago, the baseball schedule is based on the concept pioneered by circus sideshow acts and travelling dance bands: it's all over the damn place. This made sense when the primary income was from gate receipts - you want to make sure you dip into every market, but you don't want to stay too terribly long and wear out your welcome. As leagues merged and the expansion era began, this all got wonky, and particularly so when Bud Selig killed the AL/NL autonomy and the hampered the novelty of interleague play. Rob Manfred then promptly took it out back and put it out of it's misery. So mercifully, in 2024, the MLB is moving to a more reasonable schedule where all teams play each other at least once. MLB Schedule Rules: Divisional Teams play 13 Games, Alternating 7 at home and 6 away between the 4 other teams in division. Intraleague Teams play 6 games against 6 teams and 7 games against the other 4. Interleague Teams play 3 games against 14 teams in the other league that aren't their 'geo-rival' Teams play 2 home and home series with their 'geo-rival' from another league. Geo-Rivals in Spoiler Tag Below: This totals 52 series and 162 games. Now the question is: How do you possibly translate that to simMLB without losing your damn mind? What's particularly tricky here is that the issue is that even if you abstract the games into 'series', the increments of games in each series set are: 7, 6, 4, and 3. The least common divisor of all of those is N/A. However! If you break each series into components of 3 and 4 game series (7=4+3, 6=3+3, etc.) then you can actually divide the season of 162 games into 52 series of 3, 4, and 2 games (home and home special geo-rivalry series only) each. This alone is still a little wonky, as lining up series by week could lead to some teams having 4 matchups and then 2 and then 3, while their opponent might have 2 before the 4 they share, and then 4 afterwards. So lining up matchups game-by-game is likely to be completely infeasible. Luckily, if we 'bucket' each series in a container of 4 'days' and fill the bucket with 1 game per day and then a bye for any empty days, then you can essentially look at swapping around 4 day containers for series - which means you're only having to match up the weeks, and not start dates of series and such - which is probably exponentially more difficult. So the simMLB season is made up of blocks of 4 'days' that will contain anywhere between 2 to 4 games in each block. There are 52 blocks to match the 52 series in an MLB season. Pacing and Parsing the Schedule 52 series can be divvied up all kinds of ways, but 52/5 is 10.4, 52/4 is 13, and 52/3 is 17.3, and so we're going to aim for the happy middle there as far as season length and play 4 series per week for a season length of 13 weeks of games played. That doesn't mean a season lasts 13 weeks, heck, half of the season is taken up (happily) by all kinds of other goings on, between Spring Training, All-Star Weekend, and the Playoffs, a season should ideally last 26 weeks in total, allowing for 2 seasons per calendar year. Regular Season Games: 4 series per week for 13 weeks, with one break near the middle for all-star week. Playoffs: With the reduced workload to handle coach lineup input, 1 game per calendar day will be run during the playoffs. Offseason: Free Agency will be buffered by a week on each side of zero league activity, at least as far as simming games. This should allow time for handling roster moves and other administrative needs for the following season. Draft: The MLB draft will happen asynchronously over the course of the back half of the season. Because players drafted (generally) don't appear in anything higher than rookie ball until at least the following season, we don't have the pressure the NBA/NFL sims have as far as getting a draft processed in 24-48 hours - which is good because the MLB draft lasts 20 rounds! Details on draft execution to follow in another diary. Spring Training: Spring training will be a short 8 series season with more lax restrictions on lineups/user input, likely against 5 other teams in a double round robin format (probably matching intraleague slot partners together for 5 groups of 6). Graphic! (Same thing as above in spreadsheet form) What to Expect on Timing While the season is designed to be run in 26 week increments, it is extremely likely that we'll skip the 'winter' season and start the 2025 season in 2025 in order to allow space for bug handling and moving things into something more automated as far as handling rosters/lineups/games/league administration etc. This may be the interface, or it may be something else entirely, we'll have to see what needs and wants we have from users after the first season and what we can accomplish in the mean time. Automated Schedule Generation As @Piercewise1 can testify in his work on the NFL schedule, knowing what you're supposed to be seeing doesn't make it less arduous to actually schedule - as there's very little in terms of resources to help with the problem, as sorting out scheduled, especially non-equitable ones, gets exponentially more difficult for each additional team in a league. To that point, I actually managed to do something I haven't seen anywhere else online and create a program that generates a schedule based on the asinine tradition-filled rules the MLB uses for their matchups. As I'm kind of hyped about figuring it out, and because I think there are folks in here that are also interested in creating or managing their own league and eventual schedule generation for other sims, I figured I'd take a walk through how it works. Step 1 First, the program takes in an input. In order to handle all the different permutations asked for, the MLB team file actually includes some additional notes of detail beyond just the regular team attributes - this greatly helps in handling the edge cases and balancing home/away rotations. Each of those rotation values helps to ensure that teams are playing the right home/away matchups against their partners in the division/interleague/etc Step 2 Next, the program takes in each line of this piece of data and runs it through a function that adds values to a list based on the rotation and division information. What it is generating is a string that is unique to that particular series - adding home/away, team abbreviation, and length of series. These are then returned as a list. The return looks something like: Because the formulas and additional information for creating the matchups is correct, it means that the teams that need a matchup to be 3 home games and 4 away games are guaranteed to have their 'partner' team have the right matching string IDs for that matchup. Step 3 This will output 52 values for each team which is stored in a list assigned to each team. Then, since the program has an ID for each series, all it needs to do is pull a string from the first team's list (I randomized and shuffled while doing it to help even out average run time, as we'll see below) and then find the opponent team and yank the corresponding string out from their list of strings. Step 4 Then that pair of strings is saved to the list of 'weekly games' and the two teams are removed from the weekly list of teams that need to be scheduled (30 values, each team listed once) no matter what and remove the specific game string from the dictionary that's holding all team values if the week of games was successfully created. Since the loop is iterating over that same dictionary that is having the two teams removed (copy of the dictionary, to be specific - for durability reasons), you end up making sure you don't double schedule anyone as the program finished in team/2 runs through the loop.............. sometimes. The issue with trying to schedule games is of course that you can have a team in week 49 that needs to play the Cubs twice to end the season, but the Cubs end up booked against the other team they need instead of you! For the longest time I couldn't find a solution to this issue - how can you calculate this problem, and solve it ahead of time with stored values? Maybe some kind of map of indexes for each week that already works and then teams are applied on top of that? Step 5 Well, turns out the best way to solve this problem is to tell the loop to kick rocks and start the week all over again. So basically the program just slams teams together until they all fit in the toybox and if it takes 100 attempts to find the right orientation, then that's what it takes - just like my interns, I don't pay the computer a wage, so no sweat off my back if it takes it 20x as long. Step 6 Then you take the weekly list of games, which has been appended each successful loop, and write it to file and you're done! One issue with running this program is that if you always start with the first team in your dictionary of teams, and if you always start with the same team in the list of potential matchups, then you always run into the same congestion in the same part of the program - and the try/except trick to bodge a solution together will just be an eternal loop. So the teams are shuffled each week to increase the likelihood that teams with small numbers of teams in their 'schedulable' list are early in the process and more likely to find their unscheduled partner successfully. Output This Diary's Poll All this talk of scheduling leaves a couple things in the air. 1. What do folks want out of spring training? Because players don't actually go party in South America during the offseason, then we don't really mechanically need a spring training to get players back in shape. 2. The draft in the MLB is really long and I'm guessing ahead of trying that getting everyone together and engaged for 20 rounds of 20 teams would be prohibitively difficult. However, I'm curious about some other options to bring some pomp and circumstance 3. Right now, I have the games set to run in a row from Tuesday, Wednesday, Thursday, Friday. My thinking there would be that with series simming once per day in the middle of the week, it gives folks more time to fiddle with rosters and execute trades Saturday - Monday. That said, y'all may prefer spacing it out with Tuesday/Thursday/Saturday/ Sunday or doubling up and doing two series each on Tuesday and Friday. Would love to get a sense of what y'all would like and what fits with your availability/access. https://forms.gle/3xoJ1vTJhU82xFbT9 Last Diary's Poll Results Folks overwhelmingly preferred a non-flat revenue model for the sim, so that's what we'll go with moving forward! I mentioned that I'd like to see at least 2/3rds of users prefer an inequal model before opting for it, and we ended up with 3/4ths voting for that, with 2/3rds of those users voting for hybrid. I think that's clear enough to say that the hybrid model is the preferred route and I'll anticipate setting that up for this first season. As with all things in the community - if it ends up going horribly the first year, there's always room to change it, of course. Thanks, alexfall862
  5. I think NE might end up sticking with Lyons and then go best offensive weapon at their pick.
  6. I was about to say "No Richaun Alsadek!!?!" but there he was! Finally he's getting some love Does Taylor Allen produce when Hiram isn't his QB? IMO, No way Longacre is a late 1st
  7. Nice content! I wonder if the Wilfredo experiment is over, and whether Wilfredo imitates the man who stole his starting job and gets moved across the stadium to the Jets locker room if they're looking for a different approach at QB.
  8. I would just like to point out that Mitchell Henderson has the most assists of anyone on this list.
  9. Denver Broncos Week 1 - Saints @Bingo415 Week 2 - @Panthers @Sarge Week 3 - @Commanders @tsweezy
  10. Basically on the back end of calculating it, you'd do both the models, and then halve the values and combine them for each unique team. So a team could get 30th in the Market Model, that's going to be 30th, nothing they can do about being located in, say, Alberta. They get $60m as the bottom revenue slot. A team could be .500 and be 15th in the on-field model. They'd get 150m for their slot. Hybrid would halve both and combine it, so a team with last in market and middle in success on-field, as above, would get (60/2)+(150/2) = 105m for revenue.
  11. A bit of a hat on a hat for 1 post, but yeah that's coming in contract discussions that aren't new rules per say, but real MLB things. I grouped it in mentally with the arbitration process and Super 2s and Rule 5 and such. Though I wouldn't say it's to penalize as much as it's to disincentivize wildly price inflated long-term roster construction. If we go with non-flat revenue distribution, then it'd factor into the lower revenue slots' revenue since luxury tax is given to the 'poors' when paid.
  12. Hey everyone, We are announcing that y'all can now sign up for NFL Preseason games. Here are the rules: - You can only schedule up to three games, one per week - NFL Preseason games are ran in unison alongside CFB's spring games - You can schedule any team you do not play during the season - At least one of the games has to be with the starters that you plan to use in the season. Please coordinate with one of your preseason opponents if they want to play a game with only starters or backups. Preseason games will count towards player's snapcount and progression. Here is the link to the 2024 NFL Schedule for reference. https://docs.google.com/spreadsheets/d/1imAL9lB6mSapoYWwaE063cS7lKWIhF8TEe7oQ159pKA/edit?usp=sharing Please post your matchups as replies and edit as you add and then complete your 3 preseason games in weeks 1, 2 and 3. Template below: Denver Broncos W1 - Vancouver Astronauts @coachname W2 - at Maine Bears @coachname W3 - Cincinnati Chilies @coachname
  13. There's definitely room for that conversation. Or a standard debt forgiveness or something for formerly user teams changing users.
  14. Hi! So you find yourself as a robber baron who's hoarded enough surplus value from your laborer's work product that you can now own a baseball team! Or maybe your paterfamilias did all the hard work and you're just the person to take over for daddy now that you've got your MBA from Dartmouth (finally!) and you're aging out of the short course catamaran scene. Congratulations either way, and now you have a team! Next we need to fill that team with players, and then make those players dance for our amusement in the dirt and grass! In the incoming posts this week, I'll cover some of the league processes and connect to a couple of polls for folks to have input on issues that are matters of taste rather than pragmatism or at all reliant on coding aptitude (of which I have very little, so brace yourselves). To that end, we're going to talk about League Administration and Finances in this post! League Administration Money is exchanged for goods and services, and baseball is no exception. What is largely unique even among the Big 4 American sports (eat shit, soccer) is that baseball has extremely loose salary cap and team spending requirements. This is largely because unlike the the other leagues, the teams historically have been much more independent in how their general gate revenue, expenses, and media contract rights have worked out. The problem for a computer simulation is that you don't actually feel the pain of your organization being personally liable for spending above your revenue or for entering the luxury tax. So there needs to be a system that creates incentives to spend prudently while not distorting the natural pattern of team behavior in the simulation. To that end, I've worked up a set of reasonably simple rules to implement and one proposal that creates a system that allows for users to make choices of their own free will, but also keeps teams from being in 2009 Mets-level financial crisis or teams that are onboarding new users from being unsalvageable and therefore unfun to play. Rule 1. Borrowing more than you earn costs interest and carries over. Issue Cap-less teams can spend an arbitrary amount of money on players, and the only risk is to the owner's pocketbook. For teams in the sim, there's not really a way to abstract that. Solution Except in having your team need to 'borrow' money from their cash holdings to honor expenses above that year's revenue. The way this will work is that revenue is set at the beginning of the offseason, and teams can operate in that budget without impacting their cash holdings. Teams that over or underspend in relation to that threshold will have to 'borrow' their end of year negative balance from the MLB at an interest rate of 5%/year. Rule 2: League-Wide Revenue Inflates Y2Y Issue Ok, so we have a system were you need to be prudent with your budget, but what's to stop a team from just hoarding cash and then blowing it in one offseason? Solution League revenue increases year to year, so as a percentage of salary cap a signed deal is likely to depreciate compared to overall spending. It is in a team's best interest to sign players early as the league revenue inflates by 3.5% per year (average of real MLB rate of revenue growth). All in all, these two rules should create financials like below - where teams that spend big end up losing the opportunity cost in the future of sometimes significant potential salary to keep or cut their debt - while other teams may suffer for years with cheap losing rosters only to blow out the spending for 1-4 years once they have the cash on hand and base roster to fund it - but then deescalating the spend leaves them with 5-6 losing seasons and for just 2-3 years of contention-level spending. Team spends modestly but slightly above revenue for most seasons, debt becomes ~3-5% of payroll cost relatively quickly. Team spends big to begin for just 2 seasons and draws to positive below average budget in year 5, but even with a below average roster spend, debt is still increasing to 5-15% of payroll amount Team goes full Oakland A's/Marlins and banks cash for a short window spending splurge Saving up 5m or so each season only nets a 1-2 season splurge before need to reign in spending again to stay above water What you maniacs are probably going to do Rule 3. Post Arbitration Player Offers Must be Bid League-Wide, and First Post-Arbitration Deals Cannot Go Past 8 Years or Age 33, whichever is triggered first. Issue Now that we have an incentive to sign early, what's to stop a team from signing all their starters to infinitely long deals at current year market prices? This does in fact happen in real life, like the recent trend of teams signing prospects that haven't even debuted (or young rookies) to 10+ year deals for modest amounts of money - basically signing on spec - but I can see a situation in the sim where this ability to lock in players with extensions becomes something that basically freezes roster movement and will create rosters in the future for new users where they're interacting with deals that will probably last their entire tenure in the sim (10-15 seasons) and it becomes a deterrent to engaging with the league. The other side of this is that there's nothing mechanically to represent a players' willingness or understanding of what they may want, such as flexibility to change employers or the ability to go into Unrestricted Free Agency and let teams bid up on a veteran contract. That behavior is not collectively in the interest of owners (why pay later for what I have now and can sign for comparatively cheap since no one can bid against me?), and so would likely not be used unless there was lever against that. Solution Partly this will be solved by the inherent uncertainty and risk built into the player progression system (future dev diary) making teams sending offers something they have to weight a larger amount of inherent risk into, but there are two other aspects. One is the approximate an agent getting a sense of the outstanding market. In order to do that, we'll have a system where using a version of @Piercewise1's contract calculator fit for MLB, players on extension will field blind 'bids' from teams that are binding starting offers if the player enters FA. The team offering an extension must come with 5% of the value of those offers to successfully retain the player without them going to unrestricted free agency first and then having to bid against the previously anonymous offers to retain the player. This is to approximate an agent saying 'hey baby, you got a lot of moola being offered if you wanna move!' (sorry I don't speak agent very well) and getting their player to refuse an extension without going to market first. The second leg of this is that any player post-arbitration looking to sign a deal will not sign a 9+ yr deal, meaning those are for a practical matter banned (I suppose you could offer a long deal to a player coming off their first post-arb contract at age 30 or something, but in most cases it'd be a real bad idea). The goal here is to allow for teams to take care of securing what in their opinion are their worthwhile assets to deals players would actually accept, while not causing either hoarding or malicious FA deals from competitor teams. Rule 4. Player expenses are what they say they are on the tin, no deferred salary agreements or performance incentives. Issue IRL compensation takes all kind of different forms. In baseball, which historically has had one of the strongest players' unions in the country, makes sure that 99.9% of the compensation for baseball players is guaranteed. (playoff and all-star bonuses non-withstanding). Teams have gotten creative with this, as evidenced by the recent Shohei deal, but I think the flexibility to do things like that is not effectively balanced as compared to IRL because while we can calculate contract value against 'real value' factoring in inflation and such, players can't bridge the gap of the deferred money with endorsement deals from Kingery Farms or any other entity in simFBA. Solution You can't be doing that. Rule 5. Teams can hold or send out any amount of salary on a player's contract, but contracts cost money during the season. Issue Given an unlimited salary with no hard cap, a team could find it in their best interest to hoard players specifically to wield as trade assets, with the intention of having a year-end cost that's relatively low (not saying I've ever done this in OOTP or anything...) Solution To counter this, the revenue and expense measure is calculated monthly. Basically the players on your roster cost your team 1/6 of their listed salary each first day of the sim month's 'evaluation' of team's financial position. The interest on the money owed isn't calc'ed until the next league year, but this keeps teams from taking lessons from the American Healthcare system and profiting off being a middleman pass-through of the product folks actually want (players in this case) or essentially buying puts on player assets. These dates will be 1st day of season, and each month following that - a month in the sim is approximated as 3 out of game weeks and contract values accrues at the beginning - so the schedule would be weeks 1, 4, 7, 10, 13, and 16. (more on schedule later, don't think about 3 weeks == a month too hard) Rule 6. The League Can Seize Your Team Issue Even if teams, like some of the examples above, end up wracking up insane negative cash holdings on their year to year balance, it doesn't make any difference to a user. This can lead to situations where teams are spending potentially (TRIGGER WARNING: student debt PTSD) more than their all of their possible surplus revenue on interest and being effectively in an endless spiral. Solution To combat this, if a team has accumulated interest exceeding 15% of their revenue (which a couple of the above example do) - the league 'captures' the team and will prevent them from signing contracts above veteran minimum until they're back under the interest being 15% of the value of their revenue. In crunching some numbers, this still allows teams to have some considerable fun and variety with year to year spending, but any team seized by the league recovers from their death spiral within 1-3 seasons. Revenue Proposal So that's it for rules, now I have a piece of league administration that I think should be something we all decide on, and that's - wtf is revenue? There are 3 systems in my mind that we can use to calculate this: flat, dynamic, fixed, hybrid: Flat All teams make the same amount of revenue each year. I think this is probably the best for encouraging an active sim that welcomes newcomers, as they will have equal financial footing as other teams. Dynamic by Play Team revenue expands and contracts based on on-the-field performance. There will be 30 revenue 'slots' and your rollings average in standings for the last 3 years evaluated at end of the season set your revenue for the following year. The span would be something like bottom revenue 50m, average league revenue 150m, top revenue 300m and the teams in between would be a normalized distribution between those with a standard deviation of ~20% - which is what it is in real life. Fixed by Media Market Teams would be assigned by dice roll or by assigning based on irl values to their revenue slot, which we'd set at probably half the extremity of the Dynamic options, and then that's your revenue from your market. This better captures the media market impact on revenue compared to what product is being put on the field (for example the Mets and Angels can make tons of money but put turds on the field perpetually) Hybrid Combine both media market fixed slots with dynamic on-field revenue. Poll Of those 4 options, hybrid probably best captures the incentives that drive the behavior of real MLB teams, but personally I would endorse the flat model as it protects against endless financial spirals from bad teams being bad - which to be fair is a real thing in the MLB too - and helps to insure users against inheriting disaster teams or being limited by circumstance to have fun and creative teams. I know there are folks in the sim that like approximating real life aspects of a league, and I know there are others that have more of a preference for keeping users on even competitive footing. In the case of salary/revenue, my vote is for leaving approximating MLB finances here and going with flat, but I want y'all to be involved in that choice since it would be a strong departure from real MLB rules. Because those rules would be very powerfully impactful for 2-4 teams on both the positive and negative end of the spectrum, I think we'll set the threshold at 2/3rds. If 2/3rd of users vote to enact either version unequal revenue sharing, we'll explore that further, otherwise we'll stick with flat revenue distribution. Poll Link: https://forms.gle/Jw42R25Kh8mFn9MS9 Thanks, alexfall862
  15. Sign up at the link below: https://forms.gle/7aSkKhXJHa8nJ9wY6
  16. Hi all, First of all, thanks to @Piercewise1 for herding cats ahead of the draft and as always @TuscanSota for the super duper awesome interface which will take it's first NFL spin this offseason. And as always thanks to @Rocketcan for the engine that makes it all possible. We're just days ahead of the simNFL draft, and in preparation for the event, we need your help. Yes, you! The team needs help on the production side, and I also need some help directly because I can't talk for 3 days straight without going (more) insane. So this post is the space I'm using to ask for help! 1. If you're interested in helping with color commentary for a portion or all of the draft, DM me at @alexfall862 and I'll gladly take any helpers. Draft Dates/Times: https://www.simfba.com/topic/6185-2024-nfl-draft-announcement 2. KGreene was assembling some information from users both for fun and for learning more about folks' approach to the sim. Check out posts below and fill them out so KGreene can make (more) great content! https://discord.com/channels/586207409681334522/914917788206891048/1207677367313633330 https://docs.google.com/document/d/1ZT-bm8gRcswdhWbYrKS-poYeLfLnyfIEhWiJZ6OBdwA/edit 3. Please DM me if you are free any of the days of the draft to participate in drop-in or scheduled appearances, and we'll work to keep it quick and also far away from your own picks. Whether you're free for 1 minute or 20 minutes, we'd love to have you on the stream (audio, no worries about camera). 4. If you have an idea for any kind of content you'd love to share or be a part of around the draft, let me know and we'll work it in! Thanks, alexfall862
  17. DEN sends 2025 NO 6th Round Pick 2026 DEN 1st Round Pick DT Leon Payne ILB Dennis Jones FS Jake Campos ARI sends DT Philip Nagel WR Raymond Stelly ILB Jack Ousley 2025 ARI 7th Round Pick
  18. It's got to be Jacksonville, right? I mean they've recruited an entire top 100 defense out of their class this year. Offense and returning players are ok, but man they're gonna make some noise.
  19. Hi y'all. There's enough interest in a print run of the draft book that it's time for the rubber to meet the road. The consensus seems to be a color cover with a black and white interior. The process that needs to happen now is that: I will contact the printer and give the go ahead to actually print and assemble the book. I will then go and pick up the book and mail them out to users. In order to do that, we need to make sure no one is left holding a bag financially, and that we have a way to deliver the books to you. Ideally before the draft. As such, I'll need name, address, and phone (in case there are issues). Please use this google form to sign up for the print run: https://forms.gle/wsuBiaqRENvQsufN9 Filling out this form is a commitment to fund your portion of the purchase of the print run from the printer, likely due within a week from today. Cost will be between $40-$45 or so. Reneging on your commitment is potentially grounds for the entire run to get cancelled and depriving your SimFBA countrymen of the draft book. I'd like to have this filled out before Thursday at midnight in order to make the order and have it fulfilled in a timely fashion. Thanks, alexfall862
  20. I absolutely despise DDS and their half-thought out mechanics, but looking at other games/systems is a good idea. Another out to check out that's close to IRL is the Front Office Football series
  21. I've posted about this quite a bit but just putting it in the feedback thread for posterity. Contracts having accelerating bonuses when moved or cut creates a healthy environment for contract offers and provides needed relevance for the balance between salary and bonus on contracts. If bonuses are moveable with contracts, it makes nearly no functional difference whether a contract is salary or bonus - once a league year progresses. Because the way things are calculated now, the bonus inside of a league year is a net neutral once moved (bonus goes off the books, but equivalent amount is turned into dead cap), so it effectively makes bonuses an irrelevant part of intra-season player movement. This allows teams that are otherwise overcommitted to players on gtd deals to make all kinds of player movements, where the natural irl NFL lifecycle is that having a high percentage of gtd deals also constrains the ability to move players in an outgoing fashion or offer gtd contracts in the future do to potential over-the-cap consequences. Making guaranteed money behave like IRL also makes more sense when you consider what it represents and why the NFL does what they do. It's the money paid upfront as 'bonus' to the player. The rules exist to prevent a team from signing players for only cash and then using the small year to year impact of the contract salary itself to convert a middling player into an attractive trade asset. Owners worked together irl to make this rule that prevents that shenanigan because they have a vested interest in avoiding bonuses in contracts as opposed to paying salary year to year.
×
×
  • Create New...