elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Resuelto] FPS videojuegos, y System.nanoTime()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] FPS videojuegos, y System.nanoTime()  (Leído 2,523 veces)
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
[Resuelto] FPS videojuegos, y System.nanoTime()
« en: 21 Enero 2015, 22:58 pm »

Hola gente, verán esta duda me surgió a raíz de ver algunos códigos por Internet. Antes aclarar entiendo que son los FPS, y se que "podría regularlos" utilizando:

Código
  1. Thread.sleep(1000/fps);

Pero no creo que eso sea correcto, ya que seria como obligar a que se repinte a una velocidad que quizas no sea posible para el sistema, buscando códigos y eso me encontré con la utilización de:

Código
  1. System.nanoTime();

Pero no se muy bien de que trata este método específicamente, se que tiene relación con el tiempo y todo pero cual seria su uso en el tema de los FPS?

Este seria el código de forma resumida, las variables son numéricas (long o int)

Código
  1. fps= 60;
  2. targetTime = 1000 / fps;
  3.  
  4. while(running){
  5.     start = System.nanoTime();
  6.     //argumento, update() y esas cosas
  7.     elapsed = System.nanoTime() - start;
  8.     wait = targetTime - elapsed / 1000000
  9.     Thread.sleep(wait);
  10. }

PD: Ya busque por google y ya leí la API


« Última modificación: 22 Enero 2015, 02:46 am por Nac-ho » En línea

3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: [PREGUNTA] FPS videojuegos, y System.nanoTime()
« Respuesta #1 en: 22 Enero 2015, 02:45 am »

He releído y releído el código, y creo que llegue a una solución al problema si por alguien le interesa, (esta solución la concluí por mera lógica no por la funcionalidad real de System.nanoTime()) Espero que si alguien tiene la respuesta real, confirme o niegue lo que pasteare acá.

Código
  1. fps= 60; // Declaro los FPS esperados
  2. targetTime = 1000 / fps; // Al dividir los fps por 1000 obtendré el tiempo necesario de espera por cada repintado sin tener en cuenta el tiempo que se demora en repintar.
  3.  
  4. while(running){
  5.     start = System.nanoTime(); // obtengo el momento en el que el juego empieza a actualizar el cuadro
  6.     //argumento, update() y esas cosas
  7.     elapsed = System.nanoTime() - start; // obtengo el momento en que el juego termina de actualizar el cuadro
  8.     wait = targetTime - elapsed / 1000000 // dividiendo elapsed por 1000000 igualo el tiempo de nanosegundos a milisegundos, luego lo resto a targetTime para obtener el tiempo real de FPS
  9.     Thread.sleep(wait);
  10. }
  11.  

Si alguien entiende de esto podria confirmar mi deduccion? aunque supongo que estoy en lo correcto. y que System.nanoTime() es utilizado para tener el tiempo que se demora el programa en realizar X tareas, retando el punto de fin al punto de inicio.


En línea

Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: [Resuelto] FPS videojuegos, y System.nanoTime()
« Respuesta #2 en: 30 Enero 2015, 18:05 pm »

Se entiende que duermes mientras sobra tiempo  ;D

Lo que tocaria es probar tu código en un juego simple, en distintas pcs una antigua y otra actual, deberia correr a la misma velocidad.

Saludos.
En línea

Un error se comete al equivocarse.
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: [Resuelto] FPS videojuegos, y System.nanoTime()
« Respuesta #3 en: 30 Enero 2015, 18:07 pm »

No le veo el caso, es lógico. XD, simplemente me complique buscando info sobre como hacia las cosas System.nanoTime().

gracias por la respuesta y por cierto no entendí lo que dijiste

Se entiende que duermes mientras sobra tiempo  ;D
En línea

Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: [Resuelto] FPS videojuegos, y System.nanoTime()
« Respuesta #4 en: 3 Febrero 2015, 15:08 pm »

Es lo que hace tu codigo, cálcula cuanto tiempo falta para refrescar el juego, según los FPS, y se duerma si hay tiempo  ;D

Seria bueno postear un ejemplo básico sobre el tema.

Saludos.
En línea

Un error se comete al equivocarse.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
copiar a system o system 32 « 1 2 3 4 »
Programación Visual Basic
vivachapas 31 12,245 Último mensaje 25 Mayo 2007, 19:06 pm
por vivachapas
Alternatica a conio.h y system("cls"); y system("clear"); ?
Programación C/C++
flacc 5 9,244 Último mensaje 17 Diciembre 2010, 16:55 pm
por flacc
{RESUELTO} ¿Cómo redimensiono un jPanel? {RESUELTO} « 1 2 »
Java
|Miguel| 12 10,641 Último mensaje 13 Febrero 2012, 15:11 pm
por |Miguel|
[RESUELTO] No consigo limpiar un JTable... [RESUELTO]
Java
|Miguel| 2 29,288 Último mensaje 12 Febrero 2018, 09:06 am
por shoni_isra
System.Xml.Linq y System.Core « 1 2 »
.NET (C#, VB.NET, ASP)
SγиtαxEяяoя 10 7,142 Último mensaje 23 Junio 2013, 23:50 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines