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!