NOTICE: This version of the AFS is OUTDATED. Please look for the new version at thekillernacho.blogspot.com under the "American Football Simulator" label.
Introduction
Introduction
The primary function of this application is to simulate American football games. It was originally a project for my Programming 2 class, but has since been updated and worked on by myself to improve and add features over time. Now, I will release it publicly (DOWNLOAD at bottom of page!) and explain it for all to enjoy. This distribution comes with all 32 NFL teams pre-made and ready to simulate. However, this program also includes a team and player editor to create your own teams or to update the included teams. This document will run you through everything you need to know about this program.
Starting the Application
To start the application, double-click on the “RunMe.jar” file of the main application folder. Jar files are executable java files, like Exes. You can create a shortcut to it to place on your desktop if you wish. An icon file is provided in the main folder. The application should run on Windows and Mac OSX alike, although it is only tested for Windows.
New Team
The first button in the File menu is the “New Team” button. Use this button if you want to create your own custom team from scratch. By default, a new team has no name, stadium, or head coach selected and every player is completely blank and ready to be edited. More will be explained how to edit teams and players later in this document.
New Random Team
If you do not want to create your team from scratch, you can use this option to have the American Football Simulator generate a random team. Everything about the team will be completely random, including team name, stadium, coaching, and players.
Save Team
When you are finished editing a team and would like to save the changes, click on this button. A box will appear and ask you where you would like to save the team. Overwriting teams is possible if you have only edited a team.
Load Team
Loading teams is very simple. A box will appear asking you which team you would like to load. After you select the team you would like to load, the main screen will update with your loaded team’s information displayed. A team logo will be displayed if there is a .gif file in the “logo” folder with the same name as the team’s Team Name. If no such file is found, a “No Image Provided” logo will be used. Also, a team may have a 22x95 endzone file located in the “endzone” folder which will appear when a game is Watched or Played. Like the logo, it must have the same name as the Team's name.
Teams that come with the Distribution are located in the “NFL2009”, “NFL2010”, “NFL Europe”, and “Fun Teams” folders of the main distribution. NFL rosters for the 2009 season are no longer supported, and belong to older versions of the application. They can still be used in games and be edited, but may lack certain features that are newer to the application. The teams found in the “Fun Teams” folder are fun teams built by myself meant to be somewhat-comical, or testing purposes. Enjoy them if you wish.
Exit
Straight forward, this button will exit the program.
Game Mode
This is how you simulate games between two teams. When the button is pressed, a dialog will appear, allowing you to set the Away Team, Home Team, and settings for the game. As a general setting, there are three distinct Stadium types, which can be changed through the Stadium drop-down. If Stadium is set to “Normal” (the default), the game will be played in the Home Team's stadium and the home team will get a slight homefield advantage. Setting the Stadium type to “No Advantage” will still play the game in the stadium of the Home Team, but will negate homefield advantage. Setting the Stadium type to “Neutral Field” will play the game at a neutral site, a Dome, so there will be no weather nor homefield advantage. To load a team, press the “Load Team” button under the team you want to load. One can also load a random team by hitting the “Randomize Team” button. This will set the team to a random NFL team from the 2010 season. Finally, you may set the Player setting for each Team. For each team, there are three settings available: “Simulate”, “Watch”, and “Play”.
Simulate
If both teams are set to “Simulate”, the game will be completely simulated and only the results will be displayed. Use this setting if you want to Simulate a game quickly to get the results.
Watch
If one or both teams are set to “Watch”, you will be able to watch the game play-by-play. You can still not impact the game, but if you want a longer, more detailed, and entertaining simulation, this is the option you want.
Play
It is also possible to “Play” a game. Teams set to “Play” will put the player in the position of the team's coach. Players can either play against a Computer (if the other Team is set to Simulate or Watch) or against another Human (if the other team is also set to Play). This turns the American Simulator into an intense and more complicated match of Rock-Paper-Scissors. There are several plays available, both offensive and defensive, each with strengths and weaknesses depending on the opponent's play selection. Use this setting if you want to play out a game.
Game Center
After a game is Simulated, Played, or Watched, the Game Center dialog appears summarizing the game. It is pretty self-explanatory, highlighting the final score, Game MVP, scoring summary, and statlines for each player involved in the game. There are two buttons at the bottom of the Game Center window, “Get Last Game” and “Play 100 Times”. The “Get Last Game” button will open the Gamelog file, a document with greater detail about the game, including a complete play-by-play. The “Play 100 Times” button is a nice feature that allows you to play the last match-up 100 times, and then gives you the number of times each team won out of those 100 (and score averages). This is nice when you want to know the probability of a game's outcome instead of a single simulation.
Season Mode
The Simulator is also capable of simulating entire seasons. When Season Mode is selected, a Dialog appears prompting you to enter the Season's settings. The season has many different settings one can choose from, and each of them do different things. The first option is “Select Schedule”. From this drop down, you can select the kind of schedule you would like. The Simulator is programmed with two schedules, the 2010 NFL season and the 2009 NFL season. There is also an option for a “Random Schedule” which will generate a fairly-random NFL schedule.
The next option is “Select Teams”. If this is set to “Default Teams”, the teams in the season will be dependent on the Schedule. For the 2010 Schedule and random Schedule, the 2010 NFL teams will be loaded. For the 2009 Schedule, the 2009 NFL teams will be loaded. There is also an option for “Custom Teams”, which will allow you to upload 32 teams to replace the Default teams. You do not have to replace all of the teams - hitting Cancel on one or more of the teams will prompt the Default team to load instead. “Shuffled Teams” is an option to shuffle the players around in the 2010 NFL teams. This is an interesting game mode since each team will be populated by random players from the NFL. Finally, the “Random Teams” option will generate Random teams (from the teams “New Random Team” function) in place of all 32 teams.
Teams used in a Season are always saved in the “SeasonTeams” folder so they may be viewed during or at the conclusion of a Season.
Next, you can select whether or not you wish to save each game. If the “Save all games?” drop down is set to “Save All Games”, all gamelogs will be recorded and saved in the “LastSeason” folder. If it is set to “Don't save games”, the games will not be saved. One can also find the season's last AFC and NFC Pro Bowl teams in this folder.
The “Select Simulation or Play” drop down will allow you to select whether or not you would like the season simulated, or played through. Like Games, Seasons can be simulated instantly or you may Watch (or Play) them. If set to “Simulate, no GUI”, the season will be simulated instantly and a document will load with the results. If set to “Simulate, GUI”, you will be able to watch the season unfold in the Season Dialog. If set to “Play”, you can control one or more teams in the season.
If the season mode is set to “Play”, you can also select the number of players, or number of teams you want under Human control. You can select 1 to all 32 teams as Human-controlled.
Season Dialog
If you choose to Watch or Play a season, you will be brought to the Season Dialog. On the main screen, you will see the current standings and there will be Buttons to take you to more detailed stats. To simulate a week, one simply has to hit the “Next Week” button. If one or more teams playing that week are under Human control, the Simulator will prompt the user for each game involving a Human player whether they want the game Simulated, Watched, or Played. All games with two Computer-controlled players are Simulated silently.
If one clicks the “View Scores” button, one can look at previous Weeks and see the scores for that week. To view scores for a week, use the drop down to select the week then hit the “Fetch Scores” button. If the season mode is set to “Save all games”, the Game ID will also be displayed. If one wants to view the Gamelog of a saved game, put the Game ID in the “Game ID” text field and hit “Get Game”. This will load the Gamelog document of that game. To return to the main Season Dialog screen, hit the “Back” button.
The “View Stats” button will allow you to view detailed season stats of Players and Teams. Select the stat or position you would like to see stats for in the Drop-down menu, then hit “Fetch Stats”. If a position is selected, all players of that position will be displayed ranked by their Pro Bowl voting status. At the end of the season, players who are top-ranked in their positions in their respective conferences will be selected for the Pro Bowl. If a stat is selected, then each team's stat for that stat will be shown, and they will be ranked and ordered accordingly.
The “View Team” button will show the stats relevant to a single team, as well as the team's Offensive and Defensive MVPs. To view statistics for a team, select the team you would like to view from the Drop-down and click the “Fetch Team” button.
The “Quit Season” button will Quit the Season Dialog, and simulate the rest of the season silently, in the background.
At the end of Week 17, teams will be selected to be in the Playoffs. At the end of the Playoffs, the last two teams remaining will play in the Super Bowl, followed by the Pro Bowl which is made up of All-Star players of that season. After the Pro Bowl, the season concludes.
Edit Roster
Here, it will prompt you with a list of all players in the loaded team. Select one and then the Player Editor window will appear. Within the Player Editor window, you can edit all of the player’s attributes. Player attributes directly affect how the player performs.
Throw Power is only important to Quarterbacks, and determines how long the Quarterback can throw. Quarterbacks with a high Throw Power will usually complete longer passes. Throw Accuracy is another stat that are only important to Quarterbacks. Throw Accuracy directly affects the chance that the Quarterback throws a completed ball to a receiver. Speed is an important stat to all Quarterbacks, Runningbacks, Fullbacks, Tight Ends, Wide Receivers, and Kick Returners. Speed represents break-away speed, the chance to make a big play. Quarterbacks with a high Speed are scramblers, who can use their legs to buy time to make a completion and avoid sacks or scramble for a short to medium gain. Break Tackle is important for Runningbacks and Fullbacks to evade tacklers and raise their minimum gain potential and can help them break tackles to get a chance at a break-away. Catching is an important stat for Runningbacks, Fullbacks, Tight Ends, and Wide Receivers and affects the chance for the player to catch the ball if the ball comes his way. Blocking is an important stat for Fullbacks and Tight Ends, and affects how well overall the player can block for running and passing plays. It also affects Special Teams, and determines how well the Special Teams can block for the Kick/Punt returner. Run Blocking and Pass Blocking are a stat specifically for the Offensive Line, and determine how well the Offensive Line blocks in those conditions. Concentration is an important stat for every offensive player except Offensive Linemen, and affects many things including their ability to hold onto the football and avoid fumbles. Quarterbacks with a high Concentration are also less prone to Interceptions, and a Wide Receiver's ability to run routes and get open is dependent on Concentration. Pass Rushing is for Defensive linemen and Linebackers, and represents how well they can get after the quarterback to generate pressure and sacks. Run Defense is only for the defensive line, and determines how well they can defend against the run. Coverage is for every defensive player except Defensive Line, but is most important for Cornerbacks and Safeties, and determines how well the player can cover receivers. It is also important for Special Teams, and determines how well the Special teams can cover Kicks and Punts and prevent the Returner from getting big gains. Tackling determines the defensive player's ability to make tackles on the ballcarrier. It also increases the players' chance of generating fumbles. Kick Power and Kick Accuracy are limited to Kickers and Punters. For Kickers, Kick Power helps in Kick offs and making long Field Goals while Kick Accuracy helps in all Field Goals. For punters, Kick Power increases base punt length while Kick Accuracy affects how well the ball is kicked, whether it is returnable, and whether or not the Punter can pin the offense within the 20 yard line.
On the top of the Player Editor, the player's current “Natural Position” is displayed, which simply shows the player's best position at the moment. There are also buttons to “Export Player” (save player) and “Import Player” (load player) to save Players to a file and use them on other teams. This is useful, for example, if a player is traded to a different team, you don’t have to re-create the player, rather save and load him to a different team. Current player Free Agents can be found in the “Player" folder. The other two buttons, save and cancel, are self-explanatory.
Edit Team
This button allows you to edit all of the other attributes in the team. There are several options that are editable in this window. In the north section, one can edit the Team's basic properties including Name, Abbreviation (a shortened name, usually three or less characters), and Actual Record for the season. In addition, there are buttons to change the team's two colors. When the button is clicked, a dialog appears allowing you to select a new color. There are also options to select the team's Kick Returner from a drop-down menu, and edit Practice Squad players (back-ups who aren't on the main roster). At the moment, Practice Squad players are not functional in-game, but can be useful to store players.
Coaching Options
The left panel includes all Coaching options. Here, you can edit the team's Head Coach, Offensive Coordinator, and Defensive Coordinator. Like players, a Coach Editor will appear. At the moment, position coaching does not have a function in-game, however their overall ratings appear on the top like Players. Like with Players, there is also an option to Export and Import coaches. Current coach free agents can be found in the “Coaches” folder. The final five options, “Run Chance”, “Running Back 1 Chance”, “Field Goal Try”, “Offensive Aggression” and “Defensive Aggression” do affect gameplay. Head coaches determine “Field Goal Try”, and influence every other category. Offensive coordinators influence “Run Chance”, “Running Back 1 Chance” and “Offensive Aggression”, while the Defensive coordinator influences “Defensive Aggression”.
“Run Chance” is pretty self explanatory. Given a normal play (some situations warrant for a better chance for passing or running), the “Run Chance” determines how often the team will decide to do a running play as opposed to a passing play. Likewise, the “Running Back 1 Chance” will determine the chance that the team's first running back will run the ball as opposed to the team's second running back. Fullbacks also run the ball occasionally on certain situations.
“Field Goal Try” will determine the yard line in which Head coaches will go for a Field goal instead of punting. Keep in mind, the input value is the yard line, not field goal length. Field Goal length is usually 15 yards + the yard line. So if one attempts a Field Goal from the 50-yard line, it is actually a 65 yard Field Goal, which is very long.
“Offensive Aggression” determines the team's aggressiveness on offense. A high value is an aggressive offense, while a low value is a conservative one. There are several things aggression affects. Aggressive offenses will go for the big play more often, meaning they will have more big-plays than conservative offenses. However, the big-play potential does come with a price. Aggressive offenses are more prone to turnovers, plays that result in losses (like sacks), and complete less passes. Team aggression should be modified to compliment on the team's roster well. Likewise, “Defensive Aggression” determines the team's aggressiveness on defense. Aggressive defenses are more prone to giving up the big play, but are more likely to obtain turnovers and make plays that result in losses (like sacks). Conservative defenses will focus on not giving up big plays and putting emphasis and be better at stopping completions.
Stadium Options
On the right panel, you may edit your team's stadium, starting with the Stadium Name. Next, you can select a stadium type. The types of stadiums one can choose from is “Grass”, “Turf”, and “Dome”. “Dome” stadiums are special because they are unaffected by weather. In addition, the noise in Dome stadiums can provide the home team with additional advantage. However, dome teams have a harder time dealing with negative weather conditions when on the road. “Grass” and “Turf” stadiums are affected by weather. The only difference between the two is “Grass” stadiums are more affected by precipitation than “Turf” stadiums. The next options are usually determined by where the stadium is located, and what kind of weather conditions are common for that area. While it is possible for any kind of weather in an outdoor stadium, these attributes make certain weather conditions more common.
“Temperature” determines the likely temperature when games are played in the outdoor stadium. Stadiums with a high value will have a better chance of warm conditions, stadiums with a low value will have a better chance of cool conditions. Teams will always be disadvantaged when playing in temperatures they are not accustomed to. “Precipitation” determines the humidity and liklihood of precipitation. Stadiums with a high value are likely to be humid with high chances of precipitation. Stadiums with a low value are likely to have dry air and low chances of precipitation. Teams will always be disadvantaged when playing in humidity they are not accustomed to. Further, the type of precipitation when it exists will affect both teams negatively depending on the type of precipitation (rain, snow, hail, thunderstorms, etc). Finally, “Wind” determines the likelihood for the conditions to be windy. A high value will generate a greater chance of windy conditions, while a low value will not be windy often. Wind affects both teams, and can impact kicking and sometimes passing negatively. A lot of teams use their stadiums and weather conditions to their advantage to generate further home-field advantages.
Further Updates
This application is currently in rapid development. Its version is listed in Year.Distribution format. This distribution's version is Year 2010, Distribution 2 (2010.2). Updates to the application and roster updates can be found on the programmer's blog (where you likely found this application), http://thekillernacho.blogspot.com/.
The application is open-source, but since it was not originally intended to be, some of the code may appear messy and uncommented. This is in the process of being improved. Nevertheless, anyone is free to use or edit the code as they wish. The project is Open-Source. However, please credit Timothy J. Sharpe and link the original blog in any application you distribute that uses or modifies code found in this application.
If you find any bugs, have any have suggestions how the application can be improved, have any questions or comments regarding the application, or you would like to contribute code or Team roster files (whether it is a better version of an NFL roster, or other leagues like the NCAA, CFL, etc.) please email me at timothyjsharpe@yahoo.com. I will try to respond to all emails in a reasonable amount of time, but keep in mind I am primarily a full-time student so please be patient.
These are features currently being developed and should appear in future versions:
- Applet support, so a reduced version of the application can be played on online browsers.
- Multiplayer support over TCP/IP.
- Multiplayer support via online server with ladder system.
- Franchise Mode, in which the player plays in the position of the team's Owner, and makes personnel/coaching changes between seasons and attempts to build a dynasty.
- Player Mode, a mode similar to Franchise mode except the player plays in position of a Player coming out in the Draft.
Looking forward to checking this out. Is there support for a draft? Thanks for sharing the code.
ReplyDelete