Está en la página 1de 28

U DEV

N 2

UDEV
Cargo: Director Nombre: David Collado email: webmaster@unityspain.com

EDITORIAL
Aqu estamos, con un nuevo nmero de Udev, tres meses despus del primero. Me siento orgulloso de compartir con toda la comunidad esta nueva edicin cargada de conteni dos; entre ellos, una interesante entrevista a unos persona jes muy conocidos dentro del sector: los TornadoTwins. Adems de con buenos artculos contamos con la partici pacin de la comunidad, que ha sido mayor en este nmero, tendencia que confo se mantenga en prximos nmeros.

Cargo: Editora Nombre: ngela Espelta email: wolveskiller.osk@gmail.com

Tengo que dar las gracias a mucha gente; empezando por nuestro maquetador, que realiza un trabajo ms que notable dedicando su tiempo libre a dar forma a la revista; a nuestra editora, siempre revisando y puliendo con paciencia cada detalle, y no puedo tampoco dejar de agradecer el trabajo de nuestro ilustrador cuyo talento no tiene lmite, tal y como demuestra da a da. Sin embargo, el mayor agradecimiento es para los redac tores, que colaboran desinteresadamente en el crecimiento de Udev con sus estupendos artculos, y sobre todo para vosotros, lectores (y quiz futuros colaboradores). Sin vos otros, todo este esfuerzo no tendra sentido. No quiero alargarme ms; como siempre, espero que dis frutis de este nmero y que os animis a participar en el siguiente. Un saludo!

Cargo: Maquetador Nombre: Eduardo Echevarra email: eduetxbe@gmail.com

Cargo: Ilustrador Nombre: Javier Moreno email: freemindart@hotmail.com

EN ESTE NMERO

David Collado, Director

CONTENIDO
Artculo: Entrevista Tornado Twins Nombre: Tornado Twins web: www.tornadotwins.com

1. Unite 2010 2. Entrevista Tornado Twins 3. Eyes Bandegades 4. Como se hace? Product Sheet (parte2) 5. Tutorial: Streaming con unity 6. Introduccin a iTween

4 7 11 16 19 25

Artculo: Cmo se hace? Nombre: Jess Pancorbo email: yosoy_chusti@hotmail.com

REPORTAJE

Unite
UNITE
Aunque ya ha pasado un tiempo desde la keynote de Unite 2010, creo que ser in teresante hablar de ella y dejar claros al gunos detalles que quiz no quedaron muy claros en un primer momento. En la conferencia inaugural de Unite 2010 en Montreal, el director ejecutivo de Unity, David Helgason anunci algunas mejoras para el motor, adems de una nueva inicia tiva llamada Union, que ayudar a los de sarrolladores a llegar a los dispositivos a los que no podan llegar antes. En primer lugar, Helgason di algunas es tadsticas interesantes: la conferencia de Unite, la cuarta, cont con 650 partici pantes, entre ellos personal de Unity. En el ltimo ao, desde que la compaa liber una versin gratuita del motor, su audien cia ha aumentado 20 veces, de 13.000 a 260.000 desarrolladores. Si bien en un principio hubo cierta preocu pacin de que esta gran afluencia de nuevos usuarios podra llegar a degradar la comunidad, desde la percepcin de Unity y tambin de usuarios ya asentados, no ha sido el caso. El palabras de Helgason: Sim plemente ha enriquecido y hecho mejorar la comunidad Estos nuevos usuarios fueron a aprender, ensear y ser de utilidad para la comunidad. Unity 3 se puso a la venta hace poco y ya es muy fuerte. El plugin para poder jugar a juegos de Unity en la web ha llegado a la cifra de 2.5 millones de instalaciones al mes, 1 por segundo, llegando a un 30% de los jugadores de internet. 40 millones de plugins se han instalado a da de hoy. El motor tambin est presente en 17 de los juegos top 10 de la plataforma iOS y 20 buenos juegos han sido lanzados para Android, 13 de ellos tambin en iOS. Las ventas del motor para Android han lle gado ya a un tercio del volumen de las ventas de iOS. A principios del ao prximo aparecern los primeros juegos para Xbox 360 y PlayStation 3 realizados con Unity y los desarrolladores interesados pueden ac ceder a estas plataformas ponindose en contacto con el equipo de ventas de

DAVID COLLADO
Unity. Estamos controlando a la gente a un ritmo lento para asegurarnos de que podemos darles buen soporte, dijo Helgason. La compaa tambin est trabajando con Google para que sea posible que juegos de Unity funcionen de forma nativa en Chrome y se expandir a sus tables y otros dispositivos.

La democratizacin del Desarrollo de Videojuegos


Helgason dijo: El objetivo que nos mueve es democratizar el desarrollo de videojue gos. Trabajamos de la forma que sabemos, que es coger tecnologa realmente avan zada, empaquetarla, simplificarla y hacerla mejor en un modelo de negocio que nos permita seguir vivos. Somos rentables y todo va muy bien, estamos creciendo y lle gando a gente nueva. Sin embargo, eso no es suficiente: Hay prob lemas que permanecen incluso una vez que se haya hecho el desarrollo del juego de forma sencilla Si bien la compaa todava

www.unityspain.com

UNITE
est trabajando en la simplificacin del profeso de desarrollo del juego, sigue habiendo problemas. Y uno de esos problemas es que los videojuegos requieren de un equipo. Un desarrollo requiere de artistas, animadores, difer entes tipos de programadores, diseadores, etc. Tener un equipo estable es un lujo de un gran equipo con un gran presupuesto. Muchos forman parte de grandes empresas pero otros no. Nos dimos cuenta de que la solucin es taba en la comunidad ya existente que no solo com partan herramientas, sino tambin arte, extensiones.... Todo esto era controlado fuera de Unity antes, pero ya no ser as. Unity cambi esto con el lanzamiento de la Unity Asset Store, una plataforma para el intercambio y el comer cio entre los usuarios de Unity. Es una pieza bastante salvaje de software, dijo Helgason. Muy parecida a la tienda de iTunes o la App Store, la tienda te permite descargar, desde el interior de Unity 3.1, obras de arte y otros datos e importarlos directa mente a Unity permitindonos trabajar con ellos casi de inmediato. Otra similitud con la App Store es la partici pacin en los ingresos, con un 70% para los desarrol ladores y un 30% para Unity. Adems de incluir la Asset Store, la versin 3.1 de Unity cor rige muchos errores y mejoras, y hay otra novedad impor tarte en Unity 3.1, que se ha mantenido en secreto porque es complejo y tcnico.

DAVID COLLADO
con un porcentaje de ingresos 80/20. Brett Seyler dio una ex plicacin ms completa de qu es Union: Hoy estamos lan zando Union, y eso significa que tus juegos pueden llegar ms lejos que nunca antes. Realmente creo que estamos en la cspide de algo muy grande. Al actuar juntos podemos estar entre los primeros en cualquier dispositivo, dijo. Para unirse solo debes contactar a Union, subir un proyecto completo y listo. Se anunciaron cuatro relaciones de inters para Union desde el principio. Una de ellas es Nokia, que el ltimo trimestre envi 110 millones de telfonos y tienen un 32% del mer cado dijo Seyler. El siguiente es NDS, un proveedor de soft ware clave para decodificadores y otros dispositivos similares para la sala de estar. No es un nombre muy conocido, pero su software esta en ms de 138 millones de dispositivos ac tivos. Splashtom, el tercero, es una empresa muy intere sante... ofrece un arranque instantneo del sistema operativo que ya est en ms de 40 millones de PCs de empresas como Lenovo y Dell. Por ltimo, HP Palm, que tiene cerca del 5% del mercado del espacio del mvil inteligente y en el lado PC, son enormes, casi el 30% del mercado. Estas son slo algunas de las empresas con las que estamos trabajando y cuando lleguen a estos dispositivos y encuen tren compradores, el 80% de los ingresos netos volver a los desarrolladores, prometi Seyler. Aunque esto fue lo ms relevante ocurrido en Unite 2010 de cara al pblico general, realmente ni anuncios ni datos son el centro del evento. Unite es comunidad, es conocer nuevos desarrolladores y es aprender de manos de los propios tra bajadores de Unity. Personalmente no me ha sido posible asi stir, aunque me gustara poder hacerlo en prximas ediciones y tener as la posibilidad de ofrecer una visin ms cercana de este aspecto fundamental de Unite, la comunidad, tam bin uno de los pilares de su gran motor. Para los que no pudieron asistir, Unity tendr varios vdeos disponibles muy pronto en su web, tal y como ya hicieran en anteriores ediciones y, si algn afortunado de entre vosotros tuvo la posibilidad de asistir, que no dude en compartirlo con nosotros.

