fe-martinez / tpAlgo3

2 stars 1 forks source link

Etapa 3 #8

Closed smaraggi closed 1 year ago

smaraggi commented 1 year ago

Hola, les abro el issue para la entrega de la Etapa 3. Habíamos quedado para entregar este lunes, ¿cómo vienen con eso?

Espero que bien. Cualquier cosa me avisan mañana lunes. Saludos.

fe-martinez commented 1 year ago

Hola Santiago, todo bien, el codigo ya lo subimos, estaba haciendo un ultimo ajuste pero ya estaria.

fe-martinez commented 1 year ago

Ahora si, esta subido completamente. Solo 2 menciones, se agrego un link al readme con la documentacion que fuimos armando y si se quiere probar rapidamente la funcionalidad completa del juego, es util iniciar una nueva partida en el modo muy muy facil.

smaraggi commented 1 year ago

Hola, me parece que dejaron archivos binarios afuera del repositorio, yo bajé el proyecto y lo puedo compilar, pero me sale error de que no encuentra un archivo wav de sonido. Te copio el stack trace de la excepción:

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at javafx.graphics@19/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465)
    at javafx.graphics@19/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1081)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics@19/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901)
    at javafx.graphics@19/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
    at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: MediaException: MEDIA_UNAVAILABLE : F:\Eclipse-Workspace\tpAlgo3\..\motherloadV2\src\rsc\Sonidos\Taladro.wav (El sistema no puede encontrar la ruta especificada)
    at javafx.media@19/javafx.scene.media.AudioClip.<init>(AudioClip.java:87)
    at algo3.motherloadV2/tp.Sonidos.cargarSonidos(Sonidos.java:68)
    at algo3.motherloadV2/vistas.App.start(App.java:21)
    at javafx.graphics@19/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
    at javafx.graphics@19/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
    at javafx.graphics@19/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at javafx.graphics@19/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
    at javafx.graphics@19/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics@19/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics@19/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
    ... 1 more
Exception running application vistas.App

Fíjense del stack trace en esta línea: Workspace\tpAlgo3..\motherloadV2\src\rsc\Sonidos\Taladro.wav (El sistema no puede encontrar la ruta especificada) at javafx.media@19/javafx.scene.media.AudioClip.(AudioClip.java:87)

Me parece que la ruta apunta a un directorio que sube de nivel del proyecto y luego se va afuera del repo (mi dir de repo sería Workspace/tpAlgo3 ... pero como ves en la ruta hace ..\ como que se sale de la ruta del proyecto un nivel para arriba y busca el archivo afuera.

Tendrían que incluir el wav en el repo y redirigir la carpeta para que apunte a donde lo vayas a guardar, subir los cambios y avisarme para que lo baje.

Además me están fallando 4 tests, ¿probablemente por el mismo motivo? Arréglenlos también porfa. Si les andan todos los tests, probablemente sea por este asunto de que hay cosas afuera del directorio del proyecto.

Quedo atento a su reentrega lo antes posible. Viene muy bien el TP, esto debe ser una cuestión menor en la que no deberíamos enredarnos mucho.

claram97 commented 1 year ago

Hola profe, ahí hicimos unos arreglos con los que debería funcionar todo bien. Si el problema persiste, lo más probable es que sea por un problema de la ruta, veo que ahí está Workspace\tpAlgo3\motherloadV2. En mi compu por lo menos está directamente como Workspace\motherloadV2 y ahí dentro están src, target y .settings. De otro modo por lo menos a mí no me deja importarlo bien. De todos modos arreglamos la ruta de los Sonidos y los test también. Estamos al pendiente.

smaraggi commented 1 year ago

Hola, ahí me anduvo todo perfectamente. Están perfectos los tests, la aplicación anda de 10. Si, les adelanté la nota, está aprobado con 10, felicitaciones, ¡muy buen trabajo!

Ahora vamos a los comentarios pulibles, que no son tema de la materia, por eso los dejo como para algo a posteriori.

El movimiento por saltos hace difícil la jugabilidad. De todas formas resolvieron con elegancia que el juego sea interactivo en tiempo real.

Lo que habitualmente se hace es determinar un tiempo de cuadros (frames) de unos pocos milisegundos, levantar todos los eventos de hardware (input de usuario) y convertirlos en acciones sobre el modelo. Para esto el vehículo tendría que poder moverse de a saltos mucho menores que de un bloque entero. Lo que se hace en general cuando un actor (personaje, vehículo, etc.) tiene movimientos "infinitamente pequeños" respecto de unidades significativas para la lógica del juego, es dejar que el movimiento sea "libre" (sin saltos) y que la lógica del juego considere que está en un bloque u otro según el que tenga su centro más cercano al centro del actor (vehículo, personaje, etc.; en caso de empate entre 2 floats, poco probable, se podría definir por ejemplo que se mantiene en el anterior, un simple <= al comparar).

Para esto que les comento, no obstante, suele ser necesario manejar algo de concurrencia/paralelismo y sincronización, dependiendo el caso, que no son temas que se vean en la materia, por eso no se evalúa. Les adelanto para cuando los vean en otras materias, como concurrencia I y II (no se si ahora siga habiendo dos materias, las había cuando yo las hice).

Van a ver también que son temas muy abordados en los motores de juegos, como Unity o Unreal Engine, eso se llama el ciclo del juego, es básicamente un while corriendo toda la lógica de la aplicación de a saltos de tiempos predeterminados entre cuadros de unos pocos milisegundos, que dan los famosos FPS!! (Frames per second).

Saludos y nos les doy más la lata, excelente trabajo chicos. Me encantó la historia de la princesa, jaja. Saludos.

fe-martinez commented 1 year ago

Muchas gracias por la corrección y por las respuestas detalladas cuando tuvimos alguna duda. Fue un lindo proyecto, estamos contentos con lo que fuimos logrando.

claram97 commented 1 year ago

Hola profe!! Perdón, leí el mensaje y entré en modo vacaciones y no apareci más. Mil gracias por toda la ayuda, la verdad nos gustó mucho hacer el tp :) Me alegra que le haya gustado la historia, que no se noten las claras referencias al principito :p Lo último que resta es el tema de la nota final, nosotros nos anotamos al final del 19, habría que avisarle a Corsi o ya estaría?

smaraggi commented 1 year ago

Hola, yo solamente puedo darles la nota del TP. La nota final de la materia surge de promediar los parciales y el TP, que serían la cursada, y luego el Final. Ahí el que les puede responder consultas es Diego Corsi, que es el Jefe de Cátedra.

Por nada, fue mi trabajo. Fue un gusto colaborarles en lo que se pudo y verlos progresar en el desarrollo del TP.

El fruto final más valioso del TP no es el producto final, que siempre puede terminar con detalles mejorables, sino la experiencia que desarrollan ustedes en el proceso y la renovada confianza que vayan adquiriendo en sus capacidades técnicas. No hay como saber que lo que uno no sabe, ¡lo puede averiguar!

Saludos y ¡éxitos en la carrera!