Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub Soccer Match Simulator #1

Open
lufzle opened this issue Jun 24, 2017 · 0 comments
Open

GitHub Soccer Match Simulator #1

lufzle opened this issue Jun 24, 2017 · 0 comments

Comments

@lufzle
Copy link
Member

lufzle commented Jun 24, 2017

Un juego que simula partidos de fútbol entre "equipos GitHub".

  • Cada Org de GitHub es un club de fútbol;
  • Los miembros de la Org son los jugadores de ese club;
  • Adicionalmente, un club podría tener varios equipos (los diferentes Teams dentro de la Org).

Los partidos se simulan computando diferentes datos que entrega la API de GitHub (por ejemplo la cantidad de repos de la Org y/o de cada miembro de la Org; la actividad en esos repos; los commits, issues, PRs, stars, stack, frecuencia de los commits...). De ahí obtenemos el resultado del partido (y en un futuro otros eventos que pudieron haber pasado a lo largo del partido: cambios, lesiones, amarillas/rojas, etc...)

Para empezar con el scope más sencillo posible y a alto nivel, imagino una fn

(partido) => resultado

// ejemplo
({ local: 'auth0', visitante: 'zeit' }) => { local: 2, visitante: 3 }

Se obtiene la info de las orgs en la API de GitHub, y con esta data (+ uno o más factores ajenos para agregar cierta randomness) se debería terminar produciendo un resultado del partido.

Me parece que lo más importante en primera instancia es pensar cómo usar esa data. Es la posta que va a determinar si al fin del día la app es divertida o no. Qué criterio podríamos usar? Qué determina el resultado del partido, o la "performance" que tiene cada equipo durante el partido?

Una primera opción super sencilla, es que el resultado del partido se defina a partir de la suma de todas las estrellas de todos los repos de cada Org. Es decir: si la org A tiene 3 repos y entre ellos suma 200 estrellas, y la org B tiene 9 repos y entre ellos suma 50 estrellas, el ganador del partido será la org A (+/- randomness factor). Reconozco que es muy, muy básico e ingenuo pero suena bien para un MVP.

A partir de ahí hay muchísimas maneras en las que se podría ir elaborándolo más, data de GitHub hay mucha para jugar; por ejemplo podemos agregar una segunda entidad que sean los Jugadores, entonces podríamos obtener los miembros de cada org y (de nuevo usando la métrica más sencilla) sumamos las stars de todos los repos de cada miembro. Así cada jugador tendría su "puntaje" o "XP" (usando un criterio naif en que las stars equivalen a XP) y la XP de todos los jugadores conforman el rank del equipo. Y usamos ese rank como otro factor que determine cómo le va al equipo en el partido.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant