Sunday, July 24, 2011

Tile Collisions!

Versión: vAlpha_0.07.24
Novedades desde última versión:


- Lectura de secciones desde xml.
- Lectura de tipos de cuadrícula desde xml.
- Sistema de carga dinámica secciones.
- Cada sección puede tener su propia música.
- Ya hay cuadriculas "colisionables":






Ahora actualizo el Roadmap.

Friday, July 22, 2011

Tile System done!

Faenón de 4 dias, pero por fin la parte más dura del sistema de cuadrículas está hecha!

Vale tal como dije el mundo se divide por secciones y cada sección tiene 10000 cuadrículas. Asi que cada sección tiene un array de 10000 shorts.Para evitar tiempos de carga, pre-cargo con antelación las secciones de alrededor, haciendo un total de 9 secciones que estan siempre cargadas (9x(Array de 10000x2bytes)).
Y solo muestro/proceso las que hay en pantalla en ese momento, en total son 96 cuadrículas:



Por tanto dependiendo de la posición del jugador voy cargando la información del array de 10000 cuadriculas al de 96 cuadrículas que proceso por pantalla... y el problema era? cuando el jugador llega a una intersección de secciones, donde tiene que cargar las cuadrículas de hasta 4 secciones diferentes dentro del array de proceso por pantalla:


Ej. El jugador está en una esquina de la sección 4, por lo tanto tiene que cargar las cuadrículas del noreste de esa sección, las del sureste de la sección 1, las del suroeste de la sección 2 y las del noroeste de la sección 5...
Al final lo he conseguido, y me ha quedado uno de los bloques de código más feos que jamás he hecho xD... si me acuerdo luego posteo dicha función

Monday, July 18, 2011

Prueba versión Alpha_0.07.18

http://protectetres.comyr.com/DJustClientTestPage.html

Lo he probado y en principio funciona, yuju!
Si algún alphatester quiere conectarse y ver que tal... de momento podemos vernos los unos a los otros y chatear. El servidor está en mi pc de casa, asi que si peta hasta que no vuelva del curro no hay arreglo :P.

Some shots.


9o día de desarrollo.

Seguimiento del desarrollo de mi tercer proyecto (primero en solitario que empiezo desde cero).
Versión: vAlpha_0.07.18
Implementado hasta ahora:


- Comunicación cliente/servidor chat: los jugadores pueden comunicarse entre ellos mediante un único canal de chat.


- Comunicación cliente/servidor mundo: se transfiere vía tcp el nombre, posición actual y dirección de movimiento del jugador y se comunica al resto de jugadores, por lo tanto ya les pueden ver en movimiento.


- Añadido sistema de cuadrículas (Tiles) para texturizar el suelo. Cada cuadricula mide 128x128px y pueden ser colisiona-bles.


- Se divide el mundo en secciones, cada sección se compone de 1000 cuadrículas y se cargan a petición, permite guardar la información de las secciones en otro servidor y hace que las secciones sean modulares (que se puedan modificar/añadir secciones sin tocar el software cliente.
 El nº de secciones puede llegar a millones.


- El jugador puede moverse por el mundo mediante las flechas y wasd.


- Implementado movimiento del jugador a través de las secciones, las cuadrículas se cargan a medida que el jugador avanza teniendo en cuenta la dirección de este. 
Cuando el jugador se acerca al límite de la sección, se empieza a cargar la siguiente a través de un simple fichero de texto con la información de las 1000 cuadrículas de esa sección, esta carga se realiza mediante un thread a parte y supone un 2-3% de uso de cpu y parece negligible en el rendimiento del juego (al menos en mi hexa-core). 
Cuando el jugador se aleja del límite de la sección, la anterior se empieza a liberar.


- Se añaden 2 texturas para representar al jugador y al resto de jugadores online, ambos tipos de jugadores tienen animación de movimiento en 4 direcciones (norte, sur, este, oeste).


- Añadidas sombras cutres a las texturas de los jugadores.


- Implementado efecto climático: Sombras de nubes en movimiento, hay 5 distintas que pasan constantemente cerca del jugador y siempre en la misma dirección.


- Se prepara el objeto cuadrícula para que pueda tener animación.


- Añadido un label con la información de posición del jugador ( 0.00|1.49 : donde 0/1 es el número de sección horizontal/vertical, y .00/.49 el número de cuadricula horizontal/vertical.


- Añadida carga externa y reproducción de música mp3, de esta manera se puede alojar en un servidor externo y ser cargada a petición.


Eso es todo (creo).