Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/07/2010, 10:30
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 8 meses
Puntos: 406
Respuesta: ¿Cómo se hace que el servidor trabaje sin estar tu pidiendoselo?

Vamos, pongamos un ejemplo de un juego de batallas en donde tienes que crear 'x' unidad, lo cual por unidad tardas 'y' tiempo, entonces 'x * y = Z', ahora tienes los 'Z' segundos que se supone van a tardar en crearse las 'x' unidades, en tu motor del juego tienes que tener una tabla donde le vas agregando las unidades que el usuario esta construllendo, por ejemplo la tabla unidades_usuarios y esta tendría por ejemplo 4 campos

Tabla: unidades_usuarios
id
idUser
idUnit
units

Aparte de esta abría que tener una tabla temporal para dar la sensación que el juego sigue trabajando aunque no estemos conectados

Tabla: unidades_temporal
id
idUser
idUnit
units
finalTime

Ahora, cuando el usuario manda a construir las unidades ingresas los campos en la tabla "unidades_temporal", ahora para saber a que hora/día terminan de "construir" las unidades tomamos la fecha actual en UNIX (en php con time()) y sumamos el resultado con la anterior ecuación (x * y = z) ahora tendriamos en UNIX TIME la fecha final de creación (time() + (x * y)) , ahora cada vez que el usuario ingrese a su cuenta o a la sección que tu creas conveniente checas la tabla "unidades_temporal" y verificas los registros que ya alla pasado el "x" tiempo necesario (where finalTime < time()) y obtienes las unidades que se van a crear (el campo units.unidades_temporal) y las agregas a la tabla final (units.unidades_usuarios)

Lo que te comento es una forma de las formas en que se puede hacer (así es como yo lo hago) pero seguro hay mas opciones y te evitas de darle mas trabajo del necesario al servidor, al menos no cuando el jugador no este jugando, no se si me entiendas
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)