30/07/2010, 10:30
|
| 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 =) |