Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Juego RPG. Dudas en general

Iniciado por El_Chavo, 18 de Marzo de 2011, 04:10:43 PM

« anterior - próximo »

El_Chavo

Es la primera vez que programo un juego RPG así que querría saber vuestras opiniones acerca de ciertos aspectos del juego, NO de la programación.

Veamos pués:

1.- El juego que estoy desarrollando usará un sistema de objetos aleatorio, de forma que existirán varias clases básicas de objetos invariables, con características fijas, pero se le añadirán aleatoriamente propiedades mágicas. Algo así como sucede con el juego de Diablo 1 o Diablo 2. No sé si lo sabréis, pero ambos juegos usan un sistema de prefijos y sufijos para los objetos, por ejemplo, prefijos podrían ser "Brutal" o "Huge" o "Necromaner's", etc... y sufijos podrían ser "of the Titans", "of the Gods", etc...
Ambos prefijos y/o sufijos se le añaden a lo que es el nombre del objeto, dando como resultado cosas como "Brutal Axe of the Titans".
La cosa es que cada prefijo/sufijo indica que ese objeto va a tener ciertas propiedades mágicas definidas por dicho prefijo/sufijo, por ejemplo, "Brutal" indica que dará +5 de fuerza, por poner un ejemplo.
la pregunta es: ¿cómo usaríais vosotros este sistema: añadiríais primero las propiedades mágicas de forma aleatoria y a continuación le pondríais el prefijo/sufijo correspondiente, o al revés, primero el prefijo/sufijo y luego las propiedades mágicas definidas por ese prefijo/sufijo?

2.- Otra cosa que estoy empezando a hacer es un sistema de "crafteo", es decir, que se podrán fabricar todo tipo de cosas usando convinaciones de elementos, algo así como en muchos MMORPGs actuales. Y la pregunta es: ¿qué método usaríais para hacer esto? De momento he hecho un método de combinaciones de valores: los objetos ingredientes todos tienen un valor de dos o más caracteres. Al combinar varios de ellos, también se concatenan sus valores, dando como resultado otro valor diferente que podría ser el del objeto a fabricar. Es decir, tengo tres ingredientes con los siguientes valores: A1, A2 y A3. Al combinarlos darían A1A2A3, y el objeto a fabricar tiene dicho valor, por lo tanto la combinación de ingredientes es correcta.

fjfnaranjo

Bueno, este post si acaso debería estar en diseño.

A ver, algunas ideas/brainstorming, no necesariamente juntas:

1.-

Yo te recomiendo que no copies otro juego, invéntate algo nuevo. Por ejemplo, haz que las armas estén basadas en un personaje no jugador generado aleatoriamente y crea el arma mágica según las características del mismo. Podrías hacer que el pnj estuviese en el juego, y hacer que el jugador lo busque porque sus estilos de juego encajen y le quiera comprar más objetos.

Monta algo parecido al Dwarf Fortress, y lleva un registro de que material ha sido recolectado por que personaje y como esos materiales han sido combinados para dar lugar al objeto mágico. Le dará diversidad a los objetos mágicos y llevarlos concederá al personaje jugador un cierto trasfondo.

Crea los objetos mágicos según una serie de escuelas de magia (como las escuelas de la tercera edición de Dungeons, o las de Oblivion). Crea sinergias entre estas escuelas, de forma que algunos poderes se sumen o combinen de forma creativa (o se anulen los unos a los otros).

En fin, etcétera.

2.-

Mírate como se hace en Oblivion, está muy bien. O fíjate en Magika, como han hecho los diseñadores que se combinen los poderes, a ver si te sale alguna idea.

La cosa es que no se te vaya el sistema de marras, y te permita hacer objetos inutiles ultracaros o objetos mega over perribaratos.
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)

Hechelion

1. El tema de sufijos y prefijos es mucho más simple de como lo planteas, de hecho, es uno de lo sistemas más simples de implementar al potenciar un arma ya que tienes lugares fijos para inplementar cada habilidad, así que es un buen sistema para comenzar.
Hay varias formas de implementarlo, pero una simple es la siguiente:

Tienes tu objeto arma, el cual debe tener 2 propiedades, una habilidad prefijo y una habilidad sufijo para almacenar la habilidad o el indice a la lista de habilidades y una o dos listas de habilidades (Depende de como quieras ordenarte), cada habilidad debe indicar que poder le da al arma, puede ser un script, un indice a una tabla de funciones, etc. Y puede almacenar en ella el Strig del sufijo y el del prejifo, más menos algo así:

