Miércoles, 20 de febrero del 2008
Sincronizando gráficos, física, y lógica
Un aspecto importante a la hora de desarrollar un juego es lograr sincronizar el motor gráfico, el motor de física, y la lógica del juego, de manera que este se comporte de manera similar en diferentes máquinas.
Por un lado, el motor gráfico cuanto más fluido funcione mejor, aunque nunca viene mal ajustar su velocidad con la tasa de refresco del monitor, con lo que aliviamos un poco el procesador. El motor de física y la lógica del juego suelen consumir bastantes recursos, por lo que también es buena idea regular a la velocidad que se actualizan.
Hasta la versión 0.0.5 de Project Football (incluida), el motor gráfico y el de física corrían a sus anchas, y la lógica del juego tenía como límite una actualización por cada tres veces que se actualizara la física. Esto tiene el inconveniente de que consume muchos recursos y que dependiendo de la máquina, el juego funciona más rápido o más lento. La única opción hasta el momento era activar la sincronización con el monitor (opción VSYNC en el fichero ProjectFootball.ini), que disminuye bastante el uso de recursos, pero aún así, no todos los monitores tienen la misma frecuencia de actualización, por lo que el juego seguirá funcionando a diferente velocidad dependiendo de la máquina.
Continua leyendo "Sincronizando gráficos, ... »
Por un lado, el motor gráfico cuanto más fluido funcione mejor, aunque nunca viene mal ajustar su velocidad con la tasa de refresco del monitor, con lo que aliviamos un poco el procesador. El motor de física y la lógica del juego suelen consumir bastantes recursos, por lo que también es buena idea regular a la velocidad que se actualizan.
Hasta la versión 0.0.5 de Project Football (incluida), el motor gráfico y el de física corrían a sus anchas, y la lógica del juego tenía como límite una actualización por cada tres veces que se actualizara la física. Esto tiene el inconveniente de que consume muchos recursos y que dependiendo de la máquina, el juego funciona más rápido o más lento. La única opción hasta el momento era activar la sincronización con el monitor (opción VSYNC en el fichero ProjectFootball.ini), que disminuye bastante el uso de recursos, pero aún así, no todos los monitores tienen la misma frecuencia de actualización, por lo que el juego seguirá funcionando a diferente velocidad dependiendo de la máquina.
Continua leyendo "Sincronizando gráficos, ... »
Publicado por Dividio
en CUSLII, Ogre, Project Football
a las
21:09
| Comentarios (0)
| Referencias (0)
Martes, 12 de febrero del 2008
Versión 0.0.5 de Project Football
Han transcurrido 2 semanas, y aquí tenéis la nueva versión 0.0.5 de Project Football. Destacan visualmente en esta versión los cambios incluidos en la pantalla del simulador, puesto que ahora muestra algo de información sobre lo que está ocurriendo en el terreno de juego durante un partido.
Como podéis ver en la captura, la parte en la que se muestra el campo ha sido reducida, en parte para dejar más sitio donde poder colocar información y controles. Nos gustaría saber vuestra opinión sobre como la veis ahora, ¿está bien o es demasiado pequeña?. Una opción que estamos barajando, es que esta sería la pantalla principal del simulador y podríamos incluir un botón que mostraría el campo en una ventana mayor, así si sólo se quiere ver el partido se puede usar esa ventana y si se quieren realizar cambios tácticos se utiliza esta pantalla principal ¿qué os parece?.
Por mi parte, como ya comenté en el artículo anterior, he estado trabajando sobre lo que he aprendido del libro "Programming Game AI by Example", y los primeros resultados se empiezan a ver en el partido simulado. Ahora los jugadores pueden dirigirse a cualquier punto del campo y esto hace que el partido sea algo más entretenido. También he realizado algunos cambios que habíais sugerido, como poner un límite físico al campo para que los jugadores no salgan "volando", incluir información del partido en la pantalla del simulador (como comentaba Juaxix), e incluir una pequeña comprobación para el problema que tenía Pedro Laguna.
Mi tocayo por su parte, ha continuado el trabajo en el motor para el modo mánager, concluyendo la implementación preliminar de CGameEngine y mejorando mucho el generador de clases para la base de datos, creando con el las clases de acceso a una primera versión del modelo de datos.
El registro completo de cambios lo podéis leer en la Forja, y también podéis descargar esta versión 0.0.5 en tres tipos de paquetes: código fuente (incluye script para compilar), compilado dinámicamente para procesadores i386 en Linux, o para Windows.
Como podéis ver en la captura, la parte en la que se muestra el campo ha sido reducida, en parte para dejar más sitio donde poder colocar información y controles. Nos gustaría saber vuestra opinión sobre como la veis ahora, ¿está bien o es demasiado pequeña?. Una opción que estamos barajando, es que esta sería la pantalla principal del simulador y podríamos incluir un botón que mostraría el campo en una ventana mayor, así si sólo se quiere ver el partido se puede usar esa ventana y si se quieren realizar cambios tácticos se utiliza esta pantalla principal ¿qué os parece?.
Por mi parte, como ya comenté en el artículo anterior, he estado trabajando sobre lo que he aprendido del libro "Programming Game AI by Example", y los primeros resultados se empiezan a ver en el partido simulado. Ahora los jugadores pueden dirigirse a cualquier punto del campo y esto hace que el partido sea algo más entretenido. También he realizado algunos cambios que habíais sugerido, como poner un límite físico al campo para que los jugadores no salgan "volando", incluir información del partido en la pantalla del simulador (como comentaba Juaxix), e incluir una pequeña comprobación para el problema que tenía Pedro Laguna.
Mi tocayo por su parte, ha continuado el trabajo en el motor para el modo mánager, concluyendo la implementación preliminar de CGameEngine y mejorando mucho el generador de clases para la base de datos, creando con el las clases de acceso a una primera versión del modelo de datos.
El registro completo de cambios lo podéis leer en la Forja, y también podéis descargar esta versión 0.0.5 en tres tipos de paquetes: código fuente (incluye script para compilar), compilado dinámicamente para procesadores i386 en Linux, o para Windows.
Viernes, 1 de febrero del 2008
Estudiando como hacer la IA para los jugadores
Los que habéis probado la versión 0.0.4 de Project Football, habéis podido comprobar que la inteligencia artificial de los jugadores no es muy elaborada, por decir algo
. Los que no la habéis probado, aquí tenéis un vídeo en Youtube (gracias Jaime).
Para el proyecto estoy tratando de aplicar lo que aprendí hace un par de años desarrollando la IA para un equipo de RoboCup, y sobre eso he estado trabajando las dos últimas semanas. La cosa ha ido bastante bien, pero el diseño de clases general no acababa de convencerme, y estaba viendo como el código corría el peligro de acabar en un spaguetti code.
Así que divagando sobre esta situación, casi de rebote, dí con este libro: Programming Game AI by Example, de Mat Buckland. Al señor Mat voy a tener que hacerle un monumento, ha escrito un libro exactamente de lo que estoy tratando de hacer. Así que sin perder un minuto, fui a la biblioteca de la Universidad a sacar el libro y llevo dos días leyéndolo en perfecto inglés.
La lectura del libro es bastante amena, habla detalladamente sobre varías técnicas muy utilizadas en el desarrollo de videojuegos, como son las máquinas de estados (patrón State Machine), el control del movimiento de los agentes (Steering Behaviors), jerarquías de comportamiento, comunicación entre agentes, scripting en Lua de la inteligencia artificial, búsqueda de caminos, etc., y todo con sus ejemplos bien claritos (de ahí el "by Example" del título). Por último, y lo que hizo que me fijara en el libro, hay un capítulo entero dedicado a explicar como hacer la IA básica para un simulador de fútbol, jeje.
Pues en eso estoy ahora mismo, voy ya por la mitad del libro
Para el proyecto estoy tratando de aplicar lo que aprendí hace un par de años desarrollando la IA para un equipo de RoboCup, y sobre eso he estado trabajando las dos últimas semanas. La cosa ha ido bastante bien, pero el diseño de clases general no acababa de convencerme, y estaba viendo como el código corría el peligro de acabar en un spaguetti code.
Así que divagando sobre esta situación, casi de rebote, dí con este libro: Programming Game AI by Example, de Mat Buckland. Al señor Mat voy a tener que hacerle un monumento, ha escrito un libro exactamente de lo que estoy tratando de hacer. Así que sin perder un minuto, fui a la biblioteca de la Universidad a sacar el libro y llevo dos días leyéndolo en perfecto inglés.
La lectura del libro es bastante amena, habla detalladamente sobre varías técnicas muy utilizadas en el desarrollo de videojuegos, como son las máquinas de estados (patrón State Machine), el control del movimiento de los agentes (Steering Behaviors), jerarquías de comportamiento, comunicación entre agentes, scripting en Lua de la inteligencia artificial, búsqueda de caminos, etc., y todo con sus ejemplos bien claritos (de ahí el "by Example" del título). Por último, y lo que hizo que me fijara en el libro, hay un capítulo entero dedicado a explicar como hacer la IA básica para un simulador de fútbol, jeje.
Pues en eso estoy ahora mismo, voy ya por la mitad del libro
(Página 1 de 1, en total 3 entradas)