Habr muchos ms telfonos inteligentes, televisores con conexin a internet y decodificadores capaces de ejecutar tus juegos
Union
Mientras que iOS, los navegadores y muchas otras consolas ofrecen grandes audiencias para los juegos desarrollados con Unity, esto no es todo: Habr muchos ms telfonos in teligentes, televisores con conexin a internet y decodifi cadores capaces de ejecutar tus juegos, dijo Helgason. Los fabricantes de estos dispositivos saben que los juegos son importantes... pero no saben dnde ir, por lo que recurren a grandes empresas dejando fuera a la comunidad de Unity, algo muy triste. Qu pasara si todos unimos fuerzas? Nos dimos cuenta de que nuestra comunidad haba lanzado muchos grandes juegos en la App Store, mejores que los de grandes editoras. Esta es la razn para lanzar Union, para cap turar esas oportunidades todas juntas. Union es un nuevo servicio a cargo de Unity, que permitir a los desarrolladores llegar a una serie de nuevas plataformas

www.unityspain.com

Reportaje

ENTREVISTA

TORNADO TWINS
TORNADO TWINS
Quin esta detrs de TornadoTwins?
Tras TornadoTwins estn unos gemelos que han estado ha ciendo juegos desde los 10 aos. Hemos trabajado para al gunas de las ms grandes compaas a nivel mundial y po siblemente tambin en algunas de las ms pequeas. Tambin estamos encantados de haber iniciado nuestro pro pio negocio. No, no ha sido posible. Pero por lo que sabemos ha sido genial.

Habis asistido a Unite 2010? Si es as, Cmo ha sido la experiencia?

Cules son para vosotros los mejores puntos de Unity?


El ms importante es el hecho de que la edicin de assets es muy visual. Eso es para nosotros la parte ms importante, no el cdigo. Sin embargo, para nuestros propios juegos hemos des arrollado nuestros propias herramientas, por lo que no hacemos todo dentro del motor. Actualmente utilizamos el motor para desplegar las herramientas, y luego utilizamos las herramientas para dar forma al juego. Es un ciclo curioso.

Qu relacin tenis con Unity?


Nos encanta Unity por encima de otros motores. Es un motor muy divertido para hacer juegos, uno de los mejores que hemos usado. Por supuesto, elegir un motor depende siempre del cliente o el juego que estemos haciendo.

Cmo llegasteis a Unity?


Nos encant tanto Unity que compramos equipos Mac para poder usarlo, ya que entonces no haba versin para Windows. No estamos seguros de cuando exactamente empezamos a usar Unity pero creo que posiblemente fuese en 2006.

Por curiosidad, habis viajado alguna vez a Espaa o a otro pas hispanohablante? Si es as, Podeis resumirnos vuestra experiencia?
Slo hubo una vez en mi vida en la que no me gusto Espaa: cuando mi pas (Holanda) tuvo que jugar la final de la Copa del mundo de 2010 y perdi. An as Espaa mereca ganar, bien jugado!

www.unityspain.com

TORNADO TWINS
Por otro lado he estado en Bolivia un par de veces. Por su puesto no es lo mismo que Espaa, pero tambin se habla castellano. Me encanta el idioma! de nuestros prefabs , la posibilidad de configurarlos al gusto. Adems intentamos que el cdigo sea sencillo de entender. Queremos que cualquiera pueda usarlos, no solo los programadores.

Qu os llevo a crear UnityPrefabs?


Hace un ao comenzamos nuestro canal en YouTube para ayudar a la gente a hacer juegos. No sabamos que llegara a ser tan popular tan rpidamente. Fue tan popular que tuvimos que cerrar las notificaciones por email porque te nemos mas de 300 mensajes al da (Ms preguntas que en los foros de Unity). Para ayudar a las personas con mayor eficacia comenzamos a hacer prefabs, codificando el arte para que la gente pudiera utilizarlo para hacer sus juegos ms rpido. Por supuesto, no hicimos todos nosotros mis mos, contratamos a otros programadores. As es como se convirti en un negocio.

UnitySpain vende actualmente dentro de UnityPre fabs, Los vendedores de UnitySpain pueden vender en la asset store? Qu deben hacer?
Efectivamente, UnitySpain se uni a nosotros como un ven dedor oficial, adems fue uno de los primeros. Si la gente quiere publicar sus prefabs a travs de UnitySpain solo de ben contactar a su webmaster, que sabe exactamente como vender en UnityPrefabs.com. Nosotros nos ocupamos a partir de ah y publicamos en la asset store siempre y cuando el producto sea exclusivo, pues de otra forma no tenemos los derechos para representarlo.

Entrevista

Para vosotros, El potencial de UnityPrefabs esta en el precio o en la calidad? Qu importa ms a la hora de vender prefabs?
Es muy difcil hacer algo que todos pueden usar para su juego. Cada juego es nico. Intentamos ayudar a todo el mundo, pero es sencillamente imposible. As que en lugar de una talla nica para todos hicimos nuestros prefabs muy configurables. Con slo algunas variables puedes cambiar todo. Este es el verdadero punto clave

Cules son vuestras ideas para el futuro de Unity Prefabs?


No hemos hecho ms que empezar! La siguiente cosa que estamos haciendo es una revolucin en el desarrollo de juegos indie. Es un conjunto de soluciones muy inteligentes para los problemas ms comunes entre los diseadores de juegos. No puedo decir exactamente lo que es todava, pero asegrate de estar suscrito al newsletter de UnityPre fabs.com para enterarte en el momento del lanzamiento.

www.unityspain.com

TORNADO TWINS
Os puedo asegurar que no os lo querris perder, es real mente emocionante. tu juego se conozca. Si no tienes una compaa que lo haga por ti, t tienes que crear esa compaa. Por eso hablo tanto de ello: anunciar el juego es tan importante como hacerlo. Esa es tambin una de las razones por las que estamos desarrollando nuestro juego de forma abierta. En lugar de guardar todo en secreto, dejamos que la gente nos diga qu quiere ver. Aunque tcnicamente esto no es marketing, consigue que todo el mundo este emocionado con tu juego y esto es exactamente lo que necesitas.

Acabis de lanzar un nuevo proyecto. Podrais con tarnos en que consiste?


Durante los ltimos 3 aos hemos estado dndole vueltas a convertir la Biblia en un videojuego. No puedo creer que nadie haya hecho esto antes ya que las historias de la Biblia son perfectas para un videojuego. Hay muchas guerras y mucho ms material. Empezamos el proyecto mucho antes de que alguien nos conociera y no ha sido fcil, ya que es muy grande. Empe zamos con una sola historia y esa fue la historia deDavid. En el juego jugabas como David desde que eras un pobre pastor hasta llegar a ser un rey ( y matando a Goliat, por supuesto). Tambin tenemos algunos elementos en el juego que nunca se han hecho antes. Tendris que esperar a la demo para verlo.

Qu recomendis a un programador para introducirse en la industria? Y para un artista? Y para el que disea el juego? Cul es tu consejo para los nuevos programa dores, artistas? Qu deben estudiar, leer, ver ?
Mi consejo para los programadores: despus de estar pro gramando un da entero, oblgate a revisar todo de nuevo. Me he dado cuenta por m mismo de que despus de pro gramar tanto sobre los detalles me olvidaba de que real mente estoy creando un juego. Si no revisas lo que ests haciendo, el resultado puede ser un juego horrible. Tambin es importante fijarse un objetivo diario, completarlo y en tonces detenerse. Es mejor terminar un da resolviendo un problema, que empezando otro que no puedes terminar, consiguiendo que te vayas de la oficina frustrado. Mi consejo para los artistas: fuerza a tu equipo a que defina un lmite de polgonos y tamao para el juego. No ganas nada hasta que el equipo al completo tiene claro a qu framerate debe funcionar el juego, cul es la mxima can tidad de polgonos para cada personaje u objeto y el ta mao de las texturas. Cuando todo esto est definido, el resto es realmente sencillo. El libro de Wes McDermott Creating 3D Game Art for the iPhone with Unity tiene ca ptulos muy interesantes que hablan de ello.

