miércoles, 7 de diciembre de 2005

Juegos para móviles

Hace bastante que veo cómo los juegos para móviles están mejorando en calidad y creciendo en cantidad.
Incluso investigué un poco para introducirme en el tema, pero lo que no pude encontrar es la manera de comercializarlos correctamente.
Digamos, fui aprendiendo con los años... Casi siempre me embarqué en desarrollos (míos o de grupos) movido por el entusiasmo de crear cosas nuevas. Entonces, luego de dedicarle tiempo, me di cuenta de la inviabilidad del proyecto... o la dificultad de ganar algún dinero con él.
Con los juegos para celulares no quise cometer el mismo error.
Difícil comercializarlos vía sitios. O mejor dicho, difícil recuperar el dinero desde Argentina... al menos mientras sigamos en default.
Más difícil vendérselos directo a los operadores, Movistar o el que sea... Ellos compran paquetes de juegos y si es posible, a firmas conocidas.
Por todo esto es que no entré antes al mercado.
Gracias a algunas charlas en la EVA, me encontré con empresas como JUMO, de Sebastián Uribe (Inmune Games) http://www.inmune.com.ar/
Ellos dan todo tipo de soporte, dependiendo del proyecto que se les presente. Desde colaborar con gráfica, porting a distintos modelos de móviles... y lo más importante: La comercialización.
Pues eso, más el concurso que se inició en Stratos y MovilGamers: http://www.movilgamers.com/certamen/
me entusiasmaron a desarrollar algo para celulares.
El primero que estoy haciendo: una adaptación del viejo Eggerland... juego de ingenio que me quitó mil horas hace 20 años con la MSX.
Y tengo en espera una suite de 3 proyectos en los que avanzaré dependiendo cómo vaya éste.

Así que le estoy robando un poco de tiempo a Species Circus... por supuesto, ni hablar de frenar eso.
Si va bien lo de los móviles, sería un ingreso extra para financiar host y demás a mi juego 3D.

Nos leemos!

miércoles, 2 de noviembre de 2005

La EVA 05 o cómo disfrutar de lo que a uno le gusta

Siempre que puedo voy a seminarios, charlas o expos. Por suerte, la empresa donde trabajo me apoya en algunos de esos viajes. Lástima que muchos no están accesibles por la distancia.
Casi siempre, también, son eventos asociados íntimamente a lo que yo programo: Plataforma .NET - Microsoft
Se arman en los mejores hoteles, nos dan una panafernalia de biromes, carpetas, folletos. Los break coffee son eso... estupendos break coffees :)) con infinita cantidad de dulces, jugos, etc.
Cuando todo termina, nos vamos conformes... aprendimos algunas cosas, estuvimos entre gente que hace lo mismo. Nos trataron muy bien... y tenemos el estómago lleno :))
Pero... ¿y la diversión? ¿Para que sea un seminario de trabajo tiene que ser acartonado y serio? ¿Todos los oradores tienen que estar sentaditos y de saco y corbata? Un certificado de asistencia a esos lugares debería incluir un comentario del tipo: "Certifico que Sergio Cossa asistió al seminario sin emitir ni una sola sonrisa (mucho menos una carcajada) y que sus bostezos no superaron a los de la mayoría (tanto sea en calidad como en cantidad)"

Bue... a qué viene esto...

A que EVA hace lo mismo. Habla de negocios, negocios millonarios. Informa. Aglutina a cientos de programadores-artistas-empresarios. Pero además, nos divierte. Se habla de negocios y ciencia, pero sin moldes. Todo es más simple, con menos lujo (ni hablar de comida) pero al final deja la sensación de plenitud. De haber estado en el lugar indicado durante dos días.

Nos leemos.

viernes, 7 de octubre de 2005

EVA 05

Se viene nomás una nueva expo sobre videojuegos en Argentina.
Madurez, se le suele llamar.

http://adva.com.ar/eva/index.php

Trataré de viajar, por supuesto.

Creo que desarrollar un videojuego es investigar, laburar, crear... y conocer en persona a los mismos que están en este entorno.
Desde la distancia (la cual se acortó infinitamente gracias a internet) es muy difícil entender ciertos parámetros de lo que sucede en Capital.
Supongo que compartir unas cuantas horas en esa expo me va a abrir bastante la cabeza respecto a lo que tiene que ver con relacionarse con el medio.

Así que, con la humildad de un simple aprendiz en esto de los videogames... trataré de traerme el bolso lleno de ideas, direcciones y teléfonos...

sábado, 1 de octubre de 2005

Species Circus y 3D Studio

Desde hace 10 días estoy mejorando lo poco que sabía del uso de 3D Studio Max.
Lamentablemente no me sobra tiempo y no avanzo como quisiera... pero ya aprendí cosas que pensé que eran más complicadas.
Realmente es un software que supera mis expectativas gráficas.
También probé el Blender, que es gratuito... pero lo encuentro más complicado y por supuesto, con muchos menos ejemplos y tutoriales.
Supongo que voy a poder completar yo todos los diseños gráficos de naves, planetas y demás. Aunque tal vez pida alguna ayuda si va muy lento.

Los gráficos que hay que hacer para la primera versión, según el documento de diseño:

- 5 especies (un caracter para cada una)
- 40 naves espaciales ( 8 diferentes por cada especie )
- 20 componentes de las naves (serán todos iguales, no importa la especie)
- 10 planetas
- 6 estrellas
- 20 estructuras planetarias (igual que los componentes, sin diferencias entre especies)
- Las superficies de cada planeta, donde van a ir las estructuras. A esto aún no lo tengo decidido. Si hacerlo estilo Civilization, pero en 3D... o estilo al viejo Ascendancy.
- 25 tecnologías
- Al menos 4 skybox... para que no se vea siempre el mismo universo de fondo

Ya tengo hechos algunos bocetos en papel, con naves y especies (lástima que dibuje taaaan feo) Mi amigo Eduardo Comoglio tendrá que aportar otros, los que realmente muestren una buena imagen del juego.

Bueno, ahí va... falta muchísimo aún.
Cuando evalúo todo lo hecho y lo por hacer, trato de no amedrentarme, porque de ser así, abandonaría este proyecto.
Hay que ponerle mucha fe, fuerza y dedicación.
Estoy confiado en que alcanzará a lo que aspiro: Programar un lindo juego.

viernes, 16 de septiembre de 2005

Regresando de la nada

No es que no tenía ganas de escribir, es que la vida y el trabajo estaban monótonos...

Mucho movimiento en esta empresa, entrando en temporada. Varios cambios de computadoras me llevaron gran tiempo, en especial, fuera de hora :(
Al menos yo me quedé con un PIV full, con todo lo que hace falta para seguir adelante con el juego ;)) Así que ahora tengo más ganas que antes para continuarlo.

Párrafo aparte para lo que renegué desde ayer a la mañana.

Hago unas pruebas y noto que todo lo que corro en 3D tiene como un parate de fracciones de segundo. Pongo a girar un triángulo y sale entrecortado... Lo primero, pensar que es la GeForce 5200 FX que tengo.
Desinstalo el driver y nada. Entonces veo el TaskManager. Un proceso me come 25 % de CPU cada medio segundo!!

Pruebo iniciando en modo seguro y todo bien. Vuelvo al modo normal y se me escapa el CPU.

Un día y medio probando, desinstalando, volviendo a instalar, consultando en los foros...
Hoy desarmé el equipo y saqué las tarjetas de video y modem. Desenchufé la red, parlantes y el Iomega ZIP paralelo.

Malditos métodos de prueba y error!!! ja

Finalmente lo encontré. El ZIP ocasiona esos parates. Incluso luego de instalarle los drivers nuevos y oficiales, lo sigue haciendo. Así que ahí está, desenchufado, el maldito. Cuando se me pase la bronca, veré qué es lo que interfiere.

Al final, como siempre... ante tanta mufa y pérdida de tiempo, queda lo aprendido. Montón de apuntes y artículos leídos para entender muchas cosas de los procesos del XP que no conocía.

Nos leemos.

miércoles, 24 de agosto de 2005

Avances en Species Circus

Paso a detallar los avances en el juego:

- Creación de los archivos de recursos de texto y sus clases para accederlos. Esto permitirá tener el juego en distintos idiomas con sólo modificar la configuración inicial.

- Clases Manager para Entidades, Gráficos, Eventos, etc.

- Clases para mantener en memoria las Texturas y Meshes con Irrlicht.

- Ya están los módulos para controlar Jugador - Naves - Planetas - Sistemas Solares. Están los manager de cada uno de éstos, con las separaciones en clases para control de datos (Model), control de gráficos (View) y control de eventos (Controller)

- Está el módulo que genera dinámicamente el Universo al cargar el juego.

- Control de estados del juego. Desarrollé un sistema de estados y subestados que dirigirá todo el flujo del juego. Desde el loop principal, hacia los distintos subsistemas.

Aclarar que todo está en prototipo y sin profundizar en detalles. Por ejemplo, de las Naves controlo simplemente ubicación, ID y Mesh. Similar para los Planetas. Pero la funcionalidad no va a variar demasiado, es simplemente agregarle propiedades y capacidades.

Nos leemos.

jueves, 11 de agosto de 2005

El diseño base

Después de un mes de probar el motor Irrlicht, ya entiendo bastante lo que puede dar... así que comienzo a armar la estructura base del juego.

Como escribí en su momento, voy a tratar de seguir una arquitectura MVC, aunque tal vez con alguna variante. Hay dos textos muy interesantes, de los cuales extraje info como para desarrollar el diseño del juego:

- Página en Gamasutra
http://www.gamasutra.com/features/20050414/rouwe_01.shtml

- Este es un .pdf que se puede bajar de varios lugares:
"Architecture for a massively multiplayer online role playing game engine"

Por supuesto que también tengo varios libros piratas bajados de la web...

Nos leemos,

martes, 2 de agosto de 2005

Moviendo la cámara

Al fin encontré la forma de rotar la cámara alrededor de un objeto ubicado en el centro de la pantalla... No había nada específico sobre eso con Irrlicht, hasta pregunté en Stratos.
Las ideas que me dieron estaban acertadas a medias.
Ya de última, apareció en el search un viejo post en Irrlicht, sobre ese tipo de rotación, basado en el juego Never Winter Nights.
Es código c++, pero lo pude adaptar sin problemas a .Net
Ahora sólo resta integrarlo al resto de funciones de movimiento de cámara que ya tengo funcionando bien.
La idea es que el player vea inicialmente un sistema solar desde lejos, con todos sus componentes y luego pueda desplazarse, hacer zoom, rotar, etc. para ubicarse en cualquier lugar del mismo.
Para eso necesito una cámara totalmente ágil y poderosa, que se mueva al estilo de Black & White, donde podés hacer lo que quieras.
Cuando tenga toda esa funcionalidad, voy a poner un tutorial en Irrlicht, para los que vienen renegando con la versión .Net, como yo.

jueves, 21 de julio de 2005

Día del Amigo

Fue ayer... pero no me dieron ganas de escribir nada en especial.
Reconozco que estoy en contra de todo ese tipo de fiestas o conmemoraciones comercializadas.

Al final, como había decidido (porque lo debía desde hace tiempo), sólo llamé por teléfono a Mirta, la esposa de mi único gran amigo Sergio. Como éste ahora anda por España... que ni sueñe que lo voy a saludar por fono. Encima está peleado con internet.

Los demás... bueno, algunos saludaron por chat... y les respondí por cortesía. A los que mandaron mail, directamente no les contesté.

Qué livianitas que se ven las amistades últimamente... o será que yo siempre fui muy exigente... pero que te digan que sos un gran amigo y todo ese verso, cuando lo único que compartís son unas horas de laburo, o de chat, no va para mi.

Tal vez la gente necesita alguien que escuche y no tenga que pagarle por sesiones... tal vez cuando uno tira un par de consejos (de cosas aprendidas en la universidad de la calle) se toman como que nacen de algo íntimo como es la amistad...
Pues para mi, nada de eso es cierto. Me gusta escuchar y charlar con la gente. Trato de tener buena onda y que los demás estén bien.
Pero analizándolo fríamente, eso es sólo egoísmo puro de mi parte :)) Porque si están de mala onda me joden la vida a mi.
Y los únicos que tienen derecho a joderle la vida a alguien... son los hijos... y los verdaderos amigos :))

