martes, 19 de abril de 2016

Pokémon Battle Royale - Introducción

Pokémon Battle Royale
(Título no definitivo)

Introducción
Hace aproximadamente una semana descargue en mi celular una app llamada “Clash Royale” desarrollado por la empresa Supercell (la misma de Clash of Clans) el cual contenía los personajes de su predecesor con un gameplay algo peculiar, pues era una combinación de un juego de cartas con estrategia en tiempo real, la forma de juego en realidad es simple y tiene una curva de aprendizaje bastante intuitiva sin embargo no quita el hecho de que sea difícil de dominar con los constantes ajustes o balanceo.

Debido a que el modelo del juego es “Freemium”, es decir, es free to play pero para poder avanzar a un ritmo constante debemos de pagar por gemas lo cual hasta cierto punto es entendible, pues el servidor necesita mantenerse con algo y no solo las gracias, pero como sea, el punto es que la forma de jugar me gusto bastante y quería desarrollar algo parecido, no por ganar dinero ni algo por el estilo, sino por el hecho de que quería jugarlo cuando quisiera, donde quisiera y con quien yo quiera además de poder progresar a mi propio ritmo sin estar atado al tiempo para poder desbloquear más personajes o recursos. La idea es imitar el gameplay de Clash Royale, pero surgió la cuestión entonces, ¿En qué me sostendré para hacerlo? (debido a que no se hacer gráficos) y ¿Cómo creare o definiré a los personajes? (Pues no tengo un universo en el cual poder crear los personajes).



Esas 2 preguntas fueron esenciales para comenzar a investigar y delimitar mucho el rango de búsqueda y navegando por internet buscando imágenes de juegos ya hechos me topé con los de Pokémon Mystery Dungeon para la consola de Gameboy Advance y curiosamente tenia sprites de los pokémon caminando o ejerciendo alguna acción en 8 direcciones y entonces pensé “En esto debo de basarme juego”, así pues comencé a planear en mi cabeza más o menos como sería el gameplay, pues en el universo de pokémon cada ser es de un tipo elemental y es fuerte a otro tipo y a su vez débil a otro tipo elemental. Lo que se me ocurrió era que cada pokémon tuviera 2 acciones (movimientos) en el cual uno fuera de soporte (efecto) y el otro fuera ofensivo (atacar), además en el TCG de pokémon para que los pokémons pudiesen hacen un movimiento deberían tener la energía elemental para poder realizar algún movimiento, así que aquí lo que haré será jugar con eso para poder lanzarlos a la batalla.

sábado, 5 de septiembre de 2015

Abstrayendo un Pokémon

Para comenzar con la programación sobre mi proyecto de Pokémon, tengo que comenzar con algo esencial para el juego y lo primero que pensé fue en realizar el sistema de batalla, para esto decidí dividir en partes lo que se puede apreciar en la batalla.

En primera instancia la batalla comienza acercándose los dos entrenadores (tu y el oponente) mostrándonos la cantidad de Pokémons disponibles en la party, luego de una breve introducción o dialogo, a continuación el oponente lanza su primer pokémon (disponible) en la party y después tu lanzaras tu primer pokémon (disponible) y ya tendremos las 4 acciones disponibles (Luchar, Pkmn, Item, Huir). En el visor principal, donde se centra toda la acción visual de la batalla el pokémon oponente se encuentra ubicado en la parte superior derecha y su indicador de HP adyacente a su izquierda, mientras que tu pokémon se encontrara ubicado en la parte inferior izquierda de la pantalla y su indicador de HP adyacente a su derecha.

Siento para mi que lo primero que debo de hacer es hacer una abstracción total del sistema y comenzar con abstraer toda la información de un pokémon, así que comencé a hacer una pequeña investigación sobre como se compone estas criaturas fantasiosas, debo aclarar que todas las estadísticas, datos y  demás estarán basados netamente en la primera generación de juegos (Red, Green, Blue y Yellow), esto se traduce a que deberíamos de esperar los
primeros tipos de pokémons, es decir:
 -Agua
 -Bicho
 -Dragón
 -Eléctrico
 -Fantasma
 -Fuego
 -Hielo
 -Lucha
 -Normal
 -Planta
 -Psíquico
 -Roca
 -Tierra
 -Veneno
 -Volador

Solo que se utilizara el formato actual de las tablas efectividad, explicare en otra publicación.

Ahora pasemos a abstraer un pokémon netamente dicho (de primera generación).

  • -Nombre: Todo pokémon debe de tener un nombre (científico), o de uso común, Pikcahu, Charmander, etc.
  • -Mote: Todo pokémon tiene la posibilidad de recibir un 'Mote' (Nick), solo si el entrenador decide darselo.
  • -N°: Todo pokémon debe de tener un número asignado a la pokédex, el cual es representativo.
  • -Tipo 1: Tipo 1 o tipo principal, todo pokémon debe de ser de un tipo elemental, de los 15 disponibles.
  • -Tipo 2: Tipo 2 o tipo secundaria, todo pokémon puede o no tener un tipo elemental secundario.
  • -OT: 'Original Trainer' o 'Entrenador Original', Todo pokémon debe de tener asignado un OT, pues fue el entrenador que lo capturo.
  • -IDN°: El número de ID que identifica al pokémon, en teoría debería de ser único para cada uno, y consta de 5 dígitos.

//Estadisticas de combate

  • -Ataque: Representa el valor de ataque físico.
  • -Defensa: Representa el valor de defensa físico (reduce el daño recibido por un golpe físico).
  • -Velocidad: Representa el valor de velocidad del pokémon (determina que pokémon atacara primero y quien segundo).
  • -Especial: Representa el valor y defensa especiales.

Estas 4 estadísticas pueden ser aumentadas y/o disminuidas durante el combate temporalmente.

  • -PS: Representa la salud del pokémon, si esta llega a 0 entonces el pokémon se debilitara y saldra de combate.

//Estadisticas especiales

  • -Ratio de captura: 45
  • -Imagen representativa: Es la imagen visual que representara al pokémon en cuestión (para saber de que pokémon se trata independientemente del Mote del pokémon).


Hay que recordar que cada pokémon cuenta con la posibilidad de aprender 4 movimientos a la vez y utilizarlos en batalla, forzosamente debe de tener por lo menos un movimiento para que pueda ejecutarlo.

  • -Movimiento [1,2,3,4] : Movimiento que permite al pokémon realizar una acción en el combate, ya sea agrediendo, defendiendo, o apoyando.


Los movimientos son demasiado y a grandes rasgos, cada movimiento tiene PP (Puntos de Poder), esto con la finalidad de que un movimiento super poderoso no se utilice siempre en todo el combate, se podría decir que es como una especie de energía o maná para balancear los movimientos de los
pokémons. En dado caso de que el pokémon agote todos los PP de cada movimiento este atacara con el cuerpo y recibirá una penalización que decrementara un poco su HP actual.

Creo que por el momento seria todo lo que es, en esencia, un pokémon en un videojuego, cuando tenga un rato libre programare 2 pokémons dummies como prueba y un sistema de combate funcional, solo con el fin de evaluar que tan bien se desempeña el juego. Hasta la próxima.

viernes, 4 de septiembre de 2015

Pokémon

Uno de mis 'sueños' por así decirlo, siempre ha sido la idea de crear un juego de pokémon yo solo (me refiero a mis esfuerzos), creo que todo comienza con la pregunta de ¿Qué le cambiarías al juego?... La respuesta mas sencilla, aceptable y concisa (a mi parecer) probablemente se resuma en una sola palabra 'imaginación'. Si tu conociste la serie de pokémon en la 1a y 2a generación de los juegos es muy probable que también viste la serie de televisión de la serie o que mas probable aun, primero conocieras el anime y luego te enteraste que había juego de pokémon, en mi caso particular conocí primero el anime, pues en México hay un canal de televisión abierta llamado 'canal 5' en el cual por las tardes había como una sección de 1 o 2 horas de puras animaciones japonesas (animes) en los cuales destacaban Dragon Ball (de niño y luego Z), Ranma 1/2 (son de los que recuerdo) y un día transmitieron una nueva 'caricatura' con un nombre bastante curioso, 'Pokémon', fue muy popular la serie y bueno, el resto es historia.

En ese entonces mis abuelos tenían mucho trabajo y por lo tanto estaban bien acomodados socioeconomicamente hablando, pues ellos vivían en un fraccionamiento privado donde viven personas con el mismo estatus, yo me la pasaba casi siempre... Mi tío tenia un amigo que le sabia (creo que hasta la fecha aun sabe :p) y le presto un disco con un juego muy, muy peculiar juego, recuerdo que mis abuelos fueron a mi casa porque mi tío quería que fuera con el (es casi como mi hermano) para que viera ese juego, corriendo rápido por las escaleras para ir a la pc donde estaba el juego mi cara estaba totalmente deformada por el asombro de ver a los 'pokemones' (pokemons) en un juego, resulto que ese disco tenia el emulador NO$GBM, para los que saben de que emulador se trata es muy probable que también conozcan la pagina de emulatronia, y estaba emulando el juego de Pokémon Blue, y básicamente recuerdo que me la pasaba jugando (cada vez que podia) pokémon y generalmente no pasaba de la cueva oscura para ir a pueblo lavanda (Lavender Town) porque aun no sabia como era la estructura de la cueva y la necesidad me hizo encontrar el MO(HM) 'Destello/Flash' para poder avanzar de esa cueva tan irritante.

Recuerdo que en ese entonces me tope con varios sitios de videojuegos y tenían datos interesantes (aunque falsos) de los juegos de pokémon donde básicamente te decían puras historias falsas, pero muy interesantes y fantasiosas que te daban la ilusión de que había mucho mas que esos pequeños pueblos que los recorrías en no mas de 3 minutos, es ahí donde reside probablemente la mayoría de las grandes ideas, la ilusión de que encontraras mas cosas y desconocidas, donde solo hacían estimular tu imaginación a tal punto de que probablemente hubiera mas pokémons, aunque en realidad era imposible debido a que no estaban programados.

Es ahí donde creo que surgen mis mas grandes ganas de poder hacer un juego propio de pokémon, pues en la serie ocurrían cosas que en el argumento del videojuego ni siquiera estaban planeadas, pero que eran muy interesantes, y es cuando cualquier aficionado a cualquier clase de juego le gustaría poder añadir una pizca de su imaginación a su pasatiempos para ver en que resulta. Mi primer acercamiento a lo mas cercano a poder hacer un juego de pokémon 'propio' fueron los llamados 'hackrooms' que son básicamente el juego original solo que editandolo, yo ni por asomo sabia siquiera lo que significaba programación y debido a su gran e inmensa lista de cosas que se debían realizar para modificar una pequeña pizca del juego me abrumo y simplemente me aleje de ese tema, tiempo después me interés por pokémon creció un poco mas debido a que había conocido una pagina llamada "PkPidgeot" (su sucesora ahora se llama pokemon-project), PkPidgeot para mi fue de las mejores fanpages de Pokémon en español, ni que decir de su foro, en ese entonces te asombrarías ver la cantidad de actividad que había en un solo sitio hablando de pokémon o generalizando mas, de un videojuego, antes de que existiera facebook, y recuerdo que el webmaster de dicha pagina anuncio que iba a realizar un juego de pokémon basado en Pokémon Gold/Silver y que utilizaria una herramienta llamada 'Game Maker'.

Busque el programa y trate de usarlo, pero no fue mas que un intento fallido para mi, pues no sabia hacer absolutamente nada, porque no tenia la paciencia para aprender a caminar y luego correr en dicha herramienta, pues no sabia programar, no tenia alguna guia para seguir paso a paso que me explicara que ir haciendo o como hacerlo (aunque en realidad si habia)... En fin tratando de no hacer mas larga esta publicación decidí crear un fangame de pokémon por mi cuenta, pues en Netflix colocaron la primera temporada de Pokémon y me trajo bastantes recuerdos (felices) de mi niñes que quisiera revivir y hacerlos realidad ahora, que tengo (quiero creer) el conocimiento necesario para poder llevarlos a cabo, así que "Atrapalos ya!".

martes, 12 de agosto de 2014

El sistema de inventario de un videojuego.

El sistema de inventario de un videojuego.

Ahora mismo estoy tratando de hacer un sistema de inventario, aparentemente lo he logrado a medias, y es que el problema que aparentemente logro ver es "¿Que tan lineal sera el juego?".
Si bien lo que tengo en mente es un RPG corto, aun no se mas o menos que items contendra el juego, pues si contara con items consumibles y/o acumulables, lo mas recomendable (almenos para mi) seria hacer una lista de vectores, pero no se si en Game Maker sea posible hacer eso, ya que solo lo he hecho en java.

Ahora por el otro lado, si el inventario contendra objetos unicos, es decir que no se acumulen, lo mejor seria hacer una lista sencilla.

