Ir al contenido


Foto

Como hacer el motor de un juego de navegador


  • Por favor identifícate para responder
5 respuestas en este tema

#1 flash-back

flash-back

    Advanced Member

  • Miembros
  • PipPipPip
  • 62 mensajes

Escrito 21 octubre 2012 - 12:10

Saludos, como algunos ya sabrán estoy creando un juego de navegador. El motor lo que debe hacer es cosas como ampliar los edificios cuyo tiempo de ampliación haya pasado, actualizar la cantidad de recursos, actualizar los ataques... He preguntado en un montón de sitios y en unos me han dicho que use un cronjob cada segundo o cada 2 segundo, otros me han dicho que eso de un cronjob por segundo ni se me ocurra porque se va a cargar demasiado el servidor. Otros me han dicho que esto no es posible con PHP y hay que usar Comet.

¿Cuál es la forma correcta y eficiente de hacerlo? ¿Por qué?

Saludos y gracias de antemano.
  • 0

#2 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 22 octubre 2012 - 01:05

Buenas,

La verdad es que de este tema no tengo ni idea, lo único que sé es que los núcleos de algunos juegos web están hechos en C. PHP lo dejan sólo para la parte gráfica.

Si eso te sirve.....

Nos leemos
  • 0

#3 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 22 octubre 2012 - 06:24

Puedes mirar Unity 3d tiene una versión libre suficiente para hacer bastantes cosas (yo he hecho algunas sencillas), este motor te permite programar juegos para Windows, Mac, Web, iOS, Android, Wii, PS3 and Xbox 360.

Para los juegos web, el jugador debe descargar e instalar un pequeño archivo y listo.

Saludos
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 22 octubre 2012 - 08:02

En este sentido, si deseas construir el motor de un juego al más puro estilo arcade, php no será la solución. El motor gráfico podrías construirlo en Java, o Flash, u otras tecnologías de manejo de gráficos existentes. Prueba a buscar algo ya desarrollado en sourceforge para que te des una mejor idea del tema....
  • 0

#5 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 22 octubre 2012 - 08:31

Dependiendo del tipo de juego. Construct2 es una herramienta permite aprovechar las cualidades del HTML5 para desarrollar juegos de una manera muy simple. http://www.scirra.com/construct2

Puede que sirva.


Saludos!
  • 0

#6 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 22 octubre 2012 - 11:09

Todos los motor de juegos para html5 los tienes listados aquí: http://mobilegameeng...l5/game_engines

Otra cosa es que tu lo que necesitas es algo que haga funcionar la parte "servidora", tipo servidor de partidas de programas "persistentes" tipo RPG donde hay un mundo que evoluciona aunque nadie este jugando. En eso no creo que te ayuden los motores de juegos, esos solo te permitirán leer la información de tu server por http o lo que sea y hacer la parte del cliente, pero la parte servidora la tendrás que hacer por tu cuenta, por lo que yo se.

Una idea es que, puesto que ha de funcionar cuando nadie juega, podrías tener un PHP que "sepa" cuando fue la ultima vez que se actualizó el estado, y en cada nueva petición externa, si detectas que hace más de 10 segundos (si es que quieres actualizar el mundo cada 10 segundos), lo actualice antes de responder al cliente: si han pasado 50 segundos, haces 5 ciclos de actualización, y luego respondes al cliente con la info actualizada.

Eso te evita usar cron, pero has de controlar el tema de las peticiones concurrentes: si pasados 11 segundos 5 clientes te piden datos asincrónamente, solo 1 ha de actualizar, y los otros 9 esperar. Te serviría hacerlo con "semáforos": el primero pone en rojo el semaforo y actualiza, los otros 9 ven el semaforo en rojo y esperan, y tras obtener luz verde, se procesan, ya sin ser necesario actualizar.

Eso se puede hacer en php si quieres, no se demasiado de php pero supongo que habrán formas sencillas de hacer un semáforo o bien podrías usar una "cola de peticiones", de forma que al servir la primera las otras quedan en espera sin usar semáforos.
  • 0




IP.Board spam blocked by CleanTalk.