Tenemos algunos elementos en el juego que nunca se han hecho antes


Tenis mas proyectos para el futuro?
Por supuesto! Siempre hacemos varios proyectos a la vez. Te nemos otra historia que estamos convirtiendo en videojuego, es de ciencia ccin futurista. Este proyecto es an muy se creto.

Os sigo en Twitter y veo que hablis mucho sobre mar keting enfocado a videojuegos. Qu consideris mas importante sobre ello? Que consejo darais a alguien que quiere hacer su juego y no tiene una gran compaa detrs?
La mayora de los desarrolladores indie ponen su esfuerzo en hacer el juego. Cuando esta terminado, lo prueban y lo envan a la App store y quizs a algn otro sitio, pero no llega a vender realmente nunca. A veces piensan que es por su juego, por lo que cambian a un nuevo proyecto y durante aos consiguen los mismos resultados. Sin embargo, solo por el hecho de que tu juego est en una red de distribucin (como la App store), no quiere decir que el juego est delante de todo el mundo. De he cho, no lo estar. Esta es la razn por la que recomiendo a todo el mundo que tenga un plan solido y probado de marketing. Necesitas que

En el mercado indie no puedes competir con grandes compaas en calidad tcnica, IA, etc Dnde deben buscar los desarrolladores indie? Cul es el camino para conseguir que un juego triunfe en un mercado tan saturado de grandes juegos?
Centrarse en los nios. Es as de simple. Los nios no buscan personajes modelados en zbrush que hagan movimientos acrobticos. Un simple sprite divertido puede conseguir mucho ms que eso. Creo que los desarrolladores ms exi tosos entre los desarrollos indie se estn centrando tambin en juegos para iPhone y el resto de plataformas mviles. De esta forma se ven forzados a reducir los grficos y a in novar. Algunas veces verse forzado en esa direccin es

www.unityspain.com

Entrevista

TORNADO TWINS
bueno. Necesitamos ms creatividad y diversin. Si estas pensando en hacer otro FPS de zombies o de accin segu ramente tengas competencia. trabajando en su propia asset store . Para su sorpresa, nosotros estbamos muy contentos con ello. En lugar de convertirnos en competencia les sugerimos abrir la tienda a otros y vender a travs de ella. Un mes ms tarde via jamos a San Francisco para mostrarles nuestra tienda, a travs de la cual los dems podan vender. La reunin fue genial.

El riesgo es conseguir que guste a la gente


El hecho es que para mucha gente todos los juegos de ac cin son iguales. La gente no sabe cual escoger, as que se guan por lo que juegan sus amigos y acaban comprando Call of Duty. Jams mirarn hacia tu juego. En definitiva, si quieres hacer un juego que venda tienes que llamar la atencin, y llamar la atencin empieza por escoger el gnero correcto. Mi consejo es centrarse en los nios y las familias primero.

Qu prefabs estis vendiendo en la asset store de Unity?


Todos los que son compatibles con Unity 3, incluyendo aquellos que se venden a travs de nuestra tienda, que simplemente consiguen los mismos porcentajes. Un sistema muy sencillo: ellos no tienen que hacer nada de publicidad, nosotros lo hacemos por ellos.

Entrevista

Crees que alguna vez habis redefinido un genero? En caso afirmativo, Considerais que es necesario hacerlo?
No es muy necesario. Un gnero de videojuego tiene que ver con el punto de vista de la cmara. Por ejemplo, cuando la cmara esta en la cabeza del personaje tenemos un shooter en primera persona. La parte en primera persona tiene sentido, pero shooterNo tiene nada que ver con eso! Por supuesto, se puede hacer un juego en primera persona que no sea un juego de disparos. Sin embargo, ya que la cmara esta en la cabeza del personaje, se relaciona inmediatamente con el genero de accin de disparos. Por tanto, los gneros tienen mucho que ver con los puntos de la cmara, y todos los puntos de cmara ya han sido inventados. En los juegos actuales, para innovar o redenir un gnero, tienes que hacer una combinacin de puntos de cmara que estn unidos de forma creativa. Esa es la forma de hacerlo. Lo hemos hecho nosotros? Bueno estamos trabajando en un juego muy grande que llevara ms all los limites de la creatividad. El riesgo es conseguir que guste a la gente. Yo confo en este trabajo, pero, obviamente, yo estoy den tro del proyecto. Para contestar a tu pregunta: an no he mos reinventado un gneroPero lo haremos pronto!

Puede ahora cualquier artista o desarrollador vender en la asset store de Unity?


En este momento, creo que la asset store de Unity no est abierta para todo el mundo. Unity ha seleccionado un puado de desarrolladores con los que trabajar. Quizs en el futuro la tienda se abra a otros vendedores, pero por ahora solo unos pocos tienen acceso. Nosotros esta mos entre ellos.

Qu crees que es Union? Sabes como funciona? Po dras decirnos cual es tu opinin?
Union ha sido anunciado en la conferencia de Unite de este ao. Parece que Unity recibir los juegos, y tras revisarlos los publicar en mltiples plataformas. Es una oportunidad muy buena. De momento, no he odo de nadie que se en cuentre en ese proceso, pero estoy ansioso por ver llegar los resultados. Unity tiene muy buenos contactos dentro del negocio de los videojuegos y quin sabe lo que puede ocurrir. Con esta pregunta terminamos la entrevista, muchas gracias por tu tiempo

Unity acaba de presentar su asset store y UnityPrefabs ha anunciado que est en ella. Cmo ha sido la ex periencia? Contact Unity con vosotros o fuisteis vos otros los que contactasteis con Unity?
Este verano el director ejecutivo de Unity, David Helgason, contact con nosotros para comunicarnos que estaban

10

www.unityspain.com

ARTCULO

Eyes Bandegades
EYES BANDEGADES
Eyes Bandegades es un videojuego perte neciente al gnero de los shooter espacia les que inicialmente fue planeado a finales de 2009 como un pequeo juego de naves 2D por Gilson Herrera (modelador 3D y mi nico socio en ese momento) y yo mismo, X4ch1, con la idea de promocionarnos como desarrolladores de videojuegos. En la captura podis ver un jueguecito de naves que realic en GameMaker en los inicios de mi perfil como diseador de videojuegos y que nos sirvi de inspiracin para el des arrollo. Algo que tuvimos muy en cuenta fue que este tipo de juegos son ms senci llos de desarrollar, y que solo realizaramos un nivel de muestra. Impactante, ver dad? Despus de con cretar la idea a la que queramos llegar, ideamos el nombre del juego y de los bandos, adems de dedicarnos a definir lo primordial antes de empezar un videojuego cualquiera: la historia. As fue como surgieron nuestras ideas ocultas entre explosiones elctricas de conexiones fre cuentes de millones y millones de neuronas la historia: Buenos y malos en el espacio se disputan un gran mineral que todo lo hace y todo lo puede. A esos buenos los deno minamos Bandegades (humanos) a esos malos los denominados Naghut (alienge nas). Entonces empezamos como almas atormentadas o simplemente como caba llos desbocados a modelar la primera nave y construir la programacin de una movili dad vertical y horizontal (como se muestra en la imagen). Despus de trabajar la movi lidad y tener un movimiento bsico (logrado en una media hora) y una nave principal ya modelada (en el mismo tiempo), el mode lador empez con ms nimo el diseo de otra nave, mientras yo continuaba con la programacin. Entonces, por casualidades de la vida, nos encontramos con un video

CRISTIAN GALLEGO
juego recin salido del horno: el juego de Avatar, la famosa pelcula de James Came ron, y mirando un video en YouTube, vimos una escena en la que apareca una nave (como la de la imagen).

