Java - Juego de rol 2D - 70 Escalado corregido

preview_player
Показать описание
En este episodio del curso de programación de un juego de rol 2D en Java, arreglaremos el escalado para que funcione siempre bien y también os enseñaré algunos posibles problemas de rendimiento en Linux y a qué se deben.

#programacion #juegos

¿QUIERES APOYAR EL CANAL ECONÓMICAMENTE?

¡HABLEMOS!
Рекомендации по теме
Комментарии
Автор

Gracias luego revisare el capitulo 11
Muy buenos videos y todo muy claro sigue asi
Saludos.

adrianpascuallopez
Автор

+Oscar Ballart Vllella

Sí que es normal, es una máxima que siempre se cumple: más píxeles a dibujar = más esfuerzo = menos rendimiento.

¿Has visto alguna vez los debates sobre por qué Xbox One y PS4 no pueden alcanzar 1080p a 60 FPS? ¿Has visto como los juegos tienen que funcionar a 1080p y 30  FPS o 900 p y 60 FPS? Pues este es precisamente el mismo problema, a más píxeles dibujados, menor velocidad.

En mi opinión, añadir más enemigos no debería bajar mucho el rendimiento, ten en cuenta que lo más costoso es dibujar todo el mapa (es lo más grande y lo que más sprites tiene). Los enemigos, en cambio, tendrán un costo similar al que tuvo el hecho de dibujar nuestro personaje (¿recuerdas cuanto fue? ¿llegó siquiera a 2 o 3 FPS?).

Además, ten en cuenta algunas cosas mas: esto es full HD (más resolución no creo que vaya a usar nadie por ahora), Camtasia estaba grabando (puedes asumir que lo normal no es 400 si no 450) y además, mi tarjeta gráfica puede clasificarse a estas alturas como algo antiguo dentro del full HD. Una tarjeta más antigua no tendría full HD en primer lugar, así que también haría menos esfuerzo ya que dibujaría a menos resolución.

En cualquier caso, todavía tenemos que hacer algunas optimizaciones más (no dibujar fuera del canvas, tal vez añadir algún menú que nos permita dibujar menos parte del mapa, etc.).

Es difícil predecir nada hasta tener el 80% o 90% de los elementos gráficos en pantalla (enemigos, cosas animadas, interfaz gráfica completa, etc.). Si entonces el rendimiento no es muy bueno, eso significa que habremos alcanzado el límite razonable de funcionamiento de Java. La única forma de ir más rápido sería usar Open GL para que se encargue de todos los gráficos y Java sólo se ocupe de la lógica, aunque eso será tema de otra serie más adelante :)

JavaDevOne
Автор

Muy buenas tus explicaciones, buen video!

SirKrotusDevOp
Автор

ayuda estoy por capitulo 18 y pulsando las teclas no se menea la pantalla es decir no anda y en la consola si me sale como que pulso la tecla gracias por estos videos un saludo

adrianpascuallopez
Автор

Una pregunta se podrían usar vectores en vez de mapas de bits y si se puede mejoraría el rendimiento.

benderrobot
Автор

umm
lo que no se si es normal es esa merma en fps que te produce por escalar
si antes tenias + de 2000 fps y ahora tienes unos 400 tenemos un factor 5 respecto a 2000.

Ya no quiero pensar cuando metas enemigos moviendose, u otras cosas lo que va a mermar

No se si hubiese sido mejor plantearse el juego para resoluciones a pantalla completa y posteriormente ir bajando a escalas menores.

NOTA: admito que siempre tendremos mermas pero tanta por un simple escalado? si hubiesemos tenido mermas por meter mas cosas moviendose se entiende pero por el escalado...

Juer!! con el escalado de narices...

quizas con librerias el escalado lo hacen de otra manera sin tanta merma no se...


por otra parte creo java internamente no transforma a double la division de enteros por mucho que lo metas en una variable double, luego si solo casteas el denominador creo que tambien funcionaria.

oscarbavi
Автор

como pondremos personajes mayores de 32 px en el codigo supongamos que te aburriste de los 32 px y decides crear personaje grandotes de 64 o 100 px o un mapa mas grande de 20 * 20 que modificaremos en el codigo
TODO o solo una parte

ignaciomendez
Автор

Lo de convertir a double es muy simple, para Java esos valores son int y los int no pueden dividir y dar decimales como resultado

electrodiux-pbh
Автор

Hola JavaDev. Estoy intentando avanzar con mi juego pero para poder seguir necesito saber como "seleccionar" una unidad en el juego, teniendo en cuenta que mi juego es de estrategia en tiempo real. Quisiera saber si sabes como hacerlo y me pudieras dar una idea de como lograrlo.  

lautarodellagiovanna