Juego de estrategia en php

Tengo un proyecto PHP de juego estratégico, tipo de guerra, y necesito que cada jugador a través de páginas dinámicas haga sus cambios, que destinen recursos o acciones, pero también necesito un proceso global que se vaya encargando de actualizar los datos de todos los usuarios, por ejemplo si mando un ataque al enemigo, ese proceso calcula si hay victoria o no la hay, cuantas bajas para cada uno, cuanto se ha ganado y cuanto se ha perdido, de modo que al conectarse los jugadores vean su progreso que no es otra cosa que un lote de datos previamente procedos por el proceso global. Se me ocurre que debería haber modo de crear un proceso que este en constante ejecución en el servidor, detectando las situaciones y actuando en consecuencia cada una POR cantidad de segundos, pero todo lo que he ido viendo de PHP siempre fue scripts que se insertan en las páginas y se ejecutan solo cuando alguien accede. Yo necesito algo que se instancie y quede corriendo en el servidor aunque nadie entre al sitio. ¿Cómo se puede implementar?

1 respuesta

Respuesta
1
Creo que yo usaría una base de datos para guardar la información, los avancs de cada usuario se guardarían como si fuera un tablero y después cunado alguien entre simplemente ve el tablero y observa tdo lo que esta pasando, inclusive pued servir por si alguien por alguna razón deja el juego (se le cae el internet, se cierra su navegador, etc) podría retomar en donde se hayan guardado los datos.
¿Sabes algo de bases de datos?
Si no es así te puedo ayudar con las bases ded atos.
Si, voy a guardar todo en base de datos MySQL, por suerte tengo los conocimientos para usarlo. El tema es el procesamiento de toda la información, que no se cuando hacerlo. Si entiendo bien me estas sugiriendo que actualice los datos cuando se los vaya a necesitar. No estoy seguro de que vaya a darme resultado hacerlo de esa manera, me gustaría estratificarlo más. Te doy un ejemplo. Cuando el usuario entra ve su estado y tiene opciones de menu para realizar acciones como ataques, o tomar cierta actitud defensiva para estar más protegido. Entonces esta claro que las páginas de usuario contendrán lo necesario para mostrar estados y almacenar cambios o acciones que tendrán efecto en un plazo determinado pero no inmediato. Por ejemplo atacar al enemigo podría llevar 3 horas y entonces yo no tengo que actualizar los datos del enemigo y del usuario hasta pasadas las tres horas más el tiempo que dura la batalla. Pero el problema es que a lo mejor ni el usuario atacante ni el que es atacado entran al juego en una semana, y el servidor tiene que haber calculado los resultados de los ataques a las 3 horas de la acción. Lo cual me lleva a pensar que si bien los scripts que ponga en las páginas de usuarios van a usarse para actualizar datos o mostrar estados unicamente, el servidor tiene que estar ejecutando constantemente un código que haga las actualizaciones cuando sean necesarias. Un script que se ejecute por ejemplo una vez por minuto, y cuando lleguen las tres horas este script debería detectar el ataque y actualizar los datos para guardar la nueva situación de los dos que intervienen. Ese proceso tiene que correr independientemente de lo que hagan los usuarios. De este modo me aseguro una arquitectura en capas bien estratificada y mantenible. El problema es que no tengo ni la menor idea de como hacer que en un servidor de PHP se este ejecutando un pedazo de código cada POR segundos sin importar si se conectan usuarios o no. Necesitaría saber como implementar eso genéricamente por que luego de terminar el desarrollo aquí en mi casa tendría que buscar un web hosting para subirlo y que funcione ahí, dado que en casa jamas voy a tener la misma velocidad de conexión que tendría el hosting, que es necesaria para atender los miles de usuarios que, si tengo suerte, van a jugar. La idea es vender luego publicidad en este sitio. Y el juego es una idea bastante original que no he visto hasta ahora en ningún lado. ¿Sabes cómo hacer eso del código que se ejecute solo cada por ejemplo 10 segundos?
Creo entender lo que deseas hacer y php no es lo que necesitas.. al menos no como lo estas planteando, pues php es un lenguaje interpretado que lo que hace es traducir código en etiquetas html para que sean vistas por cualquier navegaror.
Lo que necesitas para poder hacer lo que deseas es tener una aplicación en background que se este ejecutando en el servidor, pero si piensas contratar un hosting, dudo mucho que te permitan instalar una aplcacion de este tipo.
Ahora si entiendo bien, usaras el web para que los ususrios jueguen, por lo tanto requieres que el usuario se conecte mediante un navegador a tu site para comenzar. Me dices que deseas un proceso que se este ejecutando por ejemplo cada 10 seg, ¿pero yo te pregunto? ¿Para qué? Si por ejemplo (esperemos que estono suceda) ningún usuariose conecta en 1 día, o en algunas horas, tendrás al servidor realizando cálculos sin tener el beneficio de que nadie los use, en cambio si este miemo proceso lo realizas cuando algún usuario se coencta, entones estarás seguro que siempre el usuario vera lo más actualizado (pues cuando el se conecto se realizo el proceso necesario) aunque hayan pasado varios días sin actulaizacion, lo único que tendrías que agregar en tus bases de datos con un campo fecha-hora, y así con este campo puedes realizar tus cálculos.
Si, entiendo. El problema es que la actividad de cada usuario estará encadenada a la de algún otro, hasta alcanzar la totalidad de los usuarios. Imaginate entonces, cuando se conecte Pepe y tenga que actualizar sus datos entonces voy a estar obligado a actualizar los de Pedro, y por lo tanto los de Juan, y así se encadenan todos, y el usuario tal vez tenga que esperar un buen rato a que el servidor calcule todo. Si fueran muchos miles de usuarios tendría un gran problema. Yo tendría que hacer unos cálculos en papel para averiguar si es viable. Entiendo bien tu planteo y te agradezco mucho las explicaciones. Ahora se que le tengo que dar un nuevo enfoque al problema. Luego te voy a mandar alguna otra consulta sobre otras cuestiones ya que veo que eres idóneo y pusiste buena voluntad. Gracias nuevamente!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas