Jorge Vallejo Blog

Blog del creativo, ilustrador y profesor de videojuegos Jorge Vallejo

cortos

Workflow Unity e IOs : Expotación y subida al App Store

Cuando hablamos del proceso de subida al App Store de un videojuego o aplicación creada con Unity debemos realizar una serie de pasos, lo que denominamos workflow o flujo de trabajo que nos permitirán llegar a buen puerto, es decir, conseguir que nuestro videojuego este publicado en el App Store. El proceso es bastante complejo por lo que he tratado de mostrar cada paso, algunos se pueden hacer antes o después, pero otros deben hacerse secuencialmente, así q es preferible que sigáis el orden a rajatabla para minimizar errores.

Una de las características fundamentales de Unity es la multiplataforma, es decir, la capacidad de poder exportar a diferentes plataformas haciendo un único desarrollo, a pesar de las singularidades de cada una, ello nos permite crear el videojuego por completo en Unity y sólo depender del Xcode para su subida al App Store.

Requerimientos:

Podemos exportar el videojuego desde un Pc, sin embargo el proceso de subida al App Store requiere de Xcode y licencia de desarrollador Apple Developer, Xcode sólo se puede instalar en Mac, ademas de que algunas partes del proceso requieren tener el sistema de llavero de Mac, que viene con los Mac.
La opción mas barata es un Mac mini, que podréis encontrar por unos 600$.
Para crear el videojuego:
Pc o Mac para la creación del videojuego.
Unity
SDK de IOs (Se descarga en el punto 3)

Para la subida al App Store:
Un ordenador Mac
Xcode instalado
Una cuenta activa en Apple , tendremos longeanos varias veces así que tener el password a mano
Estar dado de alta como desarrollador IOs https://developer.apple.com/ , al corriente de pago, actualmente son 99$ al año.
Recomendable:
Tener dos dispositivos para hacer pruebas un iphone y un ipad con IOs 8 instalado y sus cables de conexión.
Nota: Podemos desarrollar el videojuego sin ellos, son para testeo.

Workflow Unity App Store
En Unity
BLOQUE I
1) Desarrollar el videojuego en Unity.
2) Abrir el Panel Build Settings, añadir todas las escenas de nuestro videojuego, estas se pueden arrastrar directamente a la ventana de Build Settings.
3) Seleccionar la plataforma de IOs, Seleccionando IOs y pulsando Switch Platform
Unity colocara las librerías necesarias para la posterior exportación, si no las tenemos instaladas nos aparecerá un botón para descargarlas.
3.1) Pulsar el boton de descarga, una vez descargado, cerramos Unity.
3.2) Instalar el SDK de IOs
3.3) Abrir Unity de nuevo, comprobar que está instalado en Edit-> Preferences -> External Tools (Hacer la ventana más grande si no se ve) Aparecerá Xcode Default Settings
4) Este paso es muy importante dada la política de actualizaciones de IOs, ya que actualmente las apps que se suban deben incluir desarrollo de 64-bits e IOS 8 o superior.
Por lo que debemos ir al Build Settings de nuevo -> Player Settings y en Configuration cambiar Scriping Backend, de Monox2 que viene por defecto a IL2CPP, cuando hayamos seleccionado este sistema de scriping podremos elegir Architecture -> Universal La cual contiene los dos sistemas Armv7 y Arm64.

5) En Player Settings -> Other settings Cambiar el Identificator Bundle , personalmente utilizo la nomenglatura com.nombre_desarrollador.nombre_proyecto la cual me sirve tanto para Ios como para Android.
6) Cambiar el Nombre de la Compañia y del producto, en Player Settings arriba del todo.
7) Añadir iconos y pantallas de presentación, todo ello en el Player Settings.
Nota: Para no trabajar dos veces, y dado que Apple es riguroso con el tema de los tamaños , es interensate acudir a http://help.apple.com/itunes-connect/developer/#/devd274dd925 para ver los tamaños de las imagenes.
8) Repasar cada uno de los puntos anteriores.
9) Crear una carpeta vacía llamada Exportación
10) Crear una segunda carpeta vacia dentro de Exportación llamada Nombre_videojuego_IOs
11) En Build Settings, marcamos Build in Xcode Release y en Development Build marcada .
12) Dar al boton de Build y selecciona nuestra carpeta, la creamos vacía por que eliminara cualquier contenido que tenga.
Llegados aqui tendriamos nuestro videojuego preparado para ser abierto en Xcode.

BLOQUE II
Preparación para subida a App Store , Certificados
1) Nos longeamos en https://developer.apple.com/account
2) Vamos a Certificates
3) Comprobamos que tenemos un certificado de Desarrollador y un certificado de distribución
4) Si no los tenemos, Xcode nos podra generar uno en nuestro primer proyecto, veremos este punto cuando hablemos del proceso en Xcode.
5) Crear un App ID de nuestra aplicación, que será el Bundle Identificator
6) Para poder testear la aplicación, añadir Devices
7) Para la subida al App Store será necesario un Provisioning Profiles -> Distribution
8) Tendreis que bajaros ese Provisioning Profile para luego meterlo en el Xcode.

BLOQUE III
Preparación para subida a App Store en itunesconnect
1) Longearnos en itunesconnect.apple.com
2) Ir a Apps y dar al boton +
3) Rellenar los formularios, tener presente que hay que tener una política de privacidad por cada aplicación o videojuego, que como mínimo vas a necesitar 1 imagen de 1024×1024 del icono del videojuego, una imagen de captura para iphone y otra imagen para iPad que cumpla las especificaciones http://help.apple.com/itunes-connect/developer/#/devd274dd925
4) Calificar el contenido siguiendo el formulario.
5) Poner un precio a la aplicación así como la distribución por países.
6) Rellenar los campos que falten, tener poner un contacto de desarrollador.
7) Podemos ir guardando e ir comprobando si nos falta algo, dando a Enviar para revisión, ya que aun nos falta subir la app, nos apareceran en rojo los campos a completar.

