New to MyFootballNow?  Click here for a tour!

Saturday, July 11, 2020

Weather Data

One aspect of creating a football simulation that is easy to take for granted but quickly becomes challenging is how to create realistic weather patterns for your games.  Especially if you have a league where cities are close together, if you have a major snow storm during a home game in Denver but have a beautiful sunny day in Colorado Springs, that just feels unlikely.  (Actually, growing up in Denver, I do realize it's probably more likely than I am giving it credit)  Actually, it's entirely possible to build an entire league within a single city, and if that is the case, you should expect every game to have similar weather as theoretically they would be being played within a few miles of each other.

So with those restrictions in mind, I didn't want to just randomly generate weather for each game based on typical weather patterns for that location.  No, I needed something more robust than that.  I decided to map each league season to a real, historical year, and pull weather data for the actual day in that year.  For example, year 2046 for League 1 might be mapped to 1995, so a game on September 23 in Denver should look up September 23, 1995, resulting in a cloudy day at 56 degrees with 8mph winds.  Precipitation is taken from the precipitation probability for that day, and then a dice roll is performed to determine whether there is precipitation.  Then, if there is precipitation, the type of precipitation (rain or snow) is determined by the temperature.

MyFootballNow uses the Visual Crossing API to look up the historical weather data for the selected date, which is fantastic because they provide historical weather data from around the world, instead of just the United States (which many services are limited to).  This enables us to produce realistic weather for any city in the world.

Saturday, March 21, 2015

Random MFN Trivia

Did you know...?

  • Player and coach names are generated from US Census data, driven by probabilities of each name actually appearing in the United States population.
  • When testing the random name generator, the 5th name generated was "James Bond."
  • Weather data is not randomly generated, but is using actual historical weather conditions for the location. So if you notice all the teams in the same region experiencing similar inclement weather, it's not a coincidence.  Each season is mapped to a specific year in history and weather data for that location is looked up via Visual Crossing. Each league will use a different year-to-year mapping.
  • League championship game locations are chosen randomly based on the average weather conditions for games played in each city in the league during the months of December and January. A league championship venue will not be repeated for 7 seasons.
  • While many football text simulations generate the overall result of each play by using probabilities based on the players on the field, in MyFootballNow each player in the simulation is autonomous, meaning that they make independent decisions based on information that only they are aware of.
  • A secret "development" simulation environment runs through a full season every two days. This is used to test the long-term effects of changes to the game engine.  Because of the complexity of the simulations, simming a whole season nonstop takes about 13 hours.
  • Each season of each league contains about 1GB of data, including all of the game playback information and the player historical attributes.
  • Early in development, an idea was floated out where the players would not be rated numerically, but the users would be required to actually study game film to make personnel decisions. This clearly would have been too time consuming to play.
  • Another idea in the early development was to simulate the referees on the field in addition to the players.  The plan was to only call penalties if the referees saw it, and also to add the possibility for referees to impact the play. Referees were going to be assigned attributes like players and would be more or less likely to call various penalties based on those attributes. There would have been bad refs and good refs, and they would have moved up and down the chain like players and coaches do.
  • If those scrapped ideas were not enough, one idea was to simulate every second of the real time game and allow watching the players run to and from the sidelines, into huddles, etc. This was dropped when it became apparent that the time it would take and the playback data it would require would be prohibitive.
  • The game engine alone took a full calendar year to bring to a point where it would be acceptable for testing.  Early testing with human testers saw games with scores in the three digits, which obviously meant that there was much to be done.

Monday, March 2, 2015

Short, Medium, and Long - what do they really mean?

The offensive and defensive game plan screens have a seemingly subjective value that you will use to define the conditions for your play calling: Short, Medium, and Long. You may have seen this and wondered why you don't have the ability to specify specific distances ranges (you can, by the way, by setting up game plan rules).  I wanted to take this opportunity to explain how this works and the ways you can control it.

The basis for this categorization is the idea that your team is going to adjust its play calling during the game based on how successful you are.  The very generic description is that a "Medium" distance play is the distance that you would expect to achieve a first down if you used all downs available.  So if you are expect to gain 4 yards per play, first and 12 would be classified as first and medium; second and 8 would be medium; and third and 4 would be medium as well.  Short and long are used on the other sides of this logic.

The game begins where first and 5-15 is medium, second and 4-11 is medium, 3rd and 3-9 is medium, and 4th and 2-7 is medium.  So, for example, 3rd and long would be 3rd and more than 9 yards to go.  But, as the game progresses, if you are averaging more than 5 yards per play, your "short" distance will be lengthened, pushing your "medium"distance to a longer placement, as well as the "long" distance.  Conversely, if you are averaging fewer than 5 yards per play it goes in the other direction.

Now, once you have played your first play you obviously don't want to consider that your average; if you throw an 80-yard touchdown on the first play of the game, you don't want the rest of the game to be stuck in the "short" distance category because it takes so long for that average to come back down. Instead of doing a pure average, your coaches will make the adjustment slowly.  This is based on the "GP Distance Adjustment Speed" in your Misc Gameplan settings.  The default is 5 - and we recommend you leave it there.  You may set it to 0, which will completely disable any changes - leaving short, medium, and long constant throughout your entire game - which will give you more of the predictability you would expect from being able to specifically define these ranges.  If you set it to 100, well, you'll get some craziness in your play calling.  Using the default of 5, however, allows you to very slowly adjust your short, medium, and long ranges.  Let's talk briefly about what this number actually means.

When the game begins, your "average" play distance starts at 5 yards, which as stated above, sets your very first play as a first and medium. Let's also assume that you have your adjustment speed set to the default of 5. If you immediately have a 10-yard gain, the new "average" play distance is 5% of the most recent play plus 95% of the previous "average" - 0.5 + 4.75 = 5.25.  As you see, the "average" grows a small amount toward the most recent play without moving it significantly.  If on the next play you gain another 10 yards, you'll grow a little more - 0.5 + 4.98 = 5.48.  If you then take a sack for 20 yards, the "average" adjusts to 5.206 - 1 = 4.206.  So, if you are moving the ball down the field well you will begin to use more short distance plays, and if you can't get the ball moving at all you'll start to inch into the long distance plays.

The defensive side of the ball reacts to the offense's decision for distance. So when your opponent calls a "short" distance play, your defense will also call a "short" distance play.  So your defense technically is using your opponent's GP Distance Adjustment Speed, only because that is necessary to keep the tables even between the teams.

Hopefully this has cleared up some of the confusion regarding the gameplan distance and what the GP Distance Adjustment Speed means. As always, feel free to ask any questions in the comments here or in the help area of the community forums.

Monday, September 1, 2014

The Nuts and Bolts of Game Planning

One of the great things about the online football management simulation MyFootballNow is the level of control you can have over the decisions your team makes. You can choose to focus just on roster management - signing players, drafting rookies, renegotiating contracts - and let the AI do things like manage your depth chart and game plan.  Or, if you want to get more involved with the day-to-day decisions, you can choose to take on more of the responsibilities - and be rewarded by seeing your creation come to life on game day!

Perhaps the most daunting task in managing your team is the weekly game planning. While you can set your game plan once and forget it, you should at least jump in and tell the AI to update your game plan between each game. Under the menu "My Team->Gameplanning" you will be presented with the game plan control panel. In the upper right corner you'll see a button that says "Load Recommended" - if you click this button you'll get a popup dialog where you can determine what aspects of the game plan you want the AI to set for you. If you leave everything checked, it may take a minute for the processing to complete - but once it's done, you'll have a game plan that is tailored to your strengths vs. your opponent's weaknesses.  But you might want to go a bit further and adjust the game plan yourself; this post will detail what the various options mean, and how to use them.

The first two tabs in the game planning control panel are the offensive and defensive game plan. This section determines what plays are called by your team in any situation during the game.  They are broken down into types of plays.

The top row of buttons define the situation - down and distance. The field graphic below illustrates what quadrant of the field the line of scrimmage is located at. The direction of the offense goes from left to right. The graphical view here illustrates what weight each decision has in the final decision; if you have half of the graph filled with run plays and the other half with pass plays, then you should run 50% of the time.  If your inside run takes up 20% and your outside run takes up 30%, those plays will be called in that frequency. So, each control element determines the probability that you will call a play with that decision based on the down, distance, and field quadrant.

Graphical View vs. Text View

You can switch between the graphical view and the text view; the text view gives you sliders that you can move to adjust the weights of each decision. It is entirely up to you which method you use. You don't have to worry about the sliders summing up to 100%, the game will automatically normalize everything for you.  Just move the sliders so that you get an acceptable balance for what you are wanting to do.  In either case, there is a button beneath each quadrant that allow you to copy a set of decisions to another quadrant and situation, and also a button to view the plays in your active playbook that apply and what each play's probability for being called is.

Offensive Decisions

Your offensive decisions are made up of "Gameplan" and "Personnel." The Gameplan is broken up into 5 options: Inside Run, Outside Run, Short Pass, Medium Pass, and Long Pass.

The Personnel decision decides what offensive personnel you will have on the field. Of the eleven players on offense, five are on the offensive line and are not eligible to catch a pass. Five players are considered eligible receivers, meaning that they are allowed to run downfield to catch a pass.  The eleventh player is the quarterback (who is technically eligible to catch a pass, although at this time there are no plays in the MyFootballNow playbook where a quarterback will receive a pass).  The five eligible receivers are the players that will get subbed in and out depending on the play. They are made up of the Wide Receivers, Tight Ends, and Running Backs (which include the Halfback and Fullback). Your personnel determines what combination of players make up your eligible receiver package. So you might have 5 Wide Receivers as a high option when it's third and long, or have two Tight Ends and two Running Backs in a short yardage situation.  Note that Personnel is not the same as Formation - a Formation is where a player lines up on the field, and while each Formation consists of a single Personnel package, each Personnel package will have many available Formations.  You don't control the Formation for each play, it is automatically assigned via the play.

Defensive Decisions

On the defensive side of the ball, the decisions are a bit more complicated. Because the defense is somewhat reactionary to what the offense does, the first decision is made for you - the defense will deploy personnel to match what the offense sends on the field. So if the offense has extra Wide Receivers, the defense will choose a play that has extra Defensive Backs to match.  Or, if the offense has extra Tight Ends and fewer Wide Receivers, the defense will deploy extra Defensive Linemen.

What you do have control over is the play of the Secondary and the play of the Linebackers.  There are multiple combinations of options here, but the general choices are whether the play is primarily a Zone, Man-to-Man, or Blitz.

Zone vs. Man-to-Man vs. Blitz

Zone coverage means that the player is responsible for an area on the field.  If an eligible receiver enters that area, they will cover him until he leaves his area.  Against a pass play this can be effective as the receiver will not outrun a defender; but it leaves areas of the field open where the receiver can catch the ball between two zones, or if one zone is flooded with two receivers.  A zone defense is good against a running play because the defense shouldn't get drawn out of their area to cover a receiver, leaving it open for the running back to go to.

In a man-to-man defense, the players are assigned an offensive receiver to cover.  They're responsible for this receiver for the entire play.  If they are fast and have good man-to-man coverage skills, they will make it difficult to complete a pass to their man, and may even be successful at intercepting the pass if it's tried.

In a blitz call, a player who is normally in coverage will rush the quarterback, with the idea being that even though a receiver might be left open, the rusher won't be met by an offensive blocker. Calling a blitz can result in a big loss for the offense if successful, but can also result in a big gain if the quarterback is able to throw the ball to the uncovered receiver.  The more familiar an offense is with a blitz, the more likely it will fail, so you will want to use blitzes with caution.

Thursday, August 7, 2014

MyFootballNow Version 0.2 Released!

It's hard to believe that it's been a full year since we publicly released our online pro football management simulator, MyFootballNow.  As we enter the 2014 football season, we are also excited to announce the release of Version 0.2!  As existing leagues complete their current seasons, they will be rolled into the new version after the End of Season stage.

Version 0.2 features a handful of bug fixes, including some game rendering errors.  But the most exciting new feature we are announcing is the ability to create game plan rules!

Game Plan Rules: Amazing control over the plays that are called

So, what can you do with a game plan rule? When you set a rule, it will be considered before your regular game planning options are looked at.  If a play is selected from your rules, that will be the play that you run.

You set conditions based on the down, distance, location on the field, quarter, and score.  If you are setting a rule on defense, you can also set a condition based on the offensive personnel. Then you choose the weight of each play parameter, much the same way that you do in the regular game planning screen.

One of the most obvious uses for game plan rules is going for it on 4th down - until now, the only time your team would go for a 4th down conversion was if they were in hurry up at the end of the game. Now, you can set specific conditions where you want to go for it instead of punting or kicking a field goal.

Once you've created a rule, you can save it (to use in another league), deactivate it (which will prevent it from being used, but retain it in your list), as well as view the plays in your playbook and the probability of each play being chosen based on the rule.

We're excited about this new addition and hope you have fun with it!

Monday, June 16, 2014

Creepers and Busts: Don't throw away your late round picks!

At first glance, draft picks selected beyond the 3rd round or so appear to be serviceable backups at best. It might be tempting to throw these picks away in a trade, or cut any players selected during the later rounds because they don't look like they'll be any kind of an impact with your team. With this post I hope to give you a few tools to find possible gems in these later rounds so that you can get more value out of them.

When you look at a player's attributes, you will see their current and future values.  The future values are not static, in fact they can vary considerably, until the current value catches up to it.  The further away the future value is from the current value, the less certain a player's future value is. So when you draft a player with a rating of 30/90, they most likely will not arrive at 90/90 in the peak of their career. This is no where near certain, however; built into each player is an average rate at which their future value will adjust.  For most, this value is very small, for others, this value may be very large in either direction.

The early round picks will obviously go to players with a high future value.  You're hedging your bets well by doing that, and while it's still possible that a first round player will completely bust, you're doing well to minimize the effects of that bust by giving him further to fall before his current value catches his future value. Later round picks are always cheaper, and as such are a much lower risk if they bust - many don't even have a signing bonus that you'll have to deal with if you end up cutting them. But if you don't pay attention, you may end up cutting a player that could boom into a great player.

Here's the strategy I use to decide what to do with my late round picks. First, unless I just have too many players on my roster, I bring everyone into training camp (you can bring up to 60 players into camp). The training camp stage is a very important stage to reveal how your new rookies will end up looking. After training camp, I go into each of my rookies pages and select the "Progress" tab. There, I look at the red bar and see what it did. If there was a significant jump, the odds are in your favor that this player will boom - I'll put a note on his page (select the "Notes" tab to write notes about any player) and will make a point to keep him around and see what happens. If the red bar has a sharp decline, then he's probably going to bust out - unless he's an early pick, he'll probably be a roster casualty.

This isn't a sure thing, because it is possible for a rookie to have a great camp but still have a downward trend. Over time, you'll be able to monitor his progress and see whether he maintains that upward trend. If he does, you may have just gotten a steal in a late round pick.

Here is an example of a player that I selected in MFN-2 in the 6th round. He landed to me at 33/46. At first glance, this rating wouldn't even be considered for the final roster. It was a simple "best player available" pick, nothing more. After training camp, his rating was 37/49. Not a huge jump, but enough of a positive movement that I decided to keep him around and see what happened over the season. By the end of the season he was rated 42/54.  At the end of his second season, his rating was 55/61 - clearly, his future rating is growing almost as fast as his current rating. At the time of this blog post (the end of his third season), he is at 59/66. Already he's 10 points higher than his predicted max when I drafted him - not bad for a 6th round pick - and it appears that he will continue to improve, because he gap between his current and future values hasn't hardly reduced at all. If you want to look at his page for yourself, here it is.

Is this typical? No, it's not. Most late round picks will be just what you thought they were. But even if your 6th or 7th round pick grows into the 60's and stops, you could have someone that could be in the second position in your depth chart if not a lower-value starter. And the more of these picks you have, the greater your chance of finding a hidden gem. So before you cut those low-rated rookies, check out their trending - you may just have a diamond in the rough.

Friday, May 23, 2014

New game engine features in Version 0.1.2

Version 0.1.2 of MyFootballNow has been released, featuring a number of game engine improvements that make the game sims even more realistic with their results. As leagues conclude their current seasons using the 0.1.1 game engine, they will switch to version 0.1.2 after the End of Season game stage. I wanted to take a moment to detail a little bit about the changes and what they mean.

If you ever wonder what version of the game engine a league uses, simply look at the bottom of the page while you are in the league.  You'll see the game engine version right there.  With the exception of MFN-1 - which is the official beta league where players get to use new features as they are built and are able give input on those features - leagues will remain in their current game engine until the end of the season.  (If you're interested in being on the cutting edge of the game engine, click here to take over a team in MFN-1 now!)

