Código liberado – Version 0.4
Acabo de liberar el codigo usando el servicio de Google Code. La idea es aprender a usar un repositorio SVN, cosa que no tengo muy clara, asi que mejor tomenselo con pinzas.
Los fuentes los pueden ver desde aca: http://code.google.com/p/pixelwar/source/browse/
Para el que no sabe usar SVN, tambien comprimi los fuentes y los pueden descargar desde aca: http://code.google.com/p/pixelwar/downloads/list
Como siempre: el que esta interesado, lo puedo agregar como miembro del proyecto y colaborar así con este maravilloso juego
PD: El finde hacemos una beta de a 6
0.3.9.9.9.9.9.9.9.9
Estuve como 2 días para implementar las colisiones de las balas. La puta madre como renegué. Al final no eran más que un par de boludeces, como que creaba los Sprites con los ejes invertidos (el x por el y, y viceversa) y cositas así que me terminaron llevando a esto:
(cualquier parecido con Matrix es pura coincidencia)

Con la detección de colisiones metida adentro, y una gran serie de cambios/mejoras hechas, ya podría decir que la versión 0.4 esta hecha. Aca una listita de los items completados (desde la version 0.3):
[X] Clase Objeto
[X] Colisión de disparos contra sprites bloqueantes
[X] Separación básica del código fuente en modulos
[X] mapa de 2 niveles (para los objetos)
[X] Indicador de vida
[X] Modificar la carga del juego
[X] Mover brazos al disparar (jugadores no principales)
[X] Selección de equipo en el prompt
[X] Clase GUI dividirla en dos clases: la que usa spg y la que dibuja el juego
[X] Mantener foco en el chat
[X] Dividir en 2 clases el protocolo (paq. enviados y paq. recibidos)
[X] No enviar caracteres no ASCII (en el chat)
[X] Balas y nombres de colores (de acuerdo al equipo)
[X] No cargar sprites con nombres inexistentes
[X] Modo fantasma al morir
En el servidor faltan 2 items por completar, y también ya estaría listo. Ademas Nico (deku) esta haciendo un editor de mapas, al que próximamente lo voy a poner a disposición de la gentuza para que arme sus propias mapas y los comparta con el club de fans de Pixel War (si es que existe uno…).
Algunos avances
Hoy retome un cacho el Pixel War y hice algunos pequeños cambios:
Delay al disparar las balas: lo que me ahorra el dolor de cabeza de debugiar los paquetes de los disparos que se enviaban “pegados” desde el servidor.
Desplazamiento suave del mapa: hice que el mapa se desplace en 4 tiempos, de manera que la fila o columna nueva de sqms que hay que dibujar no aparezca de repente (lo que quedaba feo y era perjudicial para la salud).
Ahora solamente me queda por programar el comportamiento de las balas dentro del servidor (que te quite vida si te pega, etc…) y saco la versión 0.3 y hacemos, ahora si, una buena beta con sangre y disparos por todas partes
¿Habra vida más allá del pixel?
¿Como se genero la vida en pixeland? ¿Dios? ¿Buda? ¿El bing bang? ¿Un programador demasiado ocioso?
¿Cuales fueron sus primeras manifestaciones? ¿Adan Y Eva? ¿CHON? ¿Algas? ¿Proteínas? ¿Los dinosaurios? ¿El dengue? ¿La porcina?
¿Qué misterios se develan debajo de esos cuadrados negros? ¿RGB? ¿DPI? ¿PPP? ¿P2P(?)?
Nota mental nº 10 (en binario)
Hay que dejar de usar TCP y ir una capa más abajo, a UDP, porque la otra es lenta.
proyectos++
No es que me haya colgado como la bananita de la imagen, sino que anduve metido en un par de proyectos de índoles contrarias.
Por un lado me hice un clon de un juego que tengo en el celular (un Nokia 1110) y que nadie nunca me pudo batir el record
. Se trata simplemente de una pelotita que va bajando escalones y ganando puntos. El juego quedo en su versión 0.0.0.0.0.0.0.0.1 y creo que así esta bien porque no me dio más ganas de seguirlo. Lo pueden bajar desde acá.
Por el otro lado, tuve que programar un algoritmo genético para una materia de la facultad. Lo que hace principalmente el algoritmo es buscar máximos en una función, basándose en la teorías evolutivas de Darwin. Nada complicado de programar, pero muy emocionante. También les dejo el fuente aunque lo único que van a ver es un montón de numeritos y no van a entender nada
.
En breve seguiremos con más Pixel War
Va queriendo
Bueno. Vamos a actualizarnos un poco que hace rato que no dejo noticias (mil disculpas a los millones de fans). Este mes fue un mes bastante ocioso pero eso no nos impido programar un rato, ¡No señor!. Por empezar, muchos de los cambios nombrados en la entrada anterior fueron implementados.
Un gran avance que logre fue la optimización de los FPS (cuadros por segundo). ¿Que pasaba? Resulta que para que la pantalla se actualice, uno tiene que hacer unas llamadas a ciertas funciones que se encargan de todo eso automaticente (gracias a dios y la virgen maría!), pero, pero, pero, el programador se tiene que encargar de los intervalos con que se llama a estas funciones. Para lograr esto, la manera más simple es hacer un bucle que mantenga actualizada la pantalla constantemente.
¿Cual era el problema? El problema era que si a ese bucle no le ponía ningún tipo de delay especial que libere cada x segundos la cpu (cosa que pygame trae), la aplicación nos va a empezar a usar el 100% del procesador, y eso es algo que a mi no me copa. La cosa estaba solucionada desde un principio, usaba un retardo que trae un objeto de pygame (time.wait) que congela la aplicacion por X milisegundos y le devuelve el procesador a cualquier otro proceso, así, de esta manera, el juego comía entre 20% 0 %30 de procesamiento y no todo el procesador entero.
¿Pero que pasaba? Esta función time.wait no era la optima para tener unos buenos FPS, digamos, no tenia manera de controlarlos! era como que tiraba buenos FPS pero de manera bruta nomas, acumulativa, entonces, re-leyendo un poco la documentación, vi que con clock.tick(x) ¡todo andaba a la perfección! Es más, podía setiar el máximo de FPS que quería (la x) y que la libreria se encargue del resto (de usar la suficiente CPU para alcanzar esos x fps).
Moraleja de la historia: nunca se pongan a programar un juego online.
deja un comentario