jueves, 21 de abril de 2016

UnrealEngine para desarrolladores de Unity3D II: De GameObject a Actor

Aquí la siguiente entrega de Unreal Engine, en esta aprenderemos las similitudes de los Actors en cuanto a los GameObjects de Unity3D.

En primer lugar para empezar este tutorial, aconsejo echar un vistazo al tutorial previo en el cual explico las diferencias entre los dos entornos de desarrollo.
¡De Unity3D a UnrealEngine!
En Unity3D, usamos "GameObjects" como objetos en la escena, estos objetos son tanto lo que vemos, como a su vez, sus componentes son lo que hacen que el juego se mueva, se escuche y en definitiva que formen todos lo que entenderíamos como objetos, personajes, escenario, etc...

En UnrealEngine, a estos objetos les llamaremos "Actors", Aquí podremos ver un vídeo de como añadir un "Actor" a nuestra escena.


Tu puedes construir un juego con Actors vacíos e ir rellenandolos como si fuese un GameObject vacío y añadirle tus propios componentes, pero UnrealEngine incluye varios tipos especiales de actors con ciertas funcionalidades prehechas, al igual que Unity3D trae ciertos objetos 3D, diferentes tipos de luces, etc, UnrealEngine trae muchos mas Actors por defecto con mas utilidades que GameObjects Unity3D.

Pero si lo prefieres, siempre puedes usar un Actor vacío e ir añadiendo componentes o bien uno prehecho e ir modificándolos y añadiendo o quitando componentes según necesites al igual que en Unity3D.

A diferencia de Unity3D, y como ventaja en UnrealEngine, disponemos de diferentes Actors con ciertos "problemas" ya resueltos, así como Pawn, para jugadores o inteligencias artificiales, Character para un personaje animado, Player Start para posicionar el personaje cuando el juego comience y muchos otros Actors que nos ahorrarán tiempo de programación al estar ya prefabricados.



Todos estos objetos los podemos encontrar en la misma  pestaña y además disponemos de un buscador como podemos ver en la imagen para facilitarnos encontrar estos Actors.

martes, 26 de enero de 2016

UnrealEngine para desarrolladores de Unity3D: Comparando IDE

Al fín, después de bastante tiempo, voy a añadir una serie de tutoriales que tenía pendiente.
Vamos a ver, desde el punto de vista de alguien que está acostumbrado a Unity3D, la adaptación para UnrealEngine 4 de la manera menos agresiva posible y paso a paso.
¡De Unity3D a UnrealEngine!
Los motivos para dejar Unity3D atrás y dedicarse a usar UnrealEngine depende de cada uno, en mi caso no dejaré atrás Unity3D ya que creo que cada vez está haciendo una competencia más fuerte a UnrealEngine (como podréis ver en una entrada mas antigua, la cual recomiendo leer antes para valorar si realmente merece la pena el cambio o no: UnrealEngine VS Unity3D

Dicho esto, voy a desglosarlo en diferentes entradas.
En esta primera veremos la interfaz de UnrealEngine y a qué corresponde cada parte respecto a Unity3D. Como podremos ver más adelante, son bastante similares obviando que usen nombres diferentes y que, estéticamente, UnrealEngine mantenga una interfaz un poco más obsoleta, en mi humilde opinión.

Para empezar vamos a ver las dos interfaces divididas por secciones, y los colores que representan su equivalente en ambos entornos.
Ambos entornos divididos en secciones
Iremos parte por parte, en primer lugar y más visible, la parte morada que representa en Unity3D el visor de escena y en UnrealEngine Viewport para visualizar el nivel. Estos se controlan de manera diferente, ya que para moverte por el entorno en UnrealEngine necesitas usar las teclas WASD y en Unity3D se usan las flechas direccionales, pero fuera de esto, obviando atajos de teclado que son de uso más avanzado, lo demás podemos usarlo de manera bastante similar.
Al pulsar en un objeto podemos moverlo, rotarlo o escalarlo sobre sus ejes, y una ventaja respecto a Unity3D es la posibilidad de pulsar con el botón derecho en un objeto y poder ver las diferentes opciones para ese objeto, además de ser muchas más opciones de las que Unity3D ofrece normalmente.


En segundo lugar, en rosa, el margen superior a la izquierda de Unity3D y en el caso de UnrealEngine dentro del Viewport, las opciones del visor y de edición de objetos. Una vez más, en el caso de las opciones del visor, es considerablemente más completo que Unity3D, ya que te permite ver de muchas mas formas el escenario, pudiendo observar cómo se aplican las luces, el antialising, etc... y cada una por separado.

Continuamos con la zona roja, en la cual en Unity3D tenemos una barra de herramientas lo justo para poder probar en editor, play, pause y stop; en el caso de UnrealEngine, tenemos más herramientas, aunque muchas de estas se acceden desde la barra de tareas en Unity3D, Unity3D puede prescindir de algunos de estos botones ya que lo automatiza como el botón para compilar (en caso de que se quiera, puede no automatizarlo pero, sinceramente, no veo ninguna pega en ello) al contrario, creo que el simple hecho de que lo haga automáticamente, hace que no se me olvide dar a dicho botón, ya que no es necesario.
Por lo demás, he de decir que esta barra en UnrealEngine tiene demasiados botones, en Unity3D todas estas funcionalidades las tiene en la barra de herramientas.

Después podemos ver en azul la jerarquía de objetos en la escena/nivel en Unity3D y UnrealEngine respectivamente. Ambos tienen herramienta de búsqueda aunque la de Unity3D me parece más completa, ya que puedes buscar un componente y ver qué objetos lo tienen, o al menos en UnrealEngine no he visto como hacerlo. Como punto a favor de UnrealEngine, tenemos la opción de meter los objetos en carpetas, aunque en Unity3D podemos tener unos objetos dentro de otros, así que tampoco es una ventaja en toda regla.

Seguimos con el color verde, donde tenemos el visor de proyecto en Unity3D o visor de contenido en UnrealEngine. En este caso, de nuevo, Unity3D tiene un buscador bastante más práctico, y UnrealEngine tiene más opciones filtrando por código por un lado y el contenido por otro, aunque con los filtros y favoritos de Unity3D no sólo es sencillo, sino que además podremos personalizar nuestros propios filtros.

Por último, destacar en amarillo el inspector de Unity3D y la pestaña de detalle en UnrealEngine. En este caso, están bastante empatados en funcionalidad, salvo que Unity3D da la opción de resetear los valores por defecto con una función que programemos nosotros a través del componente que queramos resetear, y en UnrealEngine nos permite resetear cada valor individualmente, pero en principio, a la hora de mostrar valores y personalizar este apartado, ambos son bastante similares.

Antes de terminar, remarcar en gris una pestaña exclusiva de UnrealEngine, realmente la mayor similitud sería la pestaña GameObject, que podemos encontrar en la barra de tareas de Unity3D, de manera más visual en el caso de UnrealEngine. En este apartado podremos instanciar objetos básicos nuevos, luces, sonidos, partículas, etc…

Hasta aquí la comparación de la interfaz, si hay conceptos erróneos por favor, avisadme y lo corregiré encantado, de momento estoy empezando con UnrealEngine y podría estar equivocado en algún punto.

viernes, 1 de enero de 2016

¡Feliz año nuevo!

Para mi es un momento especial este día, no solo por felicitaros a todos los que me leéis, comentais e incluso aportais, si no también por ser el aniversario de esta página, siendo este mismo día de hace dos años el momento en el que me decidí a crear esta web y con la que, creo que una parte de mí ha crecido.
¡Feliz año nuevo!
 Hay muchas cosas que creo que este año han sido importantes para mi reflejadas aquí y me gustaría recapitularlas un poco como resumen del año.

Las gamejams a las que he asistido, en las que precisamente las que he asistido este año han sido probablemente las que mas me han hecho aprender y que una vez mas, aconsejo participar a todo el que no lo haya hecho y quiera hacer videojuegos.

Hay algunas de las entradas que parece que han sido bastante interesantes para los lectores de la web como por ejemplo en la que he hablado de las ventajas y desventajas entre Unreal Engine y Unity3D, el cual quizás haga alguna entrada donde haga una comparativa mas exaustiva entre estos y otros motores.

Durante este año he tenido muchos comentarios de agradecimientos, creo que ahora me toca a mi agradeceros a todos los que me habéis agradecido mis aportaciones, los ánimos que me habeis dado han sido una gran motivación.

También siento mucho el no haber podido hacer muchas cosas que tengo en mente para la web este año, pero espero que aun aplazando algunas ideas para este año, se puedan cumplir a lo largo de estos primeros meses del año.

Antes de despedir esta breve entrada felicitando el año, me gustaría también pedir a los que leáis esto que si tenéis alguna idea para añadir a la web la pongáis en los comentarios, ¡Es vuestra oportunidad de aportar! 

Dicho esto, ¡Feliz año a todos! ¡Feliz segundo aniversario www.hagamosvideojuegos.com!

miércoles, 16 de diciembre de 2015

Familiar Game Jam 5

Un poco tarde, pero aquí van mis impresiones acerca de la quinta edición de la Familiar Game Jam, aunque en mi caso, es la cuarta a la que asisto.

En primer lugar, habría estado bien, como antaño, escribir al final del día qué tal me fue en cada uno de ellos durante el evento, pero puesto que tuve problemas de tiempo con el juego, ya que fuimos bastante apurados, pues lo dejé para después de la Game Jam, aprovechando que el viernes siguiente era la entrega de premios. Pero, una vez más, por motivos personales, no pude realizar la entrada en el blog.
Finalmente, y después de tanto, aquí está, disculpad la demora.


Siento mucho decir que tengo un pequeño sabor agridulce en esta ocasión, aunque por supuesto, mucho más dulce que agrio. Agrio porque, en esta edición, no cabíamos todos presencialmente -de hecho en el mismo día se agotaron las plazas presenciales en Genera Games, donde se ha realizado el evento- pero por suerte, en Aula Arcade nos acogieron a cuatro grupos en total. Entre los cuales contaba el mío.

Por una parte estoy muy contento de haber estado allí, pues lo cierto es que al ser un aula orientada a la la tecnología, estaba preparada para un evento como este y todo fue mejor de lo esperado, el ambiente igual de bueno, el espacio bien organizado, etc.
Esa pequeña sensación agria vino de no poder estar junto al resto de equipos presenciales, daba igual el número, lo importante es que siempre apetece poder estar con los demás amigos del sector, conocer caras nuevas, hablar con los viejos conocidos, aprender de los demás... algo que si bien pude hacer con una parte de los participantes, no con el resto que estuvo en Genera Games, en definitiva, un pequeño mal sabor de boca al no haber podido ser todos en un solo sitio, pero a su vez no fue tan malo ya que, pasó de tener que participar online a participar físicamente aun siendo en otro sitio.
Lo pasamos genial y pudimos compartir la experiencia con otros grupos, que es lo que realmente importa, y por supuesto, lo valoro muy por encima respecto a la parte más que negativa, menos positiva.
Y pasando a otro plano de la experiencia, decir que esta vez, quise hacer un experimento personal, quise trabajar directamente con un game designer codo con codo, aprender bien las funciones del mismo, cómo llevarlas a cabo y, poder a su vez, tener la experiencia de trabajar con alguien relativo a ese campo, ya que, a pesar de conocer el sector, nunca antes había trabajado con alguien que hubiera estudiado esa especialidad.

La experiencia ha resultado muy interesante, puesto que no sólo diseñó la mecánica, sino que también se encargó de diseñar los niveles para el juego, el cual sin duda alguna quedó bastante interesante (Para haber sido realizado en 48 horas).

Una pequeña captura del juego realizado en 48 horas
En principio íbamos a intentar hacer algo los dos solos, usando solo objetos básicos en 3D y a ver qué se nos ocurría con el tema de la Game Jam, pero finalmente, se nos unieron un programador más, con el cual sí que he trabajado -pero no para hacer juegos y, ciertamente hacía más de un año que no colaborábamos en ningún proyecto juntos- y una ilustradora, que hasta ésta, su primera Game Jam, nunca había dibujado para un videojuego y, sin duda, ha hecho muy buen trabajo como podréis observar.

Todo nuestro esfuerzo, más el del músico con el que estuvimos en contacto a través de IRC, quedó plasmado en un juego que, en mi opinión, resultó bastante interesante. La mecánica, originalmente, era algo que nuestro game designer tenía en mente desde hacía mucho tiempo, nos encargamos de adaptarla un poco a la temática y al gusto de todos, le dimos algunas pinceladas al juego de manera que, aunque el game designer hizo su función, todos pudimos aportar nuestro granito de arena.

Esta Game Jam trató el tema de la "Deconstrucción" en honor al equipo de Deconstructeam, el cual estuvo tanto desarrollando como dando una charla previa a la Game Jam, la cual sin duda, fue merecedora de hablar de ella, así que lo haré en un futuro cercano.

Finalmente, durante el desarrollo, por desgracia dos de los equipos de los cuatro que estuvimos en Aula Arcade no pudieron llegar a publicar, nosotros no solo pudimos publicar nuestro juego, si no que, además, resultó gustar bastante, tanto a nosotros como a los demás, tanto fue así que... una imagen vale más que mil palabras:

¡Premio al videojuego mas innovador!
Antes de terminar, por supuesto quisiera dar las gracias a los jueces -si es que llegan a ver esta entrada- a mi equipo, por haberlo hecho genial y, por supuesto, a todos los que estuvieron en Aula Arcade, con los que compartí aquellos tres días e hicieron el fin de semana bastante entretenido y que espero que sigan con ganas de más para la próxima, y por último, a GeekyJuegos que recientemente hicieron una reseña del trabajo que presentamos.

Aquí tenéis el link al juego, el cual actualizamos anoche con las correcciones de un par de pequeños bugs y portado a WebGL para no tener que instalar nada para jugar, intentaremos añadir algunos niveles nuevos más adelante.

Juego: http://gamejolt.com/games/dropbot/104124
Reseña al juego por GeekyJuegos: https://geekyjuegos.com/dropbot-una-experiencia-de-juego-innovadora-familiargamejam5/

martes, 29 de septiembre de 2015

Preparar un proyecto de Unity3D para Git

Si queremos trabajar en un proyecto varias personas,  ya sea trastear con sus diferentes escenarios, configuraciones, código, imágenes, sonidos, etc... Lo ideal sería usar un repositorio para poder editar todos cosas a la vez pudiendo sincronizarse a través de la red, aquí veremos una buena configuración de Unity3D para cualquier tipo de repositorio y como usar uno de ellos, en este caso Git, que no solo es el mas popular a día de hoy si no que además, es el que yo mismo suelo usar tanto para trabajar como para, a partir de ahora, subir mis ejemplos como dije en la entrada anterior.
Unity + Git
Sincronizando Unity3D y Git
En primer lugar pasaremos por la configuración de Unity3D que es lo más rápido y que por supuesto, una vez configurado, nos servirá para cualquier tipo de repositorio (CVS, GIT, SVN...), solo debemos de abrir Unity3D y en la barra de menú abrir Edit > Project Settings > Editor para que nos salga este menú el cual deberemos configurar.
Los valores borrosos no son necesarios para el repositorio, esos podemos dejarlos como estén o en todo caso, adaptarlos a nosotros, pero ese es otro tema que abarcar otro día, por último recordar que hay valores que se le añaden a esta configuración dependiendo de la plataforma para la que vayas a crear el juego, lo importante son estos dos parámetros.

Version Control Mode: En este caso hay que usar la opción Visible Meta Files para que los archivos generados por Unity (Los que terminan en extensión .Meta) se puedan subir al servidor, esto es muy importante ya que ahí guardamos la configuración de los mismos y para que todos tengamos bien sincronizado todo, deberíamos subir todos los '.meta' siempre al servidor.

Asset Serialization: Hay que especificar la opción Force Text para que tanto las escenas, como los prefabs se guarden en modo texto por lo cual podrían verse los cambios en GIT y a su vez, si fuese necesario, poder hacer "merge" en caso de conflicto entre el archivo que tenemos nosotros y el que hay en el servidor para crear un archivo que conserve nuestros cambios y los de servidor.

Finalmente aconsejo, para ahorrar espacio innecesario en el repositorio, además de ser totalmente innecesario subirlo e incluso nos saldrán muchos archivos que cambiarán constantemente ya que son temporales durante la creación de la aplicación y para uso en memoria, no influyen en el estado del proyecto, aquí pondré el archivo '.ignore' que yo suelo usar para ignorar dichos archivos y no subirlos a nuestro servidor, este archivo debería estar en la raiz de nuestro proyecto.

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Con esto podremos evitar añadir los archivos temporales, de sistema y generados por Unity3D que no son necesarios para que, cuando otra persona se una al proyecto, o quieras volver a descargar el proyecto, te ahorres ese tiempo de espera, ya que Unity3D te los generará el solo, los tengas o no.

Para la siguiente aprovecharé para explicar como configurar nuestro proyecto de GitHub además de explicar algunos conceptos básicos de como usar un repositorio para aquellos que no lo tengan muy claro.