miércoles, 18 de septiembre de 2013

Traslado a Mega

Bueno, parece ser que me restablecieron las descargas de DropBox, pero de todos modos he mudado todo el contenido a Mega para evitar este tipo de incidentes por exceso de tráfico. Me comentaban estos días que los anteriores enlacen no funcionaban, así que muchas gracias por el aviso y si todavía hay alguno caído agradezco el comentario.

Un saludo.

lunes, 1 de julio de 2013

Suspensión en Dropbox

Ayer mismo recibí un correo del equipo de Dropbox mediante el cual me comunicaban la suspensión de los enlaces públicos de mi cuenta. Al parecer, los enlaces generan tráfico excesivo y por ello han decidido suspender esta práctica.
Hasta ahora lo he usado para subir y mostrar los trabajos que hago, y a pesar de ser livianos (excepto uno que llega a 40MB, ninguno excede de los 8 o 9MB) parece que me han cortado el grifo. Después de unos años, me he quedado bastante decepcionado con el servicio ya que las intenciones siempre eran buenas, nada de piratería.

En fin, tan pronto como pueda migraré el contenido a otro servidor y actualizaré los enlaces.
Un saludo.

martes, 18 de junio de 2013

Vídeo recopilatorio

Por motivos de imagen me he visto obligado ha hacer un vídeo que recopila algunos de los proyectos en los que he trabajado los últimos años. He aquí la pequeña muestra:


miércoles, 27 de marzo de 2013

Prueba de jugabilidad

Saludos mañaneros desde mi universidad, que a pesar de tener fiesta me he visto obligado a venir. ¿Será la rutina? La verdad es que aquí me siento como en casa. Bueno al grano, llevo tiempo haciendo trabajillos necesarios para mi carrera pero ya tenía ganas de volver a hacer algo con mi tiempo libre.

He aquí el resultado de una tarde (un par de horas) de programación de gameplay. Se dice que en este mundillo hay que especializarse en algo, y aunque le dé un poco a todos los palos me doy cuenta de que me gusta programar la jugabilidad cada vez más — y no interfaces etc., con los que pierdo la paciencia sin ver resultados ¡grfhr!
Siempre quise poner en práctica mis conocimientos de física y vectores (rigid body), así que éste es el resultado. Espero que os guste ;)


miércoles, 23 de enero de 2013

Descarga Freerider

A pesar de poner el límite de publicación para el lunes, las ganas de comenzar otros proyectos me han ayudado a poner más empeño en completar Freerider. Así que, aquí tenéis la descarga del juego.

Download Freerider.zip (3.23 MB)

Mas información.

Foros SFML

Foros Stratos

lunes, 21 de enero de 2013

Últimos detalles

Solo faltan unos pocos detalles para dar por finalizado el proyecto Freerider. Como dentro de una semana vuelvo a las clases universitarias y encima tengo alguna otra idea en mente, me he puesto como objetivo terminarlo antes del lunes que viene.

El tener que crear una montaña donde se puede seleccionar el lugar de descenso, me ha obligado a crear un editor de montañas que no será finalmente parte del juego. Dependiendo del lugar que se escoja, los parámetros que crearán los mapas aleatorios serán diferentes. La dificultad variará, y en consecuencia también la puntuación que se pueda obtener.

Todavía falta crear la base de datos para el highscore y la conexión, pero es lo que menos me preocupa. Me parece mas duro tener que terminar la parte gráfica, tarea que nunca se me ha dado muy bien ya que no me dedico especialmente a ello.

jueves, 17 de enero de 2013

Nuevo título - Freerider

Como me gusta publicar los avances mediante vídeos demostrativos, ahí va lo último. Segunda versión alpha del juego. Tendrá características como:
  • Seleccionar el punto exacto de la montaña en el que se quiera comenzar el descenso. Punto en el que se calcularán diferentes parámetros (cantidad de pinos, rocas, numero y altura de los acantilados...) con los que se creará un mapa aleatorio adecuado.
  • Diferentes modos de juego.
  • Mapas infinitos en el modo freeride.
  • Clasificaciones online. La puntuación dependerá de la dificultad del mapa y del modo.

Un saludo.

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.


viernes, 30 de noviembre de 2012

Rounded Soccer RELEASE

