Unity engine desarrollo de videojuegos

Los mejores videojuegos hechos en Unity

Hola bienvenido/a a nuestro blog, en el día de hoy veremos los 10 mejores videojuegos desarrollado en Unity, para que vean la potencia que tiene este fabuloso motor, siendo que estos videojuegos se considerar independientes por la cantidad de personas que lo han desarrollado. En este caso vamos a mostrar el Top 10 del 2016 ya que el 2017 aun no cierra y hasta fin de año no sabremos quienes serán los ganadores.

 

El mejor juego para las mejores gráficas 3D: Firewatch

Fue desarrollado por Campo Santo, está disponible para Windows, Mac, Linux, Playstation 4 y Xbox One.

Es un juego en el que no se desmorona nunca el sentido o la noción del tiempo si decidimos ignorar un rato la misión y dedicarnos a explorar el mundo abierto que se pone a nuestra disposición. Hay rutas bloqueadas que sus creadores se han preocupado de cuidar a base de puro sentido común, privándonos del material necesario para abordarlas o echando mano de excusas razonables y creíbles que hacen que nada sea forzado ni se erijan barreras artificiales.

A medida que los días transcurren, la sensación de ir desentrañando capas de un relato emergente recuerda mucho a Gone Home, al que Firewatch no duda en hacer un guiño directísimo en el último tercio del juego, pero el pilar de carga en la andadura forestal de Henry no son las misiones que nos encomiendan en este nuevo empleo ni tampoco la exploración de cada objeto como en el espléndido título de Fullbright, sino en los diálogos por radio con Delilah, la operadora de cálida voz que nos manda las tarea y el único punto de contacto humano en un verano de aislamiento total. Las conversaciones están planteadas en un esquema similar al de los juegos de Telltale, a base de elegir frases o quedarse callado y en algunos casos tener en cuenta un tiempo límite, pero el guion esta vez es harina de otro costal: inteligente, sagaz, fluido, a veces un poco sardónico y otras más profundo. Dependiendo de la fase de la relación que se va fraguando entre Henry y Delilah, hay días en los que la comunicación se vuelve áspera y días en los que ambos se aventuran a un amistoso combate de esgrima dialéctica, no tanto porque se trate de palabras grandilocuentes o conversaciones trascendentales, sino por la naturalidad y la inteligencia con la que se desarrollan las bromas, los sarcasmos y los juegos de palabras. Cada elemento del parque habilita la interacción con Delilah, de modo que si uno se encuentra un árbol arañado y pulsa sobre él no oímos a Henry decirse a sí mismo “estas marcas parecen de un oso” ni vemos un cartel descriptivo, sino que el protagonista se lo comenta a su jefa y esta le explica, con o sin cachondeo de por medio, de qué se trata. Una forma efectiva de no caer en los tópicos de la aventura gráfica.

Fuente : www.anaitgames.com

 

El mejor juego para las mejores gráficas 2D: Seasons after Fall

Fue desarrollado por Swing Swing Submarine, está disponible para Windows, Mac, Linux, PlayStation 4, Xbox One.

Cuesta resistirse a la belleza y encanto que desprende Seasons After Fall. Es un videojuego tan bonito, tan llamativo en su apartado artístico, que lo ves y de inmediato te enamoras. Tiene ese algo, esa magia que te atrapa como si realmente estuvieras viviendo dentro de un cuento de fantasía pero, por fortuna, esta aventura de puzles y plataformas es algo más que simple fachada. Tras sus bellos parajes naturales dibujados a mano encontramos un juego de calidad, con gracia, que sabe sorprender con rompecabezas ingeniosos que basan todo su atractivo en la posibilidad de cambiar, a voluntad propia, las estaciones del año no solo para contemplar los muchos cambios que acontecen en lo estético, que ya os digo es increíblemente bello, sino básicamente para sacar provecho de la climatología abriendo caminos que hasta ese momento parecían intransitables.

¿Un estanque os impide el paso? Dejad que el frío invierno hiele su superficie y ¡problema resuelto! O dad la bienvenida al otoño, contemplad cómo crecen las setas, y ellas solas os guiarán a zonas de otro modo inaccesibles. ¿Qué hacemos con el verano? Permitid que su cálida luz haga florecer algunas plantas; o que la primavera y sus lluvias torrenciales inunden por completo el escenario para acceder a lugares más elevados. De forma fluida, muy natural, en Seasons After Fall cambiaréis el clima constantemente buscando resolver unos puzzles que no son especialmente complejos, pero sí ingeniosos e imaginativos. Todo nace de la experimentación. De probar y observar los cambios que trae consigo cada nueva estación. Y la sensación es de lo más gratificante.

Fuente: www.3djuegos.com

 

El mejor juego de consola y PC: Inside

Fue desarrollado por Playdead, está disponible para Windows, PS4 y Xbox One.

Aquí no hay líneas de diálogo ni letras impresas sobre la pantalla, sólo una historia que se cuenta a base de saltos por escenarios surrealistas y consecución de puzles de los que sólo requieren un segundo de calma. Todo está tan bien hilado que, al final, el mensaje del juego acaba siendo lo de menos. No es que sólo importe el camino, es que ‘Inside’ triunfa al transmitirnos sensaciones como ningún otro lo ha hecho hasta la fecha.

Al control de un niño cuyo destino y procedencia desconocemos por completo, huiremos de perseguidores en una constante carrera hacia adelante en la que las posibilidades de quedarse atascados son casi nulas. No es un problema de falta de dificultad, es una cuestión de intuición que, una vez conocidas las mecánicas básicas, conseguirá que pasemos por puzles y obstáculos sin ni siquiera darnos cuenta de que estaban ahí.

Fuente: www.vidaextra.com

Unity engine desarrollo de videojuegos

Uno de los mejores engine para el desarrollo de videojuegos

 

El mejor juego para móvil : Lara Croft GO

Fue desarrollado por Square Enix Montreal, disponible para Android, IOS, Windows y Windows Phone.

En esta nueva aventura de Lara Croft debemos profundizar en un mundo ficticio bastante variado y dividido en varias zonas claramente diferenciadas. Y como no podía ser de otra forma, nuestra meta consiste en recuperar ciertas reliquias muy preciadas y, de paso, acabar con la Reina del Veneno. Una trama no demasiado original y previsible pero que es narrada de manera acertada a través de breves y simples escenas de vídeo que emplean el mismo motor del juego, las cuales se dejan ver de vez en cuando al completar ciertos niveles.

Cada nivel cobra vida a través de pequeños tableros en los que podemos ir avanzando por unas teselas o puntos prefijados. Es decir, que no gozamos de libertad de movimientos para explorar los fondos, sino que debemos hacerlo por caminos establecidos. La gracia del asunto es que a medida que avanzamos vamos descubriendo numerosas trampas y enemigos, los cuales poseen diferentes características pero un patrón común: se mueven justo después de nosotros, como si de un juego de estrategia por turnos se tratara. Eso sí, este desarrollo es muy simple y tremendamente esquematizado, pero en el mejor de los sentidos.

Fuente: www.3djuegos.com

 

El mejor juego para realidad virtual: Job Simulator

Fue desarrollado por Owlchemy Labs, está disponible para HTC Vive y Oculus Rift.

En Job Simulator, considerado uno de los videojuegos para la realidad virtual de mayor éxito, tendremos que resolver una serie de pruebas mientras emulamos en clave de humor algunos trabajos, como el de chef o el de oficinista. Las opciones y posibilidades de interacción sin casi infinitas.

Fuente: www.vandal.net

 

El mejor juego para la mejor experiencia VR: The Lab

Fue desarrollado por Valve, está disponible para HTC Vive.

Es una escala de la habitación de realidad virtual (VR) juego de video desarrollado por Valve Corporationy lanzado para Microsoft Windows el 5 de abril de 2016. Se utiliza la tecnología VR y el HTC Vive dispositivo para mostrar una serie de experiencias de juego se accede a través de un centro de la habitación. El juego está ambientado en el Portal universo y ofrece ocho diferentes tipos de juego que implican breve demostración de las experiencias que utilizan diferentes aspectos de la VR capacidades. La variedad también es ofrecido más allá de las experiencias mismas por la cantidad de interacción con los objetos del entorno que se incluye.

Fuente: en.wikipedia.org

 

El mejor juego para proyecto (NON-Game) : Tilt Brush

Fue desarrollado por Google, está disponible en HTC Vive. Non- games es una categoría que esta entre un videojuego y un juguete.

Uno de los avances tecnológicos que más fuerte está pegando durante la primera mitad de este año está siendo la realidad virtual. Los grandes fabricantes han empezado a mostrar sus apuestas de hardware, y es sólo cuestión de tiempo que a partir de estas plataformas empecemos a ver cada vez más innovaciones en el mundo del software.

Google ha decidido ir abriendo camino, y lo ha hecho presentando su propia aplicación de dibujo para Realidad virtual. Se llama Tilt Brush, y nos permitirá dibujar en un entorno virtual desde diferentes ángulos o metiéndonos literalmente dentro del dibujo. Eso sí, de momento sólo está al alcance de quien tenga unas HTC Vive.

Fuente: www.genbeta.com

 

El mejor juego para simulación : Factory I/O

Fue desarrollado por Real Games, está disponible para Windows.

Es un videojuego en el que debes administrar una fabrica y todas las tareas que comprende la mismas, un juego muy interactivo el cual se ha considerado uno de los mejores simuladores del 2016 y por supuesto esta desarrollado en Unity.

 

El mejor juego para proyectos de estudiantes : Pine

Desarrollado por Twirlbound en NHTV Breda (universidad de ciencias aplicadas).

Pine es un videojuego de acción y aventuras en mundo abierto donde, como miembro de una de las últimas tribus de la gran isla de Albamare, se debe buscar un nuevo hogar para nuestro pueblo. La producción nace de la premisa de una humanidad alejada de la cima de la cadena alimenticia, donde debe cooperar con otras especies para subsistir en un lugar repleto de misterios por descubrir. Desarrollado por Twirlbound, la producción cuenta entre sus atributos con una IA avanzada, capaz de aprender de los movimientos y estilo de juego del jugador.

Fuente: www.3djuegos.com

 

Una mención especial para el mejor asset: Dungeon Architect

Fue desarrollado por Code Respawn, está disponible en el Asset Store.

Dungeon Architect es una herramienta de generación de nivel de procedimiento. Le permite crear rápidamente sus propias mazmorras tanto en tiempo de ejecución como en tiempo de diseño con poderosas herramientas de edición.

Curso Unity

Aprende mucho más sobre cómo desarrollar videojuegos en Unity

Bueno eso fue todo por hoy espero que te haya gustado, nos vemos, hasta la próxima.

Desarrollo en Unity Real

Libros para el desarrollo de videojuegos en Unity

