El cambiante mundo de Blood and Fire


En los videojuegos, el mundo actualmente esta pensando para ser una ilusión, que tiende a arruinarse, en el momento es que nos detenemos a pensar un poco. Con lo cuál, he decidido salirme de los sandbox del siglo pasado y mirar al futuro. Es decir, que tenemos procesadores con varios núcleos y varios hilos, capaces de realizar unos cuantos millones de cálculos por segundo, creo que algunos llegan al billón, además de la placa de video, que es una mini motherboard, para el que no lo sepa, el hardware, la informática, la matemática, es un inception de un inception… Con lo cuál, es hora de ir preparando algorítmos y código, capas de usar de forma óptima, para este tipo de arquitecturas.

Para optimizar memoria, primero que nada necesito cargar en ella lo justo y necesario. Al tener un mundo abierto, voy a necesitar optimizar procesos y desarrollar las acciones de forma ordenada. Es decir, voy a necesitar desarrollar un algoritmo en paralelo, para obtener las deciciones por zonas, de forma ordenada, posiblemente enviando un evento al animator controller del npc, para que cambie de animación. Lo más problable, es que utilice un LateUpdate, para reducir el número de operaciones y liberar al procesador para las tareas de otro sistema.

Además de los posibles problemas, de tener ciertas ideas en torno al animator rigging de Unity, voy a tener que cuidar bien, de las operaciones y dónde coloco el target para que las cabezas y los ojos del npc, apunten a él. Creo que la opción a gran escala, es colocarla entorno a un grupo de npc, si necesito una acción en grupo, por ejemplo, si un grupo de patrulla, me ve, todos deberían girar la cabeza para encontrarme y atacarme.

Si soy capaz, de obtener una forma de simplificar el cálculo de opciones de los blend tree o de simplemente reproducir la lista de opciones, de la rutina diaria o activando tal o cual acción de acuerdo a las estadísticas de personalidad o gusto:

NombreMínimoMáximo
Sentimientos-1010
Hambre0100
Sed010
Salud0100
Energía0100
Karma0100
Game state01000
Dinero099999

Poblaciones: las estadísticas para cálcular las operaciones, dentro de la ciudad.

NombreMínimoMáximo
Karma del jugador en la zona0100
Total de NPC0100
Nivel del asentamiento110

Casas: para crearlar y cargar los adornos, muebles y texturas, según la riqueza.

NombreMínimoMáximo
Tesoro099999
Habitaciones110
Habitantes15
Esclavos110

De estos datos, obtengo n combinaciones posibles, con lo cuales dar diversidad de eventos, al entorno y acciones a los personajes. Con lo cuál, comienzo a utilizar las capacidades básicas de un motor de videojuegos, programando lo necesario. Para desarrollar las combinaciones, es posible seguir expandiendo la lista de opciones, además de combinar animaciones o diseñar un sistema de animaciones procedurales, lo básico, es lo fundamental para el desarrollo de un sistema. Además de obtener un producto, con el menor costo posible, con un mejor retorno de inversión, es decir, más ganancias.

De las opciones del propio jugador, planeo desarrollar las acciones de los npc, durante su desplazamiento, dentro de una ciudad o mientras un npc este dentro del collider del player. Por ejemplo: si el npc es de la facción A, los transeuntes de la facción B, al tener un -10 de relaciones, atacarán al jugador. Similar a Mount and Blade.

Para tener una diversidad de historias, los npc poseen más o menos las mismas estadísticas que nuestro player, para dar lugar a tramas como el asesinato de un NPC, por parte de un comerciante rival, que deseaba deshacerse de la competencia. Este tipo de eventos, podría comenzar con personajes en las calles, que lleguen a lo más alto del poder, o simplemente habrán las puertas a las tropas enemigas, dando una diversidad de eventos, sin llegar a tener que incrementar exponensialmente el número de animaciones, teniendo en cuenta que es un juego en desarrollo, por parte de una sola persona.

,