Meses después del comienzo del proyecto Rounded Soccer, finalmente publico la versión completa del juego. No he tenido ocasión de testear completamente los partidos online, pero si surgiera la ocasión, podría sacar un parche para mejorarlo.



Por el momento es todo, para más información probarlo en vuestras máquinas o leer los anteriores posts sobre el tema.

Un saludo.

jueves, 29 de noviembre de 2012

Brave Bill walkthrough

Fue hace unos días cuando me acordé de que tenía pendiente grabar un video de Brave Bill, el juego de plataformas. En su momento tuve problemas ya que el programa Fraps no detectaba la ventana de este juego programado en SDL. Conseguí  grabarlo con el gratuito CamStudio y, aunque la calidad no sea igual de buena, aquí os traigo el walkthroug del mismo.


Un saludo

jueves, 8 de noviembre de 2012

Rounded Soccer online beta

Por fin me he animado a sacar la versión beta del modo online. Más información en la página dedicada. Mi intención es poder comprobar la latencia del juego a la hora de jugar los partidos, asi que personalmente agradeceré muchísimo cualquier feedback que reciba, ya sea para arregar fallos, mejorar otros aspectos o realizar nuevas propuestas.


Saludos.

martes, 9 de octubre de 2012

Rounded Soccer: Online Mode


Después de comprobar el buen funcionamiento del modo torneo, el proyecto pasa a la fase de desarrollo del modo online. El único detalle que falta es la posibilidad de guardar y cargar el estado del torneo, acciones que se realizarán en segundo plano automáticamente.

La especificación del nuevo modo está completa a pesar de que queden por tomar unas pocas decisiones sobre su implementación. La idea básica consiste en poder buscar una partida automáticamente mediante un único click y sin realizar de antemano un itercambio de direcciones IP.
La implementación la haré sobre el protocolo TCP para evitar las complicaciones que puede acarrear el realizar un sistema propio de conexión sobre el protocolo UDP. Además, en este juego no creo que la velocidad de conexión interfiera mucho en la jugabilidad.

La idea mencionada está casi programada al 100%, diría que solo queda programar la comunicación entre los jugadores en el partido en sí.

jueves, 20 de septiembre de 2012

Tournament Mode

Viendo que en Rounded Soccer el sistema de partidos está casi pulido, antes de comenzar a desarrollar el modo online se terminará de crear el modo torneo. Este es el aspecto actual (aún por mejorar) de este modo.


El sistema todavía necesita saber crear la fase de eliminatorias a partir de los grupos y la clasificación de los equipos por puntos. Puntos que también se mostrarán en la tabla de grupos. No se darán mas detalles de momento ya que quedan decisiones por tomar, pero en los próximos días estará listo como para poder testearlo.

Un saludo.

jueves, 2 de agosto de 2012

Proyecto Fin de Carrera

El mes de julio terminé y presenté el PFC llevado a a cabo a lo largo del curso. Al final se convirtió en un proyecto de gran envergadura que, aunque en un principio no lo parezca, se tuvieron que tomar muchísimas decisiones.

En este proyecto de Fin de Carrera se ha creado una nueva versión (3.0) de la herramienta WebDiagram, cuya función es facilitar el desarrollo de aplicaciones interactivas mediante la metodología InterMod.

Metodologías usadas: InterMod, Scrum y TDD

martes, 5 de junio de 2012

De vuelta al trabajo

He estado muy liado este último mes por el hecho de tener exámenes y trabajo que hacer sobre el proyecto de fin de carrera. Pido disculpas por haberme ausentado durante tanto tiempo, pero enseguida volveré a la carga con el desarrollo de Rounded Soccer.

Tengo que decir que no queda mucho para tener el juego completo en su modo offline, el modo online ya es otra historia y se barajan varias posibilidades.

Saludos.

sábado, 28 de abril de 2012

Rounded Soccer

Rounded Soccer es el nuevo nombre del proyecto "minisoccer". Me he puesto a diseñar y ampliar este proyecto seriamente en mi tiempo libre. Se pueden ver mejoras gráficamente y más adelante crearé un nueva sección donde iré poniendo información sobre su progreso.


