jjm3x3 / AmazingRaceFantasy

https://amazing-race-fantasy.vercel.app
1 stars 2 forks source link

Weekly Head-to-head Matchups #108

Open wcjoslin opened 1 month ago

wcjoslin commented 1 month ago

Context: Current scoring format is decided upon team rankings made at the beginning of the season, with no other interaction with the show or other players. This leads to a single time use of the fantasy site, with no reason to visit it until the end of the season.

Goal: Create a weekly (or leg-by-leg) matchup system, where users predict which teams will perform the best. Users will predict what teams will finish the week/leg fastest, gaining points based on placement.

Description:

  1. Team selection: Users are matched up against each other randomly for every leg. Users select 3 teams each week they think will perform the best (order does not matter). The user who gains the most points that week wins the matchup, not affected by players in other matchups.

  2. Points: Points are gained as an inverse of team placements. e.g. out of 10 teams, 1st place gets 10 points, 10th place gets 1 point. Sum of scores gained by selected teams is the user's score for that week.

  3. User ranking: Head-to-head record will be tracked, with best record at the end of the season being declared the winner.

Notes: This system will get harder nearing the actual end of the race, since the elimination of teams means less to choose from. Possible solutions:

  1. End the matchup system before the end of the race (perhaps when there are 3 teams to choose from, since every team would be the same.
  2. Create "playoffs" where users are only allowed to select one team in the head-to-head, winning team prevails.
  3. Cut down on total teams a user can select from at the beginning of the season in a pseudo-draft system. e.g. User chooses 6 teams that is their pool for the whole season to choose each week.
jjm3x3 commented 1 month ago

I love this idea! I am thinking this will take quite a bit of work 😅

Of course that is not a reason not to do it, but in order to get this done in a way that is fun, engaging and maintainable may require this to be broken down even further in order to actually execute with any degree of predictability.

Off the top of my head in order to get regular user interaction I think we need to properly have a db integrated. Technically we could do some hacky git thing, but I think that will be more work than it is worth. Open to feedback on this for sure. Next Assuming we do have a db, we will still likely want to have concrete users, as in we need to support the concept of a user that is a known quantity to the site. Currently we are relying solely relying on a single input per season with nothing other than contestants being able to recognize their participation over multiple leagues by recognizing their name across leagues. Since user input is only asked for once per league/season we don't yet have this need today, but we should consider it.

From there I have several other lines of thought that I am tempted to go down trying to explore what all the trade offs are for each one, but first I am wondering what you think about what I have said so far. And if that looks good to you, I wonder if we start breaking out some of those things into their own issues. 🤔

wcjoslin commented 1 month ago

I am thinking this will take quite a bit of work Oh ya, this "idea" is essentially recreating current fantasy sports sites. This wouldn't even fit under a single Jira Epic. I can split out different issues for what pieces need to be made to fulfill this wish.

Re: Database: Yes to database, no to hacky git thing. I think this will be essential for tracking users, teams, results, etc. as the season goes along. This will also be necessary to have different attributions per week, such as the points system.

Reeeeee: Users: I think it is important to have the concept of a user for general tracking of the league. But, I think the whole login & ongoing user experience is the way more complicated part. But I have minimal experience in user apps, so I don't really know what goes into that.

I can break this out into (hopefully) doable tasks if you want. Things I think that could use definition:

  1. User
  2. Team
  3. Stats
  4. Season