En ese momento todo dio un giro y nos preguntamos: Por qu no hacerlo as? Sabamos que sera ms difcil hacerlo de esta forma; pero nuestro juego re sultara ms novedoso sin esa aparien cia clsica, puesto que le aadiramos un escenario tridimensional (aspecto que llama mucho la atencin hoy en da), y adems nos exigira ms como desarrolladores, ya que el 2D nos pare ca muy sencillo.

www.unityspain.com

11

EYES BANDEGADES
Comenzamos por crear una escena donde ocurrira el juego, y empez tambin la ardua labor de mover una nave en ter cera persona. La primera exclamacin de mi compaero el modelador al ver la nave moverse fue: Guau, la nave anda!; todo esto mientras l modelaba un terreno en Zbrush para aadir al juego. Este nos lo imaginbamos como un satlite natural muy similar a la luna; al principio era un escenario lleno de crteres muy bien logrados. Poco a poco fuimos aa diendo cosas como nitro, colisiones, ms detalles en el mapa, una base, etc. Segn avanzbamos, vimos que a la nave le haca falta un movimiento ms fluido, y prob varias cosas para lograr un movimiento medianamente decente que se asemejara ms a una nave en el espacio. Al empezar pareca un colibr volando, pero despus de analizar juegos como Starfox, not que la nave miraba primero hacia abajo y que haca continuamente un movimiento como de ola, solo para bajar y subir.

CRISTIAN GALLEGO
al ms puro estilo del mismo avatar, pero en el espacio, y empec a montar el nuevo escenario a medida que mi com paero terminaba las islas flotantes donde se supone que las naves nodrizas estaran ancladas para extraer el mineral, tal y como muestra esta imagen:

12

Artculo

As fue como logr dar un movimiento ms fluido:

Ya podis ir contando los cambios que se han hecho desde el principio. Continuamos entonces con la nueva escena, donde ya no haba suelo sino que todo estara en el espacio, mientras mi compaero terminaba satisfactoriamente las naves y el escenario propuestos en 3D y empezaba a trabajar con una cinemtica en 3D Max para hacer un triler promocional con una cabecera llamativa. En las primeras escenas, la nave principal aparece en los renders de una forma muy destacada. Los renders estuvieron listos tras una se mana de renderizado con los equipos que estbamos manejando en ese momento. El video, que es el mismo que aparece al eje cutar Eyes Bandegades, tiene una duracin de 144 minutos. De manera imprevista, tuvimos la necesidad de cambiar la nave prin cipal por otra cuyo diseo nos pareci ms apropiado para usarla en el triler. Pero, tendramos que rehacer un render que tard una semana en estar terminado! Al final vali muchsimo la pena tanto trabajo, pues el cambio fue notable: la nueva nave tena un aspecto ms aerodinmico que la anterior, que modelamos en media hora, y era mucho ms llamativa. Realizamos todos los arreglos correspondientes y empezamos a pre parar el juego para el pblico, que al fin y al cabo solo sera un nivel. Comenzamos a desarrollar la interfaz (HUD) y toda la parte de comunicacin entre programacin y el jugador: contado res de municiones, vida, etc.

Esto da una sensacin de ola, y por lo tanto crea el efecto de vuelo, el cual se completa con la animacin, un buen so nido y buenos efectos de partculas; aunque, lamentable mente, todo eso no es suficiente para sentir en tercera persona el vuelo de una nave. Para mejorar el efecto, utilic una cmara que tuviese un movimiento retardado cuando la nave hiciese el movimiento de ola, para lograr ms flui dez, y al fin quede un poco ms satisfecho porque el nuevo movimiento estaba listo y era notoriamente ms natural que el anterior. Hasta el momento todo iba bien. Tenamos nuestra escena del satlite artificial, una nave con un vuelo ms fluido y un escenario con algunos detalles. Al poco tiempo de tener varias torretas enemigas y un escenario planeado, nos dej de gustar el aspecto de la luna marciana y decidimos hacer otras cosas. Ideamos unas islas flotantes

www.unityspain.com

EYES BANDEGADES
Despus de terminar el triler de Eyes Bandegades nos pusi mos a la tarea de anunciarlo en YouTube, proponiendo el 4 de junio como da de lanzamiento. Trabajando en los ltimos detalles, por as decirlo, con el juego an sin controles definidos, estuve intentando solucio nar errores de rendimiento. Para empezar, el juego no suba de 10 FPS, lo cual no era para nada bueno, y quedaba poco tiempo para el lanzamiento. Revisando todo en general, me di cuenta de que algo que consuma mucho rendimiento en la escena era que las 24 torretas que hay en Eyes Bandegades tenan un sphere collider gigante como trigger y dentro de un script donde la funcin OnTriggerEnter estaba pendiente de realizar las acciones apenas la nave entrase en el collider; note que eso consuma muchos recursos y me toco reprogramar el reconocimiento de distancia con un sencillo Vector3.Dis tance. Hasta ah bien. Se acercaba cada vez ms el da de lanzamiento definido haca 20 das, tiempo que pas realmente rpido, y cada vez apa recan ms detalles que organizar. Se lanz inicialmente una versin de Webplayer, con la estructura de juego que tena mos hasta ese momento. Pronto aparecieron las quejas de que el juego era demasiado pesado para Webplayer y el tiempo de carga mayoritario result ser media hora, nada menos! Nos dimos cuenta que no haba sido buena idea poner el juego en Webplayer, y entonces lo exportamos a una versin ejecutable. A partir de ese momento, empezamos a recibir recomendaciones: los grficos atraan a los jugadores y los consideraban buenos, pero por ejemplo, a la mayora los controles les resultaban muy difciles. Como este, otros tantos ejemplos de otros detalles que haba que corregir o mejorar (lo cual era de esperar pues, despus de todo, el juego era una versin Beta). Ya con esta informacin, empe zamos a realizar los arreglos correspondientes de acuerdo a los anlisis que nos iban llegando de la gente, que haca de betatester. Implementamos mejoras de rendimiento, contro les ms prcticos, un men mucho ms completo, botones importantes (como el de reintentar) y, entre otras cosas, aadimos el sistema de puntuacin y la posibilidad de selec cionar el nivel de dificultad.

CRISTIAN GALLEGO
La motivacin de los jugadores hizo que pensramos en hacer una versin 2D del mismo juego; versin que se realiz en un mes ya que al programador principal de esta versin, que quera unirse al grupo de desarrollo, se le propuso tal tarea

para ello. Utiliz la misma arte que el 3D y las mismas naves, a las que se aadi una ms denominada KAMIKAZE debido a que est fabricada con escombros de metal para lanzarse con intencin suicida hacia el enemigo. Tanto la versin 3D como la 2D se pondran a prueba en el Ani gamesExpo, un congreso latinoamericano de videojuegos y animacin (www.anigamesexpo.com), al que IsoftStudios llev el juego. Los asistentes quedaron muy contentos con su as pecto grafico, y sobre todo, con la sencillez y capacidad de en tretener al jugador con las que cuenta Eyes Bandegades 2D. Durante todo este tiempo desde que se empez a desarrollar Eyes Bandegades, el trasfondo del juego ha ido creciendo y hacindose ms complejo, y ya casi hay historia para un libro. Los aspectos de las naves Bandegades y Naghuts estn muy bien definidos: de donde salieron, cul es su objetivo o sus creencias y dems informacin sobre las civilizaciones que aqu aparecen. Para no extenderme ms, dir que pronto vern ms de EYES, con secuencias de vdeo incluidas y mucho ms entretenidas que nunca. Sugerencias: Antes de iniciar tu juego, crea la historia y un estudio de per sonajes, todo bien estructurado para que a lo largo del juego no vare mucho. Es imprescindible crear un documento de diseo en cuyo contenido estr definido el aspecto de los escenarios y, en ge neral, toda la parte grafica del juego. Tambin es muy importante crear un documento tcnico donde se especifique tanto la programacin en general como las mecnicas y toda la parte tcnica en si del videojuego a desarrollar. Para Eyes Bandegades no hicimos ninguna de estas cosas, y ya habis visto todos los problemas que eso nos acarre, como los muchos cambios que debimos hacer para que el juego mantuviese su identidad y lograse ser medianamente

