Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Duda sobre como funciona un software

Iniciado por hivegu, 23 de Febrero de 2017, 12:38:28 AM

« anterior - próximo »

hivegu

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.

IDandT

#1
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.

hivegu

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






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.