DEVLOG#5 Medieval Life Sim 2D: LifeEventGenerator



Hoy logré una pequeña mejora en la clase LifeEventGenerator. Solo una pequeña mejora, pero es satisfactorio ver el output.

Lo que hice, con algo de ayuda, fué agregar Circunstancias familiares, que incluyen historias que agregan drama o bendición, o conflictos dentro del linaje del jugador. Algo así como a muchos nos tocó vivir en la vida.

También Contextos Sociales, lo cuál también agrega drama, una dimensión extra de drama o bendición en la vida del jugador, como la sociedad lo percibe, cómo se relaciona con otras clases sociales o las dificultades de vivir en comunidad.

 Estos son unos 3 Outputs de la iteración de hoy:

OUTPUT 1: 

Naciste de tus padres, que son Father Fioric y Mother Gerella en la torre de los sabios, un lugar tranquilo y seguro. Además, Tus tíos eran conocidos ladrones, pero tu madre siempre estuvo en contra de sus acciones. Y Las costumbres de tu sociedad son estrictas, pero tu familia siempre ha sido un poco rebelde..

OUTPUT 2: 

Naciste de tus padres, que son Father Cedius y Mother Gerina en la aldea perdida, un lugar de pesadilla. Además, Tu primo es un noble de alto rango, pero siempre se comporta como un plebeyo. Y Eres parte de una comunidad secreta que controla los destinos de muchos sin que se sepa..

OUTPUT 3:

Naciste de tus padres, que son Father Cedor y Mother Elina en el reino de las sombras, un lugar infernal. Además, Tu tío fue un gran mercader, pero su ambición lo llevó a la ruina. Y Tu ciudad es famosa por su tecnología avanzada, pero a menudo temes que todo sea una fachada..

Luego de este análisis y estas mejoras o incrementos, pienso que se podrian agregar maldiciones familiares en el linaje, por ejemplo: tu tatara abuelo se convirtió en vampiro luego de la peste. Y ese trait se traslada entre generaciones, trait transgeneracional.

O tu archi tatarabuela era pura luz y bondad divina y también se transmiten esas características genéticamente. Eso también deberia agregar ciertas Life Events basados en la genética, el linaje y las narrativas pasadas. También estuve pensando en que cuando el jugador muere, se puede continuar con un descendiente, si es que tiene.

En el caso que no lo tenga, se van a perder esas características genéticas heredadas y el jugador pasará a otra linea genética.

Vamos a por código del dia:


using System.Collections.Generic;

using UnityEngine;

using TMPro;

public class LifeEventGenerator : MonoBehaviour

{

    public RuntimeGameData runtimeGameData;

    public TextMeshProUGUI randomLifeEventTxt;

    public GameObject lifeEventModal;

    public RandomFamilyAssignator randomFamilyAssignator;

    public RandomNPCNameSurnameGenerator randomNPCNameSurnameGenerator;

    private List<string> lifeEventTemplates = new List<string>()

    {

        "Encontraste un tesoro escondido y ahora tienes ",

        "Conociste a una nueva amiga llamada ",

 Etc

    };

    void Start()

    {

        GeneratePlayerBornEvent();

        //GenerateRandomLifeEvent();

    }

    public void Update()

    {

        if (Input.GetKeyDown(KeyCode.G)) GenerateRandomLifeEvent();

    }

    public void GenerateRandomLifeEvent()

    {

        int randomIndex = Random.Range(0, lifeEventTemplates.Count);

        string eventTemplate = lifeEventTemplates[randomIndex];

        string randomName = GenerateRandomName();

        int randomValue = Random.Range(10, 100);

        string randomPlace = GenerateRandomPlace();

        string randomRole = GenerateRandomRole();

        string lifeEvent = "";

        switch (randomIndex)

        {

            case 0:

                lifeEvent = eventTemplate + randomValue + " monedas de oro.";

                runtimeGameData.playerData.gold += randomValue;

                break;

            case 1:

                lifeEvent = eventTemplate + randomName + " en el mercado del pueblo.";

                break;

Etc.         

        }

        ApplyLifeEvent(lifeEvent);

    }

