Mostrando entradas con la etiqueta fish. Mostrar todas las entradas
Mostrando entradas con la etiqueta fish. Mostrar todas las entradas

jueves, 27 de abril de 2017

Cómo vender en la Asset Store de Unity.

En esta entrada os vamos a explicar como subimos nuestro asset a la Asset Store de Unity. Esto no va a ser un tutorial paso por paso de como hacer el propio asset, ya que su propia web ofrece mucha información para hacer la mayor parte del trabajo. Pero nos gustaría contar nuestra experiencia del proceso en general, ya que creemos que puede ser interesante para alguien que se quiera atrever a publicar en su tienda.

Para quien no lo sepa, es una tienda online donde puedes conseguir un montón de recursos para tu juego. Algunos son gratuitos y otros son de pago, pero en cualquier caso, la mayor parte de los que hemos visto tienen precios muy competitivos y puede valer la pena invertir en ellos si a cambio ganas tiempo.

En su día hablamos de los beneficios de usar recursos de pago y gratuitos para tu proyecto.

Pues bien, como algunos ya recordaréis, hicimos un pack de peces de estanque animados y codificados para esta tienda. No es que nos diera por hacer un pack de peces y ya está, es que aprovechamos lo que hicimos para nuestro anterior proyecto, Torii.

Como tenemos el síndrome de Bricomanía, vamos a enumerar que es lo que necesitaremos para todo el proceso, que básicamente se resume en una cuenta de Unity, lo que queramos vender y preparar contenido gráfico para la página web que se creará para poner vuestro asset disponible al público.

Primero de todo tendremos que decirle a Unity que ahora queremos publicar contenido en su tienda online. Para ello, aprovecharemos nuestra cuenta ya creada y solo tendremos que decirle a Unity que queremos ser publisher.

Esto hará que podáis seguir trabajando desde el propio programa en vuestro ordenador y podáis subir el contenido automáticamente a su tienda.

Una vez tienes la cuenta preparada para añadir contenido en la Asset Store, tienes que montar correctamente el asset.

Básicamente hay que tener una jerarquía montada de carpetas y archivos y tener en cuenta algún que otro detalle en función de lo que contenga tu asset.

En nuestro caso, quedó así:

Animated Pond Fish de la Asset Store de Unity.


Para resumir, el pack contiene un estanque muy básico para poder montar una escena de prueba en movimiento y añadimos varios peces con las 5 distintas texturas que hicimos. Por tanto, podemos decir que hay 5 peces diferentes, aunque en realidad es el mismo pero con texturas distintas.

Para todo esto que os comentamos, os recomendamos que miréis la información que dan ellos para estos primeros pasos:


Es muy importante que os leáis toda esta información porqué os hablan de todo. Desde como tienes que presentar el asset en la página web que verán vuestros posibles compradores, al contenido del asset, a los precios recomendados, licencias, etc.

Mientras íbamos montando el asset, también íbamos creando el material gráfico para la página de venta. Una vez más, os recomendamos encarecidamente que sigáis la información que ofrece Unity al respecto. Nosotros seguimos este manual gráfico en PDF prácticamente al dedillo. También puedes descargarte unos templates que parecen ser muy útiles.

Seguimos. Una vez montada la estructura de carpetas, enviamos el asset para que lo revisaran desde Unity. Pero nos lo rechazaron por dos motivos.

El primero, debíamos eliminar el agua que viene por defecto en el programa que habíamos puesto en el estanque para la demo de prueba. Eso es porqué el agua de Unity suele dar problemas de compatibilidad entre versiones, así que aconsejan quitarla. Así pues, lo quitamos y tan panchos.

El segundo fue un poco más lioso. Básicamente lo que querían era tener una escena de prueba iluminada y con todo funcionando (peces y estanque, pero sin el agua) y además otra escena con todos los objetos principales en fila (los 5 peces alineados).

Si miráis la imagen anterior donde mostramos la jerarquía veréis estas dos escenas al principio de todo. La ExampleObjects.prefab donde estan los peces en fila y la ExampleScene.prefab donde está todo en funcionamiento.

