Cómo generar procedimentalmente personajes para mi juego

Depende de cómo 8 bit es 8 bit. Supongo que no está desarrollando en un sistema de 8 bits o no estaría preguntando cómo hacer algo así, así que le diré cómo puede obtener ese efecto por una pequeña cantidad de esfuerzo en un sistema moderno y cómo funciona. se hubiera hecho en una plataforma clásica de 8 bits en solo unos pocos bytes.

En un sistema moderno, querrás generar un número aleatorio usando un generador de números pseudoaleatorio y luego usarlo para determinar las propiedades de los caracteres. Realice el proceso en el mismo orden para todos sus personajes usando las mismas condiciones iniciales y obtendrá los mismos personajes cada vez. Esto es bastante simple en todos los idiomas. Comience con una semilla conocida y haga estallar un nuevo número cada vez y use ese número para determinar el cambio de la característica que desea. Esto le permitirá ponderar las propiedades para obtener la población que desea.

En un juego de 8 bits “adecuado” con el menor código posible (por ejemplo, en el ZX Spectrum), podría haber usado un número de 8 bits para describir las propiedades. Cada segmento de 8 bits podría haberse utilizado de varias maneras, por ejemplo, como dos banderas y tres números de 2 bits. Un poco para el sexo, un poco para adultos / niños, dos bits para el color de la piel y el cabello, dos bits para las cabezas, dos bits para los cuerpos y dos bits para los colores le darían una buena variedad. Los números de 8 bits que ingresa podrían provenir de la ROM a partir de un punto que le brinda una configuración agradable. Esto habría permitido que un programador de juegos de 8 bits obtuviera mucha variedad por un bajo costo, no contiene ninguna ponderación y no es realmente aleatorio ya que el número que ingresa está predeterminado y se inclinará hacia ciertos valores porque es el código del programa que ‘ Se está utilizando como datos, pero es una técnica que se utilizó mucho en los años 80.

Mi trabajo actual utiliza PRNG en cada proyecto y está regulado para garantizar resultados consistentes del juego.

(Esto se explica como si estuviera usando GameMakerStudio pero debería poder entenderlo)

Se podría decir que un sprite llamado cabeza tenía muchos “sub-sprites” o “imágenes” dentro de él que representarían la variedad de cabezas que podrías tener. Entonces lo mismo para todas las otras partes del cuerpo. (Por ejemplo, cuerpo, piernas e incluso brazos y pies / zapatos)

Después de configurar esos sprites, puedes usar una función que elija aleatoriamente un sprite de cada una de las partes del cuerpo para hacer un personaje aleatorio.

Espero haber ayudado.

Para cualquier persona que recién esté investigando esto, acabamos de hacer un episodio bastante libre sobre contenido generado por procedimientos en Podcast de Zengineering. Desglosamos lo que es, donde probablemente ya te has topado con él, luego pasamos al fondo de las implicaciones teóricas y filosóficas a medida que crece la potencia informática. ¡Disfrutar! Déjame saber lo que piensas: 033 – Con Alan Gilbert – Sobre contenido generado procesalmente

Esto no es realmente una generación procesal, solo una generación aleatoria bastante simple (no son lo mismo).

Divide tus sprites en partes discretas que combinarás en el resultado final y usa un generador de números aleatorios para elegir una de las opciones posibles para cada parte.

Cambiar los colores de la piel y la ropa es solo una cuestión de intercambio de paletas; nuevamente, elija un elemento aleatorio de una lista de varios colores aplicables (generalmente, conjuntos de varios tonos de un color dado) y sustitúyalos en su sprite.

Seguro que puedes elegir al azar cabezas, torsos y cabello. Es trivial en realidad.

Configure una matriz para cada tipo de cuerpo

  • Cabeza[]
  • Pelo[]
  • Cuerpo[]
  • Etc.

Luego seleccionas aleatoriamente un elemento de cada conjunto para armar tu personaje.

Si estás poblando una gran ciudad o algo así y quieres que tengan un aspecto variado pero siempre el mismo en todos los juegos, utilizas un generador de números sembrados. Mientras la semilla sea la misma, los personajes siempre generarán lo mismo en cualquier sistema.

Simplemente haga un montón de sprites de cabezas / cuerpos / colores de piel separados, etc.
Luego, realice una función que seleccione aleatoriamente 1 de cada una de las categorías anteriores y las junte