BLOQUE IV
En Xcode:
1) Cargamos el proyecto de Unity, simplemente con abrir nuestra carpeta videojuego_ios
2) Realizamos una primera compilación para ver si no hay errores Con Xcode -> Build
3) Realizamos los testeos necesarios , conectando nuestro iphone o ipad que previamente hemos añadido como Devices en BLOQUE II el punto 6.
4) Cambiamos el Team en General por nuestro Desarrollador
5) En Build Settings cambiamos Code Signing por nuestro Provisioning Profiles creado en el Bloque II punto 7.
5) Compilamos en Product-> Archive
6) Si todo ha ido bien, podremos subir nuestro proyecto al App Store, por lo que es necesario haber realizado previamente la configuración del mismo los pasos del Bloque III.
7) Window-> Organicer es el gestor de subidas al App Store, debera aprecernos nuestra compilación, podemos hacer una segunda comprobación dandole a Validate.
8) Pulsamos en Submit to App Store, atención es muy importante haber realizado los pasos del Bloque II, ya que hay que relacionar la aplicación a subir con su compilación.
9) Iniciamos la subida al Apple Store.

Bloque V
Subida a App Store en itunesconnect
1) Longearnos en itunesconnect.apple.com
2) Sólo nos queda seleccionar nuestra compilación, donde ponga Subida por Xcode o AppLaucher, hay un botón de más para seleccionar la que acabamos de subir.
3) Pulsamos en Enviar para revisión y rellenamos los formularios que nos faltan.

Ahora dependemos de que Apple nos valide la aplicación lo cual puede tardar entre dos días a una semana.
Para mi es un proceso excesivamente complejo, cuantos más pasos hay más posibilidades de que comentamos un error, pero no queda mas remedio que resignarse, tomárselo con calma y hacerlo, ya que con suerte solo tendremos que hacerlo una vez.

Espero que os haya servido, si tenéis cualquier duda, escribirme un comentario.

Un poco de arte Low Poly

isometrico blender

Un poco de arte Low Poly, creado con Blender , estética de colores planos y formas muy poligonales , con pocos triángulos.
La creación de modelos 3D simples con Blender forma parte del Máster en Diseño y Creación de Videojuegos que imparto en iVisual Formación, asi los alumnos pueden crear sus propios modelos sencillos para videojuegos tipo “vista isometrica”

Hearthstone Pelea de taberna heroica: un robo

Pelea de taberna heroicaComo todos los jueves en mi caso, aparece una nueva pelea de taberna, un sistema que estaba bien como estaba pues daba la posibilidad de ganar un sobre gratuito y jugar con mecanicas diferentes.

Pelea de taberna heroica:

Me lo pensé bastante antes de jugar principalmente por su coste 9,99€ o 1000 monedas, sin saber muy bien de qué iba la cosa decidí probar pensando iluso de mi, que en el peor de los casos me darían por lo menos unos cuantos sobres, pues bien , compro y empiezo a jugar a la pelea de taberna heroica, lo primero es crearse un mazo estándar que ademas luego no se puede cambiar cosa que no entiendo , pues en realidad es el mismo sistema de juego que cunado juega por rango en el estándar.

Me hago mi mazo que va a depender de las cartas que ya tenga, es decir, que es exactamente igual al mazo con el juego en el modo estándar.

Comienzo a jugar, por casualidad en la primera partida pierdo la conexión wifi, intento recuperarla con los datos del móvil, pero no se me re conecta, resultado pierdo la primera partida.

La segunda pierdo por una mala decisión contra otro Druida y la tercera me enfrento a un Paladin con todas las legendarias habidas y por haber que me funde, a pesar de que yo también llevo unas cuantos soy un Druida con Malygos..

Total muero en la tercera partida sin haber ganado ninguna, es mi primerito día y ¿que consigo? Un sobre.

He pagado casi diez euros por un #@&%&%& ¿¿sobre??

Sinceramente la Taberna Heroica me parece una estafa:

1) La taberna normal estaba bien, jugabas a algo diferente y conseguías un sobre semanal

2) Es imposible que un jugador novato pueda ganar, ya que se va a enfrentar contra mazos de leyenda y jugadores experimentados

3) 1,79€ o 150 monedas es la Arena, donde mínimo te van a dar un sobre es justo, Casi 10€ de la pelea heroica, por lo menos deberían dar unos sietes sobres, sino es superinjusto y esta fuera de la escala de valor que Hearthstone ha creado.

4) Se supone que ganar 12 partidas te da 50 sobres, 3 cartas legendarias y polvo arcano, digo que se supone por que encima esto no se explica al empezar a jugar, sólo ponen ganaras grandes premios.

Pelea de Taberna Heroica está fuera de la escala de valor que Hearthstone ha creado.

Ganar 12 partidas y sólo perder tres es muy , muy complicado, estamos hablando de que te vas a enfrentar a gente con mazos muy buenos.

CONCLUSIÓN:

Se han cargado la pelea de taberna, que era algo ocasional y divertido, y diferente, para “apostar” a ganar ya estaba la Arena que es más justa pues el mazo se crea con cartas aleatorias y la proporción esfuerzo recompensa esta equilibrada.

No creo que mucha gente lo juegue, yo desde luego no volveré a probarlo.

Hearthstone cambios de equilibrio 6.1.3