Una vez modificado esto, se reenvió para la revisión y finalmente dieron el visto bueno. Al final, cuando ya está todo ok parece muy sencillo, pero si es verdad que la primera vez que te pones a montar algo así vas un poco a ciegas.

Pero bueno, si tenéis alguna duda con vuestro asset o os han rechazado el envío y no sabéis que puede ser, podéis ponerlo en los comentarios y vemos si entre todos encontramos la solución :D.

Lo único que podemos añadir a lo que os hemos contado son algunos consejos que nos han ido bien. 
  1. Leed toda la información que aporta Unity.
  2. Pensad bien en un producto que creáis que puede aportar algo. Según hemos leído, aunque no sabemos si es cierto, si lo que queréis subir ya existen varias alternativas es posible que desde Unity os rechacen el asset. En nuestro caso aprovechamos algo que ya teníamos, y si nos lo hubieran rechazado no hubiera sido un gran trauma. Pero que os rechacen algo que habéis hecho expresamente para subirlo duele mucho más. Así que tomad el tiempo que haga falta para decidir que puede ser mejor. Por ejemplo, si tenéis pensado publicar un modelo de una arma, como podría ser la M16A4 o una AK-47, es posible que os rechacen el asset porque ya hay mucha variedad de estos modelos de armas. Aunque insistimos en que no lo sabemos con certeza.
  3. Vigilad el tema de las licencias. Todo lo que publiquéis debe ser vuestro. Parece una obviedad, pero seguro que a más de uno se le ha pasado una textura o algún modelo encontrado por la red de forma gratuita, etc.
  4. Usad el inglés. Es importante pensar en el público al que podéis llegar, y una página como la Asset Store de Unity llega a todo el mundo. Por tanto, vuestro posible cliente potencial puede estar en cualquier parte. Usad el inglés en vuestra página de venta del asset y poned las instrucciones de su uso también en inglés. Eso no quiere decir que si, además, queréis añadir vuestro idioma no lo hagáis. Cuantas más facilidades, mejor.
  5. Proporcionad información. Este punto viene muy relacionado con el anterior. Tenéis que pensar en vuestro posible cliente y cuanto más hagáis para ayudarle a entender vuestro asset, os lo agradecerá. Desde poner las instrucciones en inglés, hasta poner anotaciones en vuestros scripts o crear vídeos donde aparezca el funcionamiento de vuestro asset para que lo puedan ver bien antes de comprar. Cuanta más información proporcionéis al cliente más seguro estará en hacer la compra y os evitaréis comentarios donde os digan que esperaban aquello o lo otro. En nuestro caso hicimos dos vídeos. Uno, para mostrar durante unos minutos el funcionamiento de la escena de prueba donde se vieran los peces interactuar en una zona con otros peces y otro con la animación del pez desde diferentes ángulos. Además de varias capturas de la escena de prueba. Si es posible, mostrad también una demo de vuestro asset, esto ayuda mucho a que el cliente pueda ver, en tiempo real, lo que está comprando. En nuestro caso, en la descripción del producto, pusimos un enlace que te lleva a una página donde se ejecuta en tiempo real el estanque con los peces en movimiento.
  6. Tened paciencia y constancia. Esperamos como dos semanas para la primera respuesta de Unity, donde rechazaron el asset. Pensad que tendrán cientos de peticiones que revisar cada día, así que tranquilos que os responderán. Y si os rechazan el asset, pues corregid y reenviad :). Cabe decir, que las revisiones de las versiones rechazadas se hicieron en mucho menor tiempo, así que parece que dan prioridad primero a las versiones rechazadas para que el proceso no se alargue demasiado.
  7. Estad atentos a los comentarios de los compradores (feedback). Una parte fundamental una vez has publicado tu asset, es hacer un seguimiento de los comentarios que puedan dejar tus compradores en la página de tu asset. Aunque de momento no hemos recibido ninguno, nos hemos informado sobre como actuar de la mejor manera. Estos comentarios pueden ser para agradecerte el trabajo hecho o bien para comentar algún error que hayan podido encontrar. Especialmente en el segundo caso, antes de ponerte a solucionar el error, es importante responder al momento y comentarles que estas trabajando en solucionar el problema, así ven que su comentario ha sido leído y que estás trabajando en ello. Un buen soporte es muy importante para que los compradores pueden valorar positivamente tu asset, lo cuál ayuda a que los futuros clientes estén más seguros en el momento de hacer la compra.