Hola bienvenido/a a mi blog, en el día de hoy te traigo una serie de 15 libros sobre el desarrollo de videojuegos en Unity. No todos son necesarios sino que cada uno cubre una necesidad especifica, comenzando como está estructurado un motor de videojuegos, programación en C#, Shaders, Realidad aumentada, videojuegos para Android, videojuegos para iOS, como desarrollar un videojuego para OUYA, diseño de videojuegos, control del audio, conceptos para principiantes y mucho más.
Traté de hacer una lista de libros no tan extensa pero a su vez que les sea útil para la mayoría de las personas sean principiantes , intermedios o avanzados en el desarrollo con Unity. Como sabrán Unity es uno de los motores principales en la actualidad para el desarrollo de videojuegos multiplataforma , por lo que debemos poner mucho esfuerzo en estudiarlo y aprenderlo para sacar el máximo provecho de este software.

Unity engine desarrollo de videojuegos

Uno de los mejores engine para el desarrollo de videojuegos

 

1.Desarrollo de videojuegos. Arquitectura del Motor: Volumen 1

Motor de videojuego

Ficha técnica

Autor: David Vallejo
Publicista: ¿?
Edición: 1ra
Fecha de publicación: 11/9/2015
Idioma: Ingles/Español

2.Unity: Manuales Users (Spanish Edition)

User Unity desarrollo de videojuegos

Ficha técnica

Autor: Landa Cosio
Publicista: Users
Edición: 1ra
Fecha de publicación: 18/6/2013
Idioma: Ingles/Español

3.Learning C# Programming with Unity 3D

Aprende C# Unity

Ficha técnica

Autor: Alex Okita
Publicista: CRC Press
Edición: 1ra
Fecha de publicación: 4/8/2014
Idioma: Ingles

4.Unity 5 from Zero to Proficiency (Intermediate)(Volume 3)

C# intermedio para Unity

Ficha técnica

Autor: Patrick Felicia
Publicista: ¿?
Edición: 1ra
Fecha de publicación: 21/4/2016
Idioma: Ingles

5.Unity Shaders and effects cookbook
Shaders para Unity

Ficha técnica

Autor: Kenny Lammers
Publicista: Packt Publishing
Edición: 1ra
Fecha de publicación: 18/6/2013
Idioma: Ingles

6.Developing AR games for iOS and Android

AR Unity

Ficha técnica

Autor: Dominic Cushnan
Publicista: Packt Publishing
Edición: 1ra
Fecha de publicación: 24/9/2013
Idioma: Ingles

7.Game character creation with Blender and Unity

Modelar Blender para Unity

Ficha técnica

Autor: Chris Totten
Publicista: Sybex
Edición: 1ra
Fecha de publicación: 22/6/2012
Idioma: Ingles

Curso Unity

Aprende mucho más sobre cómo desarrollar videojuegos en Unity

8.Game development for iOS with Unity3D

iOS para Unity

Ficha técnica

Autor: Jeff W. Murray
Publicista: A K Peters/CRC Press
Edición: 1ra
Fecha de publicación: 26/7/2012
Idioma: Ingles

9.Getting started with OUYA

Desarrollar para OUYA Unity

Ficha técnica

Autor: Ruben Hoyos
Publicista: Packt Publishing
Edición: 1ra
Fecha de publicación: 12/5/2014
Idioma: Ingles

10.Introduction to game design, prototyping, and development

Game Design en Unity

Ficha técnica

Autor: Jeremy Gibson
Publicista: Addison-Wesley Professional
Edición: 1ra
Fecha de publicación: 21/7/2014
Idioma: Ingles

11.Mastering Unity 2D game development

Desarrollo 2D en Unity

Ficha técnica

Autor: Simon Jackson
Publicista: Packt Publishing
Edición: 1ra
Fecha de publicación: 26/8/2014
Idioma: Ingles

12.Pro Unity game development with C#

Desarrollo C# Pro Unity

Ficha técnica

Autor: Alan Thorn
Publicista: Apress
Edición: 1ra
Fecha de publicación: 20/5/2014
Idioma: Ingles

13.The essential guide to game audio

Conceptos de audio para videojuegos

Ficha técnica

Autor: Steve Horowitz
Publicista: Focal Press
Edición: 1ra
Fecha de publicación: 1/4/2014
Idioma: Ingles

14.Unity Android game development by example

Desarrollar Android para Unity

Ficha técnica

Autor: Thomas Finnegan
Publicista: Packt Publishing
Edición: 1ra
Fecha de publicación: 20/12/2013
Idioma: Ingles

15.Unity for absolute beginners

Principiantes en Unity

Ficha técnica

Autor: Sue Blackman Y Jenny Wang
Publicista: Apress
Edición: 1ra
Fecha de publicación: 12/6/2014
Idioma: Ingles

Bueno espero que te haya gustado este post, hasta la semana que viene. Gracias por visitarnos espero que la hayas pasado tan bien como nosotros al compartir este contenido contigo.

Unity desarrollo de videojuegos

Como vivir del desarrollo

Hola bienvenido/a, en el día de hoy le explicaré algunos aspectos esenciales para poder vivir del desarrollo de videojuegos, con esto no te garantizamos el éxito pero si te va ayudar a acercarte a este objetivo.

1.Tener un buen equipo

El primer paso que debes hacer es buscar un equipo de desarrollo, ya que no es recomendable desarrollar tu solo, no es que no se pueda pero es demasiado laborioso hacerlo de manera eficiente estando solo. Hay que tener algo de cuidado en este primer paso, ya que la calidad de tu equipo determinarán el éxito de tu videojuego es por eso que no debes incluir a cualquier persona a tu equipo. Es común ir a Facebook, unirse a grupos de videojuegos y ofrecer a las personas la posibilidad de entrar a tu equipo, de ahí tendrás varios comentarios o mensajes privados para elegir quienes de todas esas personas elegir para conformar tu equipo de trabajo, antes de elegir a alguien debes conocer a la persona, saber su trabajo, si es responsable , si es agradable para trabajar en grupo. Tienes que tener en cuenta que el equipo recomendable es tener un programador, un artista 2D, un artista 3D, un community manager, un compositor; con estas 5 personas ya podrías comenzar.

2.Requerimientos

Una vez conformado tu equipo, necesitamos ver los requisitos técnicos. Saber qué software y hardware van a necesitar. Te voy a dar un ejemplo para que te des una idea de cómo hacerlo. Ejemplo: Se requiere Unity engine, Blender, Photoshop, FlStudio, conexión a Internet. Depende del software a utilizar va ser el hardware requerido (Unity 3.0 GHz, 4 Gb de RAM, 512 Mb de video) Una vez definidos los requerimientos mínimos para cada software, debemos verificar si cumplimos con esos requisitos para los software que vamos a utilizar. También se puede necesitar hardware externo como tableta de dibujo o teclado midi; la compra de licencias para software de pago como Photoshop, entre otros.

3.Capacitación del equipo

Es fundamental para el éxito capacitar a tu equipo antes de comenzar a desarrollar, ya que debes evitar cometer el error de comenzar el desarrollo sin haberse capacitado correctamente. Si realmente deseas vivir de esto debes ser un profesional en la disciplina que vas a desempeñar. También ten en cuenta que una vez capacitados y comenzado el proceso del desarrollo no dejar de capacitarse, mientras se desarrolla se debe capacitarse al menos una hora al día.

Cursos gratis en desarrollo de videojuegos con Unity

Cursos gratis en desarrollo de videojuegos con Unity

 

4.Análisis del mercado

Antes de comenzar con el desarrollo se debe estudiar el mercado, sus tendencias y comportamientos, si bien todo el equipo debe hacer esta tarea en su disciplina, el community manager es quien debe realizar el estudio de mercado general para saber qué videojuegos independientes están funcionando en este momento y planear una estrategia de qué juegos pueden ser factibles para su desarrollo basándose en el riesgo de pérdida, si el estudio está bien planteado el juego que se desarrolle deberá tener menos probabilidades de fracaso. Este es un paso que el 95% de los estudios independientes omite, lo cual es un gran error porque toda tarea que podamos hacer previa al desarrollo que disminuya la probabilidad de fracaso hay que hacerla sin dudar, ten en cuenta que se invierte mucho tiempo , cariño y dinero (en ocasiones) para que luego el desarrollo sea un fracaso.

5.Desarrollo de la idea

Por lo general el 75% o más comienzan en este paso y luego se preguntan el porqué de su fracaso, omitir etapas solo aumenta la probabilidad de fracaso. En esta etapa se reúne el equipo y comienza la “lluvia de ideas“, luego de esto se seleccionan las ideas más relevantes y se elabora con esto otra idea más completa, este proceso puede repetirse tantas veces como se desee hasta tener una idea que todos estén a gusto con ella. Luego de eso el community manager debe investigar y analizar esa idea en el mercado buscando juegos similares y determinar si es comerciable o no dicha idea, no sirve de nada una idea estupenda si a nadie le interesa. Nosotros desarrollamos para lo que el jugador quiere y no para lo que nosotros queremos. Es complejo este paso cuando la idea es innovadora porque aún no hay competencia pero se puede buscar por mecánicas o tecnología de manera separada, ejemplo: RPG, FPS, VR; suponiendo de que no se haya creado esa combinación podemos analizar el mercado de los 3 de manera separada. Una vez tengamos la idea hacemos el GDD (game design document) es un documento de diseño en donde se describen todas las características del videojuego. En otro post ampliaré más sobre este documento por ahora diré que debemos explicar las características generales, mecánicas, concept art, plan de monetización, entre otros.

Curso Unity

Aprende mucho más sobre cómo desarrollar videojuegos en Unity

 

6.Plan de monetización

Si bien es un punto que se debe plasmar en el GDD, decidí hacerlo como un paso más ya que quería ampliar un poco más sobre este tema. Si queremos vivir del desarrollo de videojuegos tenemos que crear una estrategia para obtener ganancias monetarias, para esto hay varias alternativas: un juego gratis con publicidad (requiere una gran cantidad de usuarios activos conectados a internet), un juego de pago (requiere pocos usuarios no necesariamente activos ni conectados a internet) un juego gratis con pagos dentro del juego (requiere una cantidad moderada de usuarios activos conectados a internet). Debemos escoger entre algunas de estas 3, por lo general los estudios nuevos optan por la primera porque quieren hacerse conocidos y tiene mejor respuesta por parte de los usuarios. Pero es muy complejo generar una gran cantidad de usuarios activos, no sirve de nada tener 1500 descargas, si no tenemos ni 25 usuarios activos al día. Es un error muy común que busquen en donde sea que descarguen su juego y aumentar las descargas totales, pero lo que se debe hacer es segmentar a los posibles jugadores y tratar que ellos descarguen el juego. No sirve que un jugador de videojuegos deportivos descargue tu juego FPS porque lo más probable es que no juegue más de una semana. En cambio un jugador de FPS que descargue tu juego podrá analizar la calidad del mismo y si es buena jugará indefinidamente. Eso es justamente lo que queremos lograr; también se puede combinar publicidad con pago en juego, sobre este tema podemos hablar todo el día, luego hare un post explicando más sobre monetización.

marketing redes sociales

Como hacer un buen marketing para tu videojuego

 

7.Rutina de trabajo