Struc Habilidad
     Script as string
     Prefijo as string
     Sufijo as String
End Struc

En el objeto arma colocas una función que agregue el contenido de la o las habilidades al objeto, algo así

Public Sub Update_Skill()
      Nombre = ListaHabilidades(Me.IndicePrejifo).Prefijo & ListaArmas(Me.IndiceArmaBase).Nombre & ListaHabilidades(Me.IndiceSufijo).Sufijo
End Sub

Básicamente, el nombre se compone en base a una propiedad de la habilidad, pues el nombre pasa a ser eyecandy, no es necesario que la programación analice el nombre para decir que atributo ganar, eso lo hace un indice que se encuentra almacenado en una propiedad del arma.
El problema de crear un arma aleatoria se reduce a asignar 3 valores aleatorios a 3 propiedades, IndiceArmaBase, IndicePrefijo, IndiceSufijo y puedes usar el indice 0 o el -1 para indicar que no hay valor en alguna de las propiedades, por ejemplo

"Espada Mata conejos"
IndiceArmaBase = 1 '1 es el valor que corresponde a Espada, lo he asignado yo de forma arbitraria
IndicePrefijo = 0 'no tiene prefijo
IndiceSufijo = 15 'la habilidad 15 es "Mata Conejos"

Este sistema yo lo conozco como parametrización, ya que tu problema se resume a cargar valores en ciertos parametros para cambiar el comportamiento del sistema.

2.
La mayoría de los sistemas de crafteo en estos juegos funcionan en base a recetas, es lo más simple. Cada receta asocia los materiales con el objeto final. Es simple de implementar, es el sistema más extendido entre los juegos y te aseguras que no se podrán crear objetos que no hayas diseñado.
Como tus objetos tendrán atributos mágicos, te aconsejo separar la fase de crafteo en 2, creación del arma base y luengo un proceso de encantar el arma (así lo programamos en un mundo persistente para NWN), esto te da más potencial sin necesidad de invertir en miles de recetas individuales, me explico.

Suponiendo que uses el sistema de arriba, si tienes 5 tipos bases de arma, 10 sufijos y 10 prefijos, tendrás potencialmente  5*11*11 = 605 armas diferentes, crear 605 recetas para crear cada arma es un dolor de cabeza, así que divides el problema

5 recetas para crear las 5 armas básicas. 10 recetas para agregar los prefijos y lo mismo para los sufijos, así te queda todo resumido a 25 recetas en vez de 605, por ejemplo:

10 lingotes de hierro + 10 trozos de carbón = espada.
10 sangres de conejo + 4 polvo mágico de únion = sujifo 15 "Mata conejos"

ASí, si quieres crear una espada Mata conejos, entonces necesitas 10 lingotes de hierro + 10 trozos de carbón + 10 sangres de conejo + 4 polvo mágico de únion

El_Chavo

Cita de: fjfnaranjo en 18 de Marzo de 2011, 05:17:18 PM
Bueno, este post si acaso debería estar en diseño.

A ver, algunas ideas/brainstorming, no necesariamente juntas:

1.-

Yo te recomiendo que no copies otro juego, invéntate algo nuevo. Por ejemplo, haz que las armas estén basadas en un personaje no jugador generado aleatoriamente y crea el arma mágica según las características del mismo. Podrías hacer que el pnj estuviese en el juego, y hacer que el jugador lo busque porque sus estilos de juego encajen y le quiera comprar más objetos.

No se si lo he entendido bién, pero ¿estás diciendo que haga objetos basados en clases, algo así como "bastones sólo para mago", "espadas solo para barbaro" etc...?
En ese caso, me parece que el juego quedaría muy limitado no sólo en cuanto a rejugabilidad, si no que todos los PJs de un mismo tipo serán muy parecidos.
Creo que lo que quizás más se valore de un juego RPG es la posibilidad de variación infinita, es decir, el hecho de que cada vez que se juege sea diferente. Fíjate en Diablo 1 o 2: puedes jugarlo mil y una veces sin aburrirte ya que cada vez que lo juegas tus personajes son diferentes y las tácticas de combates que uses tendrán que ser diferentes también.