Y vaya este texto, para que sepan lo que es la verdadera amistad:

Un AMIGO: Te manda e-mails que te hacen reflexionar y meditar.
Un VERDADERO AMIGO: Te manda e-mails de minas en bolas y asquerosidades.

Un AMIGO: Piensa que los problemas por los que te quejás son recientes.
Un VERDADERO AMIGO: Te dice: "Dejá de quejarte de las mismas boludeces de siempre y solucionalo, que ya me tenés harto!".

Un AMIGO: Nunca te vio Llorar.
Un VERDADERO AMIGO: Ya tiene los hombros mojados de verte llorar y ya sabe que sos un mariconazo.

Un AMIGO: Desconoce el nombre de tus padres.
Un VERDADERO AMIGO: Tiene siempre el teléfono de tus viejos encima por si te llevan preso.

Un AMIGO: Lleva una botella de vino a tu casa cuando hay fiesta.
Un VERDADERO AMIGO: Llega a tu casa completamente pedo, se toma todo lo que encuentra en su camino, putea a tus invitados y te hace quedar como el culo.

Un AMIGO: Odia que lo llames a la hora de la siesta, pero te atiende igual.
Un VERDADERO AMIGO: Directamente ni te atiende.

Un AMIGO: Busca hablar de tus problemas.
Un VERDADERO AMIGO: Te los intenta solucionar con unas cuantas botellas de cerveza de por medio.

Un AMIGO: Actúa como invitado en tu casa.
Un VERDADERO AMIGO: Entra a tu casa, abre la heladera, te putea si esta vacía, te caga el baño y se sienta a ver lo que él quiera en la tele.

Un AMIGO: Piensa que se acaba la amistad si hay una discusión.
Un VERDADERO AMIGO: Se mama, te caga puteando y al día siguiente ni se acuerda qué pasó, pero está todo bien.

Un AMIGO: Espera que estés siempre a su lado.
Un VERDADERO AMIGO: Espera siempre estar a tu lado.

Un AMIGO: Nunca te putea.
Un VERDADERO AMIGO: Ya te ha dicho todas las barbaridades habidas y por haber.

Un AMIGO: Te cuida toda la noche si estás muy borracho.
Un VERDADERO AMIGO: Te tira en unos matorrales para que no te detengan y a las 8 de la mañana te pasa a buscar para llevarte a tu casa.

Un AMIGO: Si te quieren pegar intenta arreglarlo con explicaciones.
Un VERDADERO AMIGO: Se mama, se pelea y la ligás vos de rebote por salir a defenderlo.

Un AMIGO: Nunca dice cosas que sabe que te molestan.
Un VERDADERO AMIGO: Si sabe que te molesta algo lo va a hacer hasta el agotamiento.

Un AMIGO: Te diría "Pasale este mensaje a todas aquellas personas que
verdaderamente apreciás y querés y todos tus deseos se harán realidad".
Un VERDADERO AMIGO: Te diría "Déjate de leer pelotudeces y mandá algo bueno o voy a tu casa y te cago a patadas!".

Nos leemos.

viernes, 15 de julio de 2005

Decisiones sobre el engine

Finalmente, luego de probar varios motores, me decido por Irrlicht, con su versión de .NET

http://irrlicht.sourceforge.net

Los otros que probé no tienen suficiente desarrollo aún, o son demasiado complicados como punto de partida.
Si ben el wrap de .NET de Irrlicht no está terminado (ni mucho menos) al menos es suficiente para orientar el juego a ese engine.

En realidad, la idea será hacerlo lo más despegado posible del motor gráfico, pero en alguno tengo que basarme para introducirme un poco más en esto.

Estoy dispuesto a cambiar en algún momento si la experiencia lo hace necesario...

Siempre complicado yo... si me decidiera por c++ encuentro miles de ejemplos. En C# hay bien poco... pero bue. Como puse en otro hilo, apostando a futuro. Considero que C# superará finalmente a c++ (pero no lo digo públicamente porque me matan)

Nos leemos.

viernes, 8 de julio de 2005

Último tren a Londres

¿Y qué carajo pretenden?

Nos leemos.

martes, 5 de julio de 2005