La motivacin de los jugadores hizo que pensramos en hacer una versin 2D del mismo juego
Hasta ese momento todo estaba mejorando: el juego era mucho ms jugable y entretenido que antes y la diferencia con versiones anteriores, notable. Da a da han ido creciendo las visitas a www.EyesBandegades.com y duplicndose cada mes.

www.unityspain.com

13

Artculo

EYES BANDEGADES
funcional y jugable; as que si queris evitar contratiempos innecesarios, no estara de ms tener en cuenta lo anterior. Seguramente, de nuestro accidentado proceso de desarrollo para este videojuego se pueden extraer ms recomendacio nes, pero esas fueron nuestras dificultades principales (que a su vez desencadenaron otros inconvenientes) mientras tra bajbamos en Eyes Bandegades. Sed organizados! Mantener el nimo y el entusiasmo al desarrollar vuestro vi deojuego es una de las cosas ms importantes a tener en

CRISTIAN GALLEGO
cuenta para la consecucin del proyecto, y ms en un des arrollo con escasas posibilidades de proporcionar beneficio econmico, tal y como es el caso. www.Eyesbandegades.com, una fiel muestra de un vide ojuego sin planificacin que nunca se nos pas por la ca beza que ira creciendo hasta este nivel en el que est. Pronto, para todos vosotros, habr una versin donde se narre esta fascinante historia sobre el videojuego Eyes Bangades.

14

Artculo
www.unityspain.com

Cmo se hace?

Product Sheet
DANDO A LUZ (2 PARTE)
Saludos a todos. Con el nacimiento de un nuevo nmero de Udev, continuaremos desarrollando las ideas descritas en el an terior nmero y aadiremos otras nuevas. Esta seccin es orientativa, y cabe desta car que esta no es la manera perfecta de trabajar, sino el orden y la importancia que yo le otorgo a los distintos apartados. A trabajar! erlas, sobre el resto de la accin o el mundo que los rodea. Debemos recordar qu es y no caer en la trampa de hacer un relato literario fantstico como a todos nos gustara. El lector, en su mayora de veces, ser un productor. Si este quiere leer aventuras se entretendr con sus gus tos personales, no con los nuestros. Decisiones Este apartado es opcional. Nuestro juego puede o no tener decisiones morales que afecten al universo del videojuego. Incluir las en un subapartado es decisin propia. Personalmente, si el juego contiene nu merosas decisiones y caminos a seguir, mostrara en este apartado 1 hoja com pleta con los ms relevantes. JESUS PANCORBO DAZ videojuego. No es necesario incluir en el listado las Subzonas, o escenarios deri vados de los principales, ya que resulta obvio que un escenario est subdividido en otros muchos y que estos ltimos estn incluidos dentro de un escenario principal. Escenario 1 Diferencias respecto al resto de es cenarios. Mecnicas de juego incluidas. Breve resumen. Entorno. Personaje/personajes controlables. False Screenshot. (Opcional)

Storyline
Este apartado, especialmente ligado al in cluido dentro de Descripcin del pro yecto, deber extender el resumen ya mostrado a lo largo de 23 hojas aproxi madamente. Deber mostrar la totalidad del Storyline del juego y no un simple re sumen. Este apartado deber incluir como m nimo la aparicin de los personajes ms relevantes de la trama; as como sus ac ciones y consecuencias, en caso de pose

Mecnicas de juego
Sin lugar a dudas mi parte favorita. En este apartado, recogeremos todas y cada una de las mecnicas de juego anterior mente expuestas en el apartado Descrip

Localizaciones
Este apartado reunir la totalidad de los entornos y localizaciones principales del

16

www.unityspain.com

DANDO A LUZ (2 PARTE)


cin del proyecto y las describiremos con todo lujo de de talles. Pongamos un ejemplo adaptado a Clippox Exodus y sus movimientos principales:

JESUS PANCORBO DAZ de uso obligado ms tarde, debiendo reestructurar todo de nuevo. Desde mi punto de vista, todas las mecnicas de juego debern de ser flexibles exceptuando el esque leto principal constituido por el movimiento del personaje, el cual deber ser fijado lo ms pronto posible, evitando as posibles quebraderos de cabeza. Creo que la extensin de este apartado puede andar entre las 24 pginas. Con el tiempo lograremos comprimir la in formacin ms y ms sin perder un solo detalle en las des cripciones. Una de las reglas de oro que un da me explica ron, y que aplico a todos los aspectos de mi vida es la siguiente: Si un prrafo puede quedarse en una frase, hazlo. Si esa frase tienes que repetirla ms adelantees que no lo has hecho bien desde el principio En resumidas cuentas, optimicemos el espacio y la calidad de la informacin.

Movimiento
Caminar: En Clippox Exodus el jugador podr interactuar con el personaje principal y hacerlo caminar por las diferentes localizaciones de tal manera. Dos pulsadores semiinvisibles, ambos a cada lado de la pantalla tctil y que ocuparan la prctica totalidad de los laterales permitirn, al pulsarlos de manera individual, mover al personaje en la direccin que pulsa el jugador. Pulsador izquierda Permitir mover al personaje hacia la izquierda. Pulsador derecha Permitir mover al personaje hacia la derecha. Salto En Clippox Exodus existirn dos maneras claramente diferenciadas de hacer saltar a nuestro personaje. Salto en parado El jugador deber de trazar una diagonal, cuyo ta mao y direccin sern determinantes, en cualquier zona de la pantalla para realizar un salto comn. Salto en movimiento En caso de necesitar un salto pronunciado, el jugador de ber iniciar un movimiento de caminar hacia la direccin deseada para despus, agitar el terminal levemente e ini ciar as el salto. Su longitud siempre ser igual y superior a la diagonal ms amplia trazada en un salto comn. Esta es una pequea muestra de lo que deberemos escribir en nuestro Product Sheet, y que marcar profundamente la opinin de nuestro lector. Como habis podido comprobar, cada detalle est medido y es as como debern de ser todas y cada unas de las me cnicas de juego de nuestro ttulo. Para algunas solo sern necesarios un par de renglones y otras requerirn varias pginas completas o ms en exclusiva.

Temtica y gnero
Aqu deberemos dejar clara nuestra postura respecto al g nero que queremos para nuestro videojuego. Si su temtica es realista, fantstica, o de otras caractersticas, tambin de ber quedar denida. En el momento de la reunin con un posible productor o alguien interesado en el desarrollo del videojuego, deber ser defendida a capa y espada. Pienso que el espritu del videojuego est en la mente del creador, y solo en su mente. Defenderlo en su momento y ms tarde justicarte con un trabajo excelente y acorde a lo

Cada detalle est medido


Su reflexin deber ser profunda, y nunca escribir por es cribir. Una mecnica perfecta en un momento determi nado, puede entrar en conflicto con otra que puede ser

www.unityspain.com

17

Cmo se hace?

DANDO A LUZ (2 PARTE)


que pensaste y mostraste en su da es una muestra perfecta de la principal caracterstica del buen diseador: creer en uno mismo y tener fe en tus propios proyectos hasta el nal.

JESUS PANCORBO DAZ

Estudio de mercado
Personalmente creo que es un apartado que solo debern de rellenar aquellos con experiencia en el sector y que pue dan aportar datos estadsticos claros de lo que tengan entre manos. En caso de no ser as, un productor decente aportar estos antes de darte una respuesta. Exigirlos es lcito por parte del diseador al igual que lcito no darlos por parte del productor. Un tira y afloja divertido y entretenido.

La originalidad no consiste en decir cosas nuevas, sino en decirlas como si nunca hubiesen sido dichas por otro
Johann Wolfgang Goethe (17491832)

Cmo se hace?