Cita de: fjfnaranjo en 18 de Marzo de 2011, 05:17:18 PM
Monta algo parecido al Dwarf Fortress, y lleva un registro de que material ha sido recolectado por que personaje y como esos materiales han sido combinados para dar lugar al objeto mágico. Le dará diversidad a los objetos mágicos y llevarlos concederá al personaje jugador un cierto trasfondo.

Ya se lleva un control de ingredientes. Están guardados en el formulario del jugador.

Cita de: fjfnaranjo en 18 de Marzo de 2011, 05:17:18 PM
Crea los objetos mágicos según una serie de escuelas de magia (como las escuelas de la tercera edición de Dungeons, o las de Oblivion). Crea sinergias entre estas escuelas, de forma que algunos poderes se sumen o combinen de forma creativa (o se anulen los unos a los otros).

En fin, etcétera.

El sistema de magias ya está hecho, y es un sistema de árbol de habilidades.
Cada tipo de PJ tiene tres posibles "escuelas" con sus propias habilidades o hechizos.
Por ejemplo, el clérigo tiene las siguientes escuelas: Holy, Poison y Nature.
Cada vez que se sube de nivel, adquiere un punto de habilidad que puede añadir a la habilidad que quiera, eso sí, siempre que cumpla los requisitos de nivel y que tenga 5 o más puntos en la habilidad anterior a la que quiere estudiar.
Por ejemplo, para el clérigo, la habilidada básica es "Bash" y el árbol "Holy" es así:

"Healing Light->Prayer of Mending->Retribution->Ascension".
Entonces, si quiere aprender "Healing Light" tendrá que tener Bash en nivel 5 o más.
Para aprender Prayer of Mending necesitará Healing Light en 5 o más, y así sucesivamente.

La razón de por qué se pidan 5 o más puntos de la habilidad anterior es por que así se evita el poder hacer PJs que usen habilidades "ultimate", evitando de esta manera personajes overpowered.
Como el nivel máximo del juego es 99, el nivel máximo de las habilidades es 20 y ya se empieza con un punto de habilidad en la habildad básica (bash, en caso del clérigo), pues sólo es posible tener una de las tres escuelas de magia completa.
Eso sí, siempre es posible mezclar escuelas, por lo que un clérigo puede tener lo siguiente:

"Bash->lvl5" (como requisito solamente)
"Healing Light->lvl20"
"Poison Arrow->lvl5" (como requisito)
"Strangle->lvl20" (de la escuela "poison", segunda habilidad)
"Corrupt->lvl20" (de la escuela Poison, tercera habilidad)
"Inner Beast->lvl5" (de la escuela "nature", primera habilidad, como requisito)
"Nature's Blessing->lvl5" (escuela nature, segunda habilidad, como requisito)
"Earth Link->lvl20" (escuela nature, tercera habilidad)

Hemos gastado todos los puntos de habilidad y tenemos un clérigo que puede curarse, que hace bastante daño de veneno en combate y que además, gracias a earth link, tiene su vitalidad aumentada.
El problema: que no tiene ninguna habilidad ultimate, por lo que en cuanto a ese aspecto, es algo más débil que otro clérigo que sí la tenga.

Mañana os enviaré screenshots de los árboles de habilidades para que os hagáis una idea de las posibles combinaciones.

En cuanto a la combinación de magias o combos durante el combate, no es posible ya que el combate será por turnos. Cada turno de combate el jugador puede elejir o bién atacar con el arma, usar un objeto (poción de vida o maná) o hacer un hechizo, por lo que hacer combos de hechizos es imposible.

Cita de: fjfnaranjo en 18 de Marzo de 2011, 05:17:18 PM
2.-

Mírate como se hace en Oblivion, está muy bien. O fíjate en Magika, como han hecho los diseñadores que se combinen los poderes, a ver si te sale alguna idea.

La cosa es que no se te vaya el sistema de marras, y te permita hacer objetos inutiles ultracaros o objetos mega over perribaratos.


Nunca he jugado a Oblivion, pero sí a Morrowind, aunque no veo realmente lo que quieres que haga.

Si con Magika te refieres al RPG Ars Magica (yo tengo uno de los libros), pues me parece demasiado complejo para ponerme a hacerlo.
De momento mantendré el sistema de juego más o menos sencillo, y quizás en nuevas versiones  añada más cosas.