Historia y prehistoria

Pego abajo el post que puse hoy en Stratos, en un hilo de off topic, como para que el que no me conoce, sepa un poco de dónde vengo informáticamente.

En la prehistoria (1985) existían las Timex Sinclair 1000 con 2 KB de RAM.
Después me compré una TK 85 brasilera que ya tenía 16 KB y era un lujo.
Hasta le agregué un kit de sonido que hacía cosas como piiiiiiiiiiiiiiiii miiiiiiiiiiiiiiiiiii grgrgrgrgrgrgrgrgrgr
Por supuesto que todo era programar, ya que no había nada hecho para eso, y si conseguías algún cassette, seguro no lo podías cargar ni a palos. Aprendía con las revistas de Spectrum o Amstrad que venían de España con 6 meses de atraso.
Ya en la edad media, adquirí una Talent MSX (genial intento japonés de estandarizar las home, pero que quedó en la nada) 64 KB de RAM, chip de video y sonido separados, hasta 32 sprites en pantalla... un sueño.
Entré en un concurso que hizo Telemática de Argentina (El programador del Año) y lo gané con un juego "Robinson Crusoe". Aventura literaria por turnos y tiempo.
Al año siguiente participé de nuevo y saqué un segundo premio con "CRASH" un Arkanoid horizontal escrito en Assembler del Z80.
Después, en la edad moderna... las necesidades me llevaron al mundo de la gestión, facturación y todo ese entorno aburrido pero que da para vivir.
Pasé por varios lenguajes y bases de datos: Turbo Pascal, FoxPro, Visual FoxPro, C, Visual Basic, SQL Server y desde el 2001, C#
En los tiempos contemporáneos, hice varias cosas para web, incluyendo CyborgLand, un web game que alcanzó los 1300 players, pero que no dio el tiempo y los $$$ para mantener el host.
Desde febrero empecé a ver ManagedDX y a aprender el mundo del 3D ( en algunas horas libres ) y estoy diseñando un juego de exploración espacial online, con MDX y C#.
Mientras tanto, aún mantengo sistemas escritos desde 1990 en MS DOS y FoxPro... de algo hay que vivir
Saludos a todos.
Sergio Cossa
Argentina

Nos leemos.

lunes, 4 de julio de 2005

Buscando engine...

Difícil decisión.
Busco un engine gratuito y que esté programado en C#, o al menos que tenga un wraper para .Net
Hay pocos y todos en estado Alpha/Beta. Es lógico, ya que todo esto es muy nuevo. Hace poco que se dispone del ManagedDX y como además está por salir el VS 2005, los que desarrollan prefieren no avanzar demasiado, ya que se viene con muchos cambios.

Irrlicht: es el más avanzado. Tiene mucho tiempo de desarrollo. Si bien se hace en C++, le están creando un wraper para C#. El foro es sumamente activo.
http://irrlicht.sourceforge.net/

RealmForge: parace que va a ser el más completo, pero aún está en Alpha. Lleva un desarrollo sostenido. Espero que mejoren los tutoriales (lo prometieron), porque lo veo complicado. Está basado en Axiom, que es un port para C# de OGRE.
http://www.realmforge.com/

PurpleSharp: Su desarrollo estuvo parado, pero ahora parece que el flaco se puso las pilas. También en estado Beta. Es un motor sencillo pero bastante fácil de utilizar.
http://www.bunnz.com/index.php

Por ahora no vale la pena profundizar en ninguno de ellos. Simplemente les dediqué unos días para ver qué es lo que ofrece el mercado.
De todos modos, tengo mucho por hacer antes de decidirme a usar un engine gráfico.

Nos leemos.

sábado, 2 de julio de 2005

Aprendiendo a programar

Era hora que aprendiera a programar de veras :))

Bueno, vamos... uno ya tiene su experiencia, seguro. ¿Pero cuán válida es? ¿De qué sirven 19 años desarrollando software?
Creo que para lo único que sirven, es para facilitar la capacidad de aprendizaje. Para comprender que las cosas cambian rápido en esta profesión y que todo lo asimilado durante años puede ser inútil si el desarrollador no tiene una gran capacidad de adaptación (o traducido: visión de futuro)