Si habéis seguido los anteriores artículos, ya comentábamos que hearstone tiene una política de tener cartas en desequilibrio, que al aportar una gran ventaja las hacen presentes en muchos mazos y crean estrategias basadas en ellos, lo que llamabamos estrategia dominante que hacen que el resto de cartas no se jueguen ya que son dominadas ,por lo que al final tienen que ir haciendo ajustes, y reequilibrar las cartas a fin de que dejen de ser dominantes para estar equilibradas.

Vamos a comentar los cambios que ha habido, y siguiendo las reglas de equilibrio comprobaremos si nos parecen justos o no.

Arma Muerdepiedras

muerdepiedraaumenta su coste a 2, nos parece bien, ya que era una carta demasiado rápida que permitía eliminar muy fácilmente esbirros en el turno 1 y por su bajo coste hacer combos con el terrible arma del Chaman que esa si que me parece una carta desequilibrada “El martillo maldito”.

Golem Totémico

golemPor 3 de mana una carta 3/2 que podía conseguir invocar una 3/4 sin pagar nada mas era una autentica pasada, proporcionaba una ventaja enorme al Chaman con una carta muy barata, sin embargo el cambio reduce mucho el valor de carta, aunque sigue combando bien con la estrategia general del chaman de invocar muchos esbirros y totems, creo que muchos seguidores del mazo Chaman aggro se habran sentido defraudados con este cambio, pero en general me parece correcto.

Llamada de lo Salvaje

invoca

Es una de las mejores cartas de todo el juego, por 8 de mana tenemos Un jabalí 5/2 con cargar , un 5/4 con provocar y 2/4 que otorga +1 de ataque a los demás, realmente era impensable que un cazador no llevase 2 en su mazo, pues es una carta con suficiente poder como para ser legendaria y encima podías llevar 2!!!.

Seguro que se les paso por la cabeza subirla a coste 10, que seria su valor real, pero ya que el mazo de Cazador es bastante rápido han decidido subirla solo 1, lo que no es tan sangrante, y da la oportunidad de prepararse algo mejor, por que a pesar del cambio, sigue siendo muy buena, y seguirá estando en todos los mazos de cazador.

Llamada de lo Salvaje es una de las mejores cartas del juego

Ejecutar

ejecutarEs una carta poderosa pero que necesita ser combada, es decir, necesitamos haber hecho daño al esbirro para poder ejecutarlo, por lo que añadir un punto de coste puede hacernos tener que esperar un turno mas, creo que estaba bien como estaba, el guerreo no tiene tantas opciones de eliminar enemigos y suele ser lento, por lo que este cambio le hace aun mas lento.

Estaba bien como estaba.

Cargar

cargar

Alguna vez me he enfrentado contra un mazo OTK o muerte en un turno, una estrategia que dependía de crear un combo con suficiente daño y que ahora pierde toda su eficacia, ya que la nueva carta impide atacar a la cara, un handicap demasiado grande, que precisamente elimina la ventaja de la sorpresa de la carta, para mi es el mayor error de cambios pues destruyen un tipo de estrategia completamente que requería aguantar de vida hasta poder completar el combo y que ahora no tendrá sentido.

Creo que el juego nunca debe eliminar por completo ese tipo de estrategias, aunque se le haya bajado de coste , viendo claramente la desventaja que supone , ahora es una carta bastante pobre.

Han eliminado todo un estilo de juego el OTK

Sargento Abusón

sargento_abusoEra una carta algo desequilibrada desde el principio , pero que daba mucho juego, por lo que todos los mazos agros y face la llevaban, ahora pierde algo de fuelle pero es el poder de otorgar +2 y su bajo coste lo que realmente dan ventaja, por lo que al mantener estos parámetros, han conseguido equilibrarla bien. Seguirá estando presente, pero ya no abusara tanto (Chiste facil).

 

Yogg-Saron, Fin de la Esperanza

yogg

Mas que un cambio de equilibrio se trata de ajuste de la lógica del juego, si Yogg muere es logico que deje de tirar hechizos por lo que el ajuste es correcto.

Para mi Yogg es una de las cartas mas divertidas por su componente aleatorio, no creo tanto que pueda proporcionar un giro de 180 en la partida, aun que alguna vez ocurre, como dar un empujon, la mayoria de las veces en las que Yogg era mi unica salvacion he muerto, mientras que si llevaba algo de ventaja y lo usaba me ha proporcionado mas beneficios que hadicaps.

 

Y vosotros que pensáis ¿Estáis de acuerdo con estos cambios? Deja tus respuestas en los comentarios.

Hearthstone: Diseño de juego II Mejores Armas

martillo malditoContinuamos viendo Hearthstone desde una perspectiva de análisis y teoría de videojuegos, que también servirá a todos los jugadores de Hearthstone para conocer mejor el juego y así poder tomar mejores decisiones sobre la elección de cartas, como habíamos visto en anteriores artículos
Hearthstone: Diseño de juego II Armas y Hearthstone: Diseño de juego I Balance o Equilibrio
Hearthstone tiene tendencia a crear cartas con valores superiores a los de equilibrio, por lo que siguiendo con la temática de las armas vamos a ver las mejores armas del Hearthstone,  las de la clase Guerrero las teneis en este articulo.

Mejores armas del Chaman

Garras espiritualesGarras espirituales

Por 1 de mana, teóricamente deberíamos de tener entre un arma 1/2 ,2/1 tenemos ya de serie un arma 1/3 que con daño con hechizos se puede convertir en una 3/3 , es un arma con un coste muy bajo y muchísimo potencial, q nos puede salvar en los primeros turnos, se puede combinar muy bien con Arma Muerdepiedras, este arma hace que el pobre Pícaro con su poder de héroe coste 2 un arma 1/2 se eche a llorar.