A pesar de mi escaso conocimiento en los programas de diseño de gráficos vectoriales (o debería generalizar en el diseño de gráficos), he conseguido un resultado aceptable. Se han añadido todos los equipos de la pasada copa del mundo y un menú de selección.



Todavía queda mucho por hacer, pero intento avanzar rápido cuando tengo tiempo.

miércoles, 18 de abril de 2012

Ser un Game Designer

Para todos los emprendedores en la materia, un video que te marca los pasos a seguir o que destroza tus sueños si pensabas que era muy fácil.


Te has llevado una decepción? No desistas, crea tus pequeños proyectos y trabaja en ello como un hobby. Se constante y quizás salga alguna oportunidad para triunfar. Muchos lo hacemos.

Personalmente llegué al límite cuando dbzbx fué lanzado, es cierto que tuvo más éxito del que imaginé (probablemente más de 1 millon de usuarios), pero tambíen tengo que decir que no obtuve absolutamente nada a cambio. Es cierto que coloqué un botón de donaciones etc... no ha habido nunca actividad, pero nunca sentí la satisfacción de recibir miles y miles de mensajes de gratitud. =)

Descargas
Softonic:747.627
Uptodown: 797.832
Programas-gratis.net:167.488
ABCdatos:34.302
TodoProgramas:32.282
...
TOTAL1.779.531

Sumamos en total más de 1.600.000 descargas sin contar otras muchas páginas o las distribuciónes de terceros (usuarios) mediante hostings y foros donde se consigue más tráfico.
Hablamos de gran cantidad de descargas y una valoración media de 8.5/10 aproximadamente.

Saqué valiosas conclusiones para los próximos proyectos, no es fácil ganarse la vida en el mundo del software y menos aún si no se tiene cierto prestigio.


Actualización dia 15/05/2016
Softonic:2.388.243
Uptodown: 1.395.706
Programas-gratis.net:216.050
ABCdatos:37.378
TodoProgramas:34.182
...
TOTAL 4.071.559

miércoles, 4 de abril de 2012

Cuestiones de FPS

Dado la pequeña modificación que hice en uno de los proyectos (concretamente en el de minisoccer), me gustaría comentar el tema del control de tiempo en las aplicaciones a tiempo real.

Hasta ahora, siempre había hecho uso de una determinada velocidad constante de juego y FPS. Es decir, el simple bucle que en cada iteración hace un "sleep" si dicha iteración se realiza en muy poco tiempo. Esto nos asegura que el juego se reproduzca a la misma velocidad en cualquier ordenador (no es del todo cierto), pero el renderizado se realiza las mismas veces que la física del juego.

const int FPS = 60;
const int DT = 1000 / FPS;
int lastTime, frameTime;

bool running = true;
while (running) {
    lastTime = getTicks();

    update();
    render();

    frameTime = getTicks() - lastTime;
    if (frameTime < DT)
        sleep(DT - frameTime);
}

Pero de este modo, limitamos las capacidades de un buen hardware cuando seguramente podría ser capaz de ejecutar el juego a una velocidad mayor. Por eso a menudo los programadores usan el tiempo de cada frame (frameTime) para actualizar la física usando lógicas parecidas a esta:

x = x + speed * frameTime

Así se aplica la integración de Euler. Pero no es eso a lo que quiero llegar. Gracias a los excelentes artículos publicados en esta y esta otra página web podemos llegar a implementar un bucle en el que la velocidad del juego es totalmente independente de los FPS. En ese caso la física podríamos calcularla 25 veces por segundo (está estudiado que generalmente es suficiente, incluyendo chequeo de collisones etc.) mientras que el renderizado se realiza en cada frame.

No voy a entrar en la implementación ya que no tiene mucha complicación y las fuentes aportadas tienen suficiente información para entenderlo (en inglés). Cabe destacar que en la renderización se hace uso de un nuevo valor que se usa para interpolar la posición correcta de las instancias y así se consigue una animación realmente suave. Yo mismo he conseguido un excelente resultado asi que animo a hacer uso de este método a todo programador, cualquier duda podeis consultarmelo.

Fuentes:
Koonsolo
Gafferongames

P.D: Las dos páginas usan métodos distintos para calcular el valor usado para la interpolación; personalmente prefiero el método usado por gafferongames que calcula dicho valor mediante el uso del estado anterior y actual de las instancias.