Programación: Skills
Se trata de una palabra que significa algo así como “habilidades”
o “técnicas” y que usaba a menudo cuando formaba parte del mundo músical y de
la cultura de los Djs de Hip hop.
Básicamente uno aprendia una serie de técnicas o skills y
las combinaba para crear acompañamientos sonoros en las canciones o hacer
música a partir de sonidos. Habia que practicar durante meses en muchos casos,
para dominar estas habilidades y conseguir añadirlas a nuestro repertorio. Además,
cuando uno mejoraba lo suficiente era capaz de inventar y desarrollar sus
propias técnicas.
En los videojuegos sucede una cosa similar, tanto para
programadores como para artistas, diseñadores, guionistas…, y es que hay una
serie de habilidades que debemos tener en nuestro repertorio. Estas nos
permitiran desarrollar nuestros proyectos y, cuando seamos lo bastante buenos,
desarrollar nuestros propios métodos de solucionar los problemas que nos vayan
surgiendo durante la producción.
Con el tiempo, en el Blog, me gustaría mostrar algunas
técnicas que suelen ser de uso común y que se repiten en el mundillo, por lo
que nos conviene conocer, ya que la forma en la que se resuelven muchos géneros
o mecánicas hace tiempo que esta inventada y perfeccionada. Espero que a los
lectores les sirva. A mi no me viene mal tenerlo aquí como recordatorio.
Empecemos por programación:
Animación basada en el tiempo
Cuando el framerate de un juego puede variar por que estamos
ejecutandolo online o simplemente por que hay muchos cambios en pantalla con los
que el procesador no puede, no conviene fiarnos de que las actualizaciones a
nuestra pantalla de juego se realicen fotograma a fotograma. Por eso es muy
útil usar la animación basada en el tiempo.
Explicado con ActionScript, un ejemplo sería:
Primero creamos una variable que guarde el tiempo del ultimo
paso (el tiempo que tarda en ejecutarse el fotograma).
var ultimoPaso:int=getTimer();
Usaremos esto para indicar a nuestro gráfico cuanto debe
moverse enun periodo de tiempo. Para ello en cada fotograma hay que realizar
una serie de acciones para nuestro gráfico en movimiento.
var tiempoDiff:int=getTimer()-ultimoPaso;
ultimoPaso+=tiempoDiff;
objeto.x=tiempoDiff*.1;
En ActionScript podemos hacer eso mediante una función que
se ejecute en cada evento ENTER_FRAME. Calculamos la diferencia de tiempo y
preparamos la variable ultimoPaso para el paso siguiente, Luego modificamos la
variable x de nuestro objeto añadiendole tiempoDiff multiplicado por 0.1 (Así,
en este caso el objeto se mueve 100 pixels cada 1000 milisegundos). Si en 1
milisegundo se mueve 0.1 pixeles, se moveran 100 en 1000 milisegundos. (Una
sencilla regla de tres).
Customizar cursores
Cuando desarrollamos usando motores para juegos normalmente
hay un cursor definido que tiene su posición x y su posición y. Podemos usar
esto para ocultar este cursor y sustituirlo por la imagen que queramos
simplemente igualando en cada fotograma la posición x, junto con la posicion y,
a la que tendría el cursor del ratón. Muy sencillo.
Mouse.hide();
imagen.x=mouseX;
imagen.y=mouseY;
Números al
azar
Suele haber una función para generar números aleatorios en
todos los lenguajes de programación. Por ejemplo en ActionScript tenemos
Math.random. Esta funcion devuelve un numero entre 0.0 y 1.0, por lo que
tendremos que servirnos de algunos trucos para generar, por ejemplo, la tirada
de un dado que esta entre 1 y 6. Para conseguir esto multiplicamos.
var aleatorio:Number=Math.random()*6;
Como queremos numeros enteros habra que redondear
var aleatorio:Number=Math.floor(Math.random()*6);
Por último como no queremos que pueda salir el cero, le
sumaremos 1 al resultado.
var aleatorio:Number=Math.floor(Math.random()*6)+1;
Como en el rángo entre 0.0 y 1.0 no se incluye el límite
1.0, el sumar 1 no es un problema, seguiremos moviendonos entre el 1 y el 6
Espero que se entienda todo. Próximamente más.
Comentarios
Publicar un comentario