Smaller Tweaks

First I'll briefly discuss a few minor adjustments have been made to some of the game engine logic:

Tipped Ball Action

When a ball is tipped, its flight path is altered based on the proximity to the player and the various directions both are headed. The logic for this has been revamped to deliver more realistic tipped balls.

Field Goals

Long field goals were far too accurate. This has been dialed back. I have written a separate entry about field goals and how they are simulated - click here to read it.  I"ll wait.


Punters are now better at aiming the ball to drop inside the 10 yard line, especially as they are kicking from deeper in their opponent's territory.  There is also a greater range of hang time which is helping the coverage team get into position more easily and increase the number of fair catches, as well as more frequency of punters outkicking their coverage.  The punter's accuracy attribute drives these actions.

Penalty Frequency

The frequency of penalties has been increased in this release. Penalties are almost primarily driven by a player's discipline, with a smaller weight applied to their fatigue and experience. Whenever a penalty event opportunity occurs, a calculation is made to determine whether the player will commit the penalty.

Prior to 0.1.2, the average penalties per game were half or less of what occurs in real life. This has been increased to more better mimic a real football game.

Contract Negotiation

We have increased the values used by players when making contract requests. This should make it a little harder to retain a full roster of really good players without being forced to let some of them go to free agency, which should also in turn make early free agency a little bit more interesting.