A esta altura ya tenemos un equipo de trabajo ya capacitado para desarrollar un videojuego, una idea de un videojuego que creemos que puede funcionar según los estudios realizados, un GDD con las características que tendrá nuestro videojuego; es hora de comenzar a desarrollar nuestro videojuego. Es recomendable hacer una campaña de donaciones como Kickstarter u otro para poder sustentar el tiempo en que se tarde en desarrollar la primer versión pública del videojuego. Para esto es necesario tener el juego bien estructurado con buenos concepts arts para que las personas se interesen por su juego y realicen una donación (Advertencia: Si se piensa hacer una campaña de este tipo se debe comenzar a crear seguidores y una buena comunidad desde la primer fase que se menciona en este post, sé que es difícil que te sigan sin tener nada para mostrar, pero desde que tengas hecho tu GDD, ya tendrás materia para mostrar) Es casi obligatorio utilizar algún método de administración de tareas como es el SCRUM, recomiendo utilizar Trello u otro del mismo tipo. Trabajar con fechas de entrega, horarios de reuniones y medición del progreso.

8.Invertir en publicidad

Muchas veces que para darle vida y movimiento a nuestras comunidades en las redes sociales debemos invertir algo de dinero en publicidad. Por lo general se paga una vez y no pagan más, esto es un error grave se debe invertir el 20% de las ganancias totales en publicidad paga, les recomiendo al menos invertir 10 dólares al mes para difundir su futuro o actual videojuego, esto te ayudará a hacerte conocer ante un segmento especifico de usuarios, esa es la gran ventaja de este tipo de estrategia que te permite llegar a nuestro jugador objetivo como mencionamos anteriormente.

Bueno espero que te haya servido de algo, aclarado algunas dudas y sobre todo que te hayas disfrutado de leerlo tanto como yo disfruté al hacerlo. Si te gustó el post no te olvides de compartir.

Desarrollo de videojuegos

Respuestas que deberías saber

Hola bienvenido a mi blog, en el día de hoy te hablaré sobre algunas de las preguntas que me han hecho sobre el desarrollo de videojuegos en Unity. Es común que cualquier persona que desee introducirse en este mercado tenga muchas preguntas sin responder, en este post intentaremos responderte algunas de ellas. Si ya estas desarrollando y no te esta funcionando como esperabas tal vez esto te sirva, muchas veces el error está en los pilares base.


¿Qué necesito para ser un desarrollador de videojuegos?

Primero antes que nada deberías saber que un videojuego se compone por varias disciplinas (arte, sonido, programación, etc.), una vez sepas esto debes escoger una de ellas, la que más te guste o en la que mejor te desenvuelvas. Una vez teniendo esto, necesitas una conexión a internet y un ordenador sea portátil o de escritorio que soporte los softwares que vas a utilizar. Con todo esto ya tienes lo fundamental para comenzar a instruirte en el desarrollo de videojuegos.


¿Necesito saber matemática para hacer un videojuego?

Esta pregunta es algo delicada, en fin, si debes saber matemática para desarrollar un videojuego, si es un proyecto sencillo no es necesario que tengas grandes conocimientos pero si los fundamentales. Tenga en cuenta que solo considero esta respuesta para la disciplina de programador en caso de que opte por otra disciplina debería poder desarrollarla sin mayores dificultades. Se comenta que para la disciplina del modelado 3D se requieren ciertos cálculos pero no son comparados con lo que requiere en programación.


¿Cuál es mejor Unity o Unreal?

Los dos engine son excelentes, muy potentes y completos. No se podría decir que uno está por encima del otro. Nosotros hemos elegido a Unity no porque sea mejor que Unreal sino porque tiene una mejor documentación, mayor comunidad y soporte en comparación de Unreal.

Cursos gratis en desarrollo de videojuegos con Unity

Cursos gratis en desarrollo de videojuegos con Unity


¿Se puede desarrollar un videojuego solo?

De poder si se puede, nadie te lo impide; pero no es recomendable porque en lo que te demoras en aprender todas las disciplinas pueden haber lanzado 20 juegos mejores a su idea para entonces. El problema no está en que no puede aprender todo sino en que no te da el tiempo para desarrollar todo a la vez. Si aún con una persona dedicada a cada área es muy laborioso hacer un videojuego, imagínate hacerlo tú solo. Mi recomendación es que busques personas que deseen trabajar contigo, ten en cuenta que cada persona debe desarrollar una disciplina distinta no metas a 20 personas que hacen exactamente lo mismo.


¿Es mejor aprender de video o de un material escrito?

Esto pienso que es un dilema bastante personal, hay personas que les gusta leer más que a otras. Un video es más fácil de entender que un par de páginas de un libro. Pero que sea más fácil no significa que aprenda mejor, solo aprende más rápido pero no mejor, ya que la lectura requiere más concentración y atención a lo que lees para poder entenderlo; en cambio en un video no requiere de demasiado esfuerzo para aprender el contenido. En conclusión, lo que aprendió de un video es más probable que se te olvide, de lo que tuviste que leer y aprenderlo. Mi recomendación si te gusta leer aprende leyendo sino mira videos, aunque la lectura es un buen hábito y deberías considerarlo. No digo que un libro sea mejor que un video, sino que el proceso de aprendizaje es mejor, a un material escrito no solo me refiero a sólo libros sino a blogs, noticias, etc.


¿Es conveniente usar Assets descargados?

Si se utiliza correctamente si, aunque muchas personas los utilizan en exceso. Un assets es para agregar una funcionalidad o estética particular a un videojuego, no es para hacer todo el videojuego a base de assets. Los perjuicios a la hora de utilizarlos son: no poder imitar el mismo estilo gráfico para el resto del material gráfico, no poder editar o vincular tu programación con la del asset, no poder crear algo de la misma calidad porque se notara la falta de armonía en el apartado gráfico. Mi recomendación es utilizarlos para sistemas de partículas, o una funcionalidad en especifica, siempre y cuando se utilice sólo ese assets para cubrir ese aspecto y no varios que no concuerden entre sí.


¿Cómo hacer marketing de mi videojuego?

Esta es una pregunta muy amplia y recurrente, marketing es la estrategia de hacer conocer un producto o servicio a tu potencial cliente. Para lograr hacer un buen marketing debemos tener un manejo fluido y profesional de nuestras redes sociales, crear una fan page en Facebook, una cuenta de marca en Google Plus, un Instagram, un Twitter. Todas las redes sociales en donde tu marca conecte con los potenciales cliente, si en esa red social no está tu cliente ni siquiera se crees una cuenta en ella por más beneficios que tenga, hay que ir donde está su cliente para mostrarle su producto y convencerlo de que lo siga y posteriormente te compre. Nadie compra algo que no conoce, primero debe conocerlo y tener confianza en ti, luego de eso recién ahí podrá comprarte. Un consejo muy importante, que es un error muy común en los desarrollos independientes que comienzan a hacer marketing recién cuando tienen el videojuego hecho o una demo o alpha. Esto personalmente creo que está mal ya que se debe comenzar a crear nuestra comunidad de seguidores y brindar confianza desde que se comienza el proyecto, ya que demora meses en crear fidelidad en tus seguidores lo que se traduce en pérdidas si recién lo implementas cuando tienes el producto terminado. Debes comenzar a publicar pidiendo opinión sobre características que tendrá tu juego, haciendo encuestas , material gráfico como concept arts, en definitiva debe haber una persona que se especialice y que solamente se dedique al marketing de tu marca.

marketing redes sociales

Como hacer un buen marketing para tu videojuego


¿Se puede vivir del desarrollo de videojuegos?

De poder se puede, pero nadie dijo que sea fácil. No pretendas poder ganarte la vida haciendo videojuegos sencillos y de baja calidad, existen excepciones que logran hacer mucho dinero con juegos simples para móviles pero eso no quiere decir que en la mayoría vaya a funcionar, si le dijera eso le estaría mintiendo. Muchas personas o grupos independientes hacen muy buenos videojuegos y no son exitosos, y hay juegos de muy mala calidad que tienes más éxito. Esto no ocurre porque si o es a la suerte, hay varios factores que determinan la probabilidad de éxito, nadie te asegura el éxito pero si una aproximación de lo que puede o no funcionar. Estos factores es la categoría del juego en el momento de lanzamiento, es decir debemos lanzarlo en un lugar y momento especifico, para saber esto debemos hacer un estudio de mercado el cual se encarga nuestro marketer o community manager. Otro factor es la comunidad que has creado para seguirte, si realmente son tus clientes potenciales o solo son me gustas y seguidores sueltos que no interactúan y no les interesa tu producto, más seguidores no significa más ventas. En fin es un tema extenso que veremos en un post sólo para abordar esta inquietud.


¿Porqué tu no desarrollas videojuegos?

Esta es una pregunta bastante normal en mi día a día, es muy normal que los instructores o tutores no puedan desarrollar ya que enseñar consume mucho tiempo y no se puede hacer las 2 a la vez, lo intenté un tiempo pero la calidad se vio sacrificada por lo cual pensé que no era relevante si necesito sacrificar la calidad de mi contenido. Actualmente no estoy desarrollando nada oficial ya que me he quedado sin equipo de trabajo en cuando al desarrollo de videojuegos. Si bien ya he desarrollado varios videojuegos bajo el nombre de mi marca o para terceros, actualmente no dispongo de tiempo para un desarrollo de calidad.


¿Cualquiera puede aprender a programar?

Si, cualquiera que se proponga aprender a programar videojuegos puede hacerlo. Según las bases o antecedentes que tenga esa persona le costará más o menos pero no llegará a ser determinante de si una persona pueda o no aprender, siempre que se lo proponga usted puede lograrlo sin ningún problema. Tenga en cuenta que es un camino de aprendizaje por lo que no pretenda que funcione todo desde un principio, con la experiencia va a poder desarrollar cada vez lógicas más complejas. Un consejo paciencia y perseverancia.


¿Cómo depurar correctamente?

La depuración es el proceso de encontrar un error o fallo, siempre tendrás errores pero hay algunas buenas prácticas poder reducirlo. Una buena práctica es imprimir en consola, dependiendo el lenguaje y la herramienta pueden variar (Debug.Log, print, printf, etc.) esto sirve para saber si se ejecuta esa parte del código. Otra buena práctica es cuando buscas hacer una búsqueda para almacenar dicho valor en una variable, comprobar que esta variable no es nulo para saber si la búsqueda fue exitosa o no. Si hay variables expuestas asegurarnos que este correctamente asignadas con una comprobación similar a la del tip anterior. Salvando estos detalles los únicos errores que pueden tener son detalles menores o errores lógicos. Si manejan bases de datos también deben realizar comprobación para cada consulta o escritura en ella.

Desarrollo de videojuegos


¿Cómo administrar correctamente un equipo de desarrollo?

Suele pasar en ocasiones que estamos con una idea de desarrollo estupenda y nos damos a la búsqueda de un equipo de desarrollo. Una vez conformado el equipo pasando un tiempo comienzas a ver que no trabajan, que no cumple el trabajo y el equipo mismo se desmotiva se disuelve y tu idea nunca llega a la luz. Le daré algunos consejos para que esto no suceda. Primero antes que nada debe haber un líder en el equipo, el líder no debe ser el dueño de la idea sino el que tenga más experiencia administrando gente, alguien que sepa animar controlar y dirigir a los integrantes de tu equipo a buen puerto. Administrar las tareas y los tiempos con fechas prefijadas de entrega, les recomiendo usar un sistema de administración de tareas como Trello. Otro consejo es que su equipo de desarrollo este cerca físicamente para al menos una vez al mes juntarse físicamente, de otra forma se suele perder el compromiso pero eso no determina el éxito hay muchos grupos que son distante y nunca se conocieron personalmente y sin embargo trabajan muy bien porque tienen un nivel de compromiso muy alto. Algo a tener en cuenta a la hora de armar su equipo es buscar disciplinas no cubiertas, no sirve de nada ser 5 programadores si no hay ni un artista.