Coste Daño Durabilidad Poder
3 3 2 Tiene +2 p. de ataque mientras tengas daño con hechizos.

 

 

Martillo malditomartillo maldito

Por 5 de mana y 2 sobrecargas tenemos una carta 2/8 , es decir por 7 de mana una 2/8 esta bastante equilibrada, sin embargo al

leer la descripción nos damos cuenta de que es muchísimo mas que eso, es un arma con viento furioso lo que le permite atacar dos veces por turno, tiene 16 daños potenciales, haciendo 4 por turno, si esto no fuera suficientemente bueno el combo con Arma Muerdepiedras es brutal, ya que se convertiría en una 5/8 durante un turno pudiendo hacer 10 de daño.

Es una de las mejores armas, sino la mejor, primero por que si misma ya que es un arma súper barata 5 polvos y tremendamente efectiva y segundo por que al tener un coste 5 es fácil combarla.

Coste Daño Durabilidad Poder
5 2 8 Viento Furioso, Sobrecarga: (2)

 

 

Cazador

Arco de cuerno de águilaarco

Comparada con el arma del Guerrero Hacha Ígnea que mencionábamos en el anterior artículo 3/2 por 3 de mana seria un poco floja, pero el combo de aumentar la duración con el uso de secretos, casi todos los Cazadores llevan mínimo un par de ellos, la convierte en una carta interesante, sobre todo si tenemos en cuenta que el 80% de los cazadores van a hacer el mayor daño posible con los mínimos turnos.

Coste Daño Durabilidad Poder
3 3 2 Obtiene +1 p. de durabilidad cada vez que se revela un secreto amistoso

 

 

Paladín

Campeón de Veraplata

campeon VeraplataUn arma versátil con un coste equilibrado, una de las armas que todo Paladín que se precie lleva, y además te cura, que mas se le puede pedir.

Coste Daño Durabilidad Poder
4 4 2 Cada vez que tu héroe ataca, recupera 2 p. de salud.

 

 

Espada de Justiciaespada de la justicia

Por  3 de coste 1/5 es floja, nadie la llevaría pues el paladín tiene otra carta mas barata Justicia de la Luz que por 1 es 1/4 otra vez
oigo lloriquear al Pícaro, pero es que Espada de Justicia comba de forma genial con muchas cartas de Paladín, y con cualquier carta que invoque varios esbirros a la vez como Templaria Penumbría. Una carta que da ese punto de vida extra tan necesario en los primeros turnos.

Coste Daño Durabilidad Poder
3 1 5 Cuando invocas a un esbirro, el esbirro obtiene +1/+1 y esta arma pierde 1 p. de durabilidad.

 

 

Pícaro

Es curioso que una clase cuyo poder es poner un arma, bastante cutre por 2 de mana 1/2 , tenga luego unas armas con tan poca gracia, quizá la mejor arma sea

Hoja de Asesinohoja de asesino

Que si bien es un arma algo floja por que ya en el turno 5 vamos a necesitar mas daño puede combar muy bien con Veneno mortal pudiendo hacer 6×4= 24 daños

Coste Daño Durabilidad Poder
5 3 4

hoja_envenenadaComo estamos hablando de diseño de juego hay que comentar Hoja envenenada como una de las peores armas, me estas diciendo que por 4 de mana tengo 1/3 que voy a tener que gastarme otros dos de mana para hacerla un poderosísimo 2/3? Es en serio? Lo siento Pícaro pero sigue llorando.

 

 

Conclusión:

En mi opinión Martillo maldito es la mejor arma del juego, ya que es una carta lo suficientemente poderosa como para cambiar el rumbo de la partida.

La clase Pícaro siendo una de las cuatro que puede llevar armas de serie (algunas cartas permiten ponerse armas a cualquier clase) tiene unas armas muy pobres, que con las ultimas actualizaciones van siendo por comparación todavía peores, lo que nos hace darnos cuenta de que muchas cartas de Hearthstone dan mucha mas ventaja a unas clases sobre otras, lo que redunda en un desequilibrio del juego, atendiendo a costes de mana/ eficacia del arma ,afortunadamente hay muchas opciones dentro de las barajas para crear estrategias y combos que hagan funcionar las armas, pero mi consejo a la hora de decidiros es:

Un arma a partir de turno 5 pierde mucha efectividad , probablemente recibamos mas daño del que ejerzamos por lo que es preferible tener armas rápidas de coste bajo.

No es aconsejable llevar demasiadas armas (mas de tres), pues sólo podemos llevar un arma a la vez y las tendremos esperando en la mano.

¿Y cual que crees que es el mejor arma? ¿Y la peor? Déjanos un comentario.

 

Hearthstone: Diseño de juego I Balance o Equilibrio

hearthstoneTengo que reconocer que el juego de cartas Hearthstone es una de mis pasiones, me enganche desde el principio recordando los viejos tiempos cuando jugaba al magic the gathering, en ordenador, cuando salio el juego para movil me lo pille ilusionado pero como no me llego a engachar, Hearthstone más sencillo en cuanto a la gestion mana y el sistema de instantaneos si lo consiguió, la facilidad para jugar en móvil, tablet o pc con una sola cuenta es uno de sus grandes aciertos. También soy critico con muchas cuestiones del juego, sobre todo de su modelo de negocio, que como jugador no me acaba de convencer pero que se ve que funciona claramente con 20 millones de jugadores , y unas cifras de 20 millones de dolares al mes.

En este articulo no voy a hablar de mazos y estrategias, sino del propio diseño del juego, ya que una de las cuestiones mas importantes de todo videojuego es el balance o equilibrio de fuerzas, y que en un juego de estrategia por turnos como es el Hearthstone es fundamental.