Si no tienes los conocimientos necesarios, pero aun as quieres intentarlo (esto muestra inters en aprender) estos son los da tos, a mi parecer, necesarios para completar este apartado. Ventas Plataforma Nmero de ventas aproximadas de la plataforma se leccionada para el videojuego. Gnero Nmero de ventas aproximadas del gnero seleccio nado para el videojuego. ltimo superventas Nmero de ventas aproximadas del ltimo videojuego superventas y caractersticas que lo asemejen con tu producto. Estimacin de ventas Como la propia palabra indica, cuntas ventas calculas y porqu. Pblico objetivo Porqu se debe apostar por tu proyecto Hemos llegado al final de nuestro resumen sobre Como se hace un Product Sheet. Todos estos aspectos son orienta tivos, y esta es la formula con la cual yo trabajo a la hora de plasmar mis ideas sobre el papel. Adaptarlos a la formacin y estilo de cada uno es imprescindible a la hora de dotar de personalidad al documento. Si he incluido los puntos citados anteriormente y no otros, es porque considero que es esto lo que un productor espera ver; el resto sobra ya que para ello existe el documento de diseo, que aclarar todo lo que pudiera quedar en el aire. A trabajar y, Buena suerte a todos!

18

www.unityspain.com

TUTORIAL

Streaming Video
STREAMING VIDEO
Bienvenidos a este tutorial de cmo crear un re productor de vdeos en streaming para Unity3D. El objetivo es crear un mdulo, independiente del contexto en el que se quiera situar, que sea capaz de ofrecer reproduccin de vdeos aloja dos en Internet mediante streaming. CONCEPTOS PREVIOS Dado que es el primer tutorial que os ofrezco, aclarar el modus operandi que utilizo para elaborar los scripts. Todos los tutoriales que yo realice estarn escritos en C#. Podramos estar horas hablando de ventajas e inconve nientes sobre usar JavaScript o C# pero ese no es el objetivo de los tutoriales, as que simple mente dir que uso este lenguaje porque es con el que me siento ms cmodo. Ya centrados en la programacin de los scripts, cabe enumerar una serie de hbitos o normas que suelo usar a la hora de pro gramar, con el objetivo de hacer ms fcil la comprensin de los scripts. Idioma El idioma escogido para programar es el in gls. No hace falta justicar mucho esta de cisin, es ms fcil que otros programadores entiendan qu hace una funcin o que guarda una variable si entiende el nombre de sta. Lgicamente el nombre de este tipo de cosas tiene relacin con su cometido. Variables miembro vs. variables locales Por norma general, los scripts suelen tener cientos de lneas, por lo que no tendremos visible la declaracin de las variables. En estos casos, diferenciar a simple vista las variables que pertenecen a la clase o las que son de mbito local a la funcin es de vital importancia. Hay muchos mtodos y prcticas para rea lizar esto. Yo personalmente me declino por la que hace la siguiente diferenciacin: Variables miembro: todas las variables miembro se escribirn empezando por el carcter _ (underline o barra baja) seguido del nombre de la variable empezando en minscula. En caso de ser un nombre com puesto por diferentes palabras, lo escribi remos todo junto y capitalizando (poniendo en maysculas) la inicial de cada una de las palabras (excepto la primera, como ya hemos comentado). Ejemplo: int _num; string _num; MovieTexture _movie; Variables locales: este tipo de variables seguir las mismas reglas que las variables miembro, a excepcin de la barra baja (_) inicial: Ejemplo: int i; oat maxDuration; string veryLongNameForAVariable; Funciones Las funciones seguirn una regla bsica: todo junto y empezando en mayscula. Ejemplo: public void GetPosition(int i) VAMOS AL TAJO! Lo primero que necesitamos es definir los estados en los cuales se podr encontrar el reproductor y actuar en consecuencia segn stos. As, tendremos que nuestro

www.unityspain.com

19

STREAMING VIDEO
reproductor se podr encontrar en 4 estados diferentes: STOP, PAUSE, PLAY, BUFFERING. public enum VideoState { STOP, PLAY, PAUSE, BUFFERING } Una vez tenemos claros los estados de nuestro reproductor, viene el momento de denir su comportamiento en cada uno de estos estados. remos. Vamos a pensar que queremos que tenga nuestro reproductor. Queremos que descargue de una URL un vdeo, queremos que se pueda personalizar su tamao y posicin en pantalla y su estilo del contorno. Estas seran las ms bsicas, pero podis pensar ms aspectos que que ris contemplar. Yo he pensado, a priori, las siguientes va riables asociadas a su correspondiente comportamiento: Rect int _pos; _depth; _style; _play; _wPos; _wSize; // Posicin y tamao del reproductor // Pelcula a reproducir // Estilo del contorno del vdeo // Estado en el que se encuentra // Queremos reproducirlo? // Queremos posicin personalizada? // Queremos tamao personalizado? // Profundidad dentro de la interfaz

MovieTexture _movie; GUIStyle bool bool bool int

VideoState _state;

_videoBorder; // Borde del contorno del reproductor

Como podis ver, han aparecido ms variables de las que hemos mencionado, pero ya veris que todas tienen su utilidad. Y QU VAMOS A REPRODUCIR? Lgicamente, el primer paso que debemos realizar es decirle al reproductor qu vdeo debe reproducir. Tambin necesita mos decirle al reproductor qu parmetros queremos usar por defecto y qu otros queremos usar personalizados. As entonces, vamos a denir una funcin que cumpla con estos requisitos. Pero antes de nada, tenemos que declarar la clase del repro ductor y alguna de sus variables miembros que guardarn toda la informacin anteriormente descrita. As pues, la declaracin de la clase sera la siguiente: [RequireComponent(typeof(AudioSource))] public class Video2D : MonoBehaviour { } La declaracin de la clase es una declaracin estndar de los scripts de Unity, derivando de la clase MonoBehaviour para heredar todo el comportamiento necesario para que se eje cute dentro de nuestra aplicacin. Cabe destacar la lnea que precede a la declaracin de la clase: [RequireComponent(typeof(AudioSource))] Dado que es un reproductor de vdeo, es lgico pensar que ste tambin tendr sonido para ser ejecutado, as que con esta lnea advertimos al motor que aada el componente de tipo AudioSource al objeto en caso de que no tenga ya uno aadido. As aseguramos que escucharemos siempre el so nido que emita el reproductor. Ahora le toca el turno a las variables miembro del repro ductor pero, cules necesitamos? Es imposible saber de antemano cuntas necesitaremos y para qu las necesita public void LoadMovie(string url, Rect pos, int depth, GUIStyle style, bool wPos, bool wSize, int border) { WWW www = new WWW(url); if ( != null) { Debug.LogError(www.error); } else { _movie = ; audio.clip = _movie.audioClip; if (!_movie.isReadyToPlay) { _state = VideoState.BUFFERING; PROFUNDIDAD DE LA INTERFAZ? Quiz ms de uno se ha quedado con cara de pker al hablar de profundidad de la interfaz. Pero la interfaz no es algo plano? S, pero igual que en Photoshop, la interfaz trabaja con capas, de tal forma que puedas denir qu se ve por delante y qu queda detrs dentro de la interfaz. Esto es muy til cuando tienes muchos scripts que tienen que mostrar cosas en la interfaz. Al no saber qu script se ejecuta antes, la nica forma de asegurar el orden es situando cada cosa en una capa. No nos gustara que el texto de consejos que hemos di seado quedara por detrs de las barras de vida y no se pu diera leer, por ejemplo. Ahora s, ya podemos denir la funcin para cargar un vdeo:

20

Tutorial

www.unityspain.com

STREAMING VIDEO
} else { _state = VideoState.STOP; } _depth = depth; _style = style; _wPos = wPos; _wSize = wSize; _pos = new Rect(1,1,1,1); _videoBorder = border; if (_wPos) { _pos.x = pos.x; _pos.y = pos.y; } if (_wSize) { _pos.width = pos.width; _pos.height = pos.height; } } } Vamos a hablar primero de los argumentos de la funcin: string url: direccin web donde est alojado el vdeo a reproducir. Rect pos: rectngulo con la posicin y/o el tamao del reproductor. int depth: capa dentro de la interface en la que se di bujar el reproductor. GUIStyle style: estilo a usar en el contorno del reproductor. bool wPos: indica si vamos a usar la posicin por de fecto o una personalizada. bool wSize: indica si vamos a usar el tamao por de fecto o uno personalizado. int border: tamao del borde del contorno del reproductor. Ahora ya podemos pasar a analizar el cuerpo de la fun cin. En primer lugar, creamos un objeto de tipo WWW para hacer la conexin con la direccin del vdeo. En caso de que haya algn error, avisaremos de este y finalizare mos la funcin. En caso de una conexin satisfactoria, asignaremos la pelcula a la variable encargada de ello. Para que se pueda escuchar el sonido, hay que asignar explcitamente a un AudioSource el clip de sonido de la pelcula. As pues, accedemos al AudioSource del objeto (ya nos hemos asegurado antes de que haya uno) para hacer la asignacin. El siguiente paso es controlar si el vdeo ya est cargado o no para poder ser reproducido. Podras pensar que si no quieres ni tamao ni posicin per sonalizada, podras pasar como argumento de la clase Rect el valor null. En la mayora de casos esto funcionara, pero en este caso hay un problema: esta clase est denida como no nullable. Qu signica esto? Signica que no puede pasarse en ninguna parte del cdigo un valor null cuando se est es perando un objeto de esta clase. Por esta razn se necesita de los booleanos wPos y wSize para controlar qu queremos en cada caso. Perfecto, ya tenemos nuestro estructura ms bsica: tenemos denida una clase que nos permite cargar y buear un vdeo. Ahora solo nos falta denir las acciones que puede realizar el reproductor y denir qu debe hacer ste en cada uno de los estados. Vamos por partes, primero deniremos las acciones. Las ac ciones vienen a ser como el mando a distancia del reproduc tor, segn la cantidad de acciones que denamos, nuestro mando tendr ms botones o menos, lgico. En este tutorial vamos a denir las ms bsicas de cualquier reproductor: play, pause y stop. public void Play() { if (_movie != null) { _state = VideoState.BUFFERING; _play = true; }else { Debug.LogError(No movie loaded. Please, use Lo adMovie() function to load a movie.); } } public void Pause() Como se trata de un vdeo en streaming , puede ser que necesite unos segundos antes de poder comenzar con la reproduccin. Gracias a la propiedad isReadyToPlay po demos controlar este aspecto. A partir de aqu, todas las dems instrucciones son la asignacin de los parmetros a las variables miembro de la clase. En caso de querer usar los parmetros por defecto del reproductor, solo ne cesitamos pasar como argumento null o 0 en caso de ser un entero.