Tomar estos consejos o no, esto ya es más personal y cada caso es diferente, pero no os desaniméis :).

Por hoy, nos despedimos. Esperamos que os haya gustado :).

[19.11.17]* Editamos el artículo para comentar que en la última actualización de la asset store, se necesita crear una página de perfil del vendedor si se quiere subir algún asset a la tienda. Es bastante sencillo de hacer, simplemente se trata de rellenar un formulario con toda la información que queramos que aparezca. Una vez más, recomendamos poner cuanta más información mejor.

jueves, 30 de marzo de 2017

Pack de peces en la Asset Store de Unity.

Nos llena de orgullo y satisfacción deciros que... ¡estrenamos página en la asset store de unity!

Si nos lleváis siguiendo un tiempo, conoceréis que para nuestro primer proyecto, Torii, realizamos un pequeño riachuelo con su estanque donde se podían ver pececillos típicos de Japón. En concreto, nuestra idea era simular a las conocidas carpas Koi.

Decidimos hacer unos cambios para mejorar su comportamiento y aspecto y ponerlos en la asset store a un módico precio. Aunque sabemos que no nos sacará de pobres creemos importante poner un precio para valorar el trabajo que ha habido detrás, pero a la vez, poner algo lo suficientemente asequible como para que alguien que intenta crear sus pequeños proyectos pueda acceder al recurso sin arruinarse.

Tomamos esa decisión porqué cuando tuvimos que hacerlos nosotros nos llevó su tiempo y si hubiéramos encontrado algo así ya hecho probablemente hubiéramos comprado el pack; siempre y cuando no fuera un precio excesivo para nuestro bolsillo.

Ya hablamos sobre el tema de los recursos (tanto gratuitos como de pago), y de lo útiles que pueden llegar a ser.

El pack de los peces consiste básicamente en la programación de su comportamiento aunque hemos añadido elementos para poder probarlos y/o utilizarlo si no se tiene el modelo en 3D ni la animación. Así pues, el pack incluye:
  • Programación que define su comportamiento.
  • Modelo en 3D con la animación del movimiento básico del pez.
  • 5 texturas cartoon distintas para los peces.
  • Escena de prueba con varios peces.


No es necesario usarlo todo tal como viene. Cualquiera que compre el pack podrá aplicar el script a cualquier modelo que tenga previamente; no tiene porqué usar nuestros peces. Pero si quiere, también los tiene. Y como los modelos tienen sus UV hechas, podrán crear sus propias texturas y usarlas si no les convencen las nuestras o quieren darles otro estilo.

Añadimos una escena para poder crear un ejecutable web, así cualquiera podrá verlo en acción. Además, el usuario que no sepa como usar los modelos y el script, podrá usar la escena como prefab y jugar con ello para aprender como funciona.

Os dejamos el resultado de esa escena, por si queréis verlo.

lunes, 21 de noviembre de 2016

Peces II. Comportamiento y codificación.

El comportamiento de los peces ha sido la parte de programación más divertida del juego, debido a las premisas que se debían de tener en cuenta.

Su movimiento tenía que ser por toda la zona de agua del estanque y riachuelo y además que no chocaran entre ellos ni con el terreno que limita toda la zona. El límite vertical era la propia superficie del agua, pudiendo sacar un poco la aleta superior. En cuanto a profundidad, tenían que dejar cierta distancia con el fondo del estanque para que normalmente se movieran más por la zona superior y fueran más visibles vistos des de fuera del agua.

Aunque el objetivo no era hacer un simulador con un comportamiento muy real si que trabajamos el comportamiento para que desde fuera del agua diera un resultado creíble.

Antes de hacer el movimiento se buscamos vídeos de referencia de peces de estanque para ver su movimiento y su comportamiento, el cual es un movimiento bastante tranquilo y normalmente impredecible. Podéis ver cómo realizamos el modelo y su animación en el post donde explicamos sus animaciones.

