No, no estoy hablando de Krystal Steal (que ya quisiera yo, buena que está esa tía!), si no de CrystalSpace. El caso es que ya era hora de echarle un vistazo para poder hablar con propiedad, y en eso estoy enfrascado en estos días. Es que tener un motor de render poderosísimo como Ogre y no tener lo demás es casi como tener un motor de Fórmula 1 y tener que pedir las ruedas prestadas en casa de los vecinos. Por supuesto que no todas las ruedas funcionarán en la pista donde quieres correr, o estarán ponchadas y desgraciadamente el vecino no sabe por qué, pues a él le funciona de maravilla así como está.
Crystal siempre ha ido un poco por detrás de Ogre, supongo que lo que le falta es un buen juego comercial, no algo sencillo como Yo Frankie!. Además, si me quejaba antes del molesto sistema de inicialización de Ogre basado en archivos propios, ahora es mucho peor, CS utiliza más y más largos. En fin, ya veremos cómo me va con esto.
Nuevo sistema de diálogos
Bueno, no me queda más remedio que rediseñar el sistema de diálogos. Funciona, pero es bastante tosco, complejo de mantener e imposible de implementar un editor de diálogos. En base a algunas sugerencias en la lista de gameprogrammer.com, he ido poco a poco haciéndome una idea de cómo crear un nuevo sistema.
Basado en xml, el nuevo sistema de diálogos podrá ser editado con una herramienta específica y mantendrá las mismas funcionalidades de scripting que el anterior. Aún no he escrito los primeros diálogos, así que todo está muy confuso, pero al menos es un comienzo. Me imagino que el universo estaba así mismo justo antes del big bang.
Basado en xml, el nuevo sistema de diálogos podrá ser editado con una herramienta específica y mantendrá las mismas funcionalidades de scripting que el anterior. Aún no he escrito los primeros diálogos, así que todo está muy confuso, pero al menos es un comienzo. Me imagino que el universo estaba así mismo justo antes del big bang.
Escribiendo la trama de un juego: interés y emoción
Qué hace bueno a un juego? Los gráficos? Probablemente no. Usualmente los gráficos nos atraen durante los primeros momentos, un par de horas después ya no nos percatamos de las nubes de polvo, de lo bien que se ve ese zombie que te está pegando en la cabeza con su propio antebrazo, de lo realistas que se ven los escenarios... La mecánica de juego y la historia son dos elementos importantes que son perceptibles durante todo el tiempo que dediquemos a un juego, y aquí les hablaré de la segunda.
Qué nos hace llegar hasta el final de un juego? Si contestas que le interés, estas en lo correcto. Así que si quieres que tus jugadores lleguen hasta el final de tu juego, tienes que crear interés. Quieres más inmersión? Entonces necesitas emoción. Emoción e interés no es lo mismo. Puedes tener lo segundo y carecer por completo de la primera. Fallout 3 crea interés. Mass Effect crea emoción. Cuando hay interés miras el reloj y dices "son las 11 de la noche, mañana sigo". Cuando hay emoción dices "es la 1 de la madrugada, pero tengo que acabar esta misión hoy!".
La mecánica de juego puede generar interés, pero solo puedes conseguir emoción mediante la trama. Hay algunos elementos bien conocidos para introducir emoción en tu trama, lee algún best-seller y los encontrarás. Por ejemplo, mira un libro de Harry Potter. tienen una estructura bastante predecible: hay un misterio, claro, invariablemente hay alguien a quien terminamos odiando y el resto es relleno, eventos que hacen cada libro diferente de los demás. Parece fácil, no? Pero no lo es, lo digo con cierta experiencia ya que deben saber que he intentado escribir varias veces.
La trama de un jeugo es como un libro con páginas alternativas. Puedes tener una trama basada en un misterio: el personaje se lanza a una misión para descubrir algo, pero no lo conseguirá hasta el final, o lo revelará poco a poco, en algunos casos encontrandose que el objeto de su búsqueda no es lo que él pensaba que era. Puedes crear misterio alrededor de cualquier cosa: un objeto, suceso o personaje. Ocúltale al personaje por qué el objeto debe ser recuperado, qué sucedió realmente en ese suceso o los verdaderos objetivos del personaje, o incluso la verdadera historia del personaje del jugador.
El otro elemento de la trama: un enemigo, alguien a quien odiaremos. Este odio se va construyendo mediante sus acciones: traición, asesinatos, etc. Al igual que el misterio, puedes ir escalonando este elemento, digamos que logras liquidar a uno y te encuentras con que hay otro pero detrás. Un elemento muy útil, que de hecho está metido en cada trama. A la vez, puedes incluir una figura opuesta, un amigo o alguien a quien admirar.
Las decisiones pueden ser otra vía para crear emoción. Enfrenta al jugador con algún dilema: salvar la aldea o a la chica/chico que amo? Mi mejor amigo ha tomado el mal camino, debo matarlo? El abanico de posibilidades es amplio. La naturaleza interactiva de los videojuegos hace que esto sea un recurso muy interesante, sin embargo no lo explotes demasiado. Las decisiones difíciles son un buen recurso, pero no para basar el proceso de construir emociones totalmente en ellas. A fin de cuentas, queires darle al jugador algo divertido, no una tragedia griega.
Evita los mundos excesivamente abiertos. Demaisado vagabundear desconecta al jugador de la línea principal y diluye el interés. Es bueno tener varios caminos para llegar al final, pero no demasiados que te alejen de él. Introduce algún tipo de recordatorio que haga al jugador regresar a la misión principal.
La acción (en el sentido de una buena pelea) es otra fuente de emoción. Pero no toda produce la misma carga, es más efectva cuando te enfrentas a algún enemigo importante. el resto es solo interés, no creación de emociones.
Crea personajes complejos, para el jugador y los NPC. Tómate algún tiempo en crear un trasfondo para cada uno y planifica como revelarlo progresivamente. Establece vínculos entre el jugador y los demás personajes, hazle sentir que el grupo está ahí para algo más que ayudar en las peleas y estorbar en los lugares estrechos.
Esta es una corta lista de técnicas que puedes usar para poner un poco de emoción en la trama de tu juego, pero estoy seguro que está lejos de ser completa. Como un escritor me dijo una vez: se aprende a escribir escribiendo. Así que ve y empieza a escribir.
Qué nos hace llegar hasta el final de un juego? Si contestas que le interés, estas en lo correcto. Así que si quieres que tus jugadores lleguen hasta el final de tu juego, tienes que crear interés. Quieres más inmersión? Entonces necesitas emoción. Emoción e interés no es lo mismo. Puedes tener lo segundo y carecer por completo de la primera. Fallout 3 crea interés. Mass Effect crea emoción. Cuando hay interés miras el reloj y dices "son las 11 de la noche, mañana sigo". Cuando hay emoción dices "es la 1 de la madrugada, pero tengo que acabar esta misión hoy!".
La mecánica de juego puede generar interés, pero solo puedes conseguir emoción mediante la trama. Hay algunos elementos bien conocidos para introducir emoción en tu trama, lee algún best-seller y los encontrarás. Por ejemplo, mira un libro de Harry Potter. tienen una estructura bastante predecible: hay un misterio, claro, invariablemente hay alguien a quien terminamos odiando y el resto es relleno, eventos que hacen cada libro diferente de los demás. Parece fácil, no? Pero no lo es, lo digo con cierta experiencia ya que deben saber que he intentado escribir varias veces.
La trama de un jeugo es como un libro con páginas alternativas. Puedes tener una trama basada en un misterio: el personaje se lanza a una misión para descubrir algo, pero no lo conseguirá hasta el final, o lo revelará poco a poco, en algunos casos encontrandose que el objeto de su búsqueda no es lo que él pensaba que era. Puedes crear misterio alrededor de cualquier cosa: un objeto, suceso o personaje. Ocúltale al personaje por qué el objeto debe ser recuperado, qué sucedió realmente en ese suceso o los verdaderos objetivos del personaje, o incluso la verdadera historia del personaje del jugador.
El otro elemento de la trama: un enemigo, alguien a quien odiaremos. Este odio se va construyendo mediante sus acciones: traición, asesinatos, etc. Al igual que el misterio, puedes ir escalonando este elemento, digamos que logras liquidar a uno y te encuentras con que hay otro pero detrás. Un elemento muy útil, que de hecho está metido en cada trama. A la vez, puedes incluir una figura opuesta, un amigo o alguien a quien admirar.
Las decisiones pueden ser otra vía para crear emoción. Enfrenta al jugador con algún dilema: salvar la aldea o a la chica/chico que amo? Mi mejor amigo ha tomado el mal camino, debo matarlo? El abanico de posibilidades es amplio. La naturaleza interactiva de los videojuegos hace que esto sea un recurso muy interesante, sin embargo no lo explotes demasiado. Las decisiones difíciles son un buen recurso, pero no para basar el proceso de construir emociones totalmente en ellas. A fin de cuentas, queires darle al jugador algo divertido, no una tragedia griega.
Evita los mundos excesivamente abiertos. Demaisado vagabundear desconecta al jugador de la línea principal y diluye el interés. Es bueno tener varios caminos para llegar al final, pero no demasiados que te alejen de él. Introduce algún tipo de recordatorio que haga al jugador regresar a la misión principal.
La acción (en el sentido de una buena pelea) es otra fuente de emoción. Pero no toda produce la misma carga, es más efectva cuando te enfrentas a algún enemigo importante. el resto es solo interés, no creación de emociones.
Crea personajes complejos, para el jugador y los NPC. Tómate algún tiempo en crear un trasfondo para cada uno y planifica como revelarlo progresivamente. Establece vínculos entre el jugador y los demás personajes, hazle sentir que el grupo está ahí para algo más que ayudar en las peleas y estorbar en los lugares estrechos.
Esta es una corta lista de técnicas que puedes usar para poner un poco de emoción en la trama de tu juego, pero estoy seguro que está lejos de ser completa. Como un escritor me dijo una vez: se aprende a escribir escribiendo. Así que ve y empieza a escribir.
Torchlight sale hoy
Uno de los juegos que más expectación ha despertado en este año al fin sale hoy. Torchlight es un RPG de acción, creado por ex-miembros del equipo de Diablo 2 y con algunos experiencia de otros proyectos en su haber. Lo cual les ha garantizado una atención mediática que no han disfrutado otros proyectos de pequeños estudios. Se espera un RPG online para el año próximo, así que parece que estamos asistiendo al nacimiento de una nueva franquicia. Esperemos que este título levante un financiamiento respetable que asegure el cumplimiento de los planes.
Supongo que no habrán olvidado que este juego utiliza Ogre, de ahí mi interés.
Pueden encontrar los enlaces de compra en Perfect World, Steam, Direct2Drive y otros asociados.
Supongo que no habrán olvidado que este juego utiliza Ogre, de ahí mi interés.
Pueden encontrar los enlaces de compra en Perfect World, Steam, Direct2Drive y otros asociados.
DotScene
Ya llevo algún tiempo probando este formato con escenarios hechos en Blender. Así que es hora de que dé alguna opinión al respecto, pero el caso es que no sé que decir. Me gusta la flexibilidad que ofrece el poder crear un nivel completamente en una herramienta profesional. He encontrado un problema, pero parece ser causa del exporter de Ogre: los elementos agregados con Append y algunos otros no quedan correctamente orientados. O sea, que podríamos vernos en la necesidad de duplicar muchísimo trabajo, al tener que rehacer las mismas casas, los mismos árboles, etc... en cada uno de los diferentes niveles. En general la integración es muy fácil, a prueba de idiotas y eso es un buen punto para algo que es externo al motor.
Sin embargo, si consideramos que de todas formas es necesario un editor específico para completar el nivel con las entidades, eventos, etc, pues resulta que pierde una parte de la ventaja que le lleva a los mapas basados en formatos propios con terreno normal. Especialmente ahora que un nuevo sistema de terrenos se está implementando en Ogre, con características que antes había que buscar en addons de terceros.
O sea, que las ventajas son muy pocas, hasta donde he visto, lo que me está haciendo replantearme el asunto de utilizarlo. No obstante, recomiendo en cada caso particular probarlo y salir de dudas. El esfuerzo es poco y podría ser que para algún proyecto en específico sea mucho mejor.
Sin embargo, si consideramos que de todas formas es necesario un editor específico para completar el nivel con las entidades, eventos, etc, pues resulta que pierde una parte de la ventaja que le lleva a los mapas basados en formatos propios con terreno normal. Especialmente ahora que un nuevo sistema de terrenos se está implementando en Ogre, con características que antes había que buscar en addons de terceros.
O sea, que las ventajas son muy pocas, hasta donde he visto, lo que me está haciendo replantearme el asunto de utilizarlo. No obstante, recomiendo en cada caso particular probarlo y salir de dudas. El esfuerzo es poco y podría ser que para algún proyecto en específico sea mucho mejor.
Probando SDL 1.3
Esto era algo que tenía en planes desde hace un buen tiempo, pero desgraciadamente los problemas domésticos no me permiten alcanzar el estado mental necesario para estudios muy a menudo en los últimos tiempos. Cuando lo consigo, el modo ermitaño no me dura mucho tiempo.
Sin embargo ayer me di a la tarea de compilar y probar SDL 1.3. De momento en Linux.
En esencia, no noto ninguna diferencia en un proyecto ya hecho. Es que incluso dudo que lo haya hecho bien y que esté linkeado con la nueva librería. Así que debo seguir haciendo pruebas, porque específicamente quiero ver cómo funciona el rendering con OpenGL.
Por el momento la documentació, tutoriales, ejemplos, es escasa, todo va por cuenta propia y por lo que puedas obtener en la lista de discusión. Si alguien se suma o ya está en proceso de probarlo, le deseo suerte (y que comparta sus experiencias).
Sin embargo ayer me di a la tarea de compilar y probar SDL 1.3. De momento en Linux.
En esencia, no noto ninguna diferencia en un proyecto ya hecho. Es que incluso dudo que lo haya hecho bien y que esté linkeado con la nueva librería. Así que debo seguir haciendo pruebas, porque específicamente quiero ver cómo funciona el rendering con OpenGL.
Por el momento la documentació, tutoriales, ejemplos, es escasa, todo va por cuenta propia y por lo que puedas obtener en la lista de discusión. Si alguien se suma o ya está en proceso de probarlo, le deseo suerte (y que comparta sus experiencias).
Paquete de enlaces
He creado dos hubs con enlaces útiles para programadores de juegos. El primero contiene sitios con tutoriales y foros, el segundo es una recopilación de sitios que ofrecen arte libre. Están en inglés, pero lo importante son los enlaces, pueden ignorar el resto del texto. Por supuesto que la lista no está completa, he puesto solo los que conozco, que he visitado a menudo y en los cuales la información es gratis y de buena calidad.
De todas formas, si alguien lo necesita, puedo preparar una versión traducida.
De todas formas, si alguien lo necesita, puedo preparar una versión traducida.
Cine y efectos especiales
Coincidiendo con esta votación sobre la mejor película de ciencia ficción (una elección difícil, que no me atrevo a hacer), un colega nos presentó hoy una curiosidad: los primeros efectos especiales del cine (que aún estoy tratando de confirmar). En la historia del cine se considera a Georges Melies como uno de los pioneros e innovadores en este campo, tan temprano como en 1989 ya estaba haciendo maravillas con una cámara y un poco de inteligencia. Sin embargo, en 1898, dos norteamericanos, J. Stuart Blackton y A. E. Smith engañaron a todo el mundo reconstruyendo la Batalla de la Bahía de Santiago de Cuba, entre la flota del Almirante español Cervera y la flota norteamericana. Para ello recortaron imágenes de buques de guerra, las pegaron en madera, llenaron un tanque con agua, agregaron pólvora, humo de cigarro y mezclaron todo eso con tomas reales que habían conseguido en Cuba en el ataque de Teddy Roosevelt a San Juan.
Y ya que hablamos de Santiago, que es mi ciudad, les comento que aún se puede bucear y encontrar restos de los navíos hundidos durante la batalla en la que los españoles hicieron frente a una tecnología naval superior.
Y les dejo un video que ilustra los 100 años (que ya son más) de los efectos especiales.
92E58517 3b219f3b7e193f60d4373862942e52c1
Y ya que hablamos de Santiago, que es mi ciudad, les comento que aún se puede bucear y encontrar restos de los navíos hundidos durante la batalla en la que los españoles hicieron frente a una tecnología naval superior.
Y les dejo un video que ilustra los 100 años (que ya son más) de los efectos especiales.
92E58517 3b219f3b7e193f60d4373862942e52c1
Luego de un corto período de pruebas ha sido lanzada la última versión de la rama 1.2 de SDL. A partir de ahora el trabajo se concentra en la rama 1.3, aunque no tengo referencias acerca de una posible fecha de salida. Lo cual debió hacerse hace algunos meses.
Así que es hora de armar el tinglado de pruebas, porque en un par de años ya estaremos metidos con la 1.3.
Así que es hora de armar el tinglado de pruebas, porque en un par de años ya estaremos metidos con la 1.3.
Aprender Ogre
Varias personas me han preguntado acerca de Ogre en ocasiones y de cómo iniciarse con él. Y es que hay que reconocer que este no es el mejor motor para aprender a programar juegos, yo mismo considero que no es el motor ideal que todos quisiéramos (el cual sería algo con la facilidad de Irlicht y las capacidades de Unreal Engine).
Mi recomendación es que si eres totalmente novato en la programación de gráficos 3D, primero hagas algunas cosas básicas en OpenGL antes de pensar en probar motores de juegos. Pero vamos a asumir que ya dominas la base, tienes ciertos conceptos y necesitas ahorrarte el trabajo de crear tu propio framework.
Pues básicamente solo necesitas dos días o menos y los siguientes tutoriales:
Mi recomendación es que si eres totalmente novato en la programación de gráficos 3D, primero hagas algunas cosas básicas en OpenGL antes de pensar en probar motores de juegos. Pero vamos a asumir que ya dominas la base, tienes ciertos conceptos y necesitas ahorrarte el trabajo de crear tu propio framework.
Pues básicamente solo necesitas dos días o menos y los siguientes tutoriales:
- Tutorial 1
- Introducción a los elementos básicos de Ogre: SceneManager, SceneNode, y Entity
- Tutorial 2
- Cámaras, luces y sombras
- Tutorial 3
- Terrenos, cielo y niebla
- Tutorial 4
- Frame Listeners y entrada sin buffer
- Tutorial 5
- Entrada con buffer
- Tutorial 6
- La secuencia de inicio
- Tutorial 7
- CEGUI y Ogre
- Luego de eso ya estás listo para algo más interesante:
- Tutorial intermedio 1
- Animación, caminar entre puntos, y cuaterniones básicos
- Intermediate Tutorial 2
- RaySceneQueries y uso básico del mouse I
- Intermediate Tutorial 3
- Selección con el mouse y máscaras de SceneQuery II
Posteos pagados en foro
Si te interesa que te paguen por escribir en un foro, Maganhunter es tu oportunidad. O al menos, eso dice el dueño, todavía yo no he alcanzado el límite necesario para cobrar el efectivo. También puedes usar el dinero para comprar a través de Amazon, pero solo en USA. El pago empieza a 6 centavos el post, que debe tener un mínimo de 125 caracteres, pero a medida que acumules posteos el pago aumenta.
Solo necesitas tener buen dominio del inglés, ser aficionado al manga, anime o videojuegos y tener mucho tiempo para dedicar a escribir, si es que en verdad quieres ganar algo en un período aceptable. Y por favor, recuerda poner que tu referente es rogerdv, así tus posteos me ayudan.
Solo necesitas tener buen dominio del inglés, ser aficionado al manga, anime o videojuegos y tener mucho tiempo para dedicar a escribir, si es que en verdad quieres ganar algo en un período aceptable. Y por favor, recuerda poner que tu referente es rogerdv, así tus posteos me ayudan.
Paquete de ejemplos de OpenGL 3
Están disponibles ejemplos de código OpenGL 3.1 y 3.2 para apoyar la documentación del API. Como deben saber, la versión 3.1 del estándar cambió drásticamente las cosas, dejando obsoletas las funciones fijas y a los programadores colgados de la brocha y casi que aprendiendo un API totalmente distinto.
Los ejemplos usan SDL 1.3, GLM y GLI.
Los ejemplos usan SDL 1.3, GLM y GLI.
Prototipo de cámara libre
A pesar del tiempo perdido con detalles adicionales, al fin logré algo parecido a una cámara libre. Se siente bastante bien, aunque falta pulirlo un poco y separar la cámara del personaje, además de implementar el cursor y hacer pruebas de selección de objetos.
Suscribirse a:
Comentarios (Atom)