Las acciones vienen a ser como el mando a distancia del reproductor, segn la cantidad de acciones que definamos, nuestro mando tendr ms botones o menos
OJO CON LA CLASE RECT!

www.unityspain.com

21

Tutorial

STREAMING VIDEO
{ if (_movie != null) { _movie.Pause(); audio.Pause(); } _state = VideoState.PAUSE; } public void Stop() { if (_movie != null) { _movie.Stop(); audio.Stop(); } switch (_state) { case VideoState.STOP: break; case VideoState.PLAY: break; case VideoState.PAUSE: break; case VideoState.BUFFERING: if (_movie.isReadyToPlay) { if (_play) { _state = VideoState.PLAY; _movie.Play(); audio.Play(); } else { _state = VideoState.STOP; } if (!_wPos) { if (_wSize) { _pos.x = (Screen.width _pos.width) * 0.5f; _pos.y = (Screen.height _pos.height) * 0.5f; } else { _pos.x = (Screen.width _movie.width) * 0.5f; _pos.y = (Screen.height _movie.height) * 0.5f; } } if (!_wSize) { Ahora ya tenemos las acciones que cambian el estado del re productor, ahora vamos a controlar qu pasa en cada uno de estos estados. Como el reproductor hereda de MonoBeha viour, podemos usar las funciones Update() y OnGUI() para denir el comportamiento del reproductor. Comenzamos por la funcin Update(): void Update () { if (_movie != null) { } } } _pos.width = _movie.width; _pos.height = _movie.height; } } break; default: break;

22

Tutorial

_state = VideoState.STOP; } Como podis observar, hemos declarado las funciones como pblicas para que, desde donde se controle el reproductor, se puedan realizar las acciones. La estructura de todas es muy pa recida, a excepcin de la funcin Play(). Por qu no llamamos a la funcin _movie.Play(); del vdeo para reproducirlo? Muy fcil, puede ser que el vdeo an no est listo para empezar su reproduccin, por lo que no veramos nada y podra derivar en errores inesperados. Pero an hay ms, cuando an no est listo el vdeo para ser reproducido, el motor an no sabe qu medi das tendr y, por consiguiente, dene unas por defecto (16x16). Se podra dar el caso de tener en medio de la pantalla un mi nsculo rectngulo con el estilo denido por el usuario hasta que el vdeo estuviera listo para su reproduccin. Deniendo as la funcin, nos aseguramos de que no empiece a reproducir ningn video hasta que no est listo.

www.unityspain.com

STREAMING VIDEO
Fijaos que tenemos todos los estados contemplados en esta funcin, aunque no necesariamente tendremos que hacer algo en cada uno de ellos. Es ms, para el funcionamiento b sico del reproductor solo necesitamos controlar el estado Vi deoState.BUFFERING. Lo primero que debemos vericar, es si el vdeo est prepa rado para ser reproducido. En caso negativo tendremos que esperar un poco ms hasta que est listo. Cuando ya lo est, tendremos que comprobar si hemos accionado el botn play del reproductor para empezar su reproduccin o, por el con trario, solo lo hemos cargado y an no queremos visionarlo. Cuando ya est listo, tambin debemos congurar tamao y posicin del reproductor segn lo que el usuario haya pedido anteriormente. En caso de usar los valores por defecto del re productor, la pelcula ser reproducida con el tamao nativo de sta y centrada en pantalla. Perfecto, ahora ya solo nos falta que se visualice por pantalla, as que hay que denir la interface. Para hacer an ms inde pendiente ste mdulo de su contexto, deniremos las accio nes dentro de la misma clase para que no sea necesario controlar desde fuera estas acciones. Para ello deniremos un aspecto parecido a los reproductores de Internet. Antes de denir la funcin OnGUI() declararemos las variables necesarias para el diseo de los botones de las acciones. public Texture public Texture public Texture public GUIStyle public GUIStyle public GUIStyle _playTexture; _pauseTexture; _stopTexture; _playStyle; _pauseStyle; _stopStyle; { Play(); } break; case VideoState.BUFFERING: GUI.Label(new Rect(Screen.width * 0.5f 50, Screen.height * 0.5f 10, 100, 20), Loading video); break; default: break; case VideoState.STOP: break; case VideoState.PLAY: if (_style != null) { GUI.Label(new Rect(_pos.x _videoBorder, _pos.y _videoBorder, _pos.width + _videoBorder * 2, _pos.height + _videoBorder * 2), ); } Igual que en la funcin Update(), hay que contemplar cada uno de los estados del reproductor, ya que no mos traremos lo mismo cuando est cargando o cuando est reproduciendo, por ejemplo. Lo primero que hay que hacer es asignar la capa de la interface que se ha esco gido al motor para que lo dibuje en el orden deseado. A continuacin hay que controlar qu se muestra en cada uno de los estados. Empezaremos por el ms sencillo: Vi deoState.BUFFERING. Como an no podemos mostrar el vdeo, lo nico que haremos es mostrar un mensaje al } } GUI.DrawTexture(_pos, _movie); if (_pos.Contains(Input.mousePosition)) { if (GUI.Label(new Rect(_pos.x + (_pos.width _pauseTexture.width) * 0.5f, _pos.y + (_pos.height _pau seTexture.height) * 0.5f, _pauseTexture.width, _pauseTex ture.height), , _pauseStyle)) { Pause(); } } break; case VideoState.PAUSE: if (_style != null) { GUI.Label(new Rect(_pos.x _videoBorder, _pos.y _videoBorder, _pos.width + _videoBorder * 2, _pos.height + _videoBorder * 2), ); } GUI.DrawTexture(_pos, _movie); if (GUI.Button(new Rect(_pos.x + (_pos.width _playTexture.width) * 0.5f, _pos.y + (_pos.height _play Texture.height) * 0.5f, _playTexture.width, _playTexture.height), , _playStyle))

