Programación de Videojuegos 3D en Darkbasic (I)
La programación de videojuegos 3D por (Do... Loop, While) las sentencias condicionales (if
mucho tiempo ha sido una de las ramas de la y Case) etc. En todo caso, se hará referencia a las in-
programación en la cual se necesitaba para cumplir strucciones pero no nos detendremos a explicar cada
los proyectos una buena cantidad de personas una, como ayuda podrá acceder al tutorial de blitz3d,
interviniendo en estos además de que estas perso- donde se explican en detalles estas instrucciones.
nas debian tener grandes conocimientos de progra-
mación Grafica y matematica. Introducción a los graficos 3d
Como sabremos los graficos 3d se crean a
Hace unos años atras cuando el programa partir de poligonos, los cuales se hubican en un espa-
español Div gamestudio estaba dando sus ultimos cio 3d( El espacio esta compuesto por el eje x, eje y
pasos, aparecio una nueva herramienta llamada y eje z).
Darkbasic, la cual permitia de una forma facil El poligono más común que podemos obser-
desarrollar juegos en 3d utilizando las direct X, var es el triangulo, apartir de este se pueden desar-
pero sin que fuera necesario que el usuario supiera rollar modelos 3d más complejos.
programar estas. La representación grafica de esta primitiva la
Hoy en dia existen 2 versiones de Darkba- podemos observar en la Fig. 2
sic la profesional y la estandar, en este tutorial nos
abocaremos a la versión Profesional, por contar (x2, y2, z2)
esta con grandes mejoras respecto a la estandar (o
clasica).
(x3,y3,z3)
(x1, y1, z1 )
Fig. 2: Dibujo de un triangulo
Como vemos en la figura 2, el triangulo se
encuentra compuesto por tres vertices:
(x1,y1,z1) - (x2,y2,z2) - (x3,y3,z3)
Fig1: Un videojuego de calidad profesional realizado en Darkbasic
El vertice es El punto en común de los dos
lados de un ángulo, es decir, el punto donde inicia un
¿Que queremos lograr con este tutorial? ángulo.
El objetivo a la hora de realizar este tuto-
rial es poder aprender los fundamentos básicos de
la programación 3d. El objetivo a lo largo de los
siguientes meses que se vaya realizando el tutorial
es poder lograr que al finalizar el mismo, el lector
tenga un panorama general de como crear juegos
en 3d, se comenzará desde lo más básico, pero la
idea es que cuando terminemos este tutorial, se
realice un videojuego en 3D, aplicando lo apren-
dido a lo largo de los tutoriales. Es importante que
el usuario tenga bien aprendida las instrucciones
básicas del darkbasic, como por ejemplo los bucles
Fig. 3 . Ubicación de los vertices en un triangulo
Ejes cartesianos El pseudocodigo para realizar esta acción
seria:
Para facilitar la localización de un punto determi-
nado utilizamos un sistema que se llama sistema y= 60
de eje cartesiano. De forma arbitraria escogemos mientra x<500
un punto como (0,0) y a partir de ahí empezamos x = x+1
a contar. El primer número se llama abscisa y es la moverpelota(x,y)
coordenada que normalmente ponemos en sentido fin mientras
horizontal y que aumenta hacia la derecha (la X)
y el segundo número se llama ordenada y es la con esto lograríamos que la pelota se mueva sobre
coordenada que normalmente ponemos en sentido el eje x a una altura fija de 60 puntos (este es el
vertical y que aumenta hacia arriba (La Y). valor de Y)
Entonces, los ejes cartesianos serán los ejes X y eje Ejes cartesianos 3D
Y en donde el eje X corresponde a la coordenada Para el espacio 3d a los 2 ejes anteriores se le debe
horizontal y el eje Y corresponde a la coordenada agregar un tercer eje que daria la profundidad al
vertical. gráfico
Fig. 5 Ejes cartesianos en un espacio 3D
Fig. 4 Ejes cartesianos y sus componentes.
Como vimos anteriormente para dibujar en
Los cuadrantes en un eje cartesiano corre- un espacio 3d necesitaremos utilizar las tres corde-
sponde a los valores que tomaran los puntos en un nadas x,y,z.
determinado cuadrante, por ejemplo:
En resumen, a la hora de programar juegos
(-3,8) estos valores corresponden al cuadrante 2
veremos que con los objetos que se dibujan en pan-
donde la x es negativa y la y es positiva.
talla se pueden realizar diferentes acciones como
por ejemplo moverlos. Para mover hacia el costado
Es muy importante aprender bien el uso de
se trabaja con el eje x, para mover hacia arriba o
cuadrantes y de ejes cartesianos ya que para pro-
abajo se trabaja con eje y, y en los juegos tridimen-
gramar, por ejemplo el movimiento de una pelota,
sionales para ir hacia adelante o atras se utiliza el
deberiamos saber que eje deberia aumentar para
eje Z.
que la pelota se mueva.
Un ejemplo sería si queremos que una
pelota se mueva de izquierda a derecha lo que
deberiamos hacer es a la coordenada X de la pelota
aumentarla
Como se dibuja un triangulo 3D en un programa forma automatica.
de computación?
sync rate 30
La forma antigua era:, dibujando pixel a pixel
con esta instrucción estamos diciendo que
entre un punto del vertice y otro de esa forma se dibu-
el refresco de pantalla se ejecutará a una taza de 30
jaba la linea que unia los vertices, pero para hacer
frames por segundo.
una simple figura geometrica se debia escribir mucho
código.
color Backdrop RGB(255,255,255)
Darkbasic cuenta con una función que crea un
triangulo directamente, esta se llama:
Con esta instrucción aplicamos un color de
fondo, el sistema de colores utilizado es el RGB. Es
MAKE OBJECT TRIANGLE
de destacar en este caso se utilizo una instrucción
compuesta, ya que RGB es otra instrucción la cual
Los parametros que pide son, el número de primitiva
genera un valor entero que representa el color de
y los 3 vertices.
la combinacion de los tres colores (Rojo, verde y
Azul)
Veamos un ejemplo de Esta función utilizando el
programa Darkbasic:
MAKE OBJECT TRIANGLE 1,0,0,0,0,10,0,10,10,0
Sintaxis
Esta instrucción es la que estamos estudi-
MAKE OBJECT TRIANGLE Número del Objeto, X1, Y1, Z1, ando en estos momentos y lo que hace es construir
X2, Y2, Z2, X3, Y3, Z3 un triangulo.
Bien ahora construiremos un triangulo en MOVE OBJECT LEFT 1,5
Darkbasic, MOVE OBJECT DOWN 1,5
escribamos el siguiente código en el ide:
Mueve el objeto en una determinada
sync on
posición, en este caso el primer parametro lo mueve
sync rate 30 a la izquierda y el segundo hacia abajo. El siguiente
color Backdrop RGB(255,255,255) parametro indica el número del objeto, en este caso
ink rgb(0,0,0), 0 el triangulo y el ultimo el valor de avance, mientras
mas grande más se mueve a la izquierda y abajo
MAKE OBJECT TRIANGLE 1,0,0,0,0,10,0,10,10,0
MOVE OBJECT LEFT 1,5
MOVE OBJECT DOWN 1,5 SET OBJECT WIREFRAME 1,1
SET OBJECT WIREFRAME 1,1 Lo que hace esta instrucción es co-
MOVE CAMERA -12 locar el objeto en modo wireframe con lo
REPEAT
cual solo se dibujará las aristas del objeto.
SYNC Esta función puede tomar 2 valores o 0 o 1(
UNTIL ESCAPEKEY() = 1 si es 0 mostrará el objeto en modo Solido)
END
Codigo1: creación de un Triangulo Simple
En el código 1 vemos como se puede contruir
un triangulo, Ahora explicaremos el código
Sync on
lo que estamos indicando con esta instruccion es
que el programa se encargará de refrescar la pantalla
optimizando de esta forma los recursos para mostrar
objetos. Por defecto Darkbasic tiene esta opción en
Off Con lo cual el refresco de pantalla se realiza de
Fig. 6 Nuestra querida Lara en modo normal y WireFrame
Haciendo Girar El Triangulo
MOVE CAMERA -12
Lo proximo que haremos es dibujar un tri-
Lo que hace este comando es colocar la camara a angulo solido y hacerlo girar por la pantalla. Para
una distancia determinada. mientras el número de realizar esto escribimos el siguiente código:
distancia sea mas pequeño, la camara se ubicará mas
lejos. sync on
sync rate 100
Al utilizar este comando se puede usar de dos for- HIDE MOUSE
mas: color Backdrop RGB(0,40,40)
RANDOMIZE TIMER()
MAKE OBJECT TRIANGLE 1,-10,-10,0,-10,10,0,10,10,0
Sintaxis COLOR OBJECT 1, RGB(RND(255), RND(255),
RND(255))
MOVE CAMERA Valor Distancia MOVE CAMERA -20
MOVE CAMERA Número de Camara, Valor Dis- REPEAT
XROTATE OBJECT 1, OBJECT ANGLE X(1) + 1
tancia
YROTATE OBJECT 1, OBJECT ANGLE Y (1) + 1
SYNC
La diferencia es que el segundo sirve para cuando UNTIL ESCAPEKEY() = 1
tenemos multiples camaras en nuestro juego.
SHOW MOUSE
REPEAT END
SYNC
UNTIL ESCAPEKEY() = 1
código 2: El codigo que hace girar nuestro trian-
Por último tenemos el bucle principal, el cual en este gulo.
caso lo unico que realiza es el refresco de pantalla
(SYNC) y espera a que el usuario presione la tecla Muy bien, ahora pasaremos a explicar los
ESC (ESCAPEKEY() ) trozos de código que no fueron explicados anteri-
ormente.
HIDE MOUSE
Esta instrucción lo que hace es ocultar el
puntero del Mouse. para hacer que vuelva a apa-
recer utilizamos SHOW MOUSE
RANDOMIZE TIMER()
Randomize es un derivado de la funcion RND, la
cual genera número aleatorios En este caso ten-
dremos que usar lo que se conoce como “Semi-
lla”, que es un número arbitrario usado para que
empiece a funcionar el generador (Randomize).
Fig7: El triangulo creado con el código 1 Si este número es el mismo siempre los números
aleatorios devueltos serán siempre una misma
El la figura 7 observamos el resultado del serie, por lo tanto hay que usar como semilla
codigo escrito anteriormente. Sería bueno que ahora un número lo más “aleatorio” posible como por
el lector probara cambiando diferentes parametros ejemplo el número de segundos que han pasado
del código para que puedan ver los resultados sobre a partir de las doce de la noche, cosa que nos
el triangulo y de esta forma afianzar el conocimiento devuelve la función TIMER. Para inicializar el
de cada instrucción. generador de números aleatorios usaremos la
instrucción RANDOMIZE seguida de la semilla,
normalmente TIMER.
De esta forma cada vez que ejecutemos el
programa tendremos un número distinto. El valor
solo se repetiría si ejecutamos el programa otro día
a la misma hora, mismo minuto, mismo segundo.
La instrucción RANDOMIZE TIMER debe-
mos usarla una vez al principio de los programas
que usen la función RND, pero no es necesario
usarla más, de hecho repetirla en sitios como dentro
de un bucle podría resultar contraproducente.
COLOR OBJECT 1, RGB(RND(255),
RND(255), RND(255))
En esta función se le coloca un color al ob-
jeto 1 (en este caso el triangulo)
Su sintaxis es:
COLOR OBJECT número de objeto, número de color
Observemos que en nuestro caso estamos
utilizando la función RGB, para que me devuelva el
número de color.
Fig 8: El triangulo girando sobre el eje x e y
Para obtener cada color, Rojo, verde y azul,
Se utiliza la función RND la cual genera un número
Muy bien con todo lo que hemos visto ten-
aleatorio entre 0 y el valor pasado por parametro en
emos para prácticar bastante, tengamos en cuenta
este caso el 255. es por esta función que anterior-
que todo lo que en estos momentos aprendemos con
mente utilizamos randomize ya que de esta forma
un simple triangulo, en proximas lecciones nos ser-
evitamos que siempre tome los mismos valores y
vira para aplicarlo a modelos tridimensionales, por
por consiguiente muestre los mismos colores.
ejemplo de personajes para nuestro juego.
En el proximo número seguiremos trabajando
XROTATE OBJECT 1, OBJECT ANGLE X(1) + 1
YROTATE OBJECT 1, OBJECT ANGLE Y (1) + 1
con primitivas basicas, terminaremos de trabajar con
el triangulo y empezaremos con las otras como por
Lo que hacen estas dos funciones es rotar el objeto ejemplo el cubo, cilindro, etc.
3d en el eje de cordenadas x e y, la sintaxis de esta Hasta el mes que viene
instrucción es: Alexis Jeansalle
XROTATE OBJECT Número Objeto, XAngulo Sobre el autor
YROTATE OBJECT Número Objeto, YAngulo
Alexis Jeansalle, actualmente se encuentra es-
si observamos nuestro código, para darle el angulo tudiando la carrera de técnico en sistemas (con
de rotación al objeto 3d utilizamos OBJECT ANGLE orientación al diseño multimedial y web). Tra-
X(1) + 1 y OBJECT ANGLE Y (1) + 1. El número entre baja como coordinador del área de capacitación
parentesis representa el número de objeto, es decir en informática del gobierno de la provincia del
que toma el angulo actual del objeto, luego le suma chubut (Argentina). Es creador de la página www.
1 para que comienze a girar. [Link] desde donde se podrán
realizar cursos de informática totalmente gratis.