En el 2001 comencé a desarrollar sobre la plataforma .Net, la cual aún estaba en beta. Desde ya que eso implicó falta de documentación, semanas tratando de entender el entorno y... nadie cerca para preguntar... es más cuando quise consultar algo, tuve que dedicarme a explicar en qué consistía toda esta novedad.

Luego de cuatro años, está claro que .Net es el presente y futuro de Microsoft. Todos sus desarrollos se orientan a esta plataforma. Infinita cantidad de documentación y millones de desarrolladores trabajando por el mundo. Y por supuesto que el monopolio de MS arrastra a otros cientos de empresas en esa misma dirección.

¿Visión de futuro? No. Capacidad para utilizar la experiencia de años.

Bien... qué tiene que ver eso con el aprender a programar del título.

Utilizar una plataforma orientada a objetos (no un simple lenguaje, sino todo un marco de trabajo) obliga, si uno es coherente, a diseñar duro para extraer todo lo que ese entorno ofrece.
Desarrollo rápido, reusabilidad, escalabilidad son nociones de las que mucho siempre se habla pero que no todos respetan, a veces por falta de soporte en la herramienta (Cobol y Clipper 87 aún se usan) y otras por las pocas ganas de cambiar hábitos adquiridos.

Si bien hace rato que trato de orientar mi software a objetos, nunca logré avanzar sobre esas nociones del párrafo anterior. Motivo principal: falta de tiempo en diseño, improvisación y escasa comprensión de las mismas.

Para mi nuevo juego, como para todos mis desarrollos, pienso implementar las "mejores prácticas" en programación. Considero que no es correcto perseguir dogmas, pero sí es necesario aceptar y entender la experiencia ofrecida por otros.
Dentro de esta línea de conceptos, la utilización de patrones de diseño (ejemplo: http://www.dofactory.com/Patterns/Patterns.aspx ) es una buena guía.

Claro... para aplicar esto, se deben revertir muchos vicios. Dedicarle mucho tiempo al diseño, planificar, leer mucho y comprender ejemplos. Dicho en lenguaje llano, una forma de programar inútil para cualquier empresario que solicite software :)) así que no me llamen para que les haga un presupuesto :p

Nos leemos.

jueves, 30 de junio de 2005

Primero, el juego

Estoy tratando de hacer un juego. Bueno, para ser más específico: estoy programando un juego.

Desde principio de año decidí nuevamente hacer algo, luego de la caída de mi juego web Cyborg Land, hace ya tiempo.

No quise hacer otro juego web... al final, la idea de todo esto es aprender, mejorar y crecer. Un juego web tiene sus complicaciones, los navegadores son limitados y hay que exigirse mucho para lograr calidad, velocidad y bajo tamaño de transferencias. Demás está decir lo que es lidiar con multiplayer, universo persistente, usuarios tramposos y demás...

Bueno, mi idea es tener todas esas cosas complicadas, pero agregándole gráficos en 3D :(
Así que llevo meses metiéndome con Manged DirectX, engines, etcéteras. Junto al diseño general de lo que será el juego, claro está.

La idea... juego espacial de exploración, conquista, economía, investigacion... sip, nada original como idea. Espero aportarle algunas cosas extras para que lo hagan distinto de los otros miles... ya veremos.

El usuario se baja un cliente no muy pesado (unos 20 MB) y juega online. Habría un sistema de turnos y tiempo. Trato de utilizar algunos patrones de diseño, como el Model-View-Controller (MVC) para así poder hacer distintas interfaces visuales. Es decir, lo jugás en tu casa, online. Pero también podés acceder desde web o celular para consultar tus estados o hacer algunas movidas simples.

Cuánto voy a tardar? Ni idea... un laaaaaaargo año o más, seguramente.

En realidad este blog es para llevar una especie de diario. Un registro de muchas cosas que hacen al desarrollo de un juego y que luego de un tiempo uno olvida.

Nos leemos.

Bienvenidos al blog

Bien, acá estamos... subidos a la moda del blog.

Supongo que escribiré principalmente sobre informática, aunque me tengo fe que también lograré hilvanar algunos pensamientos propios y profundos sobre otros temas :)

Nos leemos.