Tiene muchos leaks de memoria (hay mucho uso de new y poco de delete). Corran CppCheck y fijense de utilizar smart pointers donde sea conveniente utilizar el heap (sobre todo en jerarquías de herencia). Hay hilos no joineados. No hay graceful shutdown de los hilos.
Performance
100% de uso de CPU ya que tienen un busy wait en el ClientManager (marcado en las correcciones) y cuando la partida comienza, tienen un loop infinito en Game que no hace sleep.
Compilación / Instalación
Recuerden agregar en la documentación un manual de instalación el cual incluye las dependencias que tiene su programa, y cómo instalarlas. Todo el proceso desde que se clona el repositorio hasta que se puede empezar a jugar.
El juego no compila.
Falta la instalación. No les recomendamos que pongan foco en la instalación, pero les dejamos un comentario sobre como lo tendrían que encarar si lo quieren hacer en un futuro.
Para la instalación la idea sería que podamos ejecutar en cualquier path de la pc:
rocket-league-server <port>
rocket-league-client <host> <port>
Y se ejecuten los programas. Lo que se suele hacer es agregar los ejecutables rocket-league-client y rocket-league-server en el path /usr/bin. Su directorio imágenes y todos los assets en /var/rocket-league y para el archivo de configuración del servidor pueden tener un archivo por defecto en /etc/rocket-league. Si uno quiere levantar el server con otro archivo de configuración, pasa por parámetro de línea de comandos el path a este archivo. Y ahí se toma este archivo pasado y no el que está por defecto.
La idea sería que dentro del build puedan hacer make install y se instale esto que les comentamos. Para esto usarán el comando install de cmake.
Cliente - Servidor
Está el esquema de hilos implementado según lo charlado en las reuniones. Lo que falta definir es el protocolo.
Features
Saltos
La implementación del salto tiene una dirección hardcodeada normal al centro de masa. Deberían hacer un jump en sentido del vector dirección del auto.
Turbo
El nitro se está aplicando en una dirección hardcodeada paralela al piso, debería aplicarse en dirección del sentido del auto. Además, no hay un control de la cantidad actual de nitro del jugador sino que por el momento se tiene nitro infinito.
Disparos
Faltan todos los disparos.
Flip Shot: No está codeado.
Red Shot: No está codeado.
Purple Shot: No está codeado.
Gold Shot: No está codeado.
Partidas
Faltan los partidos con un tiempo.
Estadísticas: no está codeado.
Goles
Falta repetición del gol.
Falta animación y sonido al meter un gol.
Falta explosión de la pelota al hacer un gol.
Colisiones
Falta una lógica de colisiones contra la pelota para definir los disparos a realizar.
Interfaz gráfica
Falta una interfaz gráfica.
Animaciones
No están implementadas las animaciones.
Los autos no tienen animación.
No hay humo que se desprende al activar el nitro.
Falta giro de la pelota en movimiento.
Sonidos
No están implementados los sonidos.
Falta el sonido del salto.
Falta sonido al meter un gol.
Falta sonido al golpear la pelota.
Falta sonido al chocar
Música ambiente
Falta música de ambiente.
Configuración
Falta el archivo configuración con todos los parámetros configurables: velocidad, altura de salto, fuerza gravitatoria, elasticidad de la pelota, tiempo del juego, etc.
Tests
Hay tests del protocolo y parcialmente de la creación, unión y listado de partidas.
Correcciones Grupo 3
Link Enunciado:
https://docs.google.com/document/d/13HWzr9iz3U8Akidfm6OIL6yx8d52rJGqbu7EiwSfHqA/edit
Corregimos sobre el commit 2012c362dd8acd0b215f99678507e2f42e57a2fb.
Código
Los comentarios respecto al código estan en la branch correcciones.
Documentación
Falta toda la documentación. Ver: https://taller-de-programacion.github.io/documentacion-requerida
UX / Jugabilidad
No se pudo probar el juego.
Robustez / Valgrind
Tiene muchos leaks de memoria (hay mucho uso de new y poco de delete). Corran CppCheck y fijense de utilizar smart pointers donde sea conveniente utilizar el heap (sobre todo en jerarquías de herencia). Hay hilos no joineados. No hay graceful shutdown de los hilos.
Performance
100% de uso de CPU ya que tienen un busy wait en el ClientManager (marcado en las correcciones) y cuando la partida comienza, tienen un loop infinito en Game que no hace sleep.
Compilación / Instalación
Recuerden agregar en la documentación un manual de instalación el cual incluye las dependencias que tiene su programa, y cómo instalarlas. Todo el proceso desde que se clona el repositorio hasta que se puede empezar a jugar.
El juego no compila. Falta la instalación. No les recomendamos que pongan foco en la instalación, pero les dejamos un comentario sobre como lo tendrían que encarar si lo quieren hacer en un futuro.
Para la instalación la idea sería que podamos ejecutar en cualquier path de la pc:
Y se ejecuten los programas. Lo que se suele hacer es agregar los ejecutables
rocket-league-client
yrocket-league-server
en el path /usr/bin. Su directorio imágenes y todos los assets en /var/rocket-league y para el archivo de configuración del servidor pueden tener un archivo por defecto en /etc/rocket-league. Si uno quiere levantar el server con otro archivo de configuración, pasa por parámetro de línea de comandos el path a este archivo. Y ahí se toma este archivo pasado y no el que está por defecto. La idea sería que dentro del build puedan hacermake install
y se instale esto que les comentamos. Para esto usarán el comandoinstall
de cmake.Cliente - Servidor
Está el esquema de hilos implementado según lo charlado en las reuniones. Lo que falta definir es el protocolo.
Features
Saltos
La implementación del salto tiene una dirección hardcodeada normal al centro de masa. Deberían hacer un jump en sentido del vector dirección del auto.
Turbo
El nitro se está aplicando en una dirección hardcodeada paralela al piso, debería aplicarse en dirección del sentido del auto. Además, no hay un control de la cantidad actual de nitro del jugador sino que por el momento se tiene nitro infinito.
Disparos
Faltan todos los disparos.
Partidas
Goles
Colisiones
Falta una lógica de colisiones contra la pelota para definir los disparos a realizar.
Interfaz gráfica
Falta una interfaz gráfica.
Animaciones
No están implementadas las animaciones.
Sonidos
No están implementados los sonidos.
Música ambiente
Falta música de ambiente.
Configuración
Falta el archivo configuración con todos los parámetros configurables: velocidad, altura de salto, fuerza gravitatoria, elasticidad de la pelota, tiempo del juego, etc.
Tests
Hay tests del protocolo y parcialmente de la creación, unión y listado de partidas.
Extras
.gitmodules!