Para los peces se utilizó un Character Controller para controlar mejor su movimiento y las animaciones según su velocidad, para que así, cuando apenas se moviera, la animación del modelo también fuera más lenta que cuando fuera más rápido.

Igual que hicimos con el ninja, los peces también tienen un componente Animator para la animación. Aunque en este caso, como se puede observar en el siguiente gráfico, la gestión de la animación era bastante más simple que el ninja.

Diagrama del componente Animator de los peces.
En este caso el modelo sólo tiene una animación, la cuál se activa siempre cuándo se mueve. Para que visualmente se vea mejor, hay una relación entre la velocidad de la animación y la velocidad del pez, así cuándo se mueve a baja velocidad la animación también es más lenta.

Para hacer un comportamiento más impredecible de los peces se utilizaron iteraciones basadas en la aleatoriedad. Así, por ejemplo, en cada iteración, el pez tiene un 60% de probabilidades de moverse hacia delante y un 70% de girar hacia la derecha o izquierda. Además también se le añade una pequeña probabilidad de movimiento vertical, para que pueda aproximarse a la superficie del agua o pueda sumergirse a cierta profundidad.

En el siguiente video se puede ver una de las primeras pruebas de movimiento, que aunque de tan cerca puede parecer robótico, buscábamos encontrar un comportamiento que desde fuera el agua quedara resultón.



En cada iteración también se controlan todos los objetos que el pez tiene a su alrededor, ya sea el propio terreno del estanque u otros peces que se mueven cerca. Dependiendo de la distancia de los objetos que tiene cerca, al pez se le mandan unas acciones a realizar. Así por ejemplo, si se está acercando al límite del estanque pues se le sube la probabilidad de rotación para que vaya girando para no chocar. Aunque intentando que este giro tampoco fuera un movimiento brusco.

Otro ejemplo sería cuando el pez se mueve en paralelo a la pared del estanque. Si está cerca de esta pared el pez ya no intenta moverse hacia allí porque lo más probable es que colisionara, por lo que o sigue recto o gira hacia dirección contraria.

Para detectar los objetos que el pez tiene cerca en cada iteración se utilizó la función Raycast de la clase Physics de unity, la cual permite, dada una dirección, trazar una línea recta hasta que colisione con un objeto y además saber el tipo de objeto y la distancia que hay hasta él. Esta información es muy útil para saber en todo momento lo que el modelo tiene a su alrededor y por lo tanto actuar correctamente para evitar colisiones.

Finalmente, también se controla la distancia del pez con la superficie del agua y con el fondo del estanque. Así podíamos hacer que siempre se moviese por la parte superior del agua.

Para la presentación final de los peces en el estanque y riachuelo, se colocaron un número de peces adecuado para que siempre se viese movimiento bajo el agua. Además se colocaron unos colliders verticales en algunas zonas para delimitar que los peces no se fueran muy lejos de su punto de partida y para que no se acumularan todos en un mismo sitio y que otros lugares del estanque se quedaras vacío.

Resultado final

En el siguiente video se muestra el movimiento final, que con el efecto de refracción del agua, nos queda un resultado bastante aceptable.



Esperamos que os haya sido útil :).

lunes, 7 de noviembre de 2016

Escenario II. Segunda fase.

Una vez teníamos el escenario en unity, solo había que refrescar los objetos para que el programa detectara las actualizaciones y se refrescara automáticamente. Así llegó un momento donde trabajar se hacía bastante fácil.

Se hacía un objeto, se ubicaba en el mapa y se seguía trabajando. La siguiente actualización del objeto, se exportaba en la carpeta del juego y cuando volvías a abrir unity, ya se podía ver la mejora.

Como os mostraremos en las siguientes capturas, podréis ver que ya hay algunos objetos texturizados aunque algunos no fueran la versión final.

Vista cenital del mapa en fase II.
Vista del mapa en fase II.
En esta fase tanto el ninja como los peces aún están sin animar. Aunque ya se podía ver parte del comportamiento que se creó a partir de la programación y que detallaremos en artículos próximos.

