NBA Game Simulator: Final Thoughts
Shortcomings and Discussion of the NBA Game Simulator Shiny App
Shortcomings of the current simulation are that there isn’t situational game logic (the clutch-time plays of attempting a two point shot, a three point shot, or purposefully fouling are all good examples), and that although it accounts for a team’s general gameplan, it doesn’t account for specific matchups (like the Celtics taking more three point shots when they played against Antetokounmpo and the Bucks). That being said, because the specific gameplan isn’t included, it allows for more versatility in comparing teams from different eras of basketball. Basketball game plan has evolved drastically over the years, and I would argue that by not including team specialization, it allows for older teams (from even 40 years ago) with fewer available stats to still be included.
The biggest shortcoming of the Shiny App is that it doesn’t include error messages if there is a typo in a team name, or missing stats when trying to use a team from before the three point line was introduced. Instead, the page crashes and forces the user to restart without any warning. The other big downside of the Shiny App hosting is that there is limited run-time. There are only 24 hours per month allowed of run time on the free plan, and if I were to share this web app with others (on a forum or blog), I would run the risk that if it got any decent attention, it would use up the monthly allowance of time and shut off. This is also unfortunate, but not much can be done.
Overall, the simulator built in this project is a strong, accurate, team simulator. That being said, I also believe that it opens the door for many different types of future simulations. Being able to compare teams is great, but the current setup requires the manual creation of dataframes to create teams of random players. A good next step would be to build an addition to the Shiny App that allows the user to pick full rosters of players from any era, and simulate the teams playing each other. Another great simulation use case would be automatically simulating a full season schedule, rather than one game at a time. Although they would require more Shiny App coding, these additions would build on the current simulator’s strengths.