Inspiration
We got inspired by every rage fueled debate that happened everytime we watched a football game. We can't really pit 2 different players from different seasons against each other...or can we?
What it does
A user can build a squad of 5 players from different years (specifically between 2015 and 2024) and face off against another squad. A user can also build their squad automatically (at the cost of not using your favourite players). Players can be in or out of their preferred positions in any possible formation and we get to see them duel over 90 seconds.
How we built it
FootballSimSim is a Typescript monorepo with separate packages for the frontend, backend, shared contracts and the simulation engine for each game that gets played. The frontend uses React and Vite with some custom SVGs and our games get displayed in 2.5D. The backend uses Fastify and Node.js. Our dataset was extracted from Kaggle and was cleaned to deduplicate player records and normalize player positions. Player attributes, positioning, stamina, shot distance and angle influence individual player actions.
Challenges we ran into
- Finding a clean dataset to work with when ideating initially
- Making the animation somewhat realistic
- Merge conflicts (initially)
Accomplishments that we're proud of
We're proud of our idea. We initially wanted to create a prediction model using detailed player statistics but we pivoted to using FIFA player data to simulate the same but add a game element to our project. In making it a game, smooth animation, accessibility and an almost identical football streaming experience (if the players all looked the same and they all run weird) became imperative. Specifically, the custom SVG pitch is something we can all be proud of because we began with that as a stretch goal.
What we learned
Something specific would be goalkeeper animations. The coordination of movement with match outcomes was something interesting.
What's next for FootballSimSim
We could bridge this same concept to the NBA, NFL, or any sport that has its own popular video game with a significant player dataset to use. Seems to make sense to constantly compare players because what would we do in the off season?
Built With
- fastify
- node.js
- react
- typescript
- vite

Log in or sign up for Devpost to join the conversation.