Foros - Stratos

Stratos => Principiantes => Mensaje iniciado por: hivegu en 23 de Febrero de 2017, 12:38:28 AM

Título: Duda sobre como funciona un software
Publicado por: hivegu en 23 de Febrero de 2017, 12:38:28 AM
Hola, tengo unas preguntas cuya respuesta podria ser obvia para algunos pero por mas que busco y leo no he podido encontrar la respuesta. Si alguien tambien me pudiera recomendar algun libro ya sea en español o ingles se lo agradeceria.
Mis dudas son las siguientes:
1) ¿como hacen para que en los juegos o softwares controlen por ejemplo varias criaturas al mismo tiempo?¿con varios hilos o hay otra manera?
2) ¿como se hace para que un software o juego quede en espera de una accion?¿con un ciclo refresh hasta que se interrumpe por algun evento?

En general mis dudas son respecto a como un software realiza varias acciones al mismo tiempo o tienen un modo de "stand by" a la espera de una accion del usuario mientra el resto del software sigue trabajando.
Título: Re:Duda sobre como funciona un software
Publicado por: IDandT en 23 de Febrero de 2017, 04:36:20 PM
Lo de controlar varias criaturas es mas sencillo de lo que podria parece, y no tiene que ver, en principio con paralelizar tareas.

Por regla general y simplificando mucho, el bucle principal de un videojuego se compone de:

while(1)
{
  input();
  update():
  render();
}

Es decir en cada ciclo, primero se leen los controles (mouse, teclado, gamepad lo que sea).

Después en función de esa entrada y de la lógica del propio juego (patrones de IA, animaciones etc) se actualizan todas las entidades. Aquí se incluye calcular colisiones, interacciones entre los personajes, disparos etc. y se actualizan su estado resultante, posición, animación etc.

Y por ultimo se renderiza el frame actual con el estado en que ha quedado cada entidad.

Esto, en un juego que vaya a 60fps, se hace 60 veces cada segundo.

Evidentemente si metes 100.000 monstruos simultáneos, es posible que la maquina sea incapaz de poder actualizar y pintar todo 60 veces por segundo.

Asi si tu tienes 2 monstruos, en el paso 2 lo que harias es actualizar el estado de cada uno  de ellos en funcion de su IA, o si calculas que el jugador le ha impactado a uno, reducirías su vida, cambiarías su animación a la de "golpeado" etc. y finalmente eso se veria reflejado en el render.

Como ves no hace falta hacer nada con hilos, basta con actualizar el estado de todas las entidades en el ciclo actual y finalmente pintar el resultado.

Lo de poner el juego en espera, entiendo que te refieres a dejarlo en pausa, una forma seria dejar de ejecutar los pasos 2 y 3 (update y render) hasta que se produzca determinada situacion, por ejemplo que en el input se pulse una tecla determinada.

Aqui ya depende lo que se quiera hacer.


Sobre lo ultimo que comentas, es una pregunta demasiado generica.
Título: Re:Duda sobre como funciona un software
Publicado por: hivegu en 23 de Febrero de 2017, 05:22:56 PM
Gracias por responder. Lo de poner el juego en stand by no era sobre pausar, pero la respuesta que me diste sobre como funcionan los juego me resuelve esa duda