Passing Game Updates

With version 0.1.2, the passing game has received a complete overhaul. The way that defensive coverage works and the way the quarterback throws the ball has been updated to have more realism.

Quarterback Progression Updates

The quarterback will now favor his #1 WR above the rest of his receiving options. This will result in wide receivers getting a greater share of targets.  The #2 WR will be next in line, followed by the TE and RB, and so on.  There is a good deal of randomness still in the progression order, but the changes should eliminate the Tight Ends being the leading receivers as they were in version 0.1.1.

Man-to-man Coverage

A significant improvement has been made to the coverage logic for defensive backs. When a player is covering a receiver using man-to-man, the game now considers their man-to-man skill against the receiver's route running skill.  If the receiver has a better route running skill than the defender's man-to-man attribute, the defender will have a hard time staying with the player. On the other hand, if the scales tilt in favor of the defender, the receiver will have a difficult time getting open.

Currently the #1 CB always plays on the same side as the #1 WR.  It might seem like a good idea to place your #1 WR lower in the depth chart to get your #1 WR to go against your opponent's #2 CB, but keep in mind that by doing that you will reduce the number of targets to your best WR, even though he may get more open than he would otherwise.

Quarterback Passing

The last significant update to the passing game happens when the quarterback actually throws the ball.  Previously, every pass was aimed at the optimal location for the receiver to make the catch, with the only consideration of the coverage influencing whether or not to throw the ball. In version 0.1.2, the quarterback will now choose a location to throw the ball to that he considers to be the safest location based on the surrounding coverage while still considering placing it in a catchable location, which may reduce the ability for the receiver to catch the ball or even have the quarterback intentionally throw the ball to an uncatchable location. A quarterback with less experience will have a higher probability of not taking a certain defender into consideration when making this decision as well.  Also, once the aim spot is chosen, the quarterback's accuracy attribute will influence how far away from that spot the ball actually travels.