A parte de las texturas del suelo y de las casas, las pequeñas diferencias que se pueden apreciar son objetos nuevos, como la vegetación del estanque y algunas rocas para delimitar zonas.

Realmente parece poco trabajo cuando te pones a listar elementos, y es normal. Casi todo el trabajo que había en este punto era de programación y 3D que aún no estaba incorporado en el mapa.

En la próxima y última actualización del escenario es cuando realmente se podrán ver grandes diferencias :).

jueves, 3 de noviembre de 2016

Peces I. Modelo, rig y animaciones.

De la misma manera que hicimos con el ninja, os contaremos como fue el proceso de los peces. Esta vez es algo bastante más simple.

Para el estanque queríamos incorporar las famosas carpas Koi. Aunque parece que son originarias de China, fue Japón quién las difundió.

Carpas Koi.
Primero decidimos buscar a ver si encontrábamos algún recurso ya hecho que nos pudiera venir bien y ahorrarnos trabajo (para variar). Y aunque alguna cosilla encontramos, al final decidimos hacerla nosotros.

Primero, porqué lo que encontramos que nos podía servir era de pago. No olvidemos que necesitábamos un modelo en 3D con su textura y rig. Eso de por si, ya era complicado encontrar algo gratuito. Como para encontrar algo que también tuviera una animación simple del movimiento de un pez.

Pedíamos demasiado. Así que puestos a meternos en faena, decidimos intentar hacerlo nosotros. Como era algo que no se vería en excesivo detalle al estar en el agua, hicimos algo sencillito pero resultón.

Modelo 3D del pez.
Usamos de referencia un modelo hecho (el verde) que se pareciera lo más posible a la forma de la carpa y modelamos nuestro pez con blender. Como era bastante sencillo se hizo rápido. Después sacamos las texturas haciendo su UV para su posterior texturizado donde usamos varias imágenes para componer una final que tuviera los colores típicos de este tipo de peces. Una vez teníamos una, hicimos de distintos colores para tener más variedad.

Finalmente, creamos un rig y su pesado para poder animar a nuestra carpa.

Rig del pez.
La animación la hicimos rápido porqué no teníamos mucho tiempo, y tampoco no nos obsesionamos con que quedara perfecta ya que no se apreciaría lo suficiente al estar bajo el agua verdosa del estanque. Además el rig que hicimos era muy simplón precisamente porqué no lo vimos más necesario que otras cosas. En cualquier otro tipo de circunstancia o si el juego fuera de pescar peces, hubiéramos tenido que darle mucho más cariño en este paso para poder hacer animaciones más refinadas.

Para poner un ejemplo de lo mucho más que podríamos haberlo hecho, si os fijáis en la cola de una carpa koi veréis un movimiento muy bonito e hipnótico. En cambio el pez que hemos animado parece robótica, como si fuera de madera y no se pudiera doblar.

Para encontrar referencias, nos vimos algunos vídeos de Youtube donde se veían carpas reales en movimiento. También encontramos este tutorial que nos fue bastante útil e interesante. Aunque en nuestro caso solamente constaba del siseo del pez bastante sosegado. Ni siquiera animamos las aletas :(.

Decir los fallos que tiene la animación no es una manera de decir que uno puede hacer el trabajo a medias y nadie lo notará o quedará igual. Eso es una falacia. Cuando nosotros explicamos con detalle que se podía haber hecho mejor lo hacemos porqué consideramos importante reseñar que en un proyecto así, incluso en el más sencillo, hay mucho trabajo y al final tienes que decidir donde quieres poner las pocas horas de las que dispones.

En este caso concreto, como el modelo iba a estar en el estanque, pensamos que no se notarían tanto los detalles y que mejor sería invertir ese tiempo en mejorar las que sí se notarían o en añadir nuevas para dar más riqueza al conjunto.

Volviendo a la animación, de igual manera que con la animación del ninja, se animó sobre el sitio. Luego desde unity, se añadió el comportamiento del movimiento con código. Todo el tema de los peces y su comportamiento final lo comentaremos en un próximo artículo de igual forma que hicimos con el ninja.

A continuación, os dejamos con un pequeño video donde se puede ver la sencilla animación del pez:



Esperamos que os haya resultado útil :).