Curso Unity

Aprende mucho más sobre cómo desarrollar videojuegos en Unity


¿Cómo retirar el dinero de mis ganancias?

Esta es una pregunta muy recurrente en las personas que desean incorporarse a este mundo del desarrollo de videojuegos, que no saben cómo convertir el dinero virtual en real, déjeme decirle algo, siempre es dinero real aunque lo esté viendo por una pantalla es real. Por lo general todos los sitios pagar en dólares, por lo cual es conveniente tener una cuenta de Paypal que es una cuenta bancaria virtual, es la más segura del mercado, según el país en que vivas te permitirá retirar directamente de Paypal o no, en mi caso (Argentina), yo necesito utilizar una tarjeta de débito llamada Payoneer, con esa tarjeta paso los fondos de Paypal a la tarjeta y de ahí voy a cualquier cajero y saco mi dinero. Hay en países que el Paypal no lo pueden usar por las leyes del estado pero recuerden que aun existe la tarjeta Payoneer que funciona como cualquier Visa internacional, es por lo cual que no tendrán ningún problema legal.


¿Cuándo comenzar a desarrollar?

Es un error muy común en las personas nuevas que quieren comenzar a desarrollar ya, en vez de capacitarse correctamente primero y es el primer factor por el que el 90% de los proyectos falla en su desarrollo. Si se fija que existen muchos juegos en desarrollo pero de ellos son muy pocos los que salen al aire, esto es debido a varios factores pero uno de ellos es la capacitación, otro es la administración del equipo que explicamos anteriormente. La mayoría de las personas que quieren comenzar a desarrollar un videojuego es porque ya tienen una idea que quieren materializar, pero primero debes esperar ser paciente, capacitarte lo suficiente para poder desarrollar todo el proyecto y luego ahí comenzar a desarrollar. Recuerde que por más que se haya capacitado y comenzar el desarrollo no deje de capacitarse, según estudios todos nos debemos capacitar al menos una hora al día, para no atrasarnos en nuestra área y más que nosotros trabajamos con la tecnología que avanza a pasos agigantados.


¿Cómo programar en equipo?

Este problema es más recurrente de lo que creen, cuando dos o más programadores trabajan sobre un mismo código es complejo porque cada uno programa con su estilo, a su manera y muchas veces no sólo es que no se entienden entre sí sino que se pisan, es decir rompen el código que otro ya había hecho. Es por eso que existen estándares de programación para que se puedan entender mejor. Ahora le explico algunos de ellos: todas los nombres de archivos, variables o métodos deben ser descriptivos, no es lo mismo poner RTD que retirarDinero, el segundo se da a entender que es para retirar dinero. También se debe establecer la longitud máxima de los nombres de las variables para que el código no se haga ilegible, porque hay muchos programadores que con tal de describir hacen los nombres RetirarElDineroDeLaCajaRegistradora() ese nombre no puede tener un método es muy extenso, RetirarDineroCR() este segundo caso puede ser más aceptable a la hora de leer el código. Los nombres de variables siempre deben comenzar en minúsculas y los nombre de los métodos deben comenzar en mayúsculas. Los nombres de las variables privadas debes comenzar con _ (guion bajo) ejemplo _dineroActual. También debes mantener el código limpio y ordenado nada de dejar espacios blancos sin necesidad, o poner todo amontonado y comentar casi todo el código, hacer cualquiera de estas acciones en su medida correcta no afecta a la legibilidad pero hacerlo en exceso el código se vuelve un caos.

Bueno eso sería todo por hoy, no alcance a contestar todas las preguntas porque el post se iba a tornar demasiado largo, pronto hare otro post para responderlas. Espero que le haya gustado y servido.

Unity: uno de los mejores engine.

Estamos muy contentos de anunciar que Unity 2017.1 ha sido lanzado y ya está disponible para su descarga. Queremos agradecer a la comunidad de Unity por sus valiosas contribuciones durante la fase beta.

Unity engine desarrollo de videojuegos

Hola bienvenido/a un nuevo post, en el día de hoy hablaré de algo que no acostumbro, pero me puse a pensar que hay muchas personas como tú que no saben desarrollar videojuegos, tal vez ni siquiera sepas que es un motor de videojuegos, o estés agobiado por la elección de tantos que hay en el mercado.

Antes que nada quisiera presentarme, mi nombre es Danilo Giardina y soy programador de videojuegos. Hoy te explicare todos los aspectos sobre el desarrollo de videojuegos para que comiences sin temor alguno.

¿Qué es un motor de videojuegos?

Es un software que nos facilita las tareas para desarrollar un videojuego. Si tuviéramos que hacer estas tareas en código base, solo podrían desarrollar los expertos en la materia. Esto te permite a ti , a mi y a cualquier persona poder desarrollar un videojuego.

¿Cuál es el mejor?

Si bien ya sabemos lo que es un engine , pero no sabemos cual elegir entre tanta variedad y todos parecen ser espectaculares. Te diré la verdad, es cierto, la mayoría de los engine que tu consideras como opción (asumo que serán los más reconocidos como Unreal, Unity, Cryengine, Construct2, GameMaker, etc), todos son fabulosos. Muchos te dirán que cada uno tiene pro y contras según que juego quieras hacer, seguramente me estarás preguntando ¿tengo que aprender todos los engines? No, en absoluto. Mi recomendación es que busques un engine genérico en donde puedas desarrollar casi cualquier videojuegos, porque digo casi; porque hay algunos tipos de juegos que requieren engines especializados, por ejemplo los MMO. No es que con los genéricos no se pueda hacer; pero no están orientado a eso por lo que es un poco más laborioso hacerlo.

Unity engine desarrollo de videojuegos

Los líderes en motores de videojuego genéricos son Unity y Unreal. Bien, pero ¿cual es mejor? hay muchísimo contenido de personas intentando comparar y deducir cual es mejor. En mi opinion van a tener que buscar eternamente porque no existe un ganador entre estos 2, es más para mi deberían unirse pero son empresas rivales. Lo que puedes hacer en uno , lo puedes hacer en otro , mas fácil o difícil pero se puede hacer. Como habrás notado nosotros somos partidarios de Unity pero no estamos en contra de Unreal, los 2 motores son excelentes.

Bueno quería dejarte algunas características que tiene el nuevo Unity para ver si te puedo convencer a que consideres usar este hermoso engine. Insertaré información oficial desde su web.

 

Unity 2017.1 en pocas palabras

Unity 2017.1 incluye una tonelada de nuevas características y mejoras. Pero yo sólo te mostrare alguna de ellas para no aburrirte.

 

Artistas y diseñadores: nuevas herramientas para contar historias y secuencias en el juego:

Unity 2017.1 introduce nuevas formas en lo que artistas y diseñadores pueden crear impresionantes contenidos cinematográficos, componer tomas fotográficas artísticas y contar mejores historias visuales con las herramientas Timeline, Cinemachine y Post-Processing Stack.

La línea de tiempo es una poderosa herramienta visual que te permite crear contenido cinematográfico como cintas y trailers, secuencias de juego y mucho más.

Cinemachine es un avanzado sistema de cámaras que te permite componer tus planos como un director de cine dentro de Unity, sin ningún código, y abre la puerta a la era de la cinematografía procedimental.

La pila de postprocesamiento le permite aplicar filtros realistas a escenas utilizando la terminología, los controles y los formatos de espacio de color de la industria cinematográfica para crear efectos visuales de alta calidad con apariencia más realista y dramática, de modo que pueda contar una mejor historia visual.

 

Eficiencia: colaboración, análisis de las operaciones en vivo y más herramientas

Estamos anunciando Unity Teams, un conjunto de características y soluciones que simplifican la forma en que los creadores trabajan juntos, que incluye Collaborate (ahora fuera de beta) y Cloud Build.

Nuestros analíticos de live-ops introducen nuevas formas más fáciles de entender a sus usuarios y reaccionar y ajustar dinámicamente sus juegos sin tener que volver a implementarlos.

Además, hay muchas actualizaciones de productividad para el editor, incluyendo mejoras a la importación de FBX, flujos de trabajo de animación, funcionalidad 2D, trabajo con paquetes de activos e integración con Visual Studio.

 

Gráficos y plataformas: mejoras en general

Hay una serie de avances en las áreas de Particle Systems y el Progressive Lightmapper que ofrece más opciones para lograr su visión artística y el rendimiento de control. Varias plataformas obtienen opciones de optimización de procesamiento con Rendimiento Diferido en iOS y NVIDIA VRWorks en PC.

Este es un pequeño resumen de lo que viene, ahora te paso a explicar detalladamente algunas de estas características.

 

¿Qué hay de nuevo en Unity 2017.1?

Herramientas de artista para la narración: introducción de la línea de tiempo y Cinemachine

Como diseñador, artista o animador, ahora puede crear secuencias de contenido cinematográfico y de juego por su cuenta, sin depender de los programadores, con nuevas herramientas de narración integrada. Eso significa más tiempo haciendo, y menos tiempo haciendo cola para todos.

Timeline es una potente herramienta visual que te permite crear contenido cinematográfico (como el cortometraje Adam). Puede usarlo para crear escenas, crear secuencias de juego y mucho más, orquestando sus objetos de juego, animaciones, sonidos y escenas. Con Timeline, puede centrarse en la narración de cuentos y cinemáticas, no en la codificación.

La herramienta de secuenciación basada en la pista de Timeline aplica un enfoque de “arrastrar y soltar” para coreografiar animaciones, sonidos, eventos, videos y más, para una creación más rápida de bellas escenas y contenido de procedimiento. Timeline tiene características para animación y audio, auto-keying y una interfaz de múltiples pistas con la capacidad de bloquear y silenciar pistas. Timeline es extensible a través de la Playable API y le ofrece la posibilidad de crear sus propias pistas para conducir cualquier sistema que tenga en su juego. Puede crear un clip de Timeline para representar prácticamente cualquier cosa, y hacer que los clips se repitan, escalen y se mezclen, aprovechando al máximo la interfaz de la línea de tiempo.

Cinemachine es el resultado de más de una década de construcción de videojuegos y cámaras cinematográficas. Ahora pone las conductas de cámara líder de la industria en manos de todos y abre la puerta a la era de la cinematografía procedimental.

Es un conjunto de cámaras inteligentes que activan dinámicamente las mejores tomas en el mejor momento basándose en la composición de la escena y la interacción. Esto elimina innumerables horas de animación manual, programación de cámara y revisión.

La función Cinemachine está disponible a través de la tienda de activos, agregue a su proyecto ahora.

