Voy a entrar en detalles considerables en el diseño de un lenguaje mágico para un sistema de juego. El mundo es un mundo clásico de alta fantasía, con la mayoría de los tropos que se pueden esperar de la vieja escuela D&D. El sistema mágico es algo único en el sentido de que lo estoy diseñando en torno a efectos, funciones y operadores. He desarrollado lo que creo que es una lista bastante completa de efectos que se pueden combinar de diferentes maneras para producir la mayoría de los "hechizos" clásicos que existen en la literatura fantástica clásica.
Los efectos tendrán costos asociados en energía (que se reducirán a un sistema de puntos que no es muy relevante para esta pregunta). Un "hechizo" consistirá en uno o más "Efectos" que se pueden combinar usando funciones. No hay un límite superior para la cantidad de efectos que se pueden combinar en un "hechizo", pero debe haber un costo de puntos que aumente exponencialmente a medida que se agregan más y más efectos a un solo hechizo.
Mi pregunta es: para lograr un "lenguaje" flexible que pueda usarse para desarrollar muchos tipos diferentes de hechizos con (a partir de ahora) 26 "Efectos", ¿qué operadores y funciones necesito? Además, debo asegurarme de que el costo de puntos se vuelva prohibitivo después de 4-5 "Efectos", y creo que debo asociar un costo a la función, que aumentaría en un múltiplo de cuántas funciones hay.
He investigado la lógica simbólica, pero hay mucho enfoque en las declaraciones de verdadero/falso, que no es necesariamente lo que busco. Estoy pensando en algo más en la línea de un lenguaje de programación muy simple. No quiero algo masivo y complicado, entonces, ¿cuál sería el número mínimo y el tipo de funciones para que sea útil y flexible?
[Editar] En respuesta a preguntas: estoy buscando algunas cosas específicas en cuanto a los operadores. Necesito la capacidad de "agregar" un efecto a un "hechizo". Necesito la habilidad de designar que un efecto viene antes que otro. El comportamiento condicional sería algo bueno. "Si esto, entonces X, si algo más, entonces Y". Quiero limitar la cantidad de elementos condicionales incrustados en un solo hechizo porque no quiero que alguien pueda simplemente presionar el hechizo "esto lo hace todo" que tiene básicamente todos los efectos incrustados, por lo que las condiciones incrustadas deberían tener un costo. Quiero la capacidad de retrasar un efecto: "esperar X tiempo antes de hacer Z". Creo que hay algunos otros conceptos básicos que debería incluir solo por el bien de la integridad.
[Editar II] En respuesta a los comentarios. Esto es lo que visualizo como un caso de uso más o menos: "Soy un mago aventurero genial en un juego en línea. Encontré este pergamino que tiene un hechizo de 'Dedos ardientes de llamas', lo llevaré a mi taller de magia y editarlo para crear un hechizo personalizado. Voy a eliminar el componente de "quema" mediante el uso de un editor de tipo de secuencias de comandos visuales en la interfaz de usuario. En su lugar, pondré un efecto "frío", agregaré un Función de temporizador para retrasar el efecto durante 3 segundos y agregar un efecto de "oscuridad" que se produce de inmediato. Ahora mi hechizo personalizado causará oscuridad y luego soltará un efecto de escarcha fría en un objetivo cuando se lance. Lo renombraré "Frío Dark Hands" y guárdelo en un pergamino.
Como referencia, mi lista de "Efectos" (cada uno representará un "espectro" de muy menor a muy mayor, con costos de puntos calculados sobre esa base):
1. Fuerza
2. Llama
3.Frío
4.oscuridad
5.Cambiar el clima
6 agua
7. Perno de energía
8. Rayo
9. Transformar lanzador
10. Transformar objetivo
11.Invisibilidad
12. Cambiar tamaño
13. Levitar objetivo
14. Drenar vida
15. Vuelo
16. Conjurar
17.Teletransportarse
18. Maldecir/Bendecir
19. Alteración
20.Ilusión
21. Conjurar cosas
Control mental
Campo de fuerza
Lore/objeto de lectura
disipar magia
Luz
No estoy del todo seguro de lo que quiere, pero si lo he imaginado correctamente, una interpretación de pseudocodificación puede ser algo como:
Las funciones toman los efectos y otras propiedades, de modo que podría tener un pergamino que, en forma básica, dice:
burning fingers of flame: fingers(fire, burning,0,40)
Donde podría tener una función para cada parte del cuerpo y una forma generalizada podría verse como:Scroll Title: object( Primary_effect, degree_of_primary_effect, primary_timing, secondary_effect, degree_of_secondary_effect, secondary_timing ...,mana_level)
Esta función también podría incluir otras características de un efecto que no sean el tiempo, la forma, el proyectil, la estática, la runa, etc.
Los detalles de la función se verían así:
object( Primary_effect, degree_of_primary_effect, primary_timing, secondary_effect, degree_of_secondary_effect, secondary_timing ...,mana_level): time = 0 whilst(mana_level>0):
if time>=primary_timing: if mana_level-Effect(primary_effect,degree_of_primary_effect).ManaCost >0: object.Set.Effect(primary_effect,degree_of_primary_effect) mana_level=mana_level-Effect(primary_effect,degree_of_primary_effect).ManaCost if time>=secondary_timing: if mana_level-Effect(secondary_effect,degree_of_secondary_effect).ManaCost > 0: object->SetEffect(secondary_effect,degree_of_secondary_effect) mana_level=mana_level-Effect(secondary_effect,degree_of_secondary_effect).ManaCost time+=1
Ahora, esto en realidad no le brinda todos los detalles sobre cómo su función realiza esta tarea, pero podría darle la libertad de escribir la función:
Hand( cold, freezing, 3, Darkness, gloom,0 ,200):
Lo cual, pasando por el código general anterior, sería:
Comprueba que el maná que se le ha dado no haya bajado a 0 (en este caso, nuestro pergamino quiere que se le den 200 maná) y repite lo que se requiere hasta que se agote todo el maná.
Verifique si hemos alcanzado nuestro tiempo principal (tiempo = 3 para nuestro caso, por lo que durante los primeros tres segundos seguimos adelante).
Continuando, llegamos al tiempo secundario (0 en nuestro caso, por lo que ingresamos la declaración if)
Recorremos con el tiempo aumentando en un segundo a medida que avanzamos y cada efecto se ejecuta solo mientras el maná que hemos proporcionado puede manejar.
No tengo idea si esto es lo que estás buscando, pero disfruté escribiéndolo de todos modos, aunque espero que te ayude.
Para desalentar el comportamiento de munchkin, necesitará equilibrar los costos con combinaciones. Si no lo hace, obtendrá algunas combinaciones bastante creativas de efectos aparentemente pequeños para dar un golpe que costará relativamente poco. Al mismo tiempo, los combos más poderosos rara vez se usarán y pondrán un freno al juego.
desea utilizar una fórmula que aumente a un nivel multiplicativo con un costo base, el mayor que se utilizará.
Entonces, para escribir un pseudocódigo para ti....
Los mínimos de costo combinado serían...
X, X + A, X + B, X + C...
entonces se podrían calcular los costos...
E = efecto
Val = E1(costo) * E2(Costo) si val < x val = x
etcétera.
Entonces, podría hacer un costo base de un solo efecto, el costo del efecto.
Por el bien del argumento, digamos que el calor tiene un costo de 2 y el frío tiene un costo de dos, y al multiplicar sus costos, obtienes cuatro, pero estableces un costo base de 6, por lo que el combo cuesta seis, donde la luz tiene un costo de 3 y la calefacción con un coste de tres TAMBIÉN serían seis. La luz con un costo de tres y la oscuridad con un costo de tres serían nueve, no afectadas por el mínimo.
Puedes modificar la fórmula desde allí.
¿Alguna vez has leído el libro de consulta de GURPS Magic? Contiene un lenguaje verbal para la magia que básicamente requiere que cada hechizo contenga un Sustantivo y un Verbo como un hechizo, con puntos de habilidad en los sustantivos que conoces y los verbos que conoces. Proporciona un par de ejemplos, pero se enumera como una regla opcional, por lo que solo obtiene aproximadamente la mitad de una página de texto en el libro de reglas, si la memoria no me falla.
Pero ese marco puede funcionar mejor que tener una lista de todos los hechizos posibles. Configure una gramática simple y luego deje que los jugadores elijan sus listas de hechizos al estilo de Mad Libs.
Entonces, un hechizo tiene, quizás, una estructura como Adjetivo Sustantivo Verbo .
Entonces, la PC podría tener hechizos que usan esa estructura como:
etcétera.
Pero me centraría en las reglas de la gramática en lugar de una lista predefinida de todas las palabras/hechizos posibles. Esto permite que tus jugadores tengan más creatividad y también hace que la magia en sí sea más única.
Leva
lio elbammalf
guardabosques1363
jeff zeitlin
Cort Amón
Cort Amón
AlexP
HierroWaffleHombre
jbiggs
jbiggs
jbiggs
jbiggs
Cort Amón
Anketam
escritor de historias