martes, 21 de agosto de 2012

21 de Agosto

StarSphere era el nombre del juego de mi anterior entrada. Es tan viejo que ya ni existe.

Ayer empecé a codear el servidor. Por ahora está hecho el trabajo de plomería de sockets, definir los threads básicos, y definir las clases de Mundo y Jugador.

Boost es genial, aunque estoy un poco oxidado en C++.

Si hay una sola cosa que me gustaría que exista en C++ es tener un manejo automático de dependencias como Java. Anoche estuve un buen rato hasta solucionar un error de compilación, que no hacía un casting automático desde una subclase a su padre. Las Forward Declarations son un problema, tengo que ver si la forma que hoy las encaro es la mejor.

Buscando sobre mmos en gamedev.SE me crucé con esta pregunta. Desde ahí encontré este post, me encantó el trick de los numeros al azar.

Tengo una relación amor/odio con Eclipse. Estoy usando Eclipse CDT Juno, y funciona muy muy lento en mi PC. Tengo el miedo que a medida que haya más código va a funcionar cada vez más lento...

Se me ocurrió probar diferentes librerías de GUI. Intenté compilar CEGUI pero no terminó nunca, en especial porque le puse make -j4 y me masticó toda la RAM. libRocket parece interesante, aunque voy a tener que hacer manualmente el binding a SDL.

Necesito nuevo hardware.

martes, 15 de mayo de 2012

Martes 15 de Mayo, 2012

Leyendo algun sitio de noticias (Hacker News?, Reddit?) me encontré con The Schemaverse. Es genial lo que un poco de imaginación puede lograr.

En especial me pareció muy interesante el concepto de "ticks" que tienen en el juego, me hizo acordar a uno que jugué hace unos años (¿como se llamaba?) que era web y también del espacio, y los ticks eran cada un tiempo fijo. Todo ocurría dentro de un tick.

Me dejó pensando porque nunca me pareció buena idea poner ni la IA ni otro tipo de mecanismo en threads aparte para simular la ejecución de objetos del juego relacionados. De esta forma, si al servidor le cuesta masticar y digerir los comandos de los usuarios, también le va a costar masticar y digerir la IA.

También siempre me tentó la idea de hacer un juego tipo "invasión", lo que hoy se conoce como "Tower Defense", donde una oleada de bichos te atacan sin parar. Esto que sea de forma automática.

Otra punto que tengo que darle mas forma es la de hacer tareas programadas automáticas. Que ciertos elementos se sigan ejecutando en el juego aún con el usuario desconectado.

Ésta es una idea que en parte le estoy robando a notch con su DCPU16 ("... as we are going to emulate all computers and physics even when players aren't logged in."), aunque por ahora no me cierra que los jugadores puedan subir su propio codigo en el servidor. ¿Lua capaz? No se.

Volviendo al tema del "pet project" de ayer, me acordé lo que me dijo un buen amigo cuando le pregunté por qué abandonó su proyecto open source. Me dice que él quería dedicarle su tiempo a programar cosas que él queria, no las (¿ridículas?) ideas que otros les tiraban. Amigo, no sos el unico con ese sentimiento.

En el blog de John Cook (es genial!) hay un pequeño post donde explica la ¿psicología? de las desiciones de diseño de un sistema de software. Mientras más fuerte es el diseño, menos confianza hay en los programadores. Uno lo puede sentir en las tripas.

PD: Esto de tener una core dump de mis ideas es muy extraño. So far so good.

lunes, 14 de mayo de 2012

Lunes 14 de Mayo, 2012

Empezar un diario de desarrollo es fácil, seguirlo y mantenerlo no lo es. Voy a intentar seguir el desarrollo los fines de semana, junto con este diario.

El MUD ya funciona, conecta, se puede caminar por un mapa de 15x20. No me termina de cerrar las librerías que estoy usando, ni en el servidor ni en el cliente. Usar Python en el cliente y en el servidor me cierra más que otras opciones, en especial mientras este sea mi pet project.

El mapa en realidad no existe como tal, aún no hay una matriz propia ni en el cliente ni en el servidor. En el servidor estoy usando las dos clases básicas de Twisted, Protocol y Factory. En el cliente estoy usando mis propios bindings de SDL 1.2. Tengo que migrar a SDL 2.0 lo antes posible. Lo más complicado hasta ahora es decidir qué es lo próximo que voy a hacer, y si hago una lista es muy probable que no haga ninguna de esas.