Cita de: Hechelion en 18 de Marzo de 2011, 07:36:11 PM
1. El tema de sufijos y prefijos es mucho más simple de como lo planteas, de hecho, es uno de lo sistemas más simples de implementar al potenciar un arma ya que tienes lugares fijos para inplementar cada habilidad, así que es un buen sistema para comenzar.
Hay varias formas de implementarlo, pero una simple es la siguiente:

Tienes tu objeto arma, el cual debe tener 2 propiedades, una habilidad prefijo y una habilidad sufijo para almacenar la habilidad o el indice a la lista de habilidades y una o dos listas de habilidades (Depende de como quieras ordenarte), cada habilidad debe indicar que poder le da al arma, puede ser un script, un indice a una tabla de funciones, etc. Y puede almacenar en ella el Strig del sufijo y el del prejifo, más menos algo así:

Struc Habilidad
     Script as string
     Prefijo as string
     Sufijo as String
End Struc

En el objeto arma colocas una función que agregue el contenido de la o las habilidades al objeto, algo así

Public Sub Update_Skill()
      Nombre = ListaHabilidades(Me.IndicePrejifo).Prefijo & ListaArmas(Me.IndiceArmaBase).Nombre & ListaHabilidades(Me.IndiceSufijo).Sufijo
End Sub

Básicamente, el nombre se compone en base a una propiedad de la habilidad, pues el nombre pasa a ser eyecandy, no es necesario que la programación analice el nombre para decir que atributo ganar, eso lo hace un indice que se encuentra almacenado en una propiedad del arma.
El problema de crear un arma aleatoria se reduce a asignar 3 valores aleatorios a 3 propiedades, IndiceArmaBase, IndicePrefijo, IndiceSufijo y puedes usar el indice 0 o el -1 para indicar que no hay valor en alguna de las propiedades, por ejemplo

"Espada Mata conejos"
IndiceArmaBase = 1 '1 es el valor que corresponde a Espada, lo he asignado yo de forma arbitraria
IndicePrefijo = 0 'no tiene prefijo
IndiceSufijo = 15 'la habilidad 15 es "Mata Conejos"

Este sistema yo lo conozco como parametrización, ya que tu problema se resume a cargar valores en ciertos parametros para cambiar el comportamiento del sistema.

En realidad ya tengo hecho el sistema de poderes mágicos de los objetos, y que es diferente a cómo has escrito aquí:

Hay objetos básicos, pongamos por ejemplo, una "Espada Corta".
En realidad son variables de tipo "Objeto", y el tipo objeto tiene las siguientes características:


Type Objeto
    nombre as string
    tipo as string
    subtipo as string
    magicPropsNum as integer
    magicProps() as propiedades
end type


tipo y subtipo indican "espada" y "dos manos" respectivamente.
magicPropsNum indica la cantidad de propiedades mágicas que tiene. Va desde 0 hasta infinito. :-P
magicProps() es una matriz de tipo "propiedades" que contiene las propiedades mágicas del objeto, y es tal que así:


type propiedades
    tipoProp as integer
    arg1 as integer
    arg2 as integer
end type


tipoProp es un valor numérico que indica qué tipo de magia es.
arg1 y arg2 son los valores que usará la magia, así por ejemplo, tipoProp = 0 significa que esa magia añade daño al objeto, y arg1 será 2 y arg2 será 5, así el objeto que tenga esa magia añadirá al jugador entre 2 y 5 de daño físico.

Entonces la cosa funcional así:

Dim miObjeto as Objeto
dim propiedades(2) as propiedades

propiedades(0).tipoProp = 0 'añade dmg
propiedades(0).arg1 = 10 '+10 al daño mínimo
propiedades(0).arg2 = 20 '+20 al daño máximo

Propiedades(1).tipoProp = 1 'añade defense
propiedades(1).arg1 = 50 '+50 a la defensa
'el arg2 no es necesario

miObjeto.nombre = "Espada Corta"
miObjeto.tipo = "Espada"
miObjeto.subtipo = "dos manos"
miObjeto.magicPropsNum = 2
miObjeto.magicProps() = propieades()


Fíjate lo fácil que es añadirle propiedades mágicas a un objeto.
Y según lo que has dicho, como cada objeto tiene almacenado el número y tipo de propiedades mágicas, pues sería fácil añadirle los sufijos y prefijos para ponerle más "eyecandy" como tú dices.