¿Qué es el balance o equilibrio de elementos?

Imaginemos que eres un guerrero tienes fuerza 1 y llevas una espada básica +0 Fuerza ,en este maligno mundo que llamaremos Mor,  la mayoría de los monstruos tiene 5 puntos de vida, te enfrentas a uno, por simplificar, cada ataque que realizas es la suma de tu fuerza más el bonus del arma, así que para matarle tienes que golpearle mínimo 5 veces.

Al matarle registras su cuerpo , un clásico del mundo del videojuego, y te encuentras con un arma +5 Fue, ahora eres un Killer, al  volver a enfrentarte con otro enemigo lo ¡mataras de un golpe!

¿Que ha ocurrido? Has encontrado un arma que te aporta una gran ventaja, por que en la escala del juego has pasado de tener que asestarle 5 golpes a 1. Si ahora te enfrentases a un monstruo grande de 10 puntos de vida, lo matarías de dos golpes siendo muy fácil.

Ese +5 del arma, ha desequilibrado completamente la escala del juego haciendo que la ventaja del jugador sea enorme.

Balance o Equilibrio es conseguir que las ventajas y desventajas que puedan proporcionar objetos, armas o en nuestro caso cartas, no desequilibren el juego permanentemente. Sino que se pueda volver a un estado 0 o de equilibrio.

Siguiendo con nuestro ejemplo, si el arma más 5 se destruyera tras usarla, estaríamos consiguiendo por un lado que el equilibrio del juego se recupere , por otro que el jugador se piense cuando será más útil usarla , es decir, planteándose estrategias.

Podemos extraer una primera regla dentro del balance:

Si un elemento genera desequilibrio tanto en positivo como en negativo , este debe ser temporal, su duración ira acorde con el grado de desequilibrio.

Por ejemplo:

Arma +5 / 1 turno. Arma +4 /2 turnos. Arma +3/3 turnos.

Como vemos un Arma 3/3 ofrece una buena ventaja, quizá demasiado buena, por lo que el diseñador de juego podría pensar en reducir en 1 el número de turnos y tener un Arma +3/2 turnos, pero que ocurre si la comparamos con la 4 /2 vemos que queda en desventaja, esto significa que si tuviera que elegir con cual quedarse siempre se quedaría con la 4/2, razón por la que todo el mundo llevaría ese arma, ¿cuantas veces has visto jugadores que llevan exactamente el mismo equipo? . Es lo que se llama estrategia dominada, cuando una estrategia es mejor o peor en todos los sentidos que otra.

Sigamos podríamos estar tentados de eliminar nuestro arma 3/2 , pero aun nos queda un as en la manga, el coste.

Hasta ahora estábamos regalando armas, como si nos sobraran, Ahora imaginemos que las tienes que comprar, con el dinero que has conseguido limpiamente matando paisanos.

El coste de una 3/2 podría ser de 200 monedas frente al coste de una 4/2 de 300.

Ahora si que parece estar equilibrado, si quiero un arma un poco mas fuerte he de pagar más y así conseguir mas ventaja.

El coste de adquisición de un elemento también nos sirve para equilibrarlo.

Hemos resuelto el problema del equilibrio pero tenemos un problema de monotonía, ya que un arma 3/2 y una 4/2 son bastante parecidas, el jugador preferirá tener mayor variedad y que las estrategias que pueda tener no se parezcan excesivamente por lo tanto un nuevo arma  podría ser 5/2 por 500 monedas.

Como vemos el balanceo es complejo, puesto que hay que tener en cuenta muchos factores y aun no hemos comentado nada de los combos.

Lo iremos viendo en sucesivos artículos.

¿Conoces algún arma , artefacto etc que desequilibro completamente el Hearthstone u otro videojuego? Dejanos tu comentario.

Generando Iconos para Apple Store y Xcode

Una de las tareas a mi parecer más pesadas es la de tener que generar todos los iconos que nos piden para poder subir nuestra aplicación al Apple Store desde Xcode, y es que en Apple les gusta el diseño purista por lo que tenemos que tener preparados los iconos con su resolución especifica, y no podremos hacer como en Android donde con tres resoluciones de icono de la aplicación lo resolvemos sino que tenemos que tener toda una pila de iconos ,tanto para la App como para su publicación en el Apple Store.
Afortunadamente hay gente generosa por el mundo, y gracias a los scripts de photoshop podemos exportar rápidamente los iconos partiendo de un primer diseño.

Pasos para exportar a los diferentes tamaños de iconos requeridos en el Apple Store desde Photoshop.
1) Bajaros https://gist.github.com/appsbynight/3681050 , si teneis cuenta en github darle las gracias al autor.
2) Crear el icono padre que debe ser de exactamente 1024×1024, en PNG.
3) Cargar el script en Photoshop mediante -> Archivos-> Secuencia de comandos -> Explorar
4) Elegir el icono padre, el de 1024
5) Elegir la carpeta de salida.
6) Vuala! los iconos creados.

