miércoles, 19 de diciembre de 2012

Creación de terrenos

Ahora que empiezan las vacaciones y como todos estaremos ausentes durante un tiempo, quiero publicar algo para comentar el estado en el que se encuentra el proyecto de Snowboard.


Aunque he mejorado algunos aspectos en la jugabilidad, me he centrado sobre todo en la creación automática de terrenos con zonas rocosas, acantilados de diferentes alturas y árboles. Todo de forma aleatoria después de facilitar parámetros como: cantidad de acantilados, altura mínima/máxima de acantilados, distancia entre ellos, cantidad de zonas rocosas, cantidad de árboles...


Además, tuve que pensar en algún sistema para controlar el orden de dibujado de todas las instancias, ya que la profundidad juega un gran papel. Implementé distintos algoritmos para ordenar las instancias según su profundidad.

Algoritmo bubble sort

Con el algoritmo bubble sort de orden n*n, el juego se ralentizaba una barbaridad. Hablamos de ordenar al rededor de 1000 instancias. Imposible de jugar.

Algoritmo merge sort

El algoritmo merge sort es de orden n*log n, por lo que acelera un poco el proceso. Pero lamentablemente, a pesar de ser mejor, el juego seguía sin ser jugable.

Solución

Usar el algoritmo merge sort para el ordenamiento, pero ordenar solamente las instancias necesarias. Por ejemplo, ordenar una lista auxiliar donde se meterán solo las instancias visibles para el usuario (o aquellas a una distancia mínima del jugador principal etc.).

Simple, fácil y efectivo.

martes, 11 de diciembre de 2012

Un nuevo minijuego

Tras acabar el desarrollo de Rounded Soccer para PC, he decidido comenzar otro pequeño proyecto simple que no me llevará más de 1 mes de esfuerzo. A propósito, tengo pendiente lanzar la versión para Linux de Rounded Soccer.

El juego trata de descender un recorrido sobre una tabla de snowboard, no tengo detalles específicos de momento ya que tengo que decidir los modos de juego etc.