    private void GeneratePlayerBornEvent()

    {

        string randomPlace = GenerateRandomPlace();

        string randomCircumstances = GenerateRandomCircumstances();

        lifeEventModal.SetActive(true);

        randomFamilyAssignator.AssignPlayerFamily();

        randomLifeEventTxt.text = "Naciste de tus padres, que son Father " + runtimeGameData.playerFather.name +

            " y Mother " + runtimeGameData.playerMother.name + " en " + randomPlace + ", " + randomCircumstances + ".";

    }

    private string GenerateRandomCircumstances()

    {

        // Categorías de circunstancias

        string[] places =

        {

        "un lugar tranquilo y seguro", "un lugar horrible", "un lugar sereno", "un lugar acogedor",

   Etc.

    };

        string[] familyBackgrounds =

     {

    "Tu bisabuelo era un estafador y tu bisabuela una bruja.",

    "Tu tía es una santa y tu tío un policía corrupto.",

Etc.

};

        string[] socialContexts =

      {

    "La gente en tu ciudad siempre te mira con desconfianza.",

    "Naciste en un reino donde la gente vive en constante guerra.",

  Etc.

};

        // Elegir aleatoriamente una circunstancia de cada categoría

        string randomPlace = places[Random.Range(0, places.Length)];

        string randomFamilyBackground = familyBackgrounds[Random.Range(0, familyBackgrounds.Length)];

        string randomSocialContext = socialContexts[Random.Range(0, socialContexts.Length)];

        // Combinación aleatoria de las circunstancias

        return $"{randomPlace}. Además, {randomFamilyBackground} Y {randomSocialContext}";

    }

    private void ApplyLifeEvent(string lifeEvent)

    {

        Debug.Log(lifeEvent);

        randomLifeEventTxt.text = lifeEvent;

        lifeEventModal.SetActive(true);

    }

    private string GenerateRandomName()

    {

        string[] names =

        {

            "Alejandro", "Isabella", "Lancelot", "Guinevere", "Arthur", "Morgana", "Tristan",         Etc.

        };

        return names[Random.Range(0, names.Length)];

    }

    private string GenerateRandomPlace()

    {

        string[] places =

        {

            "la ciudad encantada", "el bosque mágico", "la aldea tranquila", "el castillo del rey",

Etc.

        };

        return places[Random.Range(0, places.Length)];

    }

    private string GenerateRandomRole()

    {

        string[] roles =

        {

            "Caballero", "Escudero", "Hechicero", "Alquimista", "Arquero", "Asesino", "Ladrón",

     Etc.

        };

        return roles[Random.Range(0, roles.Length)];

    }

}

-Traits transgeneracionales

-Maldiciones familiares

-Bendiciones familiares 

-Descendiente y posibilidad de legado

Ejemplo de trait:

"Tu tatarabuelo se convirtió en vampiro después de la peste, y esa maldición ha seguido a tu familia desde entonces.",

"Tu archi-tatarabuela era pura luz y bondad divina, y esa energía positiva aún fluye por tus venas."

-Consecuencias de la Muerte: si el personaje muere sin descendientes, se pierde la línea genética y el jugador empieza una 

nueva historia, en otra linea genética o en una desde cero.

-Eventos que se desencadenan específicamente en función de los antecedentes familiares. Estos eventos afectarian habilidades, moralidad, relaciones, por ejemplo, si el personaje tiene un ancestro que fue un increible guerrero, obtiene ventaja en combate o oportunidad de encontrar un artefacto que tenga relación. Si la familia tiene historia de traición, podria enfrentar desconfianza en ciertos personajes, afectando la narrativa.

-Continuación de la historia desde sus descendientes: Algún  Modal y opciones, además de resolver ese sistema / arquitectura.

La idea es crear un vínculo más fuerte entre el jugador y sus personajes.

Get Medieval Life Simulator 2D Pre Alpha

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.