POWER UP
Podéis editar fácilmente el script copiando y pegando en la declaración del array de icons , simplemente modificar la resolución,que siempre sera cuadrada y el nombre. Y listo podréis hacer una pila de iconos en unos segundos.
[...]
var icons = [
{“name”: “Icono_1024″, “size”:1024},

Si te ha gustado este post deja tu comentario.

Desarrollando para IOs y sobrevivir

Escribo este post para dejar constancia de la frustración que muchas veces sentimos los que desarrollamos para IOs , aunque sea la aplicación más sencilla que se pueda echar uno a la cara. Lo difícil debería ser hacer el videojuego , simulador o aplicación y no los rollos que se traen para poder subirla al Apple Store y es que todo el proceso para publicar no sólo es difícil sino que encima, se les ocurren cosas tan bonitas como cambiar el certificado de autentificación obligando al desarrollador a tener que volver a instalarlo, sin explicar minimamente como debe ser el protocolo.

https://developer.apple.com/support/certificates/expiration/

Básicamente el Apple Worldwide Developer Relations Intermediate Certificate expiro el  14 de Febrero de 2016, lo que significa que tras esa fecha, adiós amigo, deberéis eliminar el certificado que tengáis instalado e instalaros el nuevo.

Una gracia bastante particular, ya que en mi caso con ya mas de cuatro años como desarrollador Apple, que queda muy bonito pero que es un mundo de frustraciones y peleas con el código, resulta que no tienen la decencia de avisarnos de un cambio tan importante y que tienen a los desarrolladores varias horas e incluso días dando vueltas como peonzas sin encontrar el fallo, y cuando lo descubres, gracias algún foro lleno de quejas de otros desarrolladores, aun tienes que pegarte con el llavero de Mac para que los certificados sean reconocidos, tanto en usuario como en sistema.
Sinceramente creo que a día de hoy son las aplicaciones las que dan un valor añadido a un móvil, y prácticamente todo el valor a una tableta, así que ya podían tener un poco mas de consideración para con los desarrolladores, por que esos días que se pierden haciendo tramites, los deberían pagar los de Apple.

Unity – Desactivar botones del Canvas

Nunca debéis subestimar la capacidad del usuario para romper el código, y es que si le dejáis que pueda por ejemplo apretar todos los botones mientras un código se esta ejecutando prodeis tener muchos problemas o hacer que el juego casque o se cierre.
Yo llegue a la conclusión de que uno de los mejores tester era la sobrina de mi novia, capaz de hacer cosas tan chungas como apretar varios botones a la vez a una velocidad increíble, ¡destruyéndolo todo!
Para ello casi siempre, lo ideal es controlar bien el nivel de interacción, siendo nosotros los que controlamos que puede hacer el usuario y en que momento puede hacerlo, por lo que activar y desactivar botones sera algo sumamente común en nuestros proyectos.

Primero tendremos que tener nuestros botones guardados en un Array, ya sea por que los hemos metido por referencia publica, es decir , hemos declarado un public Button[]Boton_array; o bien por que los cogemos de un padre Button[]Boton_array=padre.GetComponentsInChildren Acordaros de la s del GetComponentsInChildren que extrae el array de elementos del padre.
Luego simplemente recorreremos nuestro Array y lo pondremos interactable a false.
foreach (Button miboton in Boton_array) {
miboton.interactable=false;
}

También podríamos ponerlos enabled en false, la diferencia es que enabled suele llevar asociado un cambio de representación es decir, un sprite asociado a ese estado y a lo mejor no nos interesa que se vea, muchas veces desactivamos botones durante unos segundos simplemente para evitar que el usuario siga interactuando.

Finalmente donde queramos que pueda volver a usar los botones
foreach (Button miboton in Boton_array) {
miboton.interactable=true;
}

En la fase de testeo es fundamental dejar el juego a alguien que no sepa como va la mecánicamonkey_testing
, ya que nosotros mismos consciente o inconscientemente tenderemos a seguir un patrón estable.
El mejor tester es un MONEKY!!

Unity Crear una matriz o list de elementos aleatorios que no se repitan

Vamos con un poco de código que seguro, que ha mas de uno le ha dado quebraderos de cabeza.

Objetivo: Crear una función que nos permita extraer elementos aleatorios y que estos no se repitan.

Lenguaje: Unity C#

Primero declararemos
int [] indicesArray = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
List auxiliar_indices = new List();

El Array indicesArray contiene los numeros que queremos que salgan.
List es un superarray es decir, un objeto tipo List que tiene sus propias funciones que nos ayudaran a gestionar los Arrays.
Para usar los List debeis tener importada la libreria using System.Collections.Generic
using System.Collections.Generic;

Ojo: Cuando declaramos el List hacemos una llamada al constructor, que no se os olviden () al final.

Ahora necesitamos pasarle nuestra matriz al List.

En la funcion Star() o el Awake le pasaremos nuestros indices.

auxiliar_indices.AddRange(indicesArray);

Ahora vamos con la función que es muy sencilla, para entenderla bien tenemos que pensar en lo que estamos tratando de crear, queremos que la función nos devuelva de forma aleatoria uno de los elementos de la matriz, pero que si la llamamos mas veces ese numero no se repita, podriamos tomar dos caminos, podríamos sacar el numero aleatorio y guardarlo en otro Array o List , así cuando sacásemos el siguiente comprobaríamos primero si esta en el Array auxiliar y si no esta lo guardamos, el problema de este sistema es que tendremos que evaluar muchas veces.
La segunda opcion es pensando como funciona el mundo real, si tengo un bombo con 16 numeros, saco un numero y simplemente no lo vuelvo a meter en la siguiente tirada o lo elimino del bombo, este proceso va descartando paulatinamente hasta que sólo queda un numero en el bombo.
Llevado a C# seria:

public int GetUnicoAleatorio(){

int rand = Random.Range(0, auxiliar_indices.Count);
int value = auxiliar_indices[rand];
auxiliar_indices.RemoveAt(rand);
return value;
}
Extra en indice aleatorio con Random.Range(0, auxiliar_indices.Count);
Lo almacenamos en value
Sacamos la bola del bombo eliminando el indice con RemoveAt
Finalmente devolvemos la bola extraída.
Os dejo todo el código, con un ejemplo que se podría hacer más genérico para conseguir extraer elementos aleatorios de un Array sin repetir ninguno:

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

public class Bombo : MonoBehaviour {
int [] indicesArray = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
List auxiliar_indices = new List();

void Start () {

auxiliar_indices.AddRange(indicesArray);
}
public int GetUnicoAleatorio(){

int rand = Random.Range(0, auxiliar_indices.Count);
int value = auxiliar_indices[rand];
auxiliar_indices.RemoveAt(rand);
return value;
}
void Extraebolas(int bolas){
for (int i=0; i<bolas; i++) {
Debug.log(GetUnicoAleatorio());
}
}
}

Espero que os haya servido de ayuda.

Teoría de videojuegos: Esfuerzo – Recompensa

objeto legendario diablo III

Dentro del Máster en Desarrollo y Programación para Videojuegos impartido en iVisaulFormacion en Valladolid , no sólo enseño como utilizar Unity sino que poco a poco voy explicando Teoría de videojuegos , un fundamento teórico que sustenta la creación y el desarrollo de videojuegos como comenta en Jesse Schell en “The art of Game Desing” un desarrollador de juegos es como un arquitecto que tiene conocer todo sobre estructuras y materiales , pero no olvidar nunca que construye casas para personas, es decir, conocer al jugador , como piensa , como actúa , como siente es una parte fundamental del desarrollo de un videojuego.

Uno de los objetivos de todo buen videojuego es que el jugador se mantenga motivado, para lo cual es necesario recompensar su tiempo y esfuerzo, de hecho lo ideal es que el esfuerzo sea proporcional a la recompensa.

Esfuerzo mayor que recompensa:

Si hacemos que el jugador tenga que esforzarse mucho y la recompensa es pequeña se sentirá frustrado y posiblemente desista de la tarea, o una dificultad excesiva le lleve a dejar de intentarlo.

Recompensa mayor que esfuerzo:

Si la recompensa supera al esfuerzo, se percibe como inmerecida y además podría producirse un desequilibrio es por eso que normalmente los videojuegos ajustan los golpes de suerte mediante probabilidades, es decir, si por ejemplo cuando se acaba con un enemigo pudiéramos conseguir una espada con un bonus muy alto y pero no ha sido un gran esfuerzo en tiempo, estrategia, acumulación de experiencia etc desastibilizariamos el juego. Por eso normalmente se ajusta la consecución de objetos con probabilidades así, la probabilidad de conseguir un objeto bueno suele ser de un 10% y la de uno legendario un 0,1% aun que estas probabilidades no suelen ser fijas sino que pueden reajustarse en función del comportamiento del jugador, para que no se dedique asesinar a toda una raza con la esperanza de encontrar objetos legendarios o masacrar el ganado en busca de puntos de experiencia.

Esfuerzo proporcional a recompensa:

La situación ideal es en la que el esfuerzo y la recompensa van de la mano, así el jugador lo asume como algo justo y se mantiene motivado.

Tipos de recompensas:

Prácticamente cualquier cosa que consiga mantener motivado al jugador, haciéndole avanzar puede ser una recompensa por concretar:

  1. Recompensas materiales:

Son aquellas que son cuantificables y que poseen una escala de valor.

Puntos, Dinero, Joyas, Objetos de valor, Armas, Armaduras, Pergaminos.. en general cualquier objeto que haga que el jugador mejore o ayude a mejorar a su vez otro objeto volviéndolo más poderoso, objetos que le ayuden a avanzar tales como llaves, mapas, pases etc.

Puntos de experiencia, adquisición de unas habilidades, adquisición de compañeros, refuerzos etc.

Naves y objetos que le ayuden a moverse más rápido por el mundo.

Desbloquear zonas especiales que sólo se consiga acceder tras completar una misión.

Zonas de bonus o minijuegos.

Construcciones que le permitan avanzar en investigaciones, almacenar más objetos, construir mejores ejércitos etc.

Logros o medallas, son objetos inmateriales que se desbloquean al conseguir misiones parciales o que se dan para destacar alguna labor conseguida, por ejemplo conseguir 1000 monedas, a veces van a acompañados de recompensas materiales.

2. Recompensas Inmateriales:

Animaciones y minivideos, recompensar al jugador con una escena animada, pude ser suficientemente motivador.

Alcanzar un objetivo del personaje secundario, si hemos conseguido empatizar con un personaje secundario conseguir que alcance su objetivo puede ser una buena recompensa.

Alcanzar un objetivo del personaje principal, cumplir una venganza por ejemplo , castigando al malvado puede ser una buena recompensa.

Rangos: Aumentar el reconocimiento o prestigio dentro del propio juego, mediante los rangos donde pasemos de ser desconocidos a conocidos , famosos etc.

Poder: Ir aumentado nuestra influencia, empezamos como simples soldados y ahora tenemos todo un ejercito.

Y asi tendriamos un largo etc, ¿Se te ocurre alguna recompensa más? , deja tu comentario.

Proyecto III: Videojuego tipo Escape Room con Unity

 

El siguiente proyecto que se realizó Máster en Desarrollo y Programación para Videojuegos impartido en iVisaulFormacion en Valladolid, fue un videojuego y tipo Escape Room , en estos videojuegos el jugador tiene que tratar de conseguir salir de una sala, habitación, casa etc para ello deberá resolver una serie de puzzles, los cuales pueden ser puzzles normales combinaciones de elementos , encontrar pistas en escenario y realizar clics en zonas concretas. La historia suele ser confusa: apareceremos en una habitación sin entender muy bien porque estamos allí ni cómo salir.

Lo primero que hicimos fue realizar un estado del arte para ver cómo eran los videojuegos Escape  Room, así comprobamos que muchos videojuegos  de este tipo, no contaban con un entorno 3D sino que simplemente utilizaban imágenes, nosotros decidimos crear varios niveles en 3D, profundizando tanto en la inversión del jugador como en la ambientación del juego. 

Realizamos una primera reunión de póquer Scrum , para evaluar las tareas y determinar el tiempo que tendríamos para cada fase del proyecto.

Así marcamos un sprint de una semana para poder conseguir un videojuego tipo Escape Room en fase beta, creando un mínimo producto viable de tres niveles, suficiente para comprender la mecánica del juego y ver sus posibilidades.

Tras realizar el estado del arte, realizamos algunas tareas de prediseños del juego creando rápidamente mapas de los niveles, determinando los elementos de interactuación que serían seis botones creados en fase de diseño en vez de por codigo mediante Canvas más un botón generado a través de la combinación de otros dos.

En esta fase de prediseño los alumnos aportaron sus ideas al juego los cuales fueron fueron recogidas en un documento, así y en base a la limitación de tiempo marcada por el sprint determinamos realizar algunas de las ideas propuestas por los alumnos e integrarlas dentro del videojuego.

Fase de diseño: La mejor forma de trabajar fue dividir los niveles entre los alumnos de tal forma que cada alumno pudiera crear su propio nivel y después integrarlos todos en el videojuego, aprendiendo a trabajar en equipo.

Unity está especialmente pensado para poder dividir el trabajo entre varias personas , cada alumno pueda exportar un paquete  unitypackage , el cual al ser importado de nuevo en otro proyecto analiza los nuevos componentes, dos días antes de la finalización del sprint ya teníamos el juego integrado.

Se creo un menú integrado generado con un Canvas siempre visible donde irían apareciendo los diferentes objetos conseguidos, los cuales aparecerían como botones para interactuar con el escenario.

Los alumnos aprendieron a construir niveles y también empezamos a ver algo de texturas, contábamos con muy poco modelos por lo que era necesario poder modificar las texturas para dar sensaciones diferentes, Como comentaba en otro artículo videojuegos y memoria visual , debíamos ser conscientes de la monotonía visual que podría acarrear el uso de elementos repetidos ,sin embargo en este caso esa monotonía contribuye a crear un ambiente opresor que forma parte de la ambientación del juego.

Dentro de las mecánicas de control, los alumnos aprendieron a crear zonas calientes, esto es , zonas que cuando el jugador entra suceden eventos, gracias a los disparadores o trigger, programar estas zonas resulta bastante sencillo y aporta una gran flexibilidad respecto a las opciones de las que disponemos como diseñadores de videojuegos, ya que podemos controlar que sonidos se activaran en una determinada zona, poner una descripción etc.

Hasta aquí este primer articulo sobre la construcción del videojuego Escape Room, próximamente escribiré otro articulo sobre el desarrollo del juego, cualquier comentario o duda sobre la creación de este tipo de videojuegos estaré encantado de reponderlo.

Escape Room con Unity3D

Proyecto II Movimientos de cámara con Unity

El segundo proyecto que los alumnos del Máster en Desarrollo y Programación para Videojuegos impartido en iVisaulFormacion en Valladolid, han realizado es una pequeña aplicación hecha con Unity,donde podían controlar una cámara en un entorno 3D, para empezar explique brevemente los principales tipos de planos cinematográficos: Plano Detalle, Primer Plano.. etc hicieron un primer ejercicio colocando la cámara mediante scripts en C# , descubriendo lo complejo que podía ser animar la cámara mediante funciones más alla de la utilización de una interpolación con Math.Lerp , por lo que comenzamos a ver movimientos de cámara de cine , como Grua, Travellings etc, las cuales serian creadas mediante Animation y controladas por maquina de estado, un Animator, después crearon un pequeño menú con GUI integrados, añadieron algo de programación para controlar que animación de cámara tenia que ponerse al hacer click en cada botón.

Os dejo un vídeo, grabado directamente de sus equipos donde se puede ver lo que realizaron los alumnos, parece que a todos les gusta que la cámara se mueva rápidamente.

Presentación creación y desarrollo de videojuegos con Unity3D

Aquí os dejo el video donde explico visualmente lo que daremos durante el curso de creación y desarrollo de videojuegos, haciendo especial hincapié en el motor Unity 3D y en los videojuegos desarrollados con esta plataforma. Os recuerdo que estare explicando más detalladamente los conetidos del curso Creación y desarrollo de videojuegos el Martes 8 de Septiembre a las 18:00 y el Martes 15 de Septiembre a las 12:00 estaré en la escuela de formación en nuevas tecnologías ivisualformacion en Valladolid.

Clases de Desarrollo y creación de videojuegos en iVisualFormación

curso_videojuegos

Con gran placer os comunico que el día Martes 8 de Septiembre a las 18:00 y el Martes 15 de Septiembre estaré en la escuela de formación en nuevas tecnologías ivisualformacion en Valladolid dando un charla sobre el master en Desarrollo y creación de videojuegos que impartiré a partir de Octubre en el mismo centro.

Y es que mi labor dentro de E2E4 Media como director de creatividad e innovación me ha ido llevando poco a poco hacia el lado mas tecnológico de la creación de contenidos, pero sin duda lo que ha marcado un antes y un después ha sido encontrarme con Unity 3D, un motor pensado, y muy bien pensado para el desarrollo de videojuegos, que me permite volcar todos mis conocimientos en la creación de videojuegos de una manera mucho más sencilla que con Eclipse o con Xcode, que son programas orientados a la creación de aplicaciones y con las que la creación de juegos siendo posible se complicaba enormemente.

Os invito a que acudáis esos días a las explicaciones que daré sobre como adentrarse en el maravilloso mundo de la creación de videojuegos.