Sin embargo a tu método le veo un pequeño problema: sólo se puede añadir un prefijo y un sufijo de manera que sería imposible tener un arma que sea "Great-Black-Mace-of Necromancy-of the Night".
Es decir, unir varios prefijos y sufijos.

Cita de: Hechelion en 18 de Marzo de 2011, 07:36:11 PM
2.
La mayoría de los sistemas de crafteo en estos juegos funcionan en base a recetas, es lo más simple. Cada receta asocia los materiales con el objeto final. Es simple de implementar, es el sistema más extendido entre los juegos y te aseguras que no se podrán crear objetos que no hayas diseñado.
Como tus objetos tendrán atributos mágicos, te aconsejo separar la fase de crafteo en 2, creación del arma base y luengo un proceso de encantar el arma (así lo programamos en un mundo persistente para NWN), esto te da más potencial sin necesidad de invertir en miles de recetas individuales, me explico.

Suponiendo que uses el sistema de arriba, si tienes 5 tipos bases de arma, 10 sufijos y 10 prefijos, tendrás potencialmente  5*11*11 = 605 armas diferentes, crear 605 recetas para crear cada arma es un dolor de cabeza, así que divides el problema

5 recetas para crear las 5 armas básicas. 10 recetas para agregar los prefijos y lo mismo para los sufijos, así te queda todo resumido a 25 recetas en vez de 605, por ejemplo:

10 lingotes de hierro + 10 trozos de carbón = espada.
10 sangres de conejo + 4 polvo mágico de únion = sujifo 15 "Mata conejos"

ASí, si quieres crear una espada Mata conejos, entonces necesitas 10 lingotes de hierro + 10 trozos de carbón + 10 sangres de conejo + 4 polvo mágico de únion

Sí las recetas pueden ser una buena alternativa. Quizás use este método, aunque en realidad no hay tampoco mucha diferencia de lo que yo propuse.
Con mi método tampoco hace falta crear 9999 recetas ya que no todos los objetos son crafteables. Pero eso sí, tendría que asignale a todos los ingredientes y productos finales un valor de crafteo, por ejemplo:


Iron Ingot (A1)      |
Leather Strip (A2)   |---> Dagger (A1A2A3)
Wood Stick (A3)      |


Aunque en realidad el método de crafteo que tenía pensado era más bién para cosas como pociones, comida, cristales mágicos y runas, e incluso como mucho para anillos y colgantes.



Por otro lado, también hablas de imbuir poderes mágicos a los objetos.
Eso también lo tenía pensado, pero no mediante el mismo sistema de crafteo, si no más bién mediante el uso de runas y cristales mágicos:
los cristales mágicos permiten mejorar las características "de fábrica" del objeto, mientras que las runas permiten añadir más propiedades mágicas.

Si tenemos "Daga, daño=2-3, +1% Crit hit", mejorando dicha arma con un cristal mágico podremos crear "Daga +1, daño=3-4, +2% Crit Hit".
Pero si le ponemos una runa que sea "Fiery Rune", tendremos "Daga, daño=2-3, +1crit hit, +2de daño de fuego".

El sistema se basa en probabilidades de éxito: cuanto más mejores el arma, más probabilidades hay de que falle el encantamiento. Empezando por un 100%, cada cristal mágico reduce la probabilidad de acierto en 10%, y las runas reducen la probabilidad en 15% cada vez.

Estoy pensando en añadir algún tipo de gema que aumente la probabilidad, por supuesto difícil de encontrar.

Para fabricar runas, se necesita encontrar/comprar runas en blanco y los ingredientes necesarios para fabricar la runa mágica apropiada.
Para los cristales mágicos, habrá que encontrar/comprar cristales de poder.
Una vez que los tengas, reúne los ingredientes necesarios y podrás fabricar un cristal mágico.

Por supuesto ambos objetos (runas y cristales) podrán ser encontrados matando monstruos o abriendo tesoros, así que te ahorras los ingredientes.

Hechelion

Tú preguntaste por un sistema tipo Diablo, el cual usa solo un sufijo y solo un prefijo. Si no es lo que querías entonces no lo des como ejemplo.
Yo solo te estaba ayudando con una explicación de como volcar en código lo que tu mismo preguntaste no sobre como debes hacer el juego.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.