Hemos declarado las variables como pblicas para que sea fcil desde el editor congurarlas. stas variables servirn para denir el aspecto visual de los botones que permitirn las acciones en el reproductor. Ahora s, ya solo nos queda disear la parte visual: void OnGUI() { GUI.depth = _depth; switch (_state) {

www.unityspain.com

23

Tutorial

STREAMING VIDEO
usuario para que sepa que se est cargando el vdeo y que tiene que esperar. VideoState.PLAY: en este estado la instruccin principal es: GUI.DrawTexture(_pos, _movie); Con esta instruccin mostraremos el vdeo en pantalla. El resto de cdigo es para mostrar el borde en caso de que el usuario as lo haya requerido y mostrar el botn de pause en caso de tener el ratn encima de la zona del vdeo, imitando as el aspecto web. En el caso de VideoState.PAUSE tendremos prcticamente el mismo cdigo pero cambiando la accin en caso de presionar el botn de play, en este caso. LISTO! Pues con esto ya tenemos creado un reproductor bsico para Unity donde podremos reproducir cualquier vdeo me diante streaming. A partir de ahora, para cualquier juego donde se requiera reproducir algn tipo de vdeo en inter faz, podris usar este mdulo sin mayores dificultades. Es pero que hayis disfrutado y aprendido cosas nuevas con este tutorial. Hasta la prxima!

24

Tutorial

Para colaborar con Udev o anunciarse en sus pginas, mandad un correo a:

webmaster@unityspain.com

www.unityspain.com

ARTCULO

iTween
ITWEEN
En este artculo hablaremos de una de las me jores libreras gratuitas para Unity, tanto que debera encontrarse integrada dentro de las apis de Unity. iTween, creada por pixelplacement, es una li brera para animaciones basada en la premisa: input mnimo para output mximo. La idea es hacer la vida ms sencilla cuando queremos agitar, girar, mover, fundir, colorear, controlar audio, hacer fundidos entre cmaras y casi cualquier cosa que te plantees hacer en Unity. En su ncleo, iTween es un sistema de interpo lacin que toma un valor y lo anima hasta otro durante una cantidad de tiempo. Pero donde de verdad brilla iTween es en su sintaxis espec ca para cada accin que nos libra de tener que programar muchas lneas y nos deja ms en la posicin de un director de cine. Gracias a iTween podremos acelerar nuestro ritmo de trabajo sin sacricar calidad por el camino. Antes de entrar a ver cmo usar iTween, vea mos el porqu de su existencia. En Unity, como en cualquier sistema, todo se puede hacer de muchas formas. Podemos animar fuera de Unity o con el sistema de animacin incluido en Unity mediante un timeline; pode mos utilizar JavaScript, C# o Boo y cambiar las cosas a mano con nuestro cdigo. Es posible que nos demos cuenta de que estamos justo en medio de esas dos ramas; que ni somos los mejores programadores para animar siempre por cdigo, ni tenemos lo conocimientos para utilizar una herramienta externa a Unity. Por supuesto, no es necesario encontrarse en ese punto. Podemos ser unos brillantes progra madores y usar iTween por comodidad ya que, en este caso concreto, que su uso sea ms sencillo no lo hace ms simple. iTween ya ha sido utilizado por grandes y pequeos es tudios, sigue las bases slidas de las libreras del mundo de Adobe Flash. En general, iTween es rpido, eficiente, senci llo de usar y encaja en cualquier proyecto: desde acciones muy simples a mecnicas de juego complejas.

DAVID COLLADO
Por dnde empiezo?
Si ya estas convencido de al menos probar iTween, lo puedes descargar de forma completamente gratuita desde http://itween.pixelplacement.com. iTween es un solo fichero C# que puede ser usado desde cualquier lenguaje soportado por Unity, ade ms de todas las versiones de Unity. Si quieres usarlo desde JavaScript o Boo necesitaras crear la carpeta Plugins dentro de tu carpeta Assets. Si lo vas a usar desde C# solo es nece sario que lo sites dentro de la carpeta Assets. Esta es toda la instalacin, realmente sencilla, siguiendo la lnea de input mnimo para out put mximo.

Hola mundo
Para empezar con un primer ejemplo prctico, hay algunas cosas que debemos tener claras: Casi todos los mtodos de iTween tienen 2 formas, una simple y otra personalizable.

www.unityspain.com

25

ITWEEN
Las versiones personalizables usan hashtables para sus propiedades. Casi todos los mtodos de iTween necesitan una referencia a un GameObject. iTween puede ser utilizado dentro de la funcin Update de Unity. Hay mtodos especficos incluidos en iTween pensados precisamente para acciones repetitivas y que ofrecen un mayor rendimiento. iTween puede hacer cientos de cosas pero, en esta ocasin, ve remos algo sencillo. Quizs en prximos nmeros de UDev vea mos ms ejemplos aunque, como siempre, algo de investigacin, los ejemplos de pixelplacement en la web y las dudas que podis resolver en el foro de Unityspain os ayudarn a indagar para vues tros proyectos.

DAVID COLLADO
Donde realmente las hashtables se vuelven feas es en C#, veamos un ejemplo de cmo componer una hashtable en C#: Hashtable parameters = new Hasthtable(); parameters.Add(x,2); parameters.Add(time,3); parameters.Add(looptype,iTween.LoopType.pingPong); parameters.Add(delay,1); iTween.MoveTo(gameObject,parameters); 6 lneas de cdigo! En Javascript todo iba en una sola lnea. La verdad es que en comparacin, las hashtables en Javascript no parecen tan feas, verdad? Esto no sigue mucho la idea base de trs de iTween (recordad, input mnimo para output mximo); pero no debemos tener miedo, ya que iTween ofrece una solu cin para evitar esta locura y utilizar las hashtables de una forma ms similar a la vista en Javascript: Hash(). Con el mtodo Hash() podemos hacer una hashtable de la siguiente forma: iTween.MoveTo(gameObject, iTween.Hash(x,2,time,3, loopType,pingPong, delay,1)); Personalmente, creo que esta solucin es mucho mejor que aa dir todos los parmetros uno a uno utilizando una lnea de cdigo para cada uno. Por mis gustos personales prefiero C# pero en este caso es de agradecer que iTween aporte esta opcin de compo ner las hashtables que ahorra mucho tiempo.

26

Artculo

El ejemplo que vamos a ver es movernos de una posicin a otra. El mtodo de iTween para hacer esto es MoveTo(). Vamos a animar un GameObject desde su posicin actual hasta (2,0,0) durante dos segundos usando la versin sim ple del mtodo MoveTo(): iTween.MoveTo(gameObject,Vector3(2,0,0),2); Simple y fcil, pero si queremos tener ms control sobre la ani macin, debemos usar la versin personalizable del mtodo Mo veTo() y darle las propiedades en una Hashtable: iTween.MoveTo(gameObject,{x:2,time:3, loopType:pingPong,delay:1}); Esta llamada animar el GameObject movindolo desde su posi cin actual a la posicin 2 sobre el eje x durante 3 segundos, pero adems retrasar la animacin 1 segundo y har un efecto ping pong para moverse adelante y atrs. Para liberar todo el poder de iTween, lo mejor es recu rrir a las versiones personalizables de cada mtodo y as poder modificar todos sus parmetros. La documen tacin de iTween la podis encontrar aqu: http://it ween.pixelplacement.com/documentation.php.

Conclusin
iTween se actualiza con mucha frecuencia, y tiene varios ejemplos en su web, adems de toda la documentacin. Segn pixelpla cement, iTween se ofrece de forma totalmente gratuita como compensacin a esa comunidad que tanto le ha ayudado y que le ha hecho llegar al punto en el que se encuentra su carrera ac tualmente. Creo que debemos agradecer todo el trabajo que pi xelplacement ha llevado a cabo, y no hay mejor forma para ello que incluir iTween desde ahora en todos vuestros proyectos.

Pero las hashtables son muy feas


Son muchos parmetros que configurar y con los que jugar. De hecho, MoveTo() es capaz de tomar una serie de puntos en el es pacio que pueden ser utilizado como camino a seguir. El nico problema es que estas posibilidades son ms feas, pero se puede vivir con ellas.

www.unityspain.com

También podría gustarte