Running Game Updates

We've been working hard to find a good balance to get rushing yardage more in keeping with real life. We've made it more difficult to keep your #1 running back on the field - if you overwork him, he will become more fatigued and even more injury prone.  Keeping the default values for fatigue should see your #2 running back with more snaps than he had previously.

Defensive Game Plan Updates

Another major update to the game engine falls on the defensive side of the ball.  We have added a new game planning feature to key on the run, key on the pass, or play a neutral defense.  The neutral defense will be the default if you don't make any adjustments to your game plan, and operates identically to the previous game engine version.

You will find the Run/Pass button next to the Linebacker's button on the Defensive Gameplan screen. It operates in the same manner as all the other game plan screens, with both a graphical interface as well as a slider interface.  At the bottom of each quadrant is your opponent's tendencies over the current and previous season.

When your defense calls a play, the run/pass/neutral emphasis is appended to the regular play call, so it does not affect the actual play that you choose.  The recommendation will always choose a neutral value plus either a run or a pass value, but not both; you can certainly have both settings for a particular situation if you would prefer, however.

Run-Focused Defense

When your defense plays in run-focused mode, players in zone coverage will cheat up toward the line of scrimmage, and players heading into the backfield will head directly toward the running back.  If the quarterback performs a play action fake, your defense will always bite on the fake.  Your defensive backs in man-to-man coverage will not cover their receivers as effectively.

Pass-Focused Defense

In a pass-focused defense, the players in zone coverage will do the opposite as in a run-focused defense: they will play further away from the line of scrimmage.  The focus in this defense is more to prevent the long pass as opposed to stopping shorter plays; your defense will probably give up more short pass plays in this defense, but should be better at stopping the long pass.  Players in man-to-man coverage will perform better in this situation than they will in a neutral or run defense.  The defensive line and blitzers will not bite on a play action fake.

Keep the feedback coming!

Thanks to everyone who has been playing and especially to those of you who have provided invaluable feedback as we have been working on the game over the last several months.  We value your feedback, so please continue to offer your suggestions, areas of confusion or frustration, and general feedback on the forums.