A este punto llego a una curva que difiere totalmente de este tema, y es que precisamente debo plantearme bien o almenos darme una idea aproximada de como debera lucir el juego, pues la idea del inventario me surgio al ver una duda en unos de los grupos de Taringa!.




Otra de las cosas que siento deben ser tomadas en cuenta es "¿Como sera esteticamente el inventario?", y si llego a esa pregunta no solo sera el inventario en si, sino todo el menú en general y por lo tanto el juego en si (si, estoy algo loco) aunque talvez esteticamente seria mucho, pero si diseñar la estructura del inventario en si y es que como tal siento que debe de ser amigable con el jugador y a la vez que presente utilidad con el mismo, y no estar desperdiciando cosas que probablemente sobren y estorben.


Una vez llegado a esto, podria tomar ideas de los juegos de Zelda (menos los de N64), pues una de las cosas que me han gustado de la serie es la simpleza de sus menús, y eso se debe (creo yo) a lo que acabo de mencionar sobre lo lineal del juego y es que como tal, tiene un set de items totalemente limitados y justos para la aventura del juego exceptuando sus consumibles (flechas y bombas).

Por el momento creo que tomare como base un diseño del sistema de inventario de algun juego de Zelda que me agrade por el momento, esto con el proposito de por el momento preocuparme meramente de la programación y asi no tener que desviarme mucho del tema, y tratar de no darle muchas vueltas al asunto.

domingo, 10 de agosto de 2014

Estadisticas del jugador

Estadísticas del jugador

Esta entrada surgió por la necesidad de aprender de como se calcula la reducción de daño en los diferentes juegos que tenga propiedades de rol o que contengan elementos estadísticas (stats), como yo soy un jugador amateur de League of Legends (Si juegas DOTA, HoN o Smite es lo mismo, son gustos) en algunas ocasiones me pregunto que es lo ideal u óptimo de tener, ya sea vida (HP) o armaduras (Recistencias), pero para poder tratar de hacer un calculo como tal creo que debo dar por sentado las estadísticas básicas que contiene un personaje de RPG, esto lo hago para generalizar a lo que cualquiera juegue.


Tomare un juego como base para que al menos para mi, me pueda tratar de dar a explicar lo mejor posible (soy pésimo explicando cosas, pero trato de hacer el intento), el juego que tomare como base sera Final Fantasy III, lo elegí ya que es un vídeo juego de la vieja escuela (8 bits) y que ha tenido múltiples remakes para múltiples plataformas actuales (Nintendo DS, PSP, iPhone, Android).

Antes que nada debo aclarar que el "nivel" (incluye "experiencia") del personaje solo nos servirá para aumentar las estadísticas básicas de nuestro personaje y por lo cual no se tomara en cuenta este tipo de estadística.



  • Hit Points (HP): Los Hit Points es la estadística que representa la vida de nuestro personaje, entre mas HP tenga, mas vida tendrá nuestro personaje, cuando nuestro HP llega a 0 nuestro personaje morirá.
  • Magic Points (MP): Los Magic Point es la estadística que representa el maná de nuestro personaje, el maná generalmente es necesaria para que nuestro personaje pueda ejercer alguna habilidad especial, ya que una habilidad especial puede consumir estos puntos (MP).
  • Attack Points (ATK): Los Attack Points ó también llamado "Strength" (Fuerza) es la estadistica que representa nuestro ataque físico.
  • Magic Points (MATK): Los Magic Points es la estedistica que representa nuestro ataque magico, los ataques con esta estadistica suelen ser mas poderosos que los de ataque fisico, pero generalmente consumen mucho Maná.
  • Deffense Points (DEF): Los Deffense Points es la estadística que representa la capacidad de reducir el daño por parte de los ataques fisicos (ATK), cada juego tiene su formula de reducción.
  • Magic Deffense (MDEF): La Magic Deffense es la estadística que representa la capacidad de reducir el daño por parte de los ataques mágicos (MATK), cada juego tiene su formula de reducción.
  • Dexterity (DEX): La Dexterity, es la destreza de nuestro personaje, es decir la capacidad de acertar los golpes de nuestro personaje.
  • Agility (AGI): La Agility, también conocida como "Speed", es la estadística que le aumenta la capacidad de evadir ataques, así como también de poder moverse mas rápido para ejercer cualquier acción.
  • Critical Damage (CRIT): El Critical Damage ó "Daño Critico" es la estadística que aumenta (usualmente) en 200% (DOBLE) el daño infligido en algún ataque o habilidad.
  • Luck (LUK): La Luck o "suerte" es la estadística que nos aumenta la capacidad de que nuestros ataques sean "Críticos".