Desde un shooter en primera persona hasta una aventura de acción en tercera persona, puedes revolucionar tus cámaras en el juego con Cinemachine. Usted puede fácilmente:

  • Controle secuencias como un director de cine con herramientas avanzadas de la cámara, incluyendo la configuración de la cámara del mundo real.
  • Componga fotos con un enfoque en la dirección artística, no detalles de la implementación. Dé a Cinemachine cámaras inteligentes instrucciones sencillas, como seguir la cabeza del personaje, y si la animación cambia, su disparo se actualizará automáticamente y seguirá funcionando correctamente.

Con Unity 2017.1, hemos añadido muchas nuevas capacidades a Cinemachine como:

  • Objetos múltiples de destino: Destine varios objetos y establezca la ponderación entre ellos. Crea un grupo lógico, basado en cualquier número de sujetos, que se posiciona según la posición de sus miembros. Puede utilizarse como un objetivo LookAt y Follow al realizar el seguimiento de un grupo de objetos. Genial para 2D también.
  • Encuadre de forma dinámica varios objetos: Automáticamente se enmarca automáticamente un grupo de blancos en función de sus posiciones. Si los objetos se separan, Cinemachine ajustará el FOV o Dolly (o ambos) dependiendo de un conjunto de reglas que cree.
    Nueva API totalmente abierta: Cree fácilmente Cinemachine para obtener exactamente el comportamiento de la cámara que necesita su proyecto.
  • Pista de Dolly: Cree imágenes de pista de Dolly como película y haga que su cámara se mueva suavemente a través de sus mundos. Ideal para secuencias cinematográficas o cámaras de juego donde desea que la cámara siga al sujeto por un conjunto de rieles.
  • Disparo claro: El disparo claro elegirá dinámicamente la mejor cámara basada en la prioridad de tiro y lo bueno que es el disparo. ¿Algo se movió en el marco que arruina el tiro? No hay problema, Cinemachine se cortará a la mejor cámara siguiente. Increíble para repeticiones o cualquier otra secuencia cinematográfica de un escenario variable.
  • Cámara impulsada por el estado: Permite la vinculación sin código de cámaras y estados de animación. Accione fácilmente diferentes comportamientos de cámara a partir de animaciones.

Usted puede llevar su narración al siguiente nivel combinando Timeline y Cinemachine juntos. Vaya aún más utilizando la pila de postprocesamiento para crear efectos y añada humor y drama a sus escenas.

Unity Teams

Unity Collaborate está fuera de beta y se une a Cloud Build como parte de una nueva oferta llamada Unity Teams, una solución única con un conjunto de características que le ayudará a crear juntos, más rápido. Para celebrar, los Equipos de Unidad son gratuitos para que todos puedan probar hasta octubre de 2017.

Obtenga más información sobre la oferta de lanzamiento de Unity Teams.

Para Colaborar, el trabajo que priorizamos para su primera versión de producción en 2017.1 refleja la retroalimentación proporcionada por los usuarios Beta. Además de las mejoras en el rendimiento, la estabilidad y las correcciones de errores, hemos añadido un nuevo conjunto de características: push selectivo, mejor integración del navegador de recursos y una nueva característica “In Progress”, que indica en tiempo real cuándo un compañero de equipo tiene funciones locales, Cambios no publicados en una escena o prefab.

Obtenga más información sobre los equipos de Unity.

Análisis de Live-Ops

Con Unity 2017.1, usted tiene acceso a las operaciones en vivo basadas en datos que colocan análisis analíticos a su alcance. Sumérjase y vea cómo su audiencia está interactuando con sus creaciones y luego realice ajustes en tiempo real que se adapten a sus hábitos; Todo ello sin reubicar una nueva versión. Unity 2017 le da el poder de servir mejor a su audiencia a medida que descubre formas inteligentes de optimizar las experiencias de juego.

Obtenga información de manera más eficiente con los Eventos estándar (actualmente en versión beta), que proporcionan un conjunto de eventos predefinidos que ayudan a descubrir sus conocimientos específicos del juego. Con el nuevo Analytics Event Tracker, puede implementarlos sin escribir una sola línea de código.

Cambie su juego en un instante, sin redistribución, con la nueva función de Configuración remota, que se ha agregado a Unity Analytics.

Obtenga más información sobre Analytics.

Mejoras 2D

En Unity 5.6, lanzamos grandes mejoras a las herramientas y flujos de trabajo para creadores de juegos 2D.

En Unity 2017.1 estamos introduciendo 2D Sprite Atlas, un nuevo activo que reemplazará al Sprite Packer. Con él se producen flujos de trabajo nuevos y mejorados que le proporcionan más control para el embalaje de sprites y su uso en tiempo de ejecución. Los atlas son una parte importante de los flujos de trabajo 2D en Unity, y el Sprite Atlas proporciona una creación y gestión de atlas más simples, así como una API de secuencias de comandos para un mayor control y versatilidad.

Sprite Las máscaras se usan para ocultar o revelar partes de un Sprite o grupo de Sprites en el espacio mundial. La máscara Sprite sólo afecta a los objetos utilizando el componente Sprite Renderer, así como los sistemas de partículas.

En 2017.1, también estamos añadiendo una Sprite Physics Shape al editor Sprite. Esto le permite configurar una forma predeterminada personalizada en un Sprite para generar formas de collider con un PolygonCollider2D.

Mejoras de animación

Hemos revisado las ventanas de animación para mejorar el flujo de trabajo de imágenes clave, hacer que la animación se sienta más cómoda y familiar, y permitir la interacción con las máquinas de estado del animador. La grabación del funcionamiento se proporciona como característica experimental.

El nuevo flujo de trabajo de fotogramas clave le permite decidir de forma explícita qué es la clave cuando, y todos los valores de propiedad modificados sin clave se descartan cuando la animación es reevaluada / vista previa. Hemos cambiado el comportamiento predeterminado de la edición de clips en la ventana de animación (nuevo modo de vista previa predeterminada), retroalimentación visual y teclas de acceso rápido globales. El objetivo de estos cambios es permitir un flujo de trabajo suave para fotogramas clave fuera de la ventana de animación, además de permitirle previsualizar clips sin tener que estar en un modo de autokey / rec.

Statemachinebehaviour ahora también se puede depurar en modo de juego en el editor.

También estamos introduciendo GameObjectRecorder, una nueva función de editor experimental, que le permite grabar cualquier propiedad en un GameObject y sus hijos. De esta forma, puede crear fácilmente animaciones guardando todo lo que se ha grabado en un clip de animación.

Mejoras progresivas de Lightmapper

En 2017.1, hemos añadido soporte para LODs en el Progressive Lightmapper. La diferencia principal entre el Iluminar y el Lightmapper progresivo al baking LODs es que con el Progressive Lightmapper, no es necesario autor de Light Probes alrededor de los LODs para obtener luz rebotada sobre ellos. Tener la iluminación indirecta en la resolución completa al bake llevará a Lightmaps mejorados para LODs, y usted puede evitar el proceso tedioso de la creación de los Lightprobes para ellos. (Esto también estará disponible en 5.6.)

También añadimos soporte para materiales de doble cara en el Progressive Lightmapper añadiendo un nuevo ajuste de material que hace que la iluminación interactúe con los backfaces. Cuando se habilita, ambos lados de la geometría se contabilizan al calcular la iluminación global. Los backfaces no se consideran inválidos cuando se ven desde otros objetos. El renderizado de la cara posterior no está controlado por este ajuste ni los backfaces serán representados en los mapas de luz. Backfaces rebotan la luz usando la misma emisión y albedo como frontfaces. (Esto también estará disponible en 5.6)

Mejoras en el Sistema de Partículas

Estamos introduciendo la integración de sprite, fuerzas de colisión de partículas (que pueden empujar colisionadores), un gran número de mejoras de forma, incluyendo un nuevo tipo de forma, y ​​adiciones al módulo de ruido, así como otras características y mejoras. Ahora es más fácil usar Partículas en 2D gracias a los nuevos controles y restricciones como alinear a la velocidad. Puede utilizar Particles para obtener más efectos y animaciones que nunca, incluyendo líneas y senderos iluminados.

Hemos añadido soporte para usar Sprites en el sistema de partículas, a través del módulo de animación de texturas. Esto permite un mejor atlasing y batching de sistemas de partículas, y también expone una serie de características de Sprite para su uso en sistemas de partículas, tales como marcos de animación de tamaños variables y puntos de pivote por marco.

El módulo de ruido viene con nuevas opciones para proporcionar un mayor control sobre cómo se aplica el ruido a sus partículas. En la implementación original en Unity 5.5, se aplicó ruido a las posiciones de las partículas. En 2017.1, será posible aplicar ruido a:

  • Posiciones
  • Rotaciones
  • Tamaños
  • Tus sombreadores que usan nuevas secuencias de vértices personalizadas (¡excelente para la distorsión UV!)

Estamos introduciendo una nueva forma de emisión de burbujas y modificando los modos para los planos del modo de colisión del sistema de partículas en el módulo de forma. Una transformación dentro del módulo le permite aplicar la posición personalizada, la rotación y la escala a la forma de emisión.

Otras mejoras incluyen la capacidad de alinear las partículas a su dirección de velocidad, y permitir que Emit over Distance se use para sistemas de espacio local. La emisión de bordes es ahora más flexible, lo que le permite elegir el grosor del borde utilizado para generar partículas.

Finalmente, las partículas pueden ahora aplicar fuerzas a los Colliders que golpean usando el módulo Collision.

Conclusión

Bien , como ya habrás notado este motor es sumamente completo , hermoso, flexible para lo que desees emprender. Se que no es una decision fácil para ti pero si tomas mi consejo y eliges Unity no te vas a arrepentir. ¿Porqué no te vas a arrepentir? No sólo te muestro la potencia que tiene sino que nosotros nos dedicamos a enseñar Unity, tanto online como presencial. Eso quiere decir que en tu camino de aprendizaje de este motor de videojuegos o en el camino del desarrollo de tu propio videojuego, estaremos acompañándote en todo momento para que en ningún punto te veas abrumado o pierdas tu rumbo.

Perfecto, pero ¿hay que comprar Unity? Te informo que con la versión gratuita de Unity puedes lograr esta misma calidad que te he presentado en el post. Entonces podemos decir que no tenemos que preocuparnos por el costo de Unity engine, pero ¿y mi ayuda qué? Bueno tenemos un canal de Youtube , cursos gratis , post de este mismo blog gratis. Aunque si quieres algo mejor ofrecemos también un servicio VIP, entérate de todas sus características aquí: enlace

Bueno hemos finalizado este post ayudandote a elegir tu engine de videojuegos, esperamos verte en nuestros siguientes post “como aprender a programar desde 0” y “Requisitos para desarrollar un videojuego”. Espero que les haya servido, nos vemos. Hasta la próxima.

Aprende a desarrollar una IA para tus NPCs parte 5

inteligencia artificial Unity (IA)

