Aprende a crear videojuegos 3D con el potente editor de Blender. Dene el comportamiento de la aplicación mediante los Bloques Lógicos. Publica tus videojuegos, generando ejecutables para Windos, !ac " #$%&Linu'.
(arlos #on)*le) !orcillo (arlos.#on)ale)+uclm.es David allejo -ern*nde) David.allejo+uclm.es
Escuela Superior de Informática · Paseo de la Universidad, 4 · 13071 Ciudad eal
Curso de Desarrollo de Videojuegos Videojuegos 3D con Blender Escuela Superior de Informática Departamento de Tecnologías Tecnologías y Sistemas de Información
Universidad de Castilla-La anc!a Carlos "on#ále# orcillo $Carlos%"on#ale#&uclm%es' David (alle)o *ernánde# $David%(alle)o&uclm%es'
+prende a crear video)uegos ,D con el potente editor de lender% De.ne el comportamiento de la aplicación mediante los lo/ues Lógicos% 0u1lica tus video)uegos2 generando e)ecuta1les para 3indo4s2 ac y "5U6Linu7%
Carlos "on#ále# orcillo Carlos%"on#ale#&uclm%es David (alle)o *ernánde# David%(alle)o&uclm%es
Escuela Superior de Informática · Paseo de la Universidad, 4 · 13071 Ciudad eal
Diseño:
Curso de !esarrollo de "ideo#ue$os 3! con %lender &Por orden alfabético ' Carlos (on)ále) *orcillo, !avid "alle#o +ernánde) Carlos (on)ále) *orcillo
1ª Edición:
*a-o .014
Publica:
Escuela Superior de Informática &Universidad de Castilla/a *anca'
Título: Autores:
Este li2ro fue compuesto - mauetado con i2reffice41 Imá$enes editada s con (I*P, In5scape - %lender
Esta o1ra se distri1uye 1a)o licencia Creative Commons 8econocimientoCompartirIgual ,%9 Espa:a $CC ;-S+ ,%9 ES'% Usted es li1re de< Compartir y +daptar este material para cual/uier .nalidad2 incluso comercial%
Prefacio
Sintel: CC-BY Blender Foundation.
La industria del videojuego ocupa el primer lugar en el ocio audio-visual e interactivo de España, con una cuota de mercado que supera el 50%. Nuestro país ocupa posiciones destacadas en el ranking mundial de consumidores de video juegos es quinto a nivel europeo. Esta situaci!n como consumidores se ve igualmente re"le jada en el #m$ito del desarrollo. ran cantidad de programadores españoles tra$ajan en importantes compañías del sector a nivel internacional. &e igual modo, pequeños grupos de desarrolladores Indie crean producciones que triun"an 'undialmente. &esde el punto de vista del creador, las (erramientas e)istentes (an evolucionado igualmente.
&esde los primeros videojuegos que se *cableaban+ directamente con (ardare dedicado, (asta los modernos sistemas de construcci!n de alto nivel como ame 'aker, nit o /lender. En este pequeño manual se recogen, a modo de apuntes, el material para el tra$ajo en el curso de introducci!n al desarrollo de videojuegos con /lender. El curso de 1 (oras de duraci!n est# en"ocado a ser una introducci!n $#sica al uso de /lender, pero mu en"ocada a la producci!n de videojuegos. En la sesi!n se construe un ejemplo $#sico desde cero. Este manual recoge muc(a m#s in"ormaci!n que puede servir como primeros pasos para el tra$ajo aut!nomo. Los arc(ivos necesarios para seguir los ejemplos del capítulo 1 * Blender Game Engine+ pueden descargarse de la siguiente p#gina e$2 ⧐ http://www.esi.uclm.es/videojuegos/
Esperamos que este material sirva para que despierte el gusanillo del desarrollo de videojuegos, una de las disciplinas m#s apasionantes de la in"orm#tica. &is"ruta del camino ... Happy Blending! Prefacio
5
«El hombre sólo juega cuando es libre en el pleno sentido de la palabra, y sólo es plenamente hombre cuando juega.» Friedrich Schiller (1759-1805) Dramaturgo !il"so!o e historiador
Prefacio Capítulo 1. Desarrollo de Videojuegos Capítulo 2. Introducción a Blender Capítulo 3. Blender a!e "ngine Capítulo #. $eferencia de Blo%ues &ógicos "nlaces de Inter(s
5 9 21 #1 '5 ))
Tabla de Contenidos
7
Capítulo Desarrollo de Videojuegos
1
Actualmente, la industria del videojuego goza de una muy buena salud a nivel mundial, rivalizando en presupuesto con las industrias cinematográfica y musical. En este capítulo se discute, desde una perspectiva general, el desarrollo de videojuegos, haciendo especial hincapié en su evolucin y en los distintos elementos involucrados en este complejo proceso de desarrollo.
Introducción al Desarrollo de Videojuegos
9
Sabías que... +egn el informe de E+A Entertainment Software Association, la edad media del usuario de soft#are de entretenimiento está situada en , contando con un sobre el porcentaje total de usuarios . $el total, apro)imadamente un . En los ltimos a%os, la pro<18 porcin de jugadores y jugadoras de video25% juegos se está igua lando. 18-50
>50 Usuarios de videojuegos por rangos de edad
Ⅲ La industria del videojuego
!ejos han "uedado los días desde el desarrollo de los primeros videojuegos, caracterizados principalmente por su simplicidad y por el hecho de estar desarrollados completamente sobre hard#are. $ebido a los distintos avances en el campo de la informática, no slo a nivel de desarrollo soft#are y capacidad hard#are sino también en la aplicacin de métodos, técnicas y algoritmos, la industria del videojuego ha evolucionado hasta llegar a cotas inimaginables, tanto a nivel de jugabilidad como de calidad gráfica, tan slo hace unos a%os. 10
Introducción al Desarrollo de Videojuegos
!a evolucin de la industria de los videojuegos ha estado ligada a una serie de hitos, determinados particularmente por juegos "ue han marcado un antes y un después, o por fenmenos sociales "ue han afectado de manera directa a dicha industria. &uegos como Doom, Quake, Final Fantasy, Zelda, Tekken, Gran Turismo, Metal Gear , The Sims o World of Warcraft , entre otros, han marcado tendencia y han contribuido de manera significativa al desarrollo de videojuegos en distintos géneros.
49%
26%
'or otra parte, y de manera complementaria a la aparicin de estas obras de arte, la propia evolucin de la informática ha posibilitado la vertiginosa evolucin del desarrollo de videojuegos. Algunos hitos clave son por ejemplo el uso de la tecnología poligonal en ($ en las consolas de sobremesa, el boom de los ordenadores personales como plataforma multipropsito, la e)pansin de *nternet, los avances en el desarrollo de microprocesadores, el uso de shaders programables, el desarrollo de motores de juegos o, más recientemente, la eclosin de las redes sociales y el uso masivo de dispositivos mviles.
'or todo ello, los videojuegos se pueden encontrar en ordenadores personales, consolas de juego de sobremesa, consolas portátiles, dispositivos mviles como por ejemplo los smartphones, o incluso en las redes sociales como medio de soporte para el entretenimiento de cual"uier tipo de usuario. Esta diversidad también está especialmente ligada a distintos tipos o géneros de videojuegos, como se introducirá más adelante en esta misma seccin. !a es tan relevante "ue actualmente se trata de una industria multimillonaria capaz de rivalizar con las industrias cinematográfica y musical. 5n ejemplo representativo es el valor total del mercado del videojuego en Europa, tanto a nivel hard#are como soft#are, el cual alcanz la nada desde%able cifra de casi 66.333 millones de euros, con países como 7eino 5nido, 8rancia o Alemania a la cabeza. En este conte)to, Espa%a representa el cuarto consumidor a nivel europeo y también ocupa una posicin destacada dentro del rankin% mundial. A pesar de la vertiginosa evolucin de la industria del videojuego, hoy en día e)iste un gran nmero de "ue el desarrollador de videojuegos ha de afrontar a la hora de producir un videojuego. En realidad, e)isten retos "ue perdurarán eternamente y "ue no están ligados a la propia evolucin del hard#are "ue permite la ejecucin de los videojuegos.
El más evidente de ellos es la necesidad imperiosa de ofrecer una e)periencia de entretenimiento al usuario basada en la diversin, ya sea a través de nuevas formas de interaccin, como por ejemplo la realidad aumentada o la tecnología de visualizacin ($, a través de una mejora evidente en la calidad de los títulos, o mediante innovacin en aspectos vinculados a la jugabilidad. 9o obstante, actualmente la evolucin de los videojuegos está estrechamente ligada a la evolucin del hard#are "ue permite la ejecucin de los mismos. Esta evolucin atiende, principalmente, a dos factores: i la potencia de dicho hard#are y ii las capacidades interactivas del mismo.
Figura 1 El videojuego Pong se considera como unos de los primeros videojuegos de la historia. Desarrollado por Atari en 1975, el juego iba incluido en la consola Atari Pong. e calcula !ue se vendieron unas 5".""" unidades.
En el primer caso, una mayor potencia hard#are implica "ue el desarrollador disfrute de mayores posibilidades a la hora de, por ejemplo, mejorar la calidad gráfica de un título o de incrementar la *A &'nteli%encia Artificial( de los enemigos. Este factor está vinculado al multiprocesamiento. En el segundo caso, una mayor ri"ueza en términos de interactividad puede contribuir a "ue el usuario de videojuegos viva una e)periencia más inmersiva por ejemplo, mediante realidad aumentada o, simplemente, más natural por ejemplo, mediante la pantalla táctil de un smart!hone. 8inalmente, resulta especialmente importante destacar la e)istencia de motores de juego %ame en%ines, como por ejemplo Quake o )nreal, middlewares para el tratamiento de aspectos específicos de un juego, como por ejemplo la biblioteca *a#ok para el tratamiento de la física, o motores de renderizado. Este tipo de herramientas, junto con técnicas específicas de desarrollo y optimizacin, metodologías de desarrollo, o patrones de dise%o, entre otros, conforman un aspecto esencial a la hora de desarrollar un video juego. Al igual "ue ocurre en otros aspectos relacionados con la *ngeniería del +oft#are, desde un punto de vista general resulta aconsejable el uso de todos estos elementos para agilizar el proceso de desarrollo y reducir errores potenciales. Introducción al Desarrollo de Videojuegos
11
'roductor ejecutivo
Ⅲ Estructura de un Equipo de Desarrollo El desarrollo de videojuegos comerciales es un proceso complejo debido a los distintos re"uisitos "ue ha de satisfacer y a la integracin de distintas disciplinas "ue intervienen en dicho proceso. $esde un punto de vista general, un videojuego es una en la "ue e)iste una interaccin e)plícita mediante el usuario y el propio videojuego. En este conte)to, el concepto de tiempo real se refiere a la necesidad de generar una determinada tasa de frames o imágenes por segundo, típicamente (3 o 13, para "ue el usuario tenga una sensacin continua de realidad. 'or otra parte, la interaccin se refiere a la forma de comunicacin e)istente entre el usuario y el videojuego. 9ormalmente, esta interaccin se realiza mediante $oysticks o mandos, pero también es posible llevarla a cabo con otros dispositivos como por ejemplo teclados, ratones, cascos o incluso mediante el propio cuerpo a través de técnicas de visin por computador o de interaccin táctil. A continuacin se describe la estructura típica de un e"uipo de desarrollo atendiendo a los distintos roles "ue juegan los componentes de dicho e"uipo. En muchos casos, y en funcin del nmero de componentes del e"uipo, hay personas especializadas en diversas disciplinas de manera simultánea. 1
Introducción al Desarrollo de Videojuegos
'roductor
E"uipo creativo e innovacin
E"uipo de mar;eting
$irector artístico
$irector técnico
$ise%ador jefe
>estor de pruebas
Artista jefe
'rogramador jefe
E"uipo de dise%o
E"uipo de pruebas
E"uipo artístico ?onceptual
=odelado
Animacin
@e)turas
Artista técnico
'rogramador
9et#or;ing
8ísica
*nteligencia Art.
=otor
*nterfaces
Audio
Figura #isi$n conceptual de un e!uipo de desarrollo de videojuegos, considerando especialmente la parte de programaci$n.
!os son los responsables de dise%ar e implementar el soft#are "ue permite la ejecucin del juego, así como las herramientas "ue dan soporte a dicha ejecucin. 9ormalmente, los ingenieros se suelen clasificar en dos grandes grupos: !os del juego, es decir, las personas responsables de desarrollar tanto el motor de juego como el juego propiamente dicho.
!os , es decir, las personas responsables de desarrollar las herramientas "ue permiten "ue el resto del e"uipo de desarrollo pueda trabajar de manera eficiente. $e manera independiente a los dos grupos mencionados, los ingenieros se pueden especializar en una o en varias disciplinas.
'or ejemplo, resulta bastante comn encontrar perfiles de ingenieros especializados en programacin gráfica o en scri!tin% e *A. +in embargo, tal y como se sugiri anteriormente, el concepto de ingenie-ro transversal es bastante comn, particularmente en e"uipos de desarrollo "ue tienen un nmero reducido de componentes o con un presupuesto "ue no les permite la contratacin de personas especializadas en una nica disciplina. En el mundo del desarrollo de videojuegos, es bastante probable encontrar ingenieros senior responsables de supervisar el desarrollo desde un punto de vista técnico, de manera independiente al dise%o y generacin de cdigo. 9o obstante, este tipo de roles suelen estar asociados a la supervisin técnica, la gestin del proyecto e incluso a la toma de decisiones vinculadas a la direccin del proyecto. Así mismo, algunas compa%ías también pueden tener directores técnicos, responsables de la supervisin de uno o varios proyectos, e incluso un director ejecutivo, encargado de ser el director técnico del estudio completo y de mantener, normalmente, un rol ejecutivo en la compa%ía o empresa.
!os son los responsables de la creacin de todo el contenido audio-visual del videojuego, como por ejemplo los escenarios, los personajes, las animaciones de dichos personajes, etc. Al igual "ue ocurre en el caso de los ingenieros, los artistas también se pueden especializar en diversas cuestiones, destacando las siguientes: , responsables de crear bocetos "ue permitan al resto del e"uipo hacerse una idea inicial del aspecto final del videojuego. +u trabajo resulta especialmente importante en las primeras fases de un proyecto. , responsables de generar el contenido ($ del videojuego, como por ejemplo los escenarios o los propios personajes "ue forman parte del mismo. o, responsables de crear las te)turas o imágenes bidimensionales "ue formarán parte del contenido visual del juego. !as te)turas se aplican sobre la geometría de los modelos con el objetivo de dotarlos de mayor realismo.
, responsables de gestionar las fuentes de luz del videojuego, así como sus principales propiedades, tanto estáticas como dinámicas. , responsables de dotar de movimientos a los personajes y objetos dinámicos del videojuego. 5n ejemplo típico de animacin podría ser el movimiento de brazos de un determinado carácter.
responsables de obtener datos de movimiento reales para "ue los animadores puedan integrarlos a la hora de animar los personajes. , responsables de integrar los efectos de sonido del videojuego. , responsables de diversas tareas como por ejemplo los encargados de dotar de voz a los personajes.
"eneral Vs Especí#ico En funcin del tama%o de una empresa de desarrollo de videojuegos, el nivel de especializacin de sus empleados es mayor o menor. +in embargo, las ofertas de trabajo suelen incluir diversas disciplinas de trabajo para facilitar su integracin. Introducción al Desarrollo de Videojuegos
1!
En u
Al igual "ue suele ocurrir con los ingenieros, e)iste el rol de artista senior cuyas responsabilidades también incluyen la supervisin de los numerosos aspectos vinculados al componente artístico. !os dise%adores de juego son los responsables de dise%ar el contenido del juego, destacando la evolucin del mismo desde el principio hasta el final, la secuencia de capítulos, las reglas del juego, los objetivos principales y secundarios, etc. Evidentemente, todos los aspectos de dise%o están estrechamente ligados al propio género del mismo. 'or ejemplo, en un juego de conduccin es tarea de los dise%adores definir el comportamiento de los coches adversarios ante, por ejemplo, el adelantamiento de un rival.
1$
Introducción al Desarrollo de Videojuegos
!os dise%adores suelen trabajar directamente con los ingenieros para afrontar diversos retos, como por ejemplo el comportamiento de los enemigos en una aventura. $e hecho, es bastante comn "ue los propios dise%adores programen, junto con los ingenieros, dichos aspectos haciendo uso de lenguajes de scri!tin% de alto nivel, como por ejemplo 1ua o 2ython. ?omo ocurre con las otras disciplinas previamente comentadas, en algunos estudios los dise%adores de juego también jue-gan roles de gestin y supervisin técnica. 8inalmente, también están presentes roles vinculados a la produccin, especialmente en grandes estudios.
En u
En algunas ocasiones, los productores también asumen roles relacionados con el dise%o del juego. Así mismo, los responsables de mar;eting, de administracin y de soporte juegan un papel relevante. @ambién resulta importante resaltar la figura de publicador como entidad responsable del mar;eting y distribucin del videojuego desarrollado por un determinado estudio. =ientras algunos estudios tienen contratos permanentes con un determinado publicador, otros prefieren mantener una relacin temporal y asociarse con el publicador "ue le ofrezca mejores condiciones para gestionar el lanzamiento de un título.
Ⅲ El concepto de &uego $entro del mundo del entretenimiento electrnico, un normalmente se suele asociar a la evolucin, entendida desde un punto de vista general, de uno o varios personajes principales o entidades "ue pretenden alcanzar una serie de objetivos en un mundo acotado, los cuales están controlados por el propio usuario. Así, entre estos elementos podemos encontrar desde superhéroes hasta coches de competicin pasando por e"uipos completos de ftbol. El mundo en el "ue conviven dichos personajes suele estar compuesto, normalmente, por una serie de escenarios virtuales recreados en tres dimensiones y tiene asociado una serie de reglas "ue determinan la interaccin con el mismo. $e este modo, e)iste una e)plícita entre el jugador o usuario de videojuegos y el propio videojuego, el cual plantea una serie de retos al usuario con el objetivo final de garantizar la diversin y el entretenimiento. Además de ofrecer este componente emocional, los videojuegos también suelen tener un componente cognitivo asociado, obligando a los jugadores a aprender técnicas y a dominar el comportamiento del personaje "ue manejan para resolver los retos o puzzles "ue los videojuegos plantean.
$esde una perspectiva más formal, la mayoría de videojuegos suponen un ejemplo representativo de lo "ue se define como aplicaciones gráficas o , las cuales se definen a su vez como la rama más interactiva de la *nformática >ráfica. $esde un punto de vista abstracto, una aplicacin gráfica en tiempo real se basa en un bucle donde en cada iteracin se realizan los siguientes pasos: El usuario visualiza una imagen renderizada por la aplicacin en la pantalla o dispositivo de visualizacin. El usuario acta en funcin de lo "ue haya visualizado, interactuando directamente con la aplicacin, por ejemplo mediante un teclado. En funcin de la accin realizada por el usuario, la aplicacin gráfica genera una salida u otra, es decir, e)iste una retroalimentacin "ue afecta a la propia aplicacin. En el caso de los videojuegos, este ciclo de visualizacin, actuacin y renderizado ha de ejecutarse con una frecuencia lo suficientemente elevada como para "ue el usuario se sienta inmerso en el videojuego, y no lo perciba simplemente como una sucesin de imágenes estáticas. En este conte)to, el se define como el nmero de imágenes por segundo, comnmente fps, "ue la aplicacin gráfica es capaz de generar.
(996
2"")
Tomb Raider, P 2!" Pol#gonos
TR$ nder&orld, P! !2'""" Pol#gonos
Figura ! Para mantener constante el n%mero de &ps, los recursos art'sticos deben ajustarse a las caracter'sticas soportadas por el (ard)are. orprende la evoluci$n en 1* a+os del n%mero de pol'gonos del personaje principal de omb -aider.
Introducción al Desarrollo de Videojuegos
1%
A mayor frame rate, mayor sensacin de realismo en el videojuego. Actualmente, una tasa de (3 fps se considera más "ue aceptable para la mayoría de juegos. 9o obstante, algunos juegos ofrecen tasas "ue doblan dicha medida.
Fra(es por Segundo... >eneralmente, el desarrollador de videojuegos ha de buscar un compromiso entre los fps y el grado de realismo del videojuego. 'or ejemplo, el uso de modelos con una alta complejidad computacional, es decir, con un mayor nmero de polígonos, o la integracin de comportamientos inteligentes por parte de los enemigos en un juego, o 9'? 3on-2layer 4haracter , disminuirá los fps. En otras palabras, los juegos son aplicaciones interactivas "ue están marcadas por el tiempo, es decir, cada uno de los ciclos de ejecucin tiene un deadline "ue ha de cumplirse para no perder realismo. Aun"ue el representa gran parte de la complejidad computacional de los videojuegos, no es el nico. En cada ciclo de ejecucin, el videojuego ha de tener en cuenta la evolucin del mundo en el "ue se desarrolla el mismo. 1'
Introducción al Desarrollo de Videojuegos
$icha evolucin dependerá del estado de dicho mundo en un momento determinado y de cmo las distintas entidades dinámicas interactan con él. bviamente, recrear el mundo real con un nivel de e)actitud elevado no resulta manejable ni práctico, por lo "ue normalmente dicho mundo se apro)ima y se simplifica, utilizando modelos matemáticos para tratar con su complejidad. En este conte)to, destaca por ejemplo la simulacin física de los propios elementos "ue forman parte del mundo. 'or otra parte, un juego también está ligado al comportamiento del personaje principal y del resto de entidades "ue e)isten dentro del mundo virtual. En el ámbito académico, estas entidades se suelen definir como agentes a%ents y se encuadran dentro de la denominada simulacin basada en agentes. Básicamente, este tipo de apro)imaciones tiene como objetivo dotar a los 9'? con cierta inteligencia para incrementar el grado de realismo de un juego estableciendo, incluso, mecanismos de cooperacin y coordinacin entre los mismos. 7especto al personaje principal, un videojuego ha de contemplar las distintas acciones realizadas por el mismo, considerando la posibilidad de decisiones impredecibles a priori y las consecuencias "ue podrían desencadenar.
En resumen, y desde un punto de vista general, el desarrollo de un juego implica considerar un gran nmero de factores "ue, inevitablemente, incrementan la comple jidad del mismo y, al mismo tiempo, garantizar una tasa de f!s adecuada para "ue la inmersin del usuario no se vea afectada.
A día de hoy, una gran parte de compa%ías de desarrollo de videojuego utilizan motores o herramientas pertenecientes a terceras partes, debido a "ue les resulta más rentable econmicamente y obtienen, generalmente, resultados espectaculares. 'or otra parte, esta evolucin también ha permitido "ue los desarrolladores de un juego se planteen licenciar parte de su propio motor de juego, decisin "ue también forma parte de su política de trabajo.
Ⅲ El *otor de &uego Al igual "ue ocurre en otras disciplinas en el campo de la informática, el desarrollo de videojuegos se ha beneficiado de la aparicin de herramientas "ue facilitan dicho desarrollo, automatizando determinadas tareas y ocultando la complejidad inherente a muchos procesos de bajo nivel. +i, por ejemplo, los +>B$ han facilitado enormemente la gestin de persistencia de innumerables aplicaciones informáticas, los motores de juegos hacen la vida más sencilla a los desarrolladores de video juegos. El término motor de juego surgi a mediados de los a%os C3 con la aparicin del famosísimo juego de accin en primera persona Doom, desarrollado por la compa%ía id +oft#are bajo la direccin de 5ohn 4armack ver 8igura 4. Esta afirmacin se sustenta sobre el hecho de "ue $oom fue dise%ado con una ar"uitectura orientada a la reutilizacin mediante una separacin adecuada en distintos mdulos de los componentes fundamentales, como por ejemplo el sistema de renderizado gráfico, el sistema de deteccin de colisiones o el sistema de audio, y los elementos más artísticos, como por ejemplo los escenarios virtuales o las reglas "ue gobernaban al propio juego.
Figura $ ohn /armac0, uno de los desarrolla dores de juegos m2s importantes.
Este planteamiento facilitaba enormemente la reutilizacin de soft#are y el concepto de motor de juego se hizo más popular a medida "ue otros desarrolladores comenzaron a utilizar diversos mdulos o juegos previamente licenciados para generar los suyos propios. En otras palabras, era posible dise%ar un juego del mismo tipo sin apenas modificar el ncleo o motor del juego, sino "ue el esfuerzo se podía dirigir directamente a la parte artística y a las reglas del mismo. Este enfo"ue ha ido evolucionando y se ha e)pandido, desde la generacin de mods por desarrolladores independientes o amateurs hasta la creacin de una gran variedad de herramientas, bibliotecas e incluso lenguajes "ue facilitan el desarrollo de videojuegos.
bviamente, la separacin entre motor de juego y juego nunca es total y, por una circunstancia u otra, siempre e)isten dependencias directas "ue no permiten la reusabilidad completa del motor para crear otro juego. 'or ejemplo, un motor de juegos dise%ado para construir juegos de accin en primera persona, será difícilmente reutilizable para desarrollar un juego de carreras de coches. ?omo conclusin final, resulta relevante destacar la evolucin relativa a la generalidad de los motores de juego, ya "ue poco a poco están haciendo posible su utilizacin para diversos tipos de juegos. +in embargo, el compromiso entre generalidad y optimalidad an está presente. En otras palabras, a la hora de desarrollar un juego utilizando un determinado motor es bastante comn personalizar dicho motor para adaptarlo a las necesidades concretas del juego a desarrollar. Introducción al Desarrollo de Videojuegos
1)
Ⅲ "+neros de &uegos !os motores de juegos suelen estar, generalmente, ligados a un tipo o género particular de juegos. 'or ejemplo, un motor de juegos dise%ado con la idea de desarrollar juegos de conduccin diferirá en gran parte con respecto a un motor orientado a juegos de accin en tercera persona. 9o obstante, e)isten ciertos mdulos, sobre todo relativos al procesamiento de más bajo nivel, "ue son transversales a cual"uier tipo de juego, es decir, "ue se pueden reutilizar en gran medida de manera independiente al género al "ue pertenezca el motor. 5n ejemplo representativo podría ser el mdulo de tratamiento de eventos de usuario, responsable de recoger y gestionar las pulsaciones en el mando de juego. A continuacin, se realizará una descripcin de los distintos géneros de juegos más populares atendiendo a las características "ue diferencian unos de otros en base al motor "ue les da soporte. Esta descripcin resulta til para "ue el desarrollador identifi"ue los aspectos críticos de cada juego y utilice las técnicas de desarrollo adecuadas para obtener un buen resultado. 'robablemente, el género de juegos más popular ha sido y es el de los los denominados 8'+, abreviado tradicionalmente como shooters6 1,
Introducción al Desarrollo de Videojuegos
Figura %
/aptura de pantalla del juego remulous, videojuego 3P4 desarrollado sobre el motor de 6ua0e .
Algunos 8'+ famosos son Quake, *alf-1ife, 4all of Duty o Gears of War , entre muchos otros. En este género, el usuario normalmente controla a un personaje con una vista en primera persona a lo largo de escenarios "ue tradicionalmente han sido interiores, como los típicos pasillos, pero "ue han ido evolucionando a escenarios e)teriores de gran complejidad.
!os 8'+ representan juegos con un desarrollo complejo, ya "ue uno de los retos principales "ue han de afrontar es la inmersin del usuario en un mundo hiperrealista "ue ofrezca un alto nivel de detalle, al mismo tiempo "ue se garantice una alta reaccin de respuesta a las acciones del usuario.
Ejemplos representativos de este género son 7esident E#il, Metal Gear, Gears of War o )ncharted, entre otros. $entro de este género resulta importante destacar los juegos de , en los "ue el personaje principal ha de ir avanzado de un lugar a otro del escenario hasta alcanzar un objetivo. Ejemplos representativos son las sagas de Su!er Mario, Sonic o Donkey 8on%. En el caso particular de los juegos de plataformas, el avatar del personaje tiene normalmente un efecto de dibujo animado, es decir, no suele necesitar un renderizado altamente realista y, por lo tanto, complejo. En cual"uier caso, la parte dedicada a la animacin del personaje ha de estar especialmente cuidada para incrementar la sensacin de realismo a la hora de controlarlo. tro género importante está representado por los juegos de , en los "ue, normalmente, dos jugadores compiten para ganar un determinado nmero de combates minando la vida o stamina del jugador contrario. Ejemplos representativos de juegos de lucha son 9irtua Fi%hter, Street Fi%hter, Tekken, o Soul 4ali:ur , entre otros.
Figura '
/aptura de pantalla del juego urtlearena, videojuego 3P4 desarrollado sobre el motor de 6ua0e .
tro de los géneros más relevantes son los denominados juegos en donde el usuario tiene el control de un personaje cuyas acciones se pueden apreciar por completo desde el punto de vista de la cámara virtual.
Aun"ue e)iste un gran parecido entre este género y el de los 8'+, los juegos en tercera persona hacen especial hincapié en la animacin del personaje, destacando sus movimientos y habilidades, además de prestar mucha atencin al detalle gráfico de la totalidad de su cuerpo.
tro género representativo en el mundo de los videojuegos es la , en el "ue el usuario controla a un vehículo "ue normalmente rivaliza con más adversarios virtuales o reales para llegar a la meta en primera posicin. En este género se suele distinguir entre simuladores, como por ejemplo Gran Turismo, y arcade, como por ejemplo 7id%e 7acer o Wi!e 0ut . Introducción al Desarrollo de Videojuegos
19
tro género tradicional son los juegos de estrategia, normalmente clasificados en tiempo real o 7@+ 7eal-Time Strate%y y por turnos turn-:ased strate%y. Ejemplos representativos de este género son Warcraft, 4ommand ; 4on
Introducción al Desarrollo de Videojuegos
8inalmente, en los ltimos a%os ha aparecido un género de juegos cuya principal característica es la posibilidad de jugar con un gran nmero de jugadores reales al mismo tiempo, del orden de cientos o incluso miles de jugadores. !os juegos "ue se encuadran bajo este género se denominan comnmente ==> Massi#ely Multi!layer 0nline Game. El ejemplo más representativo de este género es el juego World of Warcarft . $ebido a la necesidad de soportar un gran nmero de jugadores en línea, los desarrolladores de este tipo de juegos han de realizar un gran esfuerzo en la parte relativa al net#or;ing, ya "ue han de proporcionar un servicio de calidad sobre el "ue construir su modelo de negocio, el cual suele estar basado en suscripciones mensuales o anuales por parte de los usuarios. Al igual "ue ocurre en los juegos de estrategia, los ==> suelen utilizar personajes virtuales en baja resolucin para permitir la aparicin de un gran nmero de ellos en pantalla de manera simultánea. Además de los distintos géneros mencionados en esta seccin, e)isten algunos más como por ejemplo los juegos deportivos, los juegos de rol o 7'> 7ole2layin% Games o los juegos de puzzles.
Figura ) /aptura de ".A.D, un videojuego de estrategia en tiempo real de 8ildre.
Capítulo Introducción a Blender
2
En los últimos 10 años se ha experimentado un crecimiento muy importante en el mundo del diseño por computador, y en concreto de la síntesis de imágenes tridimensionales. Las necesidades de perso nal cualificado en este sector son notables y continúan creciendo unidas al cada día mayor ámbito de aplicacin del diseño !" #$isuali%acin de datos, representacin de imagen m&dica, simulacin, $ideo'uegos, etc.(. Estas necesidades, igualmente paten tes desde hace años en el mundo del )oft *are Libre, han sido cubiertas con aplicaciones de calidad y uso profesional. En este capítulo estudiaremos los aspectos esenciales de +lender la herramienta libre más potente en diseño !". Introducción a Blender
21
Ⅲ Introducción al Software Libre
-abitualmente existe confusin en lo referente al Software Libre principalmente debido a /ue se confunde libertad con precio. Esta inter pretacin errnea está ampliamente difundida, en parte, por los intereses comerciales de grandes multina cionales. -ay /ue entender el t&rmino libre como sinnimo de libertad no de barra libre. Entendemos como soft*are libre a/uel /ue se basa en el cumplimiento de #al menos( cuatro libertades básicas 1. Libertad para utili%ar el programa para lo /ue /uieras. . Libertad para estudiar el el programa #para poder reali%ar un estudio del programa es necesario disponer del cdigo fuente /ue es una descripcin entendible por el programador(. !. Libertad para redistribuir el programa, y compartir sus beneficios con /uien tú /uieras. . Libertad para me'orar el programa y distribuir sus me'oras.
Para saber más 2uedes consultar la definicin de )oft*are Libre dada por la 3ree )oft*are 3oundation, la principal organi%acin mundial de )oft*are Libre. ▶ http://www.gnu.org/philosophy/freesw.es.html 22
Introducción a Blender
)i leemos con atencin las libertades básicas anteriores, $eremos /ue en ningún caso se menciona nada sobre el precio del soft*are. 2ara /ue un programa sea conside rado )oft*are Libre, debe cumplir las condiciones anteriores. Existen multitud de licencias /ue son consideradas $álidas para )oft*are Libre. 4na de ellas #y /ui%ás la más extendida( es la 564 52L #Licencia 2ública 5eneral( de la 3)3 #3ree )oft*are 3oundation(. Las licencias Freeware no permiten estudiar y me'orar el programa #por no disponer del cdigo fuente(. Esto es un impedimento crítico, ya /ue no permite la generacin de soft*are basado en estos programas, e impide el desarrollo econmico local. 7ampoco es correcta #aun/ue sí está muy extendida( la distincin entre y . 4n programa Libre puede ser comercial se puede obtener un beneficio econmico de &l, y es totalmente lícito #y recomendable( ganar dinero reali%ando adaptaciones y dando soporte de este soft*are. Es más correcto denominar al soft*are /ue no es libre, por/ue nos pri$a de nuestras libertades básicas. Linux es el núcleo de un )istema 9perati$o /ue se distribuye ba'o una licencia de )oft*are Libre. En realidad, cuando instalamos un Linux, estamos instalando el núcleo del )istema 9perati$o y un con'unto de utilidades /ue forman parte del proyecto 564 #564 is 6ot 4nix(.
Figura 1 Linux, un núcleo de Sistema Operativo Libre.
Es más correcto hablar de distribuciones de 564:Linux, ya /ue están formadas por el núcleo del )istema 9perati$o y las herramientas libres de 564. Existen muchas distribuciones de Linux la mayoría basadas en ;ed -at o "ebian. Entre ellas podemos destacar 3edora #;ed -at(, )use,
)e puede encontrar multitud de )oft*are Libre para otros sistemas operati$os /ue no son Linux. "e hecho, la mayoría de las aplicaciones libres de 564:Linux se pueden encontrar tambi&n en =indo*s y
Las in $ersiones, en $e% de reali%arse >al/uilando? licencias a grandes multinacionales, se reali%an en empresas de desarrollo nacionales. Esto es claramente positi$o para la comunidad.
Figura 2 !o"a de persona"e de Sintel por #avid $evoy. %intada sobre una base en . ''() (lender *oundatio n www.sintel.org.
6o se repite mil $eces lo mismo los programadores slo se ocupan de programar nue$a funcionalidad.
4tili%ando soft*are libre los usuarios siempre pueden estar actuali%ados, normalmente con coste cero. 6o hay problemas de licencias utili%ando )oft*are Libre.
6o existen formatos cerrados o propietarios. Las aplicaciones pueden compartir sus datos sin problema. 8ada usuario puede utili%ar el soft*are /ue desee y, con seguridad, existirán con$ersores libres entre formatos de ficheros.
Ⅲ "l Ciclo de Producción !#
2odemos definir el ciclo de traba'o en producciones !" estableciendo tres grandes fases de produccin, cada una de las cuales tendrá asociadas un con'unto de tareas #algunas de estas tareas pueden no estar presentes en ciertos proyectos, como la postproduccin en el caso de Aideo'uegos(. Las fases de produccin suelen completarse secuencialmente, y normalmente no hay /ue e'ecutar tareas de una fase anterior, cuando &sta se ha completado. Las tareas dentro de una fase de traba'o siguen un orden aun/ue a'ustes en tareas posteriores pueden re/uerir cambios en tareas /ue estaban completas.
Ⅲ Preproducción
Esta fase comien%a habitualmente con la escritura del guin en el caso de generar un $ídeo, o en el caso de Aideo'uegos, con la definicin de un documento de diseño de $ideo'uego. 8on el guin #o el documento de diseño del $ideo'uego( definido, el e/uipo de desarrollo $isual, habitualmente formado por ilustradores, establecen la direccin $isual y el estilo del proyecto. )e eligen los colores cla$e /ue complemen tarán $isualmente las metas de cada parte de la narracin. "e igual forma, se desarrollan las ho'as de persona'es #$er 3igura (, con los bocetos de los persona'es /ue serán incluidos en el desarrollo. Introducción a Blender
2!
Ⅲ %odelado
En esta etapa se obtiene una representacin tridimensional de los ob'etos /ue inter$en drán en la escena. Existen multitud de t&cni cas y herramientas de modelado. "ependien do de la forma a modelar y el acabado /ue se desee obtener, será me'or emplear una u otra.
Ⅲ %ateriales & 'e(turas
#iferentes etapas de %roducci+n: odelado, #escripci+n de ateriales y -exturas, luminaci+n y resultado de $ender nteractivo.
Ⅲ Iluminación
''() (lend er *oundation %royecto )o*ran0ie.
En la bús/ueda de la generacin de imagen lo más realista posible, un punto cla$e es la simulacin de la lu%. )egún las interacciones de la lu% /ue sea capa% de simular el m&todo de render, obtendremos resultados con diferente ni$el de realismo. En $ideo'uegos es habitual simular los rebotes de la lu% y emplear m&todos /ue asignan la iluminacin como texturas. En +lender este precálculo se reali%a emple ando opciones de Baking #o cocinado( del render sobre texturas.
2$
Figura !
Introducción a Blender
Ⅲ )nimación
7anto las herramientas de animacin " como las !" suelen emplear cur$as de interpolacin para calcular cambios en los parámetros a animar #ya sea posicin de un ob'eto, propiedades de material, etc...( entre frames cla$e. "e esta forma, el usuario de la aplicacin únicamente debe identi ficar esos fotogramas cla$e, establecer los $alores de las propiedades en esos puntos y el programa se encarga de calcular los $alores intermedios.
Para saber más Bueda fuera del alcance de este pe/ueño manual enseñar las opciones de modelado, asignacin de materiales, texturas y animacin en +lender. Es muy recomendable /ue el lector profundice su formacin en todos estos aspectos. En la seccin de +ibliografía se recogen algunos manuales y tutoriales 9nCLine línea para aprender más sobre +lender.
En animacin de persona'es suelen emple arse es/ueletos internos de animacin. Dsí, el animador establece las rotaciones de estos huesos y el programa calcula la deformacin de debe aplicar a la superficie exterior. Este tipo de animacin 'erár/uica es ampliamente utili%ada en el desarrollo de $ideo'uegos profesionales. La comple'idad en la definicin del es/ueleto #llamado rig( hace /ue algunas personas del e/uipo de desarrollo de un $ideo'uego est&n especiali %adas únicamente en esta tarea.
a
b
c
d
e
f
g
h
i
j
k
l
Ⅲ +ender
En este paso se reali%a el cálculo de la imagen " #habitualmente de tipo mapa de bits, o imagen Raster ( correspondiente a la escena definida. En Aideo'uegos se utili%an m&todos de render interacti$os, /ue tratan de obtener entre 0 y F0 fotogramas por segundo. En la generacin de $ídeos pueden emplearte m&todos más realistas, y los tiempos de Render suelen ser notablemente superiores #desde minutos hasta horas o días por fotograma(.
Ⅲ Postproducción
Esta fase toma como entrada las imágenes generadas en la etapa anterior y las compone, aplicándoles una serie de filtros. Dlgunos efectos #como profundidad de campo, motion blur, etc.( es menos costoso generarlos independientemente y compo nerlos mediante el uso de capas. )i el fondo es estático, puede suponer un importante ahorro de tiempo #como en algunas escenas de la película Big Buck Bunny, $er 3igura (.
Figura $
1tapas de render por capas 2ue ser3n compuestas en la etapa de %ostproducci+n. a4 *ondo est3tico. b4 %rofundidad de campo. c4 3scara de plano medio. d4 Sombra de primer plano. e4 'apa de oclusi+n ambiental 5primer plano4. f4 Sombra 6 'olor primer plano 5animado4. g y h4 'apa con persona"es 5animados4. i4 Sombra oclusi+n ambiental propia del persona"e primer plano. " y 04 'omposici+n de capas anteriores. l4 $esultado 7nal. ''() (lender *oundation peach.b lender.org
Introducción a Blender
2*
Ⅲ Blender en "ntornos Profesionales
-an pasado 0 años desde /ue NeoGeo #posteriormente Not a Number (, la compañía liderada por 7on ;oosendaal, creara la primera $ersin de +lender en 1GG para interno. @nicialmente distribuida como una herramienta free*are en 1GGH, fue posterior mente liberada en 00 por la comunidad de usuarios en una espectacular colecta de fondos por parte de la +lender 3oundation. En tan slo siete semanas, los usuarios de +lender donaron un total de 100.000 euros para liberar la herramienta. En octubre de 00 se liber la primera $ersin de este programa ba'o licencia 52L. 2,
Introducción a Blender
"esde entonces, el número de usuarios y prestaciones de +lender no ha parado de crecer hasta con$ertirse, según la re$ista !" =orld, en la herramienta gráfica más instalada del mundo, situándose por encima de !" )tudio
En el ámbito de los $ideo'uegos, proyectos como Yo Frakie!
Para saber más "escarga el $ideo'uego de YoFrankie en la *eb oficial del mismo ▶/http://www.yofran0ie.org/
Ⅲ Por .u/ elegir Blender +lender incorpora gran cantidad de herramientas a$an%adas para el modelado, construccin de materiales, animacin, render, composicin y creacin de Aideo 'uegos /ue lo con$ierten en una alternati$a perfecta tanto para el aprendi%a'e de los gráficos !" como para su explotacin a ni$el profesional... Ky en poco más de 0<+M En lo referente al modelado, además de los operadores clásicos /ue podemos utili%ar en modo de edicin de $&rtices, aristas y caras, +lender imple menta superficies de subdi$isin de "at mull)"lark, m&todos para traba'ar con mayas de resolucin adaptati$a, metabolas y meta superficies, y un largo etc&tera. 4na de las me'oras más útiles para el modelado orgánico es la incorporacin del modo de Esculpir #Scul't &ode(, /ue permite utili%ar la metáfora del N 'incel 3O con una semántica similar a la aplicacin comercial PC+rush. La gestin en nodos y modificadores de materiales y texturas ha permitido combinar las propie dades de di$ersos materiales. La flexibilidad de esta aproximacin, unida a la incorpo racin de propiedades a$an%adas como el conocido SubSurface Scattering #/ue simula los rebotes de la lu% en el interior de los ob'etos(, el Render Baking #/ue precalcula el resultado del render
resultado del render proyectándolo sobre una textura con $% &a''ing( o la posibi lidad de dibu'ar directamente sobre la malla !" permiten /ue +lender supere a muchas aplicaciones comerciales en esta etapa del flu'o de traba'o. 8on la creacin de la película Elephants "ream se añadieron contro ladores de alto ni$el para la animacin de persona'es, animacin facial y herramientas de sincroni%acin con audio, /ue posterior mente me'oraron en +ig +ucJ +unny, y fueron me'oradas profundamente en )intel. El mdulo de Dnimacin 6o Lineal #6LD(, /ue tantos problemas presentaba hasta la $ersin .0, fue me'orado hasta con$er tirse en una alternati$a real a la animacin de persona'es profesional. 5racias a los proyectos financiados por 5oogle se han reali%ado grandes a$ances en animacin basada en sistemas de partículas, como fluidos, pelo, etc. La conexin con el Game (ngine #y el motor físico Bullet ( permite reali%ar simulaciones físicas de gran calidad. Ddemás, desde la $ersin .F1 se incorpora un completo mdulo de tracJing de mo$imiento /ue puede ser utili%ado para componer imagen real con ob'etos $ir tuales. El motor interno de ;ender /ue implementa +lender ofrece muy buenos resultados con un ba'o tiempo de cmputo. +lender incorpora un tra%ado de rayos clásico, sin soporte de m&todos de iluminacin global pero con algunas aproxi maciones
Figura *
1"emplo de uso de un sistema de huesos "er3r2uico en un persona"e.
maciones interesantes #como m&todos de 9clusin Dmbiental(. "esde la $ersin .F1, +lender incorpora 8ycles, un motor de iluminacin global /ue utili%a la 524. Ddemás, se pueden utili%ar otros motores externos como Qafa;ay, Lux;ender y 2o$ ;ay, entre otros. Introducción a Blender
2-
Ⅲ 'oma de Contacto
)i es la primera $e% /ue e'ecutas +lender, posiblemente tengas la misma sensacin /ue tu$imos todos los usuarios de +lender cuando tomamos contacto con la herra mienta la interfa% de usuario de +lender es tan comple'o /ue simplemente 'ugando con la aplicacin no conseguíamos hacer casi nada. 2or suerte la interfa% de +lender está diseñado para ser totalmente consistente, de forma /ue casi cual/uier accin /ue puedas reali%ar en una $entana podrás reali%arla con el mismo operador en $entanas de otro tipo. La interfa% de +lender fue diseñada para ser altamente producti$o. 2or esta ra%n suelen emplearse ata'os de teclado. 6o sufras, toda operacin tiene su e/ui$alente accediendo a opciones de menú, pero es aconse'able /ue las más habituales trates de utili%arlas mediante los ata'os de teclado. Dntes de comen%ar indicaremos los sím bolos /ue se utili%arán a lo largo de este manual. Los símbolos /ue se emplearán se resumen en el siguiente listado.
20
Introducción a Blender
;epresentaremos combinacio nes de teclas empleando el siguiente estilo de texto C S A . La combi nacin anterior implica /ue hay /ue presionar la tecla 8ontrol, la tecla )hift #tiene dibu'ada una flecha /ue apunta hacia arriba, situada 'usto encima de 8ontrol en muchos teclados en castellano es N&ay*s+( y la tecla D. Las pulsaciones de botones del interfa% de blender se indicarán mediante el siguiente estilo ;ender. En el caso de ser un botn con una imagen asociada, utili%aremos el icono corres pondiente, como por e'emplo . 2ara indicar operaciones en algunos de los menús de +lender, utili%aremos el siguiente estilo de texto ⧐ File/Save As...
Ⅲ Primeros Pasos
Dl e'ecutar +lender, obtenemos una interfa% como el /ue se muestra en la 3igura . El espacio de traba'o de +lender es totalmente personali%able podemos di$idir la pantalla como nos resulte más cmodo y situar en cada porcin el tipo de $entana /ue /ueramos #$eremos cmo reali%ar esta personali%acin más adelante(. 2or defecto +lender di$ide la pantalla en $arias secciones, la $entana superior de tipo ,nfo, un área central de tipo 3 %iew, una inferior #imeline y a la derecha dos secciones #-utliner y ro'erties(.
Figura ,
#iferentes tipos de 1ditores disponibles en (lender.
2odemos cambiar el tipo de editor pinchando en el selector de tipo de $entana y eligiendo alguno de los tipos /ue se describen bre$emente a continuacin. En este manual nos centraremos principal mente en el editor de $ista !" # 3 %iew( y el editor de Lgica # Logic (ditor (. 2ermite utili%ar directa mente un int&rprete de yt.on interacti$o #además de poder una consola de shell(. @ncluye un modo de autocompletado muy útil para el desarrollo de scripts /ue utili cen la D2@ de yt.on. 4n completo sistema de na$egacin de archi$os, con capacidad de añadir Bookmarks, pre$isuali%ar archi$os de tipos conocidos, filtrar bús/uedas, etc.
#otor de $ender Selectores de i!o de "entana
%rganización de "entanas
Fuente de Luz (Lamp)
Cámara Cubo
Selectores de i!o de "entana
Figura -
denti7caci+n de algunos de los elementos principales del interfa8 de (lender.
Introducción a Blender
2
3utliner Este editor permite seleccionar fácilmente los ob'etos de la escena y filtrarlos por su nombre.
Filtro "isibilidad %bjetos
8uando la comple'idad de la escena aumenta, resulta muy útil para seleccionar los ob'etos fácilmente. Esta $entana es una de las más importantes de la interfa%.
Esta $entana permite acceder al potente sistema de nodos de materiales, texturas y de composicin.
Sobre el Info "ditor
El ,nfo (ditor incorpora la funcionalidad básica del menú principal de cual /uier aplicacin, como Dbrir, 5uardar, Exportar... Ddemás, resulta muy útil el menú de preferencias de usuario ⧐ File/ User Preferences /ue utili%aremos para configurar di$ersos aspectos de la herramienta. En este menú se selecciona igualmente el motor de ;ender /ue emplearemos. En el caso de desarrollar $ideo'uegos, elegiremos NBlender GameO. !
Introducción a Blender
Editor integrado de texto. 2ermite editar y guardar cual/uier fichero de texto. "esde este mdulo se reali%an las operaciones de tracJing de mo$imiento. En el futuro se añadirán nue$as funcionalidades relacionadas con la creacin de máscaras. Editor de $ídeo integrado. 2ermite combinar $arios $ídeos, imágenes y ficheros de audio empleando efectos de transicin. Es otro de los mdulos /ue no son habituales en pro gramas de edicin !" y /ue permiten a los usuarios de +lender cerrar el ciclo de produccin completo sin salir del progra ma.
La $entana de $ista !" nos muestra un cubo gris con borde en color naran'a en el centro de la pantalla. Este cubo lo crea +lender en la escena por defecto #$er 3igura (. El color naran'a del borde indica /ue está seleccio nado. El círculo situado a su derecha es el foco por defecto, y la pirámide negra representa la cámara $irtual. La 3igura muestra tambi&n una re'illa /ue permitirá situar los ob'etos sobre ese sistema de referencias. El círculo de color ro'o y blanco situado en el centro de la $entana #'usto en el centro del cubo( es el puntero !". Los elementos nue$os /ue se añadan a la escena lo harán en la posicin del puntero !".
Dntes de empe%ar a traba'ar, es importante saber cmo crear y destruir $entanas en +lender. Estas operaciones #$er 3igura H( se pueden reali%ar de dos formas. La primera es pinchando pinchando con y despla %ando hacia un lado en la %ona de unin de dos $entanas, marcadas con tres líneas diagonales #si mo$emos sobre ella el puntero del ratn, cambiará a la forma de una cruceta(. La otra forma de di$idir $entanas es situando el puntero del ratn sobre la línea entre dos $entanas y pinchando . 8omo se muestra en la 3igura G, aparecerá una nue$a $entana flotante titulada Area -'tions /ue nos permitirá di$idir #S'lit Area( o unir # /oin Area( las $entanas.
Editor de imágenes y mapas 4A. 2ermite posicionar con exac titud texturas de imagen en los modelos !". Editor de Dnimacin 6o Lineal. 2ermite traba'ar con barras de animacin de forma independiente y combinarlas para obtener composiciones de mo$imiento comple'as. Este t&rmino se refiere a la ho'a /ue permite planificar cmo se reali%ará la animacin. En +lender esta $entana permite traba'ar cmodamente con los marcos cla$e definidos a ni$el de propie dades de los ob'etos, cámara, etc.
&onas di'isión de 'entana
Figura inchar arrastrar (Dividir Ventana)
Figura 0
9entana otante para la divisi+n de 3reas de traba"o.
Arriba. ;onas para la divisi+n y uni+n de ventanas. Abajo. %ara dividir una ventana, pinchamos con bot+n i82uierdo del rat+n en la 8ona de divisi+n y arrastramos 5en el caso de la 7gura, hori8ontalmente4. Introducción a Blender
!1
Si utili4as un portátil )i usas un ordenador portátil, en mu chas ocasiones el teclado num&rico no es fácilmente accesible. 2uedes emularlo en el menú ⧐ File/ User Preferences/ Input y acti$ando la opcin Emulate Numpad #$er figura(.
!2
Introducción a Blender
"ependiendo del tipo de ob'eto, existen diferentes modos. Los más utili%ados son el
Buscador de 5erramientas
"l Sistema de Capas
Sobre %odos
Introducción a Blender
!!
Ⅲ %o6i/ndonos en la 'ercera #imensión
D continuacin $eremos algunos de los comandos esenciales para mo$ernos en el espacio !". 2ara rotar el punto de $ista de una $entana !", pinchamos y arrastramos con . 2ara hacer %oom sobre una $entana !" podemos utili%ar la rueda central del ratn #sin pinchar(. 2ara despla%ar el punto de $ista #tanto hori%ontal como $erticalmente( emplearemos S . En muchas ocasiones, tras reali%ar $arias operaciones respecto del punto de $ista no encontraremos los ob'etos de la escena. Dl principio puede resultar difícil $ol$er a situar los ob'etos dentro de la $entana. En estas ocasiones podemos colocar todo de nue$o simplemente pulsando la tecla H #,nicio(. Esto es $álido para multitud de tipos de $entanas de +lender #entre ellas, la de Aista !"(. 8ambiaremos el modo de $ista de cada $ista !" mediante ata'os de teclado o los botones destinados a tal efecto. )ituándonos con el puntero del ratn en el interior de alguna $entana de tipo 3 %iew y, pulsando 5 en el teclado num&rico, cambiaremos la $ista entre proyeccin ortográfica #/ue proyecta paralelamente los $&rtices sobre la cámara( y perspecti$a #el tamaño relati$o del ob'eto disminuye cuando aumenta la distancia(. !$
Introducción a Blender
Figura 1
8on la tecla 0 del teclado num&rico tendremos la $ista de la cámara. 1 , 3 y 7 nos darán las $istas de la escena en planta, al%ado, y perfil respecti$amente. En las dos páginas anteriores se resumen los principales ata'os de teclado en +lender. ;esulta especialmente interesante la nota sobre cmo emular el teclado num&rico si estás traba'ando con un ordenador portátil /ue no tenga teclado num&rico a la derecha.
Conte(to & ata7os de teclado +lender es sensible al contexto sobre el /ue se reali%an los ata'os de teclado. Esto /uiere decir /ue el ata'o de teclado /ue se e'ecuta sobre la $entana /ue contenga el puntero del ratn. 6o es necesario pinchar con el ratn, únicamente posicionar el puntero sobre la $entana a la /ue /ueremos en$iar el ata'o de teclado.
7ras esta bre$ísima introduccin al interfa% de usuario de +lender, ya estamos en condiciones de empe%ar con la primera práctica. Dl principio puede abrumarte la cantidad de ata'os de teclado y comandos a recordar. 6o te preocupes, tras un poco de entrenamiento lo conseguirás sin probleC ma. Los principales ata'os para posicionar ob'etos en el espacio !" y mo$er la $ista !" los dominarás en minutos. "eberás re$isar estas páginas si no recuerdas cmo reali%ar algún despla%amiento en el punto de $ista /ue te haga falta para reali%ar una determinada accin.
Ⅲ Creando una escena sencilla
En esta primera práctica $eremos un e'emplo sencillo de traba'o con algunas de las principales etapas de traba'o en gráficos !". 8omen%aremos personali%ando las $istas de la $entana !" en cuatro di$isiones, como se muestra en la 3igura 11. Dun/ue esta di$isin estándar puede reali%arse cmodamente desde el menú ⧐ Vie/ !o""le #uad Vie en la cabecera de la Aista !", es recomendable al principio practicar la di$isin manual de las $entanas de traba'o en +lender. D partir de la $ersin . de +lender, las $entanas pueden tener una serie de paneles con herramientas e informacin adicional. Estos paneles pueden ocultarse arrastrando el borde con . 2ueden mostrarse de nue$o pinchando sobre el icono #R( /ue estará situado en las es/uinas de la $entana. 2or e'emplo, la 3igura 1.H muestra cmo puede ocultarse la cabecera de una $entana #el icono #R( se situa en este caso en la es/uina inferior derecha(. "e igual modo, la pestaña de transformacin puede mostrarse u ocultarse con la tecla N . El panel de herramientas se oculta o se muestra de forma análoga con la tecla T . La posicin de estos iconos de ocultacin de elementos puede $ariar según el tipo de $entana #como en el caso de las cabeceras de las $entanas(.
a Icono de !anel oculto
b
2ara comen%ar esta práctica, primero seleccionaremos el cubo /ue crea +lender por defecto. 2ara seleccionar un ob'eto de la escena pinchamos sobre &l con . El ob'eto seleccionado aparecerá con el borde de color color naran'a. Aamos a eliminarlo de la escena pulsando # Su'r (, y aceptaC mos el mensa'e -01 elete. Dñadiremos ahora una primiti$a de +lender por e'emplo, la cabe%a de Su2anne. 2ara insertar nue$os elementos a la escena, pulsaremos S A y elegiremos ⧐ Add/ $es%/ $on&e'. 2odemos acceder al menú de añadir nue$os ob'etos a la escena igualmente en la cabecera de la $entana ,nfo, en la entrada Add. 8omo es una opcin /ue utili%aremos muy frecuentemente es recomendable recordar el ata'o S A .
#ónde se a8aden los nue6os ob7etos
Icono de cabecera oculta c
Figura 12
;ecordemos /ue mediante podemos seleccionar los ob'etos. 2ara seleccionar un ob'eto, deberemos estar en &odo -beto. 2ulsando cambiamos la posicin del puntero !" #el círculo de color ro'o y blanco /ue nos define dnde se añadirán nue$os ob'etos a la escena(. 2ulsando y arrastrando el rotaremos el punto de $ista en la $entana !".
Introducción a Blender
!*
+ombre de la "ista ,-
+ombre del %jbeto Seleccionado
#uestra cabecera de la 'entana
#uestra !anel de .erramientas T *jes de Coordenadas de la "ista ,Selector de i!o de *dición
Figura 11
!,
%ersonali8aci+n de vistas y elementos comunes de la interfa8.
Introducción a Blender
#uestra !anel de ro!iedades N
Las operaciones anteriores, reali%adas meC diante ata'os de teclado o mane'adores, perC miten utili%ar tres modificadores. Estos modificadores se acti$an despu&s de haber indicado la operacin a reali%ar.
Ⅲ 'ransformaciones +ígidas
Aeamos ahora algunas operaciones básicas /ue podemos reali%ar sobre los ob'etos. Las operaciones son dependientes del punto de $ista sobre el /ue estamos traba'ando. Es decir, si rotamos un ob'eto situando el puntero del ratn encima de la $ista /ue muestra el al%ado, rotaremos el ob'eto sobre el e'e Y por defecto, mientras /ue si lo rotamos con el puntero del ratn encima de la $ista correspondiente a la planta, lo rotaremos sobre el e'e P. En la parte inferior i%/uierda de cada $en tana !" aparece un pe/ueño sistema de coordenas, indicando los e'es cartesianos #$er 3igura 11(.
8on el ob'eto seleccionado, pulsamos y soltamos R #del ingl&s Rotation(. 6o hay /ue mantener la tecla pulsada simplemente se pulsa y se suelta, y acto seguido despla%amos el ratn. 2rocedemos igual /ue con la rotacin, pero usando la tecla G #del ingl&s, Grab(. @gual /ue los anteriores, pero con la tecla � #Scale(.
Es con$eniente aprender los ata'os de teclado anteriores, ya /ue estas transformaC ciones se reali%an con mucha frecuencia. +lender tambi&n dispone de unos controles $isuales para reali%ar las tres operaciones anteriores.
/so de #anejadores $es!ecto de000
Figura 1!
=so de mane"adores. 1n este caso se utili8a el mane"ador de rotaci+n.
En la cabecera de la $entana !", aparece un el icono de un pe/ueño sistema de coordenadas #$er 3igura 1!(, con el /ue es posible mostrar u ocultar estos mane'aC dores. )i no aparece el icono en la cabecera de la $entana !" es por/ue estará oculto #probablemente a la derecha(. 2uedes desC pla%ar la cabecera de la $entana !", pinC chando sobre ella y arrastrando con . Existe un botn para cada transformacin "espla%amiento, ;otacin o Escalado. En estos mane'adores, la operacin se puede reali%ar desde el sistema de coordenadas global, local o desde el punto de $ista, reali%ando la eleccin mediante la lista desplegable NGlobalO de su derecha.
8ual/uiera de las tres operaciones anteriores #reali%ada mediante ata'os de teclado( pueden limitar su e'e de aplicacin. 8on la operacin seleccionada #por e'emplo, R para rotar(, si pulsamos a continuacin alguna de las teclas X , , Z limitamos la operacin a Y reali%ar sobre ese e'e. )i /ueremos /ue la transformacin se realice según el sistema de referencia local del ob'eto, simplemente se pulsará $eces el e'e #por e'emplo, XX reali%a la rotacin sobre el e'e I local(. anel de ransformación
Figura 1$
=so del panel de -ransformaci+n para establecer un valor preciso. Introducción a Blender
!-
)i mantenemos la tecla S #&ay*sculas4 no confundir con Blo56 &ay*s6( pulsada mientras reali%aC mos alguna de las tres operaciones básicas, la e'ecutaremos en modo de precisin. )i por el contrario, manteneC mos la tecla C pulsada, lo haremos a'ustándonos a un número de unidades dependiente de la operacin si estaC mos rotando lo haremos de en grados, si estamos despla%ando o escalando, lo haremos a'ustándonos a la re'illa. La informacin sobre el $alor num&rico /ue estamos aplicando, aparece en la cabecera de la $entana !". )e puede inC dicar igualmente un $alor num&rico tras pulsar la tecla para la operacin #por e'emplo R (, podemos teclear directamente un $alor num&rico #G0( y el ob'eto rotará G0 grados.
)e puede consultar y modificar el $alor de las transformaciones anteriores en la pestaña de #ransformaci7n #$er 3igura 1(. ;ecordemos /ue esta pestaña tambi&n puede ocultarse o mostrarse con N . Los $alores num&ricos aparecen en botones delimitados por dos flechas. Este tipo de controles permiten introducir $alores pinchando con y tecleando directamente el $alor deseado.
!0
Introducción a Blender
Figura 1*
Situaci+n del plano ba"o la monita Su8anne y con7guraci+n de las vistas.
2ara acabar este primer e'ercicio, creamos una escena muy sencilla con un plano /ue sir$a de >suelo? para )u%anne. DyudándoC nos de las $istas de planta, al%ado y perfil, situaremos el puntero !" deba'o de la cabe%a del mono. ;ecordemos /ue la situacin del puntero !" se cambia pinchando con sobre la $ista !".
4na $e% situado correctamente el puntero, añadiremos un plano a la escena /ue ser$irá de suelo al ob'eto anterior. 2ara ello, pulsaremos S A ⧐ Add/ $es%/ Plane. -aremos el plano más grande #mediante � ( para /ue cubra el suelo de la escena. "eberemos obtener una escena similar a la 3igura 1.
*l nombre se refleja en el Outliner
Figura 1, >ombrado de ob"etos.
+ombre del %bjeto *ditable (anel %bject) %bjeto Seleccionado en "ista ,-
Ⅲ 9ombrado de 3b7etos
Dntes de pasar a la accin y crear nuestro primer $ideo'uego, necesitamos conocer algunas utilidades básicas para organi%ar adecuadamente los ob'etos en la escena. 8uando construimos una escena comple'a, el número de ob'etos aumenta y es buena idea mantener una organi%acin adecuada. Es con$eniente renombrar los ob'etos /ue se $an creando, para facilitar su posterior seleccin, importacin, etc.
+lender re/uiere /ue cada ob'eto tenga un nombre único, ya /ue internamente emplea el campo del nombre como cla$e para referirse a &l. 2ara renombrar un ob'eto, primero lo seleccionamos con y en la $entana de propiedades , el panel de obC 'eto tiene un campo #por defecto, enciC ma del grupo de propiedades 7ransform( para indicar el nombre del ob'eto #$er 3igura 1F(. En esta 3igura tambi&n aparece la herramienta 9utliner, muy útil para seleccionar los ob'etos y editarlos.
D la derecha de cada ob'eto en el 9utliner aparecen tres iconos /ue permiten )i está acti$o el ob'eto es $isiC ble en la escena. )ir$e para ocultar temporalmente ob'etos. 2ermite proteger ob'etos de ser seleccionados en la $entana !". 3unciona como la típica herramienta de NcandadoO en soft*are de diseño. El ob'eto se tendrá en cuenta en la etapa de ;ender, para generar una imagen " final.
Introducción a Blender
!
ras !ulsar la tecla M con un objeto seleccionado se muestra el diálogo !ara mo'er el objeto de ca!a0
Ca!a del objeto
Ca!as "ista ,-
Figura 1-
#iferentes elementos de la interfa8 para el traba"o con capas.
Ⅲ Capas
$
Introducción a Blender
)i has utili%ado alguna herramienta de diseño como Gim' o .otos.o', ya conoces la metáfora de las capas en interfaces de usuario la escena final se compone de los elementos #ob'etos, cámaras, luces, etc...( /ue se encuentran en todas las capas /ue est&n acti$as. )i una capa contiene ciertos ob'etos pero no está acti$a, la etapa de representacin los ignorará. El uso de las capas es muy intersante para traba'ar con escenas comple'as. Es habitual tener ciertas capas para el escenario de una escena, otra capa para los persona'es, otra para las luces... 2ara acti$ar una capa simplemente pincharemos sobre ella con .
2or defecto, al acti$ar una capa, se desacti$an el resto de capas. 2odemos tener acti$as $arias capas a la $e% si mantenemos pulsado S elegiC mos cada una de las capas con . 2ara mo$er un ob'eto a otra capa primero lo seleccionamos y despu&s pulsamos M . 6os aparecerá una $entana #$er 3igura 1( donde seleccionar la capa a la /ue se /uiere mo$er el ob'eto. Las capas /ue contienen algún elemento aparecen dibu'adas con un pe/ueño punto en el centro. )i tenemos ob'etos en $arias capas, podemos saber en /u& capa está un ob'eto por/ue al seleccionarlo se pinta de color naran'a el punto central de la capa en la /ue está.
Capítulo Blender Game Engine
3
En el capítulo anterior se estudiaron las
Illumina - Blender Game Engine Low Poly Girl (Creative Commons BY-NC by Rogper
órdenes esenciales en Blender para trabajar con objetos 3D y movernos en el Editor de Vista 3D. En este capítulo realizaremos el primer prototipo de videojuego empleando los Bloques Lógicos. Esta potente aproi! mación al desarrollo permite construir" sin necesidad de escribir ni una línea de código" aplicaciones relativamente complejas. #artiendo de elementos previamente mode! lados" construiremos un videojuego de naves espaciales. $e dotar% a las naves ene! migas de un sencillo comportamiento" y &inalmente se genenar% un ejecutable para nuestra plata&orma de trabajo. '(nimo" que comenzamos con la parte m%s divertida de este manual) Blender Game Engine
41
Ⅲ Introducción *omo se +a visto en capítulos anteriores" Blender trae integrado un potente motor de videojuegos que le permite crear aplicaciones interactivas en 3D... 'y generar ejecutables independientes de Blender). El motor de juego de Blender , BGE- es una potente +erramienta de alto nivel de programación. $u principal objetivo es el desarrollo del juego" pero se puede utilizar para crear cualquier so&tare interactivo en 3D con otros &ines" tales como visitas interactivas de artquitectura en 3D" libros electrónicos" etc. El n/cleo de la estructura del BGE son los bloques lógicos , Logic Bricks-. El objetivo de los bloques lógicos es o&recer un entorno visual &%cil para dise0ar aplicaciones interactivas sin necesidad de conocer ning/n lenguaje de programación. $obre cada objeto de juego se pueden de&inir tres tres tipos de bloques lógicos" Sensores" Controladores y Actuadores" adem%s de Propiedades o Atributos ,ver 1igura 2-.
La lógica en el motor de juegos de Blender est% ligada a los bjetos de 4uego ,o Game Objects-. Los objetos tienen un nombre /nico" y pueden ser desde objetos geom5tricos ,como una nave espacial o un obst%culo-" una c%mara" una l%mpara o un objeto sin representación gr%&ica ,o Empty-. Los objetos est% listados por sus nombres y aparecen el la ventana de lógica cuando son seleccionados. Los bloques lógicos y propiedades de un objeto solo es visible cuando el objeto est% seleccionado.
42
Blender Game Engine
+
Ⅲ Propiedades Las propiedades son como las variables en los lenguajes de programación. $irven para guardar datos asociados a un objeto" como su puntuación" el n/mero de vidas que le quedan" los tipos de armas que tiene" etc. En el caso de objetos que representen a una persona" las propiedades podrían ser su nombre" su edad" su altura" peso" n/mero de D67" etc.
Bloques Lógicos Sensores
Objetos de Juego Propiedades (Atributos)
Blender permite trabajar con los siguientes tipos de #ropiedades8 8 Es un temporizador que sirve para contar siempre de &orma creciente" desde el valor en el que se crea. 8 *ontiene n/meros decimales en el rango de !29999.999 a 29999.999. 8 6/meros enteros entre !29999 y 29999. 8 :lmacena un teto de +asta 2;< caracteres. 8 Valor lógico =rue>1alse.
Control.
Actuat.
Figura 1 iagrama general de los )b!etos de *uego (Game )b!e"ts& blo+ues l,gi"os y propiedades'
Figura 2 El persona!e prin"ipal de Yo #ran$ie%& un video-!uego libre programado "on el motor de Blender'
Ⅲ Sensores, Controladores !ctuadores ?ediante estos tres tipos de bloques lógicos es posible de&inir el comportamiento de la aplicación. Los comienzan todas las acciones lógicas. El sensor indica cosas como la cercanía de un objeto" la pulsación de una tecla" eventos programados" etc. *uando un sensor es activado" un pulso es enviado a todos los controladores que est5n conec! tados con 5l. Los manipulan la lógica" evaluando los pulsos de los sensores y acti! vando ,si se cumple la condición que de&i! nen- los actuadores en respuesta. Los a&ectan a los objetos o al juego de alguna manera. Los actuadores cambian movimiento" sonido" propiedades" objetos" etc. Estos cambios pueden provocar eventos que sean capturados por sensores de otros objetos. "e#erencia de Blo$ues %ógicos
En el *apítulo @ puedes encontrar una descripción de los principales $ensores" *ontroladores y :ctuadores disponibles en Blender. En este capítulo utilizare! mos /nicamente los necesarios para rea! lizar los ejemplos... ':nímate y prueba otras combinaciones)
otor de !ender
Organización de las Ventanas
Figura 3
ele""i,n del motor de Render y "on.gura"i,n de l as ventanas'
Ⅲ &uestro Primer E'emplo El primer paso para utilizar el motor de videojuegos de Blender es activarlo en el men/ principal de la aplicación. El motor de render por de&ecto est% en A Blender !ender . Es necesario cambiarlo a A ,ver 1igura 3-. $i no cambias el motor de Cender" algunas opciones no aparecer%n en el inter&az de usuario. De igual modo" es recomendable cambiar la con&iguración de las ventanas a ,ver 1igura 3-. *omo vimos en el capítulo anterior" esta con&iguración puedes perso! nalizarla como m%s te guste" o +acerla de &orma totalmente manual. De cualquier &orma" a+ora trabajaremos con esa con&igu! ración est%ndar porque con esas ventanas tendremos todo lo necesario para +acer nuestros primeros ejemplos.
na vez elegida esa con&iguración de ventanas" tendremos una disposición como se muestra en la 1igura @. :dem%s de la Vista 3D y el Outliner que &ueron eplicados en el capítulo anterior" eiste una zona a la derec+a para la edición de teto. Este editor permite programar el comportamiento de los objetos mediante código Pyt"on. En este curso no vamos a estudiar esta capacidad de Blender" por lo que directamente puedes eliminar esa zona de la pantalla ,unir el editor con otro- o ignorarlo. Debajo del editor de teto est% el editor de ,Properties-" que permite de&inir propiedades de los objetos" como el nombre" propiedades &ísicas" etc... 1inalmente" el bloque principal del ocupa la parte in&erior central e izquierda de la ventana" y permite a0adir propiedades y bloques lógicos a los objetos de juego. Blender Game Engine
43
Vista &' (3D View ) Organizador (Outliner)
Editor de "e#to (Text Editor )
$ro%iedades (Properties) $ro%iedades (Properties)
Figura 4
44
Bloques Lógicos (Sensores, Controladores y Actuadores)
/entanas (editores e0istentes en la "on.gura"i,n por de1e"to de Game Logic'
Blender Game Engine
Ⅲ (n Cu)o $ue "ota*** +o-. Veamos cómo &unciona el editor de lógica con un ejemplo muy b%sico. Vamos a +acer que el objeto *ube" creado por de&ecto en la escena" rote con respecto de su eje positivo cuando pulsamos la tecla A . #ara ello" con el Cubo seleccionado" a0adimos un $ensor de tipo ,pinc+ando en Add Sensor -. De&inimos que la tecla es la A ,par%metro -. *reamos un controlador de tipo :6D y lo conectamos" de &orma que cuando se pulse la tecla :" se transmita el pulso al controlador. :l ser un controlador :6D con una /nica entrada" activar% la salida siempre que la entrada est5 activa. 1inalizamos conectando un :ctuador de tipo " que rote 2F con respecto del sistema de re&erencia local ,el botón marcado con la letra debe estar activado" como se muestra en la 1igura G-.
Hec+o esto" activamos el punto de vista de la c%mara en la Vista 3D ,pulsando 0 en en el teclado num5rico o desde la cabecera del 3D Vie en ⧐ View/ Camera-. La vista debe ser algo similar a la 1igura I. 1inalmente" para ejecutar la aplicación" pulsamos la tecla P ,de Play-. :+ora" cuando pulsemos la tecla A " el cubo debe rotar sobre su eje local . 1ascinante. #ara parar el modo de juego y seguir trabajando en Blender" pulsa! remos la tecla .
Ⅲ Generando un E'ecuta)le $i est%s contento con este primer resultado" veamos cómo generar un ejecutable inde! pendiente de Blender. $í" en cualquier mo! mento del desarrollo puedes generar un ejecutable para los Ausuarios de tu aplica! ción que no necesitar%n tener Blender ins! talado en su equipo. #ara ello" debes activar un plugin de eportación.
En el men/ principal" ⧐ File/ User Preferences" en la sección :ddons" elige la categoría Game Engine y activa el /nico plugin de esa categoría A ,ver 1igura J-. Hec+o esto" puedes generar el ejecutable &%cilmente en ⧐ File/ Export/ Save As Game Engine Runtime.
Figura 0
/ista 4 "on la "5mara a"tiva'
Figura / Blo+ues l,gi"os sobre el ob!eto 2Cube3 Blender Game Engine
4/
Ⅲ e'orando el Cu)o "otador :+ora que sabemos cómo generar ejecu! tables de nuestros juegos" veamos cómo mejorar el ejemplo b%sico anterior a0adien! do algo m%s de complejidad a los bloques lógicos. :+ora vamos a a0adir una propiedad al objeto de tipo Boolean" que tomar% valores lógicos de Verdad o 1also , True o False-. Esa propiedad la llamaremos " y crea! remos un nuevo sensor de tipo Property que preguntar% por el valor de esa propiedad y lo conectamos al controlador anterior como se muestra en la 1igura <. Figura
6"tiva"i,n del PlugIn para generar e!e"utables desde Blender'
El "ic actiado indica que la %ro* %iedad toma alor inicial de True
40
Blender Game Engine
*on esta nueva disposición de bloques lógicos" el objeto podr% rotar o no dependiendo del valor inicial de la propie! dad !otable. $i lo inicializamos a verdadero ,como es muestra en la 1igura <-" el objeto podr% rotar. $in embargo" si la propiedad la inicializamos a False ,es decir" quitamos el Tick en la de&inición de la propiedad-" el objeto nunca podr% rotar porque no se cumple la condición del controlador :6D. #odemos Aleer el comportamiento de este controlador como A Si la tecla A est) pulsada * la propiedad !otable (ale True+ entonces ejecuto el actuador ,ue tengo conectado a continuaci$n.
egunda versi,n del e!emplo& "on propiedad 2Rotable3
Figura
: partir de esta nueva versión podemos complicar un poquito el ejemplo" e jemplo" a0adiendo un temporizador. *reamos una nueva propiedad Timer que llamaremos ,reloj-" inicializada a 9. Las propiedades de este tipo van incrementando su valor como un reloj" indicando el n/mero de segundos transcurridos desde el valor inicial que toman. En la nueva versión del ejemplo ,ver 1igura K- +emos creado el reloj y tres bloques lógicos nuevos de &orma que cuando el reloj vale m%s de G ,+an transcurrido m%s de G segundos-" la propiedad se estable! ce a False" de modo que el objeto no podr% rotar.
*omo se muestra en la 1igura K" es conve! niente organizar los bloques lógicos asig! n%ndoles un nombre. De igual &orma" con el tri%ngulo situado en la esquina superior izquierda de cada bloque se puede Aplegar su representación" de &orma que /nicamen! te tengamos maimizados los bloques con los que estemos e stemos trabajando.
Ⅲ 5epurando la !plicación En programación es muy /til ver el valor que toman las propiedades de los objetos. Esto permite detectar errores , bugs- de nuestros programas. El editor de Blender permite mostrar el valor de las propiedades sobre la ventana del juego.
Figura 16 6"tiva"i,n de las op"iones de depura"i,n (debug en el men8 prin"ipal de Blender'
En el men/ principal de Blender" debemos activar ⧐ Game/ Sow !e"ug Properties ,ver 1igura 29-. Debemos igualmente igu almente activar el botón de depuración de cada propiedad de la que queramos que ramos ver su valor ,1igura 22-.
Bloque lógico minimizado
+ombre del Bloque Lógico
Figura
67adiendo un relo! a la apli"a"i,n''' Blender Game Engine
4
n actuador establecer% la propiedad a True" y otro resetear) el reloj a cero" para disponer de otros G segundos de rotación. El resultado de los bloques lógicos se muestra en la 1igura 23.
ostrar ,n-o de de%uración
Figura 11
6"tivando las op"iones de depura"i,n sobre las propiedades
na vez activadas las opciones de depura! ción" la ventana de la vista 3D mostrar% la in&ormación del valor de las propiedades sobreimpresa" sobreimpresa" como se muestra en la 1igura 2;. '6o olvides desactivar las opciones de depuración cuando vayas a generar el ejecutable &inal de tu videojuego)
4
Blender Game Engine
Figura 12
ebug en tiempo de e!e"u"i,n
$upongamos que queremos +abilitar una tecla adicional R de de modo que" cuando se pulse tengamos otros G segundos en los que podamos rotar el objeto. Mu5 tenemos que +acerN :0adir un nuevo sensor que active dos actuadores en este caso.
na vez que +emos entendido el &unciona! miento de los bloques lógicos" vamos a optimi-ar el ejemplo utilizando controlado! res de tipo epresión. $e puede comparar el resultado que +emos construido +asta a+ora completo en la 1igura 2@" &rente al mismo resultado empleando epresiones en la 1igura 2G. La complejidad de la solución es muc+o menor y muc+o m%s &%cilmente ampliable. El &uncionamiento de la aplica! ción es eactamente igual. Reset de tiempo'''
Figura 13
Figura 14
El e!emplo del "ubo rotador "on relo! "ompleto& "on todos los blo+ues l,gi"os e0pandidos
Blender Game Engine
4
En las epresiones se pueden utilizar
operadores matem%ticos b%sicos" compara! dores y operadores lógicos ,ver Ce&erencia en el *apítulo @ de este manual-. En estas epresiones se utilizan los nombres de las propiedades del objeto y el nombre de los sensores a los que est% conectado el controlador. Es importante utilizar en los sensores nombres signi&icativos. :sí" en el ejemplo de la 1igura 2G se +a renombrado el sensor de pulsación de la tecla A como para utilizar ese nombre en la epresión del controlador.
Figura 1/ /6
Oracias al uso de esta epresión ya no es necesario el uso de la propiedad !otableP sino que directamente podemos llamar al actuador &otion cuando la tecla A est% pulsada y el valor del reloj es menor que G. Vemos que el n/mero propiedades se +a reducido a la mitad y el n/mero de bloques lógicos de 22 a I. En programación es +abitual que eistan m/ltiples caminos para resolver un mismo problema. Habitual! mente la solución m%s sencilla suele ser la mejor. El uso de epresiones en este caso &acilita enormemente la tarea.
Principio de dise7o 8ISS
: modo de curiosidad" el principio Q7$$ ,del ingl5s %eep t Simple+ Stupid. 8 A?antenlo sencillo" 'Est/pido)- es un acrónimo usado como principio de dise0o. El principio Q7$$ establece que la mayoría de sistemas &uncionan mejor si se mantienen simples que si se +acen complejosP por ello" la simplicidad debe ser mantenida como un objetivo clave del dise0o" y cualquier complejidad innecesaria debe ser evitada.
El e!emplo del "ubo rotador "on relo! "ompleto empleando una 8ni"a propiedad y una e0presi,n "omo "ontrolador'
Blender Game Engine
Ⅲ Introducción : continuación desarrollaremos paso a paso un videojuego muy sencillo de batallas espaciales" poniendo en pr%ctica los conceptos estudiados +asta a+ora en el manual. $i tienes problemas para posicionar objetos en la escena o manejarte con las vistas 3D" es conveniente que repases el capítulo ; donde se estudian los &unda! mentos del inter&az de usuario de Blender. De igual &orma" tambi5n es recomendable que consultes el capítulo @ con la re&erencia a los bloques lógicos soportados por Blen! der" porque en el este tutorial paso a paso no se eplicar% su uso. 1inalmente" se asume que el lector +a trabajado con los conceptos eplicados en las p%ginas anteriores de este capítulo" y es capaz de generar un ejecutable" activar el modo de debug" de&inir propiedades" cambiar el nombre a los bloques lógicos" etc...
Blender Game Engine
/1
Ⅲ Paso 19 &a:e del ;ugador En este primer paso" comenzaremos car! gando el modelo que servir% como nave del jugador. *omenzamos con la escena por de&ecto de Blender. $eleccionamos el cubo por de&ecto y lo borramos � . Elegimos en el men/ superior como motor de Cender el Blender Oame ,ver 1igura 2I-" y como con&iguración del entorno de trabajo Oame Logic. :+ora cargamos el modelo de la nave para el jugador. En el men/ principal elegimos ⧐ File/ Appen#" seleccionamos el arc+ivo DarR1ig+ter.blend y navegamos +asta la categoría de " y seleccionamos el objeto llamado . #inc+amos &inalmente en el botón . $i activamos como modo de sombreado en la cabecera de la vista 3D A " el resultado debería ser similar al mostrado en la 1igura 2I. $i a+ora vemos la escena desde el punto de vista de la c%mara , 0 en el teclado num5rico-" tendremos una representación similar a la mostrada en la 1igura 2J. Vamos a cambiar la posición de la c%mara para que vea la escena desde un punto de vista cenital. Lo m%s sencillo es establecer los valores num5ricamente.
/2
odo de Sombreado
«Texture
Figura 10
9ras importar el modelo del !ugador prin"ipal& este debe ser el aspe"to de la inter1a:'
*on la c%mara seleccionada " abrimos el panel de propiedades N " y establecemos los valores como se muestra en la 1igura 2< ,posición y rotación a 9" salvo en el eje S que Aelevamos la posición de la c%mara 39 unidades para que vea la escena desde arriba-. Figura 1 /ista desde la "5mara
Blender Game Engine
:+ora cambiaremos el nombre del objeto del jugador. En lugar de DarR1ig+ter" lo llamaremos #layer. De esta &orma" el nom! bre es m%s representativo con vistas a crear los bloques lógicos. *on la nave seleccio! nada" en el men/ de #ropiedades , -" en la sección de cambiaremos el nombre a ,ver 1igura 2K-.
Figura 1
Cambio de nombre del ob!eto
#ara &inalizar con este primer paso" ajustaremos el tama0o del jugador a uno un poco menor ,escalaremos con la tecla � -y su rotación ,pulsando R " y seguidamente teclearemos !K9-. 6os aseguraremos que el objeto est% posicionado en la posición 9 del eje S ,para que los enemigos que a0adi! remos a continuación est5n per&ectamente alineados en altura en el mismo eje-. El resultado de este paso debe ser similar al mostrado en la 1igura 2K. *uando tengamos estos cambios realizados y la nave est5 apuntando en el eje positivo de las T" pulsaremos C A para que el objeto aplique internamente esos cambios que +emos realizado.
Figura 1
itua"i,n de la "5mara tras a!ustar valores de Lo"ation y Rotation
u im%ortante el alor en /
Figura 1
Posi"ionando la nave del !ugador ade"uadamente Blender Game Engine
/3
Ⅲ Paso 29 o:i
/4
Blender Game Engine
#ara a0adir disparo a la nave necesitamos dos elementosP por un lado el objeto a disparar. *rearemos una es&era de un color sólido que servir% como elemento de disparo. #or otro lado" un actuador que permita a0adir objetos a la escena de &orma din%mica. $i consultamos la re&erencia de actuadores en el capítulo @" +ay uno que sirve para ese propósito8 . Figura 26
El problema de Edit Object es que a0ade un objeto con respecto del centro del objeto que lo ejecuta. El centro de la nave est% en su interior" y si a0adimos objetos a+í" podrían colisionar con la propia nave. na solución est% en crear un objeto vacío UEmpty y emparentarlo con la nave" de modo que siga su movimiento. Es la solución que vamos a utilizar en este ejem! plo.
Blo+ues l,gi"os para permitir el movimiento ;ori:ontal de la nave prin"ipal (Player'
Cecordemos que los nuevos objetos en la escena se a0aden con respecto a la posición del puntero 3D. #odemos cambiar la posición del puntero 3D num5ricamente ,en el panel de #ropiedades- o directamente pinc+ando con en la vista 3D. *uando el puntero 3D est5 correctamente posicionado en la punta de la nave ,ayud%ndonos de las vistas &rontal" superior y lateral- a0adimos un objeto Empty con S A . El resultado debe ser similar al de la 1igura ;2. 7gual que +icimos con el jugador" cambiamos el nombre del Empty a U ,ver 1igura ;;-.
Figura 21 Figura 22
Cambiando el nombre al Empty
1inalmente" emparentamos el objeto EmptyPlayer con el objeto Player . #ara ello" seleccionamos primero el objeto +ijo , Emp# tyPlayer - y con pulsado" elegimos despu5s el padre ,el Player - y pulsamos C P y elegimos +acer padre al objeto , -. :+ora" si desplazamos la nave" el objeto Empty#layer lo seguir%.
67adiendo un Empty para +ue sirva "omo generador de disparos al ob!eto Player'
: continuación a0adiremos el objeto que servir% como disparo. #ulsamos de nuevo :justamos el S A tama0o de la es&era ,con � - a algo similar a lo mostrado en la 1igura ;;. *ambiamos el nombre de la Es&era a U . *reamos un nuevo material ,pinc+amos en 6e cuando accedamos a las propiedades de materiales y de&inimos como propiedades de material un color blanco sólido y activamos " para que sea sin sombra ,ver 1igura ;3-.
Figura 22
)b!eto <;ot= Blender Game Engine
//
Vamos a aplicar el tama0o internamente al objeto . 7gual que +icimos con la nave" con el objeto $+ot seleccionado" elegimos . C A :+ora movemos a la segunda capa el objeto $+ot ,pulsamos M - y dejamos /nicamente la primera capa activa. De esta &orma" el objeto eiste pero est% en la ;W capa oculto. Hec+o esto" vamos a a0adir disparos cuando se pulse la barra espaciadora. $obre el Aemisor de disparos ,es decir" el objeto EmptyPlayer -" conectamos con un A8/ los bloques lógicos de la 1igura ;@.
Elegir el color base 0 actiar S1adeless
Figura 23 /0
Propiedades del >aterial para el ob!eto de disparo <;ot=
Blender Game Engine
El campo del actuador Edit Object ,ver 1igura ;@- indica el n/mero de &rames que permanecer% vivo el objeto desde su creación. *omo el juego se ejecuta a I9 &rames por segundo" un valor de 399 implica que el objeto creado se destruir% transcurridos G segundos. La destrucción de objetos es /til para evitar que se creen m/ltiples copias de un objeto y el sistema se colapse. $i probamos a+ora el juego comprobaremos que cuando pulsamos la barra espaciadora" se a0ade un disparo pero 5ste no se mueve. La solución es muy sencilla" basta con a0adir un sensor de tipo sobre el objeto que se encargue de actualizar la posición mediante un actuador de tipo . La descripción completa de las coneiones se muestra en la 1igura ;G. *omo se +a remarcado en la 1igura ;G" queremos que el movimiento se realice con respecto del Sistema de !e1erencia Global" por lo que desactivamos el botón situado a la derec+a de . $i probamos a+ora el juego" vemos que la nave ya es capaz de disparar m/ltiples disparos ,que se destruyen autom%tica! mente transcurridos G segundos-. #arece que nuestro juego pide a gritos tener naves enemigas a las que poder disparar" no te pareceN. Vamos a a0adir un poco de emoción al juego...
Figura 24
Blo+ues de EmptyPlayer
Figura 2/
6"tuali:a"i,n de movimiento sobre el ob!eto Shot '
Ⅲ Paso 39 %os primeros Enemigos*** En este tercer paso vamos a a0adir un nuevo modelo de naves enemigas. 7gual que +icimos con la nave principal" a0adimos ⧐ File/ Appen# del arc+ivo SpaceCruiser7blend el objeto principal que se llama igual ,$pace*ruiser-. :justamos el tama0o � y la rotación R " y le cambiamos el nombre a . *uando tengamos el tama0o adecuado ,similar al de la 1igura ;I-" aplica los cambios internamente con C A . ?ovemos el nuevo objeto a la capa 3 ,pulsando la tecla M -. :+ora tenemos en la /nica capa activa al jugador" en la capa ; tenemos el disparo y en la capa 3 el primer tipo de enemigo. *reamos un nuevo Empty con S A . Lo nombramos como " y lo situamos en la parte supe! rior de la pantalla" &uera del campo de visión de la c%mara ,ver 1igura ;J-.
Figura 2
Posi"i,n de EmptyEnemy?
2uera de la c3mara con alor /45
Figura 20 6!uste de tama7o y rota"i,n de Enemy?
*omo se muestra en la 1igura ;J es muy importante comprobar dos cosas en este nuevo AGenerador de Enemigos. #rimero que est% &uera del campo de visión de la c%mara ,&uera del %rea sombreada-" y segundo que el valor en S es eactamente 9" para que est5 per&ectamente alineado con los disparos del jugador. Blender Game Engine
/
Figura 2
Blo+ues l,gi"os para el movimiento de los ob!etos de tipo Enemy?
Figura 2
Genera"i,n de enemigos aleatoria& "on intervalos m@nimos de ? segundo (A 1rames
7gual que +icimos con el objeto S"ot de dis! paro" a0adiremos bloques lógicos sobre el para que actualice su posición. En este caso" se realizar% un movimiento en vertical" seg/n el eje T negativo ,ver 1igura ;<-. $e a0ade una rotación sobre el mismo eje" para dotar al objeto de mayor inter5s visual. El generador de enemigos , crear% instancias de ese tipo de &orma aleatoria en el tiempo. /
Blender Game Engine
*omo se muestra en la 1igura ;K" el emisor +ace uso de un sensor de tipo " que se lanzar% aleatoriamente en intervalos de un mínimo de I9 &rames ,cada segundo o m%s-" creando objetos mediante el actuador de tipo Enemy9" que tendr%n un tiempo de vida de G99 &rames. *on estos bloques lógicos conseguimos que se creen enemigos" pero &alta que 5stos puedan c+ocar con los disparos... 'vamos a +acerlo en el siguiente paso)
Ⅲ Paso 49 Colisionando con las Balas : continuación de&iniremos los bloques lógicos para detectar la colisión con los disparos del personaje principal. $obre el objeto de disparo de&iniremos una propiedad que se llamar% de tipo Booleano ,ver 1igura 33-. El tipo no es importante" pero sí el nombre" porque nos servir% para &iltrar las colisiones sólo con objetos que tengan esa propiedad. :sí" los objetos enemigos utilizar%n un sensor que detectar% si +an c+ocado con alg/n objeto que tenga esa propiedad ,ver 1igura 39-.
Figura 36
estruyendo enemigos "uando ";o"an "on un disparo
Figura 33 Figura 31
Colisi,n #@si"a para Enemy1
Figura 32
Colisi,n #@si"a para Shot
Propiedad para disparo Shot
:dem%s" +ay que de&inir sobre los objetos dos per&iles de colisión ,en las opciones de colisión &ísica" como se muestra en las 1iguras 32 y 3;-. #or un lado" el enemigo se de&inir% de tipo " +abilitando la opción de para que otros objetos puedan detectar su cercanía. #or otro lado" el disparo se de&ine de tipo y " para que pueda colisionar con otros objetos. Hec+o esto" el enemigo que colisione con un disparo ser% eliminado de la escena. #odríamos ajustar el tiempo de generación de enemigos y de disparo para que la di&icultad del juego sea mayor.
Ⅲ Paso /9 !7adiendo un arcador Vamos a crear un marcador de puntuación para el juego. #ara ello" a0adimos un objeto de tipo =eto , S A -" y lo posicionamos como se muestra en la 1igura 3@. : este teto le cambiamos el nombre a U " y creamos una propiedad de teto pinc+ando en el botón ,ver 1igura 3G-. Esto nos crear% una propiedad especial llamada que dibujar% cualquier valor que contenga.
Figura 34
Posi"i,n del >ar"ador
Blender Game Engine
/
Figura 3/ Propiedad 9e0t para el >ar"ador
Figura 3
Figura 3 06
6"tuali:a"i,n de la propiedad s"ore del !ugador
Blender Game Engine
Figura 30 Propiedad 9e0t para el >ar"ador
Nuevos blo+ues l,gi"os para el Enemigo
Figura 3
Blo+ues l,gi"os para el >ar"ador
El teto del marcador es una propiedad de
tipo String ,cadena de caracteres-" que convertir% constantemente una propiedad de valor entero que contiene la puntuación. :sí" puede verse el objeto como un simple representador de la puntuación. El que lleva la cuenta real de los puntos y decide cómo deben aumentarse o disminuirse es el . De esta &orma" los bloques lógicos para el objeto se representan en la 1igura 3K. #or medio de un actuador de tipo se copia el valor de la propiedad A del jugador A ,ver 1igura 3I- en la propiedad A del marcador. Xnicamente &alta noti&icar al jugador cuando muera un enemigo. Es el propio objeto el que manda un mensaje ,mediante el actuador - al " indicando que +a muerto ,ver 1igura 3J-. El jugador" mediante tres bloques lógicos recibe la noti&icación e incrementa la puntuación en uno ,1igura 3<-.
Ⅲ Paso 09 Cuidado con los !steroides.. Vamos a a0adir otro tipo de objeto Uenemigo que no es sensible a los disparos" pero que debemos esquivar. 7gual que +icimos con los modelos anteriores" a0adimos ⧐ File/ Appen# del arc+ivo Asteroid7blend el asteroide. :justamos el tama0o � y la rotación R " y mantenemos el nombre de . *uando tengas el tama0o adecuado ,similar al de la 1igura @9-" aplica los cambios internamente con C A . *reamos un objeto y lo posicionamos en la esquina superior izquierda" &uera de la pantalla. ?ovemos el Asteroide a la capa @. El código de generación del asteroide ser% similar al que utilizamos para generar los enemigos ,ver 1igura ;K-" pero generando objetos de tipo Asteroid. Los :steroides se mover%n en :ig#:ag. :0adimos dos cubos S A ,escalados en vertical � Y - que servir%n de límite lateral del mundo.
Figura 46
6steroide
Llamaremos a estos cubos y " y los situaremos justo en el borde eterior de la c%mara. *uidado con la altura en S de los objetos" que debe ser igual a 9 para que los asteroides puedan colisionar con ellos ,ver 1igura @2-. Estos cubos deben estar en la misma capa que el objeto Player . Blender Game Engine
01
Figura 41
Posi"i,n de l as "a!as l@mite
Figura 43
#@si"a del 6steroide
Figura 4/ Propiedad sobre los Cubos L@mite
Figura 42 02
Blo+ues l,gi"os para el 6steroide
Blender Game Engine
Figura 44
#@si"a de los "ubos L@mite
Las propiedades &ísicas de los cubos límite y del asteroide se de&inen de &orma similar a como se +izo anteriormente con el enemigo y los disparos ,ver 1iguras @3 y @@-. *abe destacar que se +a activado la opción U de los cubos límites para que no tengan representación gr%&icaP así" si no los +ubi5ramos a0adido per&ectamente en los límites de la c%mara" no pasaría nada ya que no se dibujar%n. Los cubos límite tienen una propiedad de&inida llamada U ,ver 1igura @G-" que nos permitir% &iltrar y comprobar si +ubo colisión con ellos por parte del asteroide.
Figura 4
La 1igura @; muestra los bloques lógicos para los asteroides. El asteroide mantiene una propiedad interna llamada que indica si se desplaza +acia la derec+a ,si es cierta- o +acia la izquierda. :sí" depen! diendo del valor de " se ejecuta un actuador de movimiento u otro. *uando el asteroide colisiona con una caja límite" cambia el valor de ,de True a False y de False a True-" invirtiendo su sentido de desplazamiento. Lo que ocurre cuando un asteroide c+oca con el jugador se resume en las 1iguras @I y @J. Figura 40
Nuevos blo+ues l,gi"os para Asteroid
#ara que &uncionen los bloques lógicos" es necesario que el jugador sea " con una nueva propiedad ,ver 1igura @<-.
Figura 4
Nueva Propiedad y #@si"a de Player
Nuevos blo+ues l,gi"os para Player Blender Game Engine
03
Ⅲ Paso 9 5uplicando $ue es Gerundio #ara acabar este ejemplo" queda duplicar las &uentes de generación de enemigos y de asteroides. *rearemos otro emisor de asteroides en la zona derec+a de la pantalla. #ara ello" simplemente seleccionamos el y pulsamos S D X . *on esto tendremos una nueva copia del objeto que desplazaremos /nicamente en el eje . Lo colocamos cerca del etremo superior derec+o y... ya est%. =enemos otra &uente generadora de asteroides con la misma con&iguración. La generación de nuevas &uentes de enemigos es igualmente sencilla. Elegimos el y lo duplicamos con . :l &inal" podemos tener varias S D &uentes generadoras de enemigos y de :steroides" como se muestra en la 1igura @K.
Emisor de Asteroides
04
Blender Game Engine
Emisores de Enemigos
Ⅲ Pasos , , 16= >Continuar?@ T a+ora qu5N :+ora queda que completes el juego como quieras. =e +emos propor! cionado m%s modelos para que" si quieres" a0adas nuevos tipos de enemigos ,m%s resistentes a los impactos de disparos-" que pongas nuevas condiciones de puntación ,por ejemplo" si un enemigo se escapa por la parte in&erior de la pantalla" penalice la puntuación" se puede +acer que la nave del jugador no pueda salirse de los límites de la pantalla" ajustar la velocidad de salida de los enemigos y asteroides" a0adir sonidos mediante actuadores $ound" un contador de vidas del jugador... En de&initiva" todo lo que te apetezca. Esperamos que este ejemplo +aya despertado tu inter5s en este campo y que dis&rutes muc+o programando tus propios juegos con el Oame Engine de Blender. '6o olvides enviarnos tus creaciones) Figura 4
itua"i,n de las 1uentes generadores de Enemigos y 6steroides'
Emisor de Asteroides
Capítulo Referencia de Bloques Lógicos
Low poly isometric work! (Creative Commons by nabagielis)
4
Este último capítulo de este librito resume los principales bloques lógicos del Logic Editor de Blender. Se aconseja utilizar esta sección a modo de referencia rápida. Cualquier duda que no quede resuelta en este capítulo mu! proba" blemente lo estará en el Wiki oficial de Blender. #ueda fuera del propósito de este manual introductorio e$plicar la %&' de programa" ción de &!t(on o estudiar algunos bloques lógicos a)anzados como los controladores para brazos robóticos o los actuadores de búsqueda de caminos. En los enlaces de la última sección del manual podrás encontrar algunas páginas donde profundizar en estos temas. Referencia de Bloques Lógicos
65
Sensores Borrar
Ⅲ Cabecera Común
Nivel Frecuencia
Los sensores son los bloques lógicos que acti)an el resto de la lógica de la aplicación. Los sensores se encargan de dar una entrada cuando ocurre un e)ento determi" nado *por ejemplo se pulsa una tecla cuando (a pasado un determinado tiempo en un temporizador o (a! una colisión entre dos objetos que tienen una determi" nada propiedad+. Cuando se acti)a un sen" sor manda un pulso positi)o a los contro" ladores que tiene conectados. La )ersión actual de Blender incorpora ,tipos de sensores. % continuación estu" diaremos los principales sensores utiliza" dos en programación de )ideojuegos. 66
Referencia de Bloques Lógicos
Pulsar Invertir
El ni)el *positi)o o negati)o+ (ace que el sensor se acti)e según la frecuencia establecida a continuación *Freq +. El campo de frecuencia *Frequency+ estable" ce el tiempo de espera entre la acti)ación del sensor. Se establece en frames. n )alor / implica sin espera. La tasa por de" fecto *sin espera+ es de 0/1z. El botón de (ace que el sensor se acti)e únicamente una )ez incluso si la entrada permanece acti)a. Esta opción es útil por ejemplo si el usuario mantiene una tecla pulsada ! sólo queremos que se ejecute una )ez el controlador. &or último la opción de sir)e para in)ertir la salida del sensor *se acti)a cuando no se cumple la entrada ! )ice)ersa+.
Ⅲ Ala!s
Este sensor se utiliza para tareas que necesitan realizarse en cada tic2 de reloj *o cada cierto número de tic2s+. Si sólo necesitas que se ejecute una )ez al inicio de la aplicación *por ejemplo en tareas de inicialización+ acti)a el botón .
Ⅲ "ela!
Este sensor pospone la inicialización de las acciones. En el campo se indica el tiempo de espera para ejecutar la acción con una duración indicada en . Si está acti)o la acción se ejecutará cíclicamente.
Sensores Ⅲ $e!board
Ⅲ %ouse
Ⅲ Actuator
3etecta e)entos de ratón. Estos e)entos pueden ser los siguientes4 Es cierto *es decir acti)a el controlador al que está unido+ si el ratón se mue)e sobre cualquier objeto. Es cierto si el ratón se mue)e sobre el objeto que tiene definido este sensor. 3e)uel)e cierto si (a! algún mo)imiento de ratón. 3e)uel)e cierto si la rueda del ratón se mue)e (acia abajo. 3e)uel)e cierto si la rueda del ratón se mue)e (acia arriba. 3e)uel)e cierto si se pulsa el botón derec(o del ratón. 3e)uel)e cierto si se pulsa el botón del medio del ratón. 3e)uel)e cierto si se pulsa el botón izquierdo del ratón.
Este sensor detecta cuando un determi" nado actuador se acti)a. En el campo se indica el nombre del actuador que queremos monitorizar.
3etecta la entrada por teclado de la aplicación. &uede guardar la pulsación en una propiedad de tipo String. Los modificadores * + especifican teclas adicionales que pueden pulsarse para establecer combinaciones *como por ejemplo detectar la pulsación de Control + A o Alt + V ...+. El campo es una propiedad booleana que sir)e para determinar si las pulsaciones de tecla se guardan en la cadena de te$to referenciada por .
Ⅲ &o!stic'
%cti)a el controlador cuando el 9o!stic2 se mue)e. Empleando el campo se pueden controlar más de un 9o!stic2.
Referencia de Bloques Lógicos
6#
Sensores Ⅲ Collision
En)ía un pulso positi)o cuando el objeto c(oca con otro objeto. 5ediante el campo se puede definir si la colisión se detecta según un determinado material o una propiedad.
Ⅲ )ropert!
Ⅲ (ear
3etecta objetos dentro de un determinado rango de distancias. Este sensor se acti)a cuando otro objeto se encuentra más cercano que una determi" nada distancia definida en el campo . na )ez que se (a acti)ado el sensor permanecerá en ese estado en)iando pulsos positi)os (asta que el objeto alcance una distancia ma!or que la definida en .
Sobre el uso del Sensor (ear**** Este sensor detecta la cercanía de otros objetos incluso atra)esando objetos e$istentes. Es decir aunque un objeto est: detrás de una pared si cumple los rangos de distancia definidos en el sensor será detectado. Los objetos a detectar deben ser ;%ctores<= es decir deben tener la propiedad acti)a en las opciones de simulación física.
El campo permite filtrar única" mente aquellos objetos que tengan definida esa propiedad. 3etecta cambios en las propiedades definidas en el objeto que lo contiene. El tipo de e)aluación * + que (ace que se acti)e el sensor puede ser . 6-
Referencia de Bloques Lógicos
&uedes acti)ar en el menú principal ⧐ Game/ Show Physics Visualization para tener una representa" ción del rango en el que se acti)ará el sensor %ear . Esto es mu! útil para depurar el )ideojuego.
+Sabías que***,
Sensores Ⅲ %essage
&ermite recibir mensajes de otros objetos. El campo se puede dejar en blanco de modo que recibe cualquier mensaje. Si se especifica una cadena de te$to solo se recibirán mensajes que tengan ese asunto concreto. El contenido del mensaje * + solo puede ser accedido mediante un controlador que ejecute código &!t(on.
Ⅲ Random
>enera pulsos positi)os de forma aleatoria. El campo sir)e para definir una semi" lla de números aleatorios.
Ⅲ Radar
Crea un cono de detección dentro del ángulo definido en el campo . El comportamiento es similar al sensor de tipo %ear estudiado anteriormente. En eje determina la dirección positi)a del cono de detección. El ángulo indica la apertura del cono *está definido entre / ! ,?/ grados+. La distancia definida en inidica la altura del cono. 'gual que se comentó en el sensor %ear resulta mu! interesante acti)ar la )isualización de formas físicas para depurar el )ideojuego.
Ⅲ Ra!
Este sensor lanza un ra!o en una dirección indicada en el eje . Este eje está definido en coordenadas locales. El campo sir)e para definir la longitud del ra!o. 'gual que en el sensor Colli!ion es posible filtrar los objetos que intersecarán con el ra!o por o &ropiedad * +. El botón sir)e para )er ;a tra):s< de objetos que no tienen la propiedad o material definida en el campo anterior.
Referencia de Bloques Lógicos
6.
Controladores Borrar
Ⅲ Cabecera Común
Índice
Tipo Nombre
Los controladores son bloques que recogen información en)iada por los sensores ! que especifican el estado en el cual operarán. 3espu:s de realizar las operaciones lógicas indicadas en)ían un pulso de salida a los actuadores que tengan conectados. Cuando un sensor es acti)ado en)ía un pulso positi)o ! cuando es desacti)ado uno negati)o. El trabajo de los controladores es )erificar ! combinar estos pulsos para disparar la respuesta apropiada. E$isten ? tipos de controladores. En este manual nos centraremos en @ de ellos dejando el aprendizaje de los controladores de "yt$on para un trabajo más a)anzado. #/
Referencia de Bloques Lógicos
Marca
%l igual que ocurría con los sensores todos los controladores tienen una cabecera común. El campo de permite forzar que la ejecución de el controlador se realice antes que el resto de controladores. Esto resulta de especial inter:s para la ejecución de scripts de inicialización. El del controlador indica la capa de la máquina de estados a la que pertenece. #ueda fuera del propósito de este manual el trabajo con capas de estados por ser una característica a)anzada del motor de )ideojuegos de Blender.
Ⅲ 0peradores Lógicos Blender permite trabajar con 0 operadores lógicos básicos. La Aabla , resume el comportamiento de las operaciones lógicas realizadas por los distintos tipos de controlador lógico. La primera columna *entrada+ representa la cantidad de pulsos positi)os en)iados desde los sensores conectados. Las columnas siguientes representan la respuesta de cada controlador a esos pulsos. significa que las condiciones del controlador (an sido satisfec(as ! que los actuadores a los cuales se encuentra conectado serán acti)ados= significa que las condi" ciones del controlador no se alcanzaron ! no se acti)ará la salida.
Ⅲ Controlador )!t1on na de las características a)anzadas más interesantes del motor de )ideojuegos es el uso de scripts en &!t(on. #ueda fuera del ámbito de este manual profundizar en este tipo de controladores pero si el lector (a utilizado algún lenguaje de programación es mu! recomendable estudiar la %&' del 5otor de ideojuegos *)er referencia del manual oficial de Blender+.
Controladores Sensores Positivos
Controladores AND
OR
OR
NAND
Nin!uno
NOR
NOR
3abla 2
Ⅲ 7emplo de uso
Controladores basados en expresiones lógicas
En el ejemplo de la igura , se define una sencilla e$presión sobre el controlador de tipo 4
illedB!"nem! #N$ %lives&'(
"no Varios #odos
Ⅲ presión
La e$presión puede estar formada por4 Las )ariables pueden ser directamente nombres de *serán ciertas cuando el sensor est: acti)o+ o del objeto. &ueden ser operadores matemáticos básicos D F " ! opera" dores lógicos G H HI GI II JI %K3 8 ! KA.
Este tipo de controlador permite e)aluar una e$presión directamente escrita en su interfaz generando un pulso positi)o *que acti)a los actuadores que tenga conec" tados+ cuando se cumpla que el resultado de la e$presión es cierta.
%l utilizar el nombre de un sensor * + la e$presión será cierta cuando la salida del sensor est: acti)a. En este caso cuando se reciba un mensaje con asunto M N. %demás en la e$presión se realiza una comparación con una propiedad del objeto M"layer N llamada M N. %sí la salida del controlador será cierta *! por tanto se acti)ará el controlador que tenga conectado+ cuando se reciba un mensaje con el asunto O cuando el número de )idas * + del objeto sea ma!or que cero. En cualquier otro caso el actuador no será acti)ado por este controlador.
igura 2 Ejemplo de uso de una expresión que utilia la salida de un sensor y una propiedad
Referencia de Bloques Lógicos
#2
Actuadores Ⅲ Camera
Los actuadores se encargan de ejecutar acciones sobre los objetos como mo)er" los crearlos en tiempo de ejecución re" producir sonidos etc... Los actuadores se ejecutan cuando reciben un pulso posi" ti)o desde los controladores a los que están conectados. En la )ersión actual de Blender e$isten ,0 tipos de actuadores. % continuación )eremos algunos de los más útiles *omi" tiremos tres actuadores= Action0 'tate ! 'teering por ser actuadores a)anzados que escapan del ámbito de estudio de este pequePo manual.
#8
Referencia de Bloques Lógicos
Este actuador (ace que la cámara *o el objeto sobre el que se aplique+ siga a otro objeto especificado en el campo . Este actuador (ace que el objeto se mue)a detrás del eje del objeto de la cámara. Los )alores de ! definen las distancias mínima ! má$ima de segui" miento así como la altura. El )alor de indica la fuerza de la restricción. % )alores ma!ores el segui" miento será menos fle$ible.
Ⅲ )arent
5ediante este actuador se establece *con la opción + o se elimina *con + la relación de parentesco entre objetos. 8ecordemos que mediante el parentesco los objetos siguen siendo elementos independientes pero las trans" formaciones aplicadas al padre *traslación rotación escala...+ son (eredadas por el ob" jeto (ijo pero no al contrario. especifica el nombre del objeto padre del que ejecuta este actuador. Si está acti)o se aPade la forma del objeto actual a la forma del objeto padre. permite (acer el objeto M fanta!/aN mientras se emparenta.
Actuadores Ⅲ ilter 8"
%ctuador de filtro de imagen Q3 que se aplica a la representación final de los objetos. Los filtros se aplican uno encima de otro en capas igual que los filtros de programas de disePo gráfico Q3. El orden de aplicación se indica en el campo . 3efine tu propio filtro Q3 utilizando el lenguaje >LSL. Los filtros son s(aders que necesitan una gestión especial. Kegati)o de la imagen. Colores más cálidos. Escala de >rises. iltro de detección de bordes. iltro de detección de bordes. iltro detección bordes. Brillo de pí$eles cercanos. puesto de Dilation. 3esenfoque. Enfoque *puesto de *lur +. 3esenfoque mo)imiento.
Ⅲ dit 0b7ect
Edita las propiedades del objeto. 1a! cinco opciones principales4 Add 1()ect #nd 1()ect0 Dyna/ic!0 Track To ! Replace Me!$. %Pade un objeto en la posición del centro del objeto que ejecuta este actuador. El parámetro indica el número de fra/e! que el objeto creado permanecerá )i)o en la escena *despu:s será automáticamente eliminado+. Es posible indicar la )elocidad Lineal ! %ngular del objeto creado * ! +. 3estru!e el objeto actual.
&ermite establecer propie" dades dinámicas del objeto como la masa acti)ar o desacti)ar la colisión de cuerpo rígido o acti)ar ! desacti)ar la dinámica. 1ace que el objeto apunte (acia otro objeto *en el espacio Q3 o R3+. Aanto la malla como la forma de colisión física pueden ser reemplazadas utilizando este actuador.
Referencia de Bloques Lógicos
#9
Actuadores Ⅲ %essage
&ermite en)iar mensajes a otros objetos. El campo permite especificar el objeto destinatario del mensaje. Si se deja en blanco se en)iará una copia del mensaje a todos los objetos del juego * (roadca!t +. 5ediante indicamos el tipo de mensaje. Este campo resulta especialmente útil para filtrar mensajes cuando se reciben mediante el sensor Me!!age. inalmente el campo sir)e para indicar el cuerpo del mensaje. Este campo únicamente puede ser leído empleando un script en "yt$on. El cuerpo puede ser cualquier cadena de te$to * + o el )alor de una propiedad * +.
#4
Referencia de Bloques Lógicos
Ⅲ Constraint
Este actuador aPade una restricción al objeto actual. La restricción puede ser de diferentes tipos4 Limita la posición del objeto en un determinado eje del mundo. uerza a que se mantenga una distancia determinada con respec" to a una superficie. Limita el rango de rotación del objeto en un determinado eje. Crea un campo de fuerza a lo largo de un determinado eje del objeto.
Ⅲ :isibilit!
Cambia la )isibilidad de un determinado objeto en tiempo de ejecución. 5ediante el campo establecemos si el objeto es o no )isible. El campo permite establecer si el objeto es ocultado por otros objetos. inalmente el campo permite aplicar las mismas propiedades recursi)amente a todos los objetos (ijos del objeto que utiliza este actuador.
Actuadores Ⅲ ;ame
Ⅲ %otion
Este actuador incorpora una serie de opera" ciones de alto ni)el4 &ermite cargar ! guardar un diccionario global de &!t(on mu! útil para compartir datos entre escenas. Salir del juego ! finalizar la aplicación. 8einiciar el juego. Carga un arc(i" )o .blend distinto.
Ⅲ Scene
>estiona las escenas del arc(i)o. Cambia como escena actual la seleccionada. . Establece como cámara la indicada como parámetro. Elimina una escena. &ausa la escena. 8eanuda la escena pre)iamente pausada. %Pade otra escena que se dibujará encima del resto de elementos. Esta funcionalidad es especialmente útil para elementos de la interfaz de usuario. 3ibuja otra escena detrás de todos los elementos de la escena actual. 8einicia la escena.
Establece las propiedades de mo)imiento del objeto. Si el objeto no es estático *pro" piedad física+ se pueden establecer tam" bi:n las propiedades dinámicas del mismo como se muestra en la imagen. &ermite indicar el número de unidades de Blender en las que se desplazará el objeto. alor de rotación del objeto. Si está seleccionado las coorde" nadas del mo)imiento son con respec" to del sistema de referencia del objeto.
Referencia de Bloques Lógicos
#5
Actuadores Ⅲ Sound
Ⅲ )ropert!
Ⅲ Random
Cambia el )alor de una propiedad del obje" to. &ermite cuatro modos de act uación4
Este actuador permite generar números aleatorios en propiedades del objeto. alor de la semilla de los núme" ros aleatorios. &ropiedad que recibe el )alor aleatorio. Es importante elegir un m:todo de distribución de los aleatorios *campo Di!tri(ution+ que sea co(erente con el tipo de la propiedad. E$isten di)ersos tipos de m:todos distribución4 Float Integer ! *oolean. 'gualmente es posible de)ol" )er un )alor constante.
Este actuador permite reproducir música ! efectos de sonido empleando la biblioteca Auda!pace. El actuador permite )arios modos de reproducción4 El sonido se reproduce úni" camente mientras el actuador está acti)o. El sonido se reproduce com" pleto (asta que finaliza. El sonido se reproduce en modo de bucle (asta que el actuador se desacti)a. 'gual que Loop 'top pero el sonido se reproduce (asta que finaliza *completo+.
#6
Referencia de Bloques Lógicos
%signa un )alor a la propiedad. %Pade el )alor indicado en al )alor actual de la propiedad . Copias el )alor de una propiedad de otro objeto en una propiedad del objeto actual. Cambia el )alor de / a ,.
Referencias Enlaces Web para el Estudio Autónomo
Para finalizar, en esta sección se recogen algunos de los principales recursos disponibles on-line para el estudio autónomo. Para facilitar el estudio, se han elegido recursos en Castellano, aunque al final del listado se recopilan sitios con documentación en Inglés de gran calidad. Esta recopilación está centrada en lender como herramienta integral para el dise!o "#. En la actualidad, e$isten muchos lengua%es & alternati'as para profundizar en el desarrollo de 'ideo%uegos, pero esa es otra historia que debe ser contada en otra ocasión. #isfruta del camino & no ol'ides di'ertirte en todo lo que hagas. (ucha suerte & Happy Blending!
Referencias y Enlaces Web para Estudio Autónomo
77
Ⅲ Web Oficial de Blender (Inglés)
Ⅲ anual Oficial de Blender (Espa!ol)
Ⅲ Blender "# en la Educación (Espa!ol)
⧐ http://www.blender.org
⧐ http://wiki.blender.org/index.php/ ↵ Doc:ES/2.6/Manual
⧐ http://www.ite.educacion.es/ ↵ or!acion/!ateriales/"#"/cd/
(anual oficial de lender, en formato )ii. En la parte superior se puede elegir el idioma. /a traducción al espa!ol está mu& conseguida & es prácticamente completa, aunque en algunas secciones la página original 0en Inglés1 es más e$tensa.
Curso totalmente en castellano creado por 2oaqu3n 4errera 5oás. Cubre los aspectos esenciales de lender, con un enfoque basado en peque!os problemas. Es uno de los me%ores cursos en castellano e$istentes para introducirse en la herramienta.
)eb oficial de lender. En esta página puedes descargar tanto la *ltima 'ersión para tu sistema operati'o, como todas las 'ersiones publicadas desde hace + a!os. Como sitio oficial, contiene los enlaces al manual de usuario de la herramienta & la PI del programador en P&thon. 78
Referencias y Enlaces Web para Estudio Autónomo
Ⅲ Blendernation (Inglés)
Ⅲ Blends$ap (Inglés)
Ⅲ "# %oder (Espa!ol)
⧐ http://www.blendernation.co!
⧐ http://http://www.blendswap.co!/
⧐ http:// www.oro$d.co!/
Principal portal de noticias dedicado esencialmente a lender. 6ambién se publican otras noticias de interés sobre 5ráficos "#, Imagen #igital & 7ideo%uegos. ltamente recomendable para estar a la *ltima en tu herramienta "# fa'orita. 8-1
)eb de descarga de modelos libres de lender de calidad profesional. En la licencia 0habitualmente de tipo Creati'e Commons1 se indica si pueden ser utilizados en pro&ectos comerciales. /a 9eb es en Inglés, por lo que utiliza el buscador con términos en la lengua de :haespeare.
Este foro es probablemente uno de los me%ores en castellano. E$isten foros en lengua inglesa de alta calidad, pero hemos querido elegir un sitio donde puedas plantear tus dudas en castellano. Este foro tiene secciones espec3ficas por programa. ;7isita la de lender & a&uda a los demas< Referencias y Enlaces Web para Estudio Autónomo
7&
8'
Ⅲ Blender ameit * (Inglés)
Ⅲ Blender ameit + (Inglés)
⧐ http://download.blender.org/ ↵ docu!entation/ga!ekit"/
⧐ http://download.blender.org/ ↵ docu!entation/ga!ekit2/
/ibro oficial de la lender =oundation completo en formato electrónico sobre el motor de 'ideo%uegos de lender. unque emplea 'ersiones antiguas de lender, la ma&or3a de e%emplos & casos de estudio siguen siendo 'álidos.
ctualización del lender 5ameit + empleando las *ltimas 'ersiones de lender. l igual que el 5ameit +, es posible descargar el P#= completo & los e%emplos discutidos en el libro.
Referencias y Enlaces Web para Estudio Autónomo
Este manual fue compuesto con OpenOffice en una máquina GNU/Linux entre Mayo y Junio de 201