Aunque parezcan muchos conceptos o difícil de entender haré un pequeño resumen.

HP    -> Vida del Personaje.
MP    -> Maná del Personaje.
ATK    -> Fuerza del Personaje.
MATK    -> Daño Mágico del Personaje.
DEF    -> Defensa Físico del Personaje (reduce el daño del ATK).
MDEF    -> Defensa Mágica del Personaje (reduce el daño del MATK).
DEX    -> Destreza del Personaje.
AGI    -> Velocidad del Personaje (reduce la capacidad de acertar de la DEX).
CRIT    -> Daño critico.
LUK    -> Probabilidad de hacer golpes criticos.




sábado, 19 de julio de 2014

El menú que duro todo 1 dia

Estoy bastante emocionado ya que cumpli uno de mis cometidos para la implementación de un juego que estoy planeando, una de las cosas que queria agregarle si o si era un menú de rueda, tambien conocido como "Wheel Menu", "Spin Menu", entre otros.

Una imagen de referencia para que se de una idea en caso de que no hubiecen visto un menú de rueda.
http://lparchive.org/Seiken-Densetsu-3-(by-ddegenha)/Update%2062/1-item_wheel.jpg 

Este menú comenzo como un mero capricho cuando me levante, alrededor de las 11:00 AM (Estoy de vacaciones) y al poco tiempo de comenzar me di cuenta que era mas complicado de lo que pense, como todo en la vida, y a medida que iba avanzando me di cuenta que tendria que buscar ayuda por internet, busque y busque por Google y Youtube algun tutorial o algo que se le asemejara y en la comunidad oficial de YoyoGames encontre un indicio, algo que me pudiece ayudar a proseguir.

Pero antes de todo debia plantearme bien como debia de ser el comportamiento del menú, asi que hice una animación incompleta y basica en Photoshop.


Obviamente tambien debia hacer una imagen estatica en Graphicsgale, tambien de puro capricho, en el que daba mas a o menos la idea de lo que queria hacer.

Con el problema perfectamente planteado (quiero pensar) debia comenzar a seguirle marcha al menú, encontre una función muy peculiar la cual era "lengthdir_x();" y acto seguido la busque en el tutorial de GameMaker, y en una descripción formal es la siguiente:

"Devuelve la componente horizontal (x) del vector determinado por  la longitud y dirección indicadas" - Traducción de manual de GameMaker 6.1 de www.comunidadgm.org
 
Si quieres saber mas a fondo sobre esta y las demas funciones de valores trigonometricos el actual manual de GameMaker Studio tiene información en el apartado de Reference>Maths>Real valued function - Trigonometric Functions, esta en ingles pero tiene una descripción bastante entendible junto con una imagen de apoyo, asi como tambien un ejemplo de uso.

Bueno, total, el caso es que habia podido hacer el menu en base a las manecillas del reloj, ahora faltaba que el seleccionador funcionara correctamente, no fue mucho problema, lo que seguia era talvez lo tardado (no dificil), era hacer una pequeño movimiento que simulara una animación de entrada la cual poco a poco iba dando forma.
De ahi tenia que hacer el movimiento de derecha a izquierda y que simulara una animación lo cual resulto bastante tedioso ya que tube que hacer varias cosas a prueba y error que simple y sencilla mente eran cosas bastantes simples pero a la vez frustrantes.

Una vez terminado la animación estuve pensando como por 1 o 2 horas como hacer que que el funcionamiento del codigo se adaptara a cuantas opciones se tienen en el menú, una vez hecho esto me pusea limpiar el codigo y me ahorre aproximadamente como 9 o 10 lineas de codigo y que se adaptara a todas las opciones que tenga.

Asi que lo que comenzo como un capricho, se convirtio en una obsesión y que en total dure como 3 o 4 horas en total, pero obviamente el codigo lo tocaba por ratos y que lo termine casi a media noche.

Unas imagenes de como quedo.










Y asi termino mi tan frustrado dia, creo que descanzare un momento y seguire en la busqueda de otra cosa que quiero implementar en el juego.

Saludos!