Hola a todos, bienvenidos a una nueva edición de como desarrollar una IA para tu NPC en Unity. Como había prometido hoy vamos a ver como rotar y mover nuestro personaje para que siga a nuestro player o jugador.Bien lo primero que debemos hacer es borrar las paredes que teníamos puestas de la edición anterior, los sensores dentro del NPC los desactivamos. (Para desactivar un objeto se debe destildar el check que se encuentra al lado de su icono y nombre). Una vez hecho esto debemos crear un cubo y nombrarlo Player, este mismo lo colocamos en alguna parte del escenario.Ya teniendo listo el escenario, vamos a la pestaña de proyectos y creamos un nuevo C# script dentro de la carpeta scripts y colocamos el siguiente código.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateToTargetAndMove : MonoBehaviour {
    public GameObject target;
    public float speedCharacter = 8.0f;

	void Update () {
        Vector3 pointA = gameObject.transform.position;
        Vector3 pointB = target.transform.position;
        Vector3 direction = pointB - pointA;

        float distance = Vector3.Distance(pointA, pointB);
        Debug.Log("Distancia:" + distance);

        Ray ray = new Ray(pointA, pointB);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

        if (Input.GetKey(KeyCode.Mouse0))
        {
            transform.LookAt(pointB);
            gameObject.transform.position += gameObject.transform.forward * 
            speedCharacter * Time.deltaTime; 
        }
	}
}

Como podrán ver es un código similar a las primeras ediciones, ahora vamos a pasar a explicar el código detalladamente.

inteligencia artificial Unity (IA)

 

Explicación del código

public GameObject target;
    public float speedCharacter = 8.0f;

La primer variable es la que ya habíamos creado en ediciones anteriores es para almacenar el objetivo del NPC, en este caso va a ser el Player, y la segunda variable determina con que velocidad se moverá el NPC.

Vector3 pointA = gameObject.transform.position;
        Vector3 pointB = target.transform.position;
        Vector3 direction = pointB - pointA;

Ahora definimos las 3 variables típicas de las ediciones anteriores las cuales usamos para determinar la dirección.

float distance = Vector3.Distance(pointA, pointB);
        Debug.Log("Distancia:" + distance);

Utilizamos nuevamente las variables declaradas anteriormente para determinar la distancia entre el NPC y el Player.

 

Ray ray = new Ray(pointA, pointB);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

Creamos un rayo a modo depuración para poder verlo en la pestaña de escena.

if (Input.GetKey(KeyCode.Mouse0))
        {
            transform.LookAt(pointB);
            gameObject.transform.position += gameObject.transform.forward * 
            speedCharacter * Time.deltaTime; 
        }

Este es el código nuevo, creamos un condicional que nos dice “si presionamos el click izquierdo del mouse…” nos rotamos en dirección al player (transform.LookAt(pointB)) y luego nos movemos en dirección a él con una velocidad determinada.Puesta en marcha Ahora borramos todos los scripts que estaban añadidos a nuestro NPC y agregamos el script que acabamos de crear. En la variable target debemos arrastrar el Player. Luego de eso estamos listo para probarlo.Bueno eso es todo espero que les haya gustado.
Nos vemos en la próxima edición en la cual les enseñare:

 “Como mejorar el movimiento del NPC”. 

Si te gusto este post comenta y comparte.

curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Aprende a desarrollar una IA para tus NPCs parte 4

inteligencia artificial Unity (IA)

Hola a todos, bienvenidos a una nueva edición de como hacer una inteligencia artificial en Unity. Como había prometido hoy les traigo como desarrollar sensores para la detección de obstáculos en el entorno.Para comenzar vamos a ir a nuestra pestaña de proyectos, carpeta scripts, creamos un nuevo C# script y escribimos el siguiente código.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CoordinatesSensors : MonoBehaviour {
    public GameObject sForward,sBackward, sRight, sLeft;
    private GameObject obstacle;
	
	void Update () {
        Forward();
        Backward();
        Left();
        Right();
	}
    void Forward()
    {
        Vector3 point_A = gameObject.transform.position;
        Vector3 point_B = sForward.transform.position;
        Vector3 direction = point_B - point_A;
        float distance = Vector3.Distance(point_A, point_B);

        Ray ray = new Ray(gameObject.transform.position, sForward.transform.position);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

        RaycastHit[] hit;
        hit = Physics.RaycastAll(ray);

        if (hit.Length > 0)
        {
            foreach (RaycastHit h in hit)
            {
                obstacle = h.transform.gameObject;
                Vector3 posObstacle = obstacle.transform.position;
                Vector3 directionObstacle = posObstacle - point_A;
                float distanceObstacle = Vector3.Distance(point_A, posObstacle);
                Debug.Log("adelante " + h.transform.gameObject.name + " a distancia: " 
                + distanceObstacle);
                Debug.DrawRay(ray.origin, directionObstacle * 1.0f, Color.magenta);
                break;
            }
        }
    }
    void Backward()
    {
        Vector3 point_A = gameObject.transform.position;
        Vector3 point_B = sBackward.transform.position;
        Vector3 direction = point_B - point_A;
        float distance = Vector3.Distance(point_A, point_B);

        Ray ray = new Ray(gameObject.transform.position, sBackward.transform.position);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

        RaycastHit[] hit;
        hit = Physics.RaycastAll(ray);

        if (hit.Length > 0)
        {
            foreach (RaycastHit h in hit)
            {
                obstacle = h.transform.gameObject;
                Vector3 posObstacle = obstacle.transform.position;
                Vector3 directionObstacle = posObstacle - point_A;
                float distanceObstacle = Vector3.Distance(point_A, posObstacle);
                Debug.Log("atras " + h.transform.gameObject.name + " a distancia: "
               + distanceObstacle);
                Debug.DrawRay(ray.origin, directionObstacle * 1.0f, Color.magenta);
                break;
            }
        }
    }
    void Right()
    {
        Vector3 point_A = gameObject.transform.position;
        Vector3 point_B = sRight.transform.position;
        Vector3 direction = point_B - point_A;
        float distance = Vector3.Distance(point_A, point_B);

        Ray ray = new Ray(gameObject.transform.position, sRight.transform.position);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

        RaycastHit[] hit;
        hit = Physics.RaycastAll(ray);

        if (hit.Length > 0)
        {
            foreach (RaycastHit h in hit)
            {
                obstacle = h.transform.gameObject;
                Vector3 posObstacle = obstacle.transform.position;
                Vector3 directionObstacle = posObstacle - point_A;
                float distanceObstacle = Vector3.Distance(point_A, posObstacle);
                Debug.Log("derecha " + h.transform.gameObject.name + " a distancia: " 
                + distanceObstacle);
                Debug.DrawRay(ray.origin, directionObstacle * 1.0f, Color.magenta);
                break;
            }
        }
    }
    void Left()
    {
        Vector3 point_A = gameObject.transform.position;
        Vector3 point_B = sLeft.transform.position;
        Vector3 direction = point_B - point_A;
        float distance = Vector3.Distance(point_A, point_B);

        Ray ray = new Ray(gameObject.transform.position, sLeft.transform.position);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

        RaycastHit[] hit;
        hit = Physics.RaycastAll(ray);

        if (hit.Length > 0)
        {
            foreach (RaycastHit h in hit)
            {
                obstacle = h.transform.gameObject;
                Vector3 posObstacle = obstacle.transform.position;
                Vector3 directionObstacle = posObstacle - point_A;
                float distanceObstacle = Vector3.Distance(point_A, posObstacle);
                Debug.Log("izquierda " + h.transform.gameObject.name + " a distancia: " 
                + distanceObstacle);
                Debug.DrawRay(ray.origin, directionObstacle * 1.0f, Color.magenta);
                break;
            }
        }
    }
}

Bueno como podrán apreciar para los que están siguiendo esta saga, este código es muy similar al que ya habíamos visto en la edición anterior salvo algunos cambios. Básicamente lo que hicimos fue separarlo de alguna manera y lanzar un rayo en cada dirección.

Explicación del código

Ahora pasamos a explicar los cambios que hemos realizados en el código.

public GameObject sForward,sBackward, sRight, sLeft;

Lo que hemos hecho acá es dividir la variable target en 4 variables llamadas sensor+dirección, por ejemplo sIzquierda o en su traducción al ingles sLeft.

void Update () {
        Forward();
        Backward();
        Left();
        Right();
	}

Ya no tenemos escrito todo nuestro código en el método Update, sino que creamos 4 métodos individuales y los llamamos desde el Update.

void Forward()
    {
        Vector3 point_A = gameObject.transform.position;
        Vector3 point_B = sForward.transform.position;
        Vector3 direction = point_B - point_A;
        float distance = Vector3.Distance(point_A, point_B);

        Ray ray = new Ray(gameObject.transform.position, sForward.transform.position);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);
       //Continua...

Este es uno de los métodos individuales para cada dirección, en este caso es para la dirección hacia adelante. Lo único que modificamos en esto es cambiar la variable target por la variable correspondiente a la dirección del método en donde estamos.

inteligencia artificial Unity (IA)

 

Puesta en marcha

 

Bien, ya tenemos nuestro código listo pero aun no esta funcional, ya que debemos hacer algunos cambios en nuestra escena.Primero antes que nada tenemos que crear paredes a modo de obstáculos que servirán a nuestro NPC para detectar su entorno, pueden tener o no la misma forma que presentamos en la imagen.Segundo debemos crear 4 cubos dentro de nuestro NPC, a estos cubos le debemos sacar la colisión, desactivar el mesh renderer para que no se vean y colocarlo a 4 unidades de distancia desde el NPC. Es decir que debemos tener estos 4 cubos como hijo de nuestro NPC.Para colocarlo en 4 unidades seria de esta manera cuboDerecha (x=4), cuboIzquierda (x=-4), cuboAdelante(z=4), cuboAtrás(z=-4).Tercero para poder visualizar los sensores solo en la vista de escena, debemos cambiarle el icono a cada uno de ellos, esto se hace haciendo click en el cubo celeste que esta junto al nombre del objeto en la pestaña inspector.Y por último debemos borrar nuestro antiguo script de nuestro NPC, agregar este script y asignarle los 4 cubos según correspondan a sus direcciones.
Bueno eso seria todo espero que les haya gustado, nos veremos en la siguiente edición. Si te ha gustado el post no te olvides de comentarlo y compartir.
Siguiente edición Como rotar y mover nuestro NPC hacia el waypoint.
curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Aprende a desarrollar una IA para tus NPCs parte 3

inteligencia artificial Unity (IA)

Hola a todos bienvenido nuevamente a una nueva edición de como desarrollar una inteligencia artificial en Unity. Como lo prometido es deber, hoy vamos a ver como detectar obstáculos entre el NPC y el waypoint. Lo primero que tenemos que hacer es ir a nuestra pestaña de proyectos , ir a la carpeta de scripts y crear un nuevo C# script. Luego de eso escribimos el siguiente código:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RaycastArrayObstacles : MonoBehaviour {
    public GameObject target;
    private GameObject obstacle;
	
	// Update is called once per frame
	void Update () {
        Vector3 point_A = gameObject.transform.position;
        Vector3 point_B = target.transform.position;
        Vector3 direction = point_B - point_A;
        float distance = Vector3.Distance(point_A, point_B);

        Ray ray = new Ray(gameObject.transform.position, target.transform.position);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

        RaycastHit[] hit;
        hit = Physics.RaycastAll(ray);

        if (hit.Length > 0)
        {
            foreach (RaycastHit h in hit)
            {
                obstacle = h.transform.gameObject;
                Vector3 posObstacle = obstacle.transform.position;
                Vector3 directionObstacle= posObstacle -  point_A;
                float distanceObstacle = Vector3.Distance(point_A, posObstacle);
                Debug.Log("Primer obstaculo " + h.transform.gameObject.name + " a distancia: " 
                + distanceObstacle);
                Debug.DrawRay(ray.origin, directionObstacle * 1.0f, Color.magenta);
                break;
            }
        }
	}
}

Como podrán ver el código no es muy distinto al anterior, si se habrán dado cuenta que es una simple modificación del código de la edición numero 2. Es por lo cual antes de continuar debemos sacar el antiguo script de nuestro NPC y agregarle el que acabamos de crear.

Explicación del código

RaycastHit[] hit;
        hit = Physics.RaycastAll(ray);

Declaramos un array de variables de tipo RaycastHit con el nombre de hit. En dicho array almacenamos todas las colisiones que pueda tener nuestro antiguo rayo de detección llamado ray.

if (hit.Length > 0)
        {
            foreach (RaycastHit h in hit)
            {
                obstacle = h.transform.gameObject;
                Vector3 posObstacle = obstacle.transform.position;
                Vector3 directionObstacle= posObstacle -  point_A;
                float distanceObstacle = Vector3.Distance(point_A, posObstacle);
                Debug.Log("Primer obstaculo " + h.transform.gameObject.name +
                " a distancia: " + distanceObstacle);
                Debug.DrawRay(ray.origin, directionObstacle * 1.0f, Color.magenta);
                break;
            }
        }

inteligencia artificial Unity (IA)

Comprobamos si existen al menos una colisión que nos impida avanzar en la dirección de nuestro rayo. Si eso es cierto, recorremos a través de un foreach (estructura repetitiva similar a for) todas las colisiones almacenadas en nuestro array hit. Como a nosotros no nos interesan todas las colisiones vamos a trabajar únicamente con la primera que nos está obstruyendo el paso.A la variable obstáculo le asignamos el objeto que contiene la primer colisión. Creamos una variable de tipo Vector3 para almacenar la posición del obstáculo, también otra variable del mismo tipo para almacenar la dirección del mismo.Declaramos una variable de tipo flotante que almacene la distancia entre el NPC y el obstáculo, luego de eso imprimimos en consola el nombre del objeto obstáculo y su distancia ,para luego dibujar el rayo correspondiente a esa acción en la pestaña escena. Por ultimo y no por eso menos importante un break , el cual sirve para detener la búsqueda de colisiones una vez encontrada la primer colisión.

Bueno mis queridos seguidores eso es todo por hoy, en la próxima edición veremos:

“Sensores cardinales”.

No se olviden de comentar y compartir si les ha gustado esta edición.

curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Aprende a desarrollar una IA para tus NPCs parte 2

inteligencia artificial Unity (IA)

Hola a todos bienvenidos nuevamente a la segunda edición este emocionante saga sobre inteligencia artificial aplicada a videojuegos. Como había prometido hoy vamos a ver como calcular la distancia y dirección entre el NPC y su respectivo waypoint. Lo primero que debemos hacer es crear un nuevo C# script en la pestaña de proyectos (Nota: si tienes una carpeta para scripts o programación debes crearlo ahí dentro.)Luego escribimos este código:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RaycastPointToPoint : MonoBehaviour {
    public GameObject target;
	
	void Update () {
        Vector3 pointA = gameObject.transform.position;
        Vector3 pointB = target.transform.position;
        Vector3 direction = pointB - pointA;

        float distance = Vector3.Distance(pointA, pointB);
        Debug.Log("Distancia: " + distance);

        Ray ray = new Ray(pointA, pointB);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);
        
	}
}

Como podrán apreciar este código es mas corto que el de la edición pasada. Recuerden, una vez escrito este código debe ser asignado su NPC (nota: si no tienen un NPC, creen una esfera para hacer la prueba).Lo que debe hacer este código es calcular la distancia y dirección entre ambos, y lanzar una linea de depuración para que veamos su comportamiento.

inteligencia artificial Unity (IA)

 

Explicación del código

Antes que nada les recuerdo que el nombre del archivo debe coincidir con el nombre de la clase principal.

 public GameObject target;

Dicho esto, lo primero que hacemos es crear una variable publica de tipo GameObject llamada target, en esta variable se almacenará el waypoint actual.

Vector3 pointA = gameObject.transform.position;
        Vector3 pointB = target.transform.position;
        Vector3 direction = pointB - pointA;

Declaramos 3 variables locales dentro del método Update de tipo Vector3 , este tipo almacena 3 valores flotantes etiquetados como x,y,z. A la primer variable le asignamos la posición de nuestro NPC ,a la segunda variable la posición de nuestro waypoint y por último a la tercer variable le asignamos la dirección. Para calcular la dirección entre 2 vectores basta con restar el primer vector al segundo.

 float distance = Vector3.Distance(pointA, pointB);
        Debug.Log("Distancia: " + distance);

Ahora creamos una variable local de tipo flotante llamada distancia a la cual le asignamos la distancia entre el NPC y el waypoint. Para hacer este calculo nos ayudamos de un método que nos provee Unity el cual pueden apreciar en el código. Luego de esto mostramos en consola el mensaje “Distancia: el valor de la variable”.

Ray ray = new Ray(pointA, pointB);
        Debug.DrawRay(ray.origin, direction * 1.0f, Color.red);

Antes de finalizar este script creamos una variable de tipo rayo llamada ray, en la cual decimos que este rayo sea desde el NPC hasta el waypoint. Después de eso, dibujamos este rayo en la pestaña de escena con un color rojo. Para dibujar este rayo lo primero que debemos hacer es decirle su origen, hacia donde se dirige y en que color va a estar representado.
Eso seria todo por hoy espero que les haya gustado y servido. Por el momento no estamos detectando nuevos waypoint ni obstáculos solo lo estamos calculando para luego utilizarlos en la siguiente edición.No te olvides de comentar y compartir.

En la próxima edición se verá la detección de obstáculos.
curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Aprende a desarrollar una IA para tus NPCs parte 1

inteligencia artificial Unity (IA)

Hola a todos bienvenidos a nuestra primer edición sobre inteligencia artificial para videojuegos. En esta guía mostraremos a modo de ejemplo como se realiza una IA en Unity. Si bien hay varias técnicas que se pueden utilizar en este motor, como el sistema de navigation que trae incluido el engine , pero en este caso vamos a hacer una programación basada en waypoint (puntos de camino).

Creación de WayPoints

Lo primero que debemos hacer es crear un nuevo proyecto en Unity. Crear un nuevo C# script en la pestaña de proyectos. (Recuerden tener su pestaña de proyecto bien organizada con carpetas de scripts, prefabs, scenes, entre otras). Una vez creado vamos a escribir el siguiente código.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NavPointCreator : MonoBehaviour {
    public int id;
    GameObject wp;
	
	
	void Update () {
        if (Input.GetKeyUp(KeyCode.Space))
            CreateTarget();
	}
    void CreateTarget()
    {
        if (wp != null)
            Destroy(wp);
        GameObject waypoint = GameObject.CreatePrimitive(PrimitiveType.Cube);
        waypoint.transform.position = new Vector3(Random.Range(7.0f, -7.0f), 0.03f, 
        Random.Range(7.0f, -7.0f));
        waypoint.name = "Waypoint " + id;
        id++;
        waypoint.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
        //waypoint.GetComponent<MeshRenderer>().enabled = false;
        wp = waypoint;
    }
}

Explicación del código C#

Para resumir lo que hace este código es simplemente crear un cubo en un punto aleatorio dentro de un rango, si el cubo esta creado lo destruye y crea otro en otra posición. Esto sirve para crear los destinos u objetivos para nuestro NPC, lo que le dará un comportamiento más natural a comparación de un comportamiento lineal o por animación.Ahora pasamos a una explicación mas detalla del código.
“`public int id;GameObject wp;“`Declaramos una variable publica de tipo entero llamado id, la cual usaremos para identificar cada waypoint. También declaramos una variable privada de tipo GameObject nombrada wp, la cual contendrá al objeto cubo que representa al waypoint.

void Update () {
        if (Input.GetKeyUp(KeyCode.Space))
            CreateTarget();
	}

Si tocamos la tecla espacio llamará al método de crear objetivo.

void CreateTarget()
    {
        if (wp != null)
            Destroy(wp);
        GameObject waypoint = GameObject.CreatePrimitive(PrimitiveType.Cube);
        waypoint.transform.position = new Vector3(Random.Range(7.0f, -7.0f), 0.03f, 
        Random.Range(7.0f, -7.0f));
        waypoint.name = "Waypoint " + id;
        id++;
        waypoint.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
        //waypoint.GetComponent<MeshRenderer>().enabled = false;
        wp = waypoint;
    }

Por último tenemos el método crear objetivo. Primero se comprueba si wp no esta vacio , en ese caso se destruye el wp existente, luego se crea un cubo nuevo en una posicion aleatoria dentro de un rango , se le asigna un nombre incluyendo en él su id, se le asigna un tamaño de 0.5 y luego se guarda el nuevo waypoint en la variable wp.Existe un código comentado que sirve para ocultar la parte visible del cubo, ya que a fines prácticos nosotros no queremos ver los waypoints de nuestros NPC’s.
Bien eso sería todo, espero que les guste, no se olviden de comentar y compartir si les gusto el post.

En la siguiente edición como detectar la distancia y dirección para que el NPC se dirija al waypoint.
curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Aulas Talleres Móviles (ATM) Desarrollo de videojuegos

Hola a todos , hoy les presento los videojuegos desarrollados por mis alumnos en esta hermosa experiencia de aulas talleres móviles (ATM).Agradezco a Mariela B. por esta hermosa oportunidad que nos brindó. Sin mas les comparto las creaciones de los alumnos:

Gostly:

ATM Aulas Talleres Móviles
ATM Aulas Talleres Móviles
ATM Aulas Talleres Móviles
ATM Aulas Talleres Móviles
Descargar ATM Aulas Talleres Móviles

 

EDGELESS:


ATM Aulas Talleres Móviles

ATM Aulas Talleres Móviles

ATM Aulas Talleres Móviles

descargar ATM Aulas Talleres Móviles

Tips y buenas practicas sobre Unity (Parte 2)

unity tips

11.Si arrastramos un objeto encima de otro en la vista de jerarquía (Hierarchy) esto establece un vinculo. Si un objeto esta vinculado a otro significa que es el padre o el hijo de ese objeto. El objeto arrastrado siempre quedará como hijo. Cuando un objeto es movido , rotado o escalado también sus hijos sufren estas modificaciones.

Podemos arrastrar un hijo y dejarlo arriba en la vista de jerarquía para desvincular este objeto.

12.Podemos organizar nuestra vista de jerarquía con objetos vacíos (empty gameObjects) como si fueran carpetas, colocamos una serie de objetos dentro de estos objetos , lo cual provocará una serie de hijos para este objeto vacío, esto nos permite colapsarlo en la vista de jerarquía. Recuerde cuando un objeto se convierte en hijo de otro sus transformaciones están sujetas a las del padre. Es por lo cual se recomienda poner el objeto vacío en posición 0,0,0.

Es una muy buena práctica organizar nuestra jerarquía, sobre todo cuando hay muchos objetos en la escena.

13.Las variables publicas son expuestas en el inspector, en donde podrás ajustar el valor en su propio componente después de haberlo agregado a un objeto. Esto se conoce como serializar el valor porque Unity guarda el estado modificado de la variable.

Si una variable es pública también puede ser accedida por otros scripts.

14.Un vector es un almacenamiento de multiples valores como una unidad.Por ejemplo un vector3 son 3 números flotantes (etiquetados x,y,z). Esto permite manejarlo como una única variable en vez de utilizar una variable para cada valor.

Algo similar ocurre con la utilización de arrays.

15.Es común colocar los controles de teclado y mouse en un mismo script, esto resulta más cómodo pero no es para nada flexible. Unity tiene un maravilloso sistema de componentes que debería aprovecharse. Para aprovechar la flexibilidad de este sistema debemos tratar de hacer scripts separados.

Al utilizar scripts separados podemos otorgar o denegar un determinado comportamiento a un objeto mediante el sistema de componentes.

16.Un ray es una imaginaria o invisible línea en la escena que comienza en un punto de origen y se extiende en una determinada dirección.

Esto se utiliza cuando utilizamos el Raycast u otros métodos similares.

17.Coroutines es la forma de ejecutar tareas sin que el programa espere hasta que estas sean finalizadas. Es decir se ejecuta el programa principal y la coroutina en simultáneo.

Esto seria como poner una tarea en segundo plano.

18.Render es la acción de la computadora que dibuja los píxeles de una escena 3D. Nuestro monitor es 2D es decir tiene x,y , pero lo que muestra es en 3D, lo que quiere decir que tiene x,y,z. Cuando el algoritmo que hace posible esto se está ejecutando , a esa acción se denomina rendering.

19.Finite State Machine (maquina de estado finito) es una estructura de código en la cual el estado actual de un objeto es seguido. Existen transiciones bien definidas entre los estados , y el código se comporta de manera diferente en base al estado.

Esto lo usamos en el sistema de animaciones Mecanim.

20.Un asset es cualquier archivo que se puede mostrar en la vista de proyecto; estos pueden ser imágenes 2D , modelos 3D, archivos de código, escenas y mucho más.

De ahi el nombre de su tienda Asset Store.

Si aún no has visto la edición anterior de esta saga has click aquí.

¿Buscas aprender más sobre desarrollo de videojuegos con Unity?

curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Tips y buenas practicas sobre Unity (Parte 1)

unity tips

1.Muchos desarrolladores se centran demasiado en el editor visual ; pero Unity tiene una limitación con este editor , ya que no permite editar código. Aunque Unity permite la conexión a cualquier IDE Externo como Monodevelop, Eclipse , Visual Studio, entro otros.

Personalmente como siempre trabajo con C#, utilizo Visual Studio.

 

2.Un objeto malla es un objeto visual en 3D. Las visuales en 3D son construidas por lineas y caras que forman a una maya. Para poder unir las lineas con las caras se utilizan vértices , los cuales contienen información sobre la posición , normales , UV , entre otras cosas.

Aclaración la líneas no pueden ser formadas sin vértices , y las caras no pueden ser formadas sin líneas, pero toda la información esta guardada en los vértices.

 

3.Unity permite que al darle “Play” en el editor el juego se ejecute , en realidad esto es un sistema de debug para que veamos si posee fallos nuestro trabajo , no solo que podemos ejecutarlo y probarlo ,sino también podemos ir a la pestaña de escena (scene) , seleccionar cualquier objeto de la escena y mirar en el inspector el comportamiento que esta teniendo en tiempo real.

Advertencia, todos los cambios realizados en la escena mientras estas en modo Play, no serán guardados.

 

4.La dificultad con los sistemas de control de versión (Tales como Subversion, Git y Mercurial) solían ser una debilidad importante, pero con la versión más reciente de Unity, eso ya no es problema. Es posible encontrar recursos de hace tiempo atrás, diciendo que Unity no funciona con control de versiones, pero los recursos más nuevos mencionan a los archivos de metadatos (Son el mecanismo que Unity introdujo para trabajar con sistemas de control de versión) y a cuales carpetas del proyecto se debe o no incluir en el repositorio.

Si no están familiarizados con los comandos de Git pueden usar un software llamado SourceTree. En mi caso yo utilizo los repositorios de Bitbucket.

 

5.Unity permite utilizar los 3 botones del mouse para un manejo mas fluido en la pestaña de escena (scene) , el primer botón se utiliza para seleccionar un objeto , el segundo se utiliza para orbitar en la escena y el botón central activa la herramienta “Pan”(Mano). Ademas en la pestaña de jerarquía (hierarchy) y proyecto (project) se utiliza el primer botón para seleccionar y el segundo para abrir opciones como si fuera Windows.

Además, con q,w,e,r ,t puedes cambiar el tipo de herramienta entre selección , traslación , rotación , escala , herramienta 2D.

 

6.En la pestaña de proyecto (project) existen carpetas y recursos que visualizamos. Estos archivos están directamente vinculados a la carpeta Assets de nuestro proyecto en el disco duro , por lo cual si agregamos archivos a esta carpeta Unity los sincronizara y si borramos también los borrara. Tener mucho cuidado de no borrar o mover esta carpeta porque su proyecto se puede quedar inutilizable.

Es común sincronizar esta carpeta assets para hacer los backups de tu proyecto.

 

7.Un frame es un solo ciclo del bucle principal del juego. Casi todos los videojuegos son construidos en base a un bucle en el núcleo del videojuego , en donde el código es ejecutado en ciclos mientras el juego corre. Cada ciclo incluye el dibujado de la pantalla.

FPS significa frames por segundo.

 

8.Monodevelop organiza los archivos en grupos llamado soluciones y genera una solución donde están todos los scripts ; usualmente no tienen que preocuparse por ello.

Esto mismo sucede con el IDE Visual Studio.

 

9.Los números de posición pueden ser cualquier unidad que desee. Siempre y cuando sean compatibles en toda la escena. La elección mas común para las unidades son metros y es lo que generalmente se escoje; pero aveces se suele usar “pies” como unidad, aunque hay muchos que también usan las “pulgadas”.

Tener en cuenta la unidad de medida ya que afecta directamente a la física del juego.

 

10.Siempre que perdemos de vista un objeto en la pestaña de escena (scene) , para encontrarlos debemos seleccionar nuestro objeto en jerarquía (hierarchy) y luego colocamos el mouse encima de la pestaña de escena (scene) y pulsamos “F” (focus) . Lo que hará es llevar nuestra vista de escena hacia el objeto que estamos buscando.

En caso de no encontrarlo en la vista de jerarquía tenemos un buscador en esta vista.

 

¿Buscas aprender más sobre desarrollo de videojuegos con Unity?

curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Taller de videojuegos (Material para profesores)

hola a todos hoy damos el comienzo a un taller de programación de videojuegos. Cabe destacar que este taller esta orientado para adolescentes a partir de los 14 años. Aunque esto no limita que si deseas hacerlo puedas hacerlo teniendo una edad inferior a la establecida. Esta esta edad se impone para dar entender al publico de el porqué de la manera de enseñar los contenidos.
Sin mas vueltas vamos a nuestra primera presentación.

Taller de programación de videojuegos

Bueno una vez que ya hayan visto las 6 presentaciones , que por cierto son bastante cortas. Les explico que el objetivo de subir este material es facilitarle un poco la teoría a los profesores de Unity. Anteriormente establezco que el material esta diseñado para alumnos menores de edad, por lo cual el material es rápido , al grano y explicado de la manera mas coloquial posible.

Espero que les sirva , en caso de que no seas profesor y lo hayas leído ten en cuenta que el material no se explica por si solo , es tan solo un apoyo teórico para que los alumnos puedan recordad ciertos temas explicados en clases. Saludos y hasta la próxima.
¿Buscas un curso sobre cómo aprender a desarrollar videojuegos con Unity?

curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.

Scripting C# : Properties

Hola a todos hoy les voy a enseñar como utilizar Properties en C#.
Los properties te permiten acceder a una variable privada de otro script , definiendo si solo quieres que sea leída o si también puede ser modificada desde un script externo.

Primero creamos un script C# con el nombre de “PJ”, luego escribimos lo siguiente:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PJ {
    int health = 5;

    public int vida {
        get
        {
            //Debug.Log("internal: "+ health);
            return health;
        }
        set
        {
            health = value;
        }
    }
}

Ahora creamos otros script con el nombre de “GameController” y copiamos lo siguiente:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameController : MonoBehaviour {
    PJ player = new PJ();
    int health=10;
	// Use this for initialization
	void Start () {
        Debug.Log("gameController:"+health);
        Debug.Log("Pj:" + player.vida);
        player.vida = health;// set
        health = player.vida/2;// get
        Debug.Log("gameController:" + health);
        Debug.Log("Pj:" + player.vida);

    }
}

Bien , lo que deben hacer ahora es arrastras el GameController a un objeto vacío en una escena nueva. Al darle play veran en la consola algo como esto:

  • gameController:10
  • Pj:5
  • gameController:5
  • Pj:10

Como podran ven el valor de gameController se inverte con el de Pj. Para entender esto vamos a explicar que hicimos paso por paso.


Comencemos por el script Pj:

  • Borramos el MonoBehaviour de la clase
  • Creamos una variable privada de tipo entera con el nombre de health ,con un valor asignado de 5.
  • Creamos el properties ( public int vida) significa que es publico , devuelve un entero y su nombre es vida.
  • Recuerden que un properties es una variable por lo cual debe ir en minúsculas y no debe llevar paréntesis.
  • Abrimos y cerramos llaves , dentro de estas definimos el get y set . Cada uno de ellos con sus llaves correspondientes.
  • Dentro de get debe ir el return que es el valor que tiene que devolver, como ya lo habíamos definido arriba debe ser un valor entero , es por eso que devolvemos la variable entera (int) health.
  • Dentro de set debe ir la variable privada a la que estamos accediendo y le asignamos “value” donde esta el valor que fue asignado a vida.

Seguimos por el script GameController:

  • Creamos una variable de tipo Pj (nombre del otro script) con el nombre player y le asignamos una nueva instancia del mismo. Es decir creamos un Pj dentro de la clase GameController. Aunque les recomiendo saber sobre instancias antes de mirar este tutorial.
  • Creamos una variable privada de tipo entera con el nombre de health y le asignamos el valor de 10.
  • En el método Start imprimimos varios mensajes en consola con la sentencia Debug.Log.
  • Asignamos en la linea 12 al properties vida el valor de health de GameController, que en este caso es 10.
  • En la linea 13 asignamos a la variable health de GameController el valor del properties vida dividido 2 , ya que en la linea anterior habíamos cambiado su valor a 10.

Bueno espero que hayan entendido pronto actualizare este post con mas ejemplos de properties , así que no dejen ve verlo.

curso sobre desarrollo de videojuegos en unity
Pulsa en la imagen para ir al curso.