Bueno, supongo que estás hablando del aspecto de la generación procesal. También debo agregar que no tengo detalles sobre cómo funciona No Man’s Sky, pero puedo describir algunas técnicas de procedimiento que probablemente se utilizaron.
La base del sistema es probablemente un generador de números seudoaleatorio sembrado. Las computadoras no pueden generar números verdaderamente aleatorios (las computadoras son, por definición, sistemas deterministas), por lo que se utiliza un algoritmo, como Mersenne Twister, que genera números en una serie con pocos o ningún patrón aparente. El truco es que estos algoritmos ingresan un valor de “semilla”, y la serie de números de salida siempre será la misma para cualquier semilla dada. En la mayoría de las aplicaciones con generación de números aleatorios, sería una idea terrible ejecutar varias veces con la misma semilla (y, por lo tanto, tener la misma serie de resultados aleatorios), por lo que se utiliza algún método para hacer que la semilla sea lo más probable posible que sea diferente en diferentes carreras; generalmente tomándolo de alguna fuente aleatoria externa, como la hora actual en milisegundos.
Pero para la generación de procedimientos, especialmente de una experiencia compartida, puede hacer lo contrario. Al usar a propósito una semilla predecible , puede convertir un número en una serie grande y aparentemente aleatoria, pero de manera repetible . Y NMS podría usar esto fácilmente; cuando visita un nuevo sistema, el generador de números pseudoaleatorios se siembra con un número de identificación estándar para ese sistema. Desde ese punto, se puede tomar cualquier número de números “aleatorios” de ese generador para describir lo que hay en el sistema. Pero debido a la semilla predecible, cualquier otra persona que visite el sistema verá lo mismo , porque dada la misma semilla, el algoritmo generará los mismos números “aleatorios”. No tengo idea exactamente qué alcance utiliza NMS para generar los diferentes niveles de juego que admite (galaxia, sistema, planeta), pero estoy bastante seguro de que un PRNG sembrado se usa en alguna parte.
- ¿Cuáles son las mejores conferencias para ingenieros de software?
- ¿Cuál es el mercado laboral actual para los desarrolladores de Ruby on Rails en los Estados Unidos?
- Recibí dos ofertas de trabajo como ingeniero de automatización de software. Uno de Unisys y el otro de Accenture. Ambos están en el espacio de contratos federales. ¿Con cuál debo ir y por qué?
- ¿Cuál es el producto de Microsoft más subestimado?
- ¿Cuál es la mejor manera de recopilar y priorizar las mejoras de software?
Sin embargo, vale la pena mencionar que Hello Games se dio una serie de grandes problemas de diseño al hacerlo de esta manera. En primer lugar, hicieron que el alcance fuera tan grande que no pueden verificar todos los sistemas y planetas o secuencias de ellos mismos. (Los PRNG no tienen que usarse solo para mapas masivos). En segundo lugar, enfatizaron la experiencia compartida, lo que significa que no pueden ajustar el contenido de un sistema en función del historial de reproducción.
Uno de los ejemplos más obvios de esto es el aspecto de supervivencia del juego, del que algunos jugadores se quejaron. Tome el plutonio como ejemplo. El plutonio es esencial como combustible para los propulsores de su nave espacial. Pero, ¿qué pasaría si se te acabara y aterrizases en un planeta sin ninguno disponible? Estarías atrapado en ese planeta permanentemente. Originalmente, algunos planetas serían ricos en plutonio, y otros no tendrían ninguno. Pero si lo hicieron, porque Hello Games no puede visitar todos los sistemas o combinaciones de ellos, no pueden garantizar que el jugador no termine en 3 sistemas seguidos sin Plutonio y prácticamente se garantiza que terminará. atrapado. No pueden hacer lo que harían muchos juegos: manipular el sistema para garantizar que se generará algún planeta con Plutonio si no tienes ninguno, porque podrías estar en un sistema que otra persona descubrió anteriormente y no vio Plutonio allí, y eso rompería la experiencia compartida. Dado que la única forma de recuperarse de estar atrapado sería volver a cargar un salvamento, pero no querían esa mecánica en NMS (presumiblemente para crear una experiencia inmersiva sin problemas), su única opción es poner Plutonio en cada planeta para que no -uno puede quedar atrapado. Lo que ya ha atraído quejas sobre cómo hace que los planetas sean demasiado similares y dañe el aspecto de supervivencia del juego.
(Incidentalmente, “¿qué pasaría si fallaras?” Es una gran pregunta para preguntar sobre cualquiera de los aspectos de diseño de NMS que fueron eliminados. Como batallas a gran escala. Normalmente cuando mueres en combate espacial reaparecerás con tu tumba en el planeta más cercano. ¿Cómo funciona eso en una batalla a gran escala? ¿Eventualmente puedes desgastar a un ejército enemigo con copias infinitamente reaparecidas de ti mismo?)
De todos modos, una vez que tienes tu PRNG, generar un sistema estelar es bastante fácil. Extraiga valores del PRNG para la naturaleza del sistema, las frecuencias de asteroides y las coordenadas de los planetas. Aplique algunos algoritmos de comprobación de cordura deterministas (y por lo tanto predecibles) para espaciar los planetas. Obviamente, hay mucho más que puede hacer para agregar detalles como órbitas, apariciones de planetas, estaciones espaciales, etc., pero ese es el principio básico.
Ahora, ¿qué tal si aterrizamos en un planeta? Bueno, cualquiera que haya visto uno mirará una de las vistas alejadas del planeta y pensará instantáneamente en un fractal de plasma (o algoritmo de cuadrado de diamante ). Es la forma mejor establecida de generar un paisaje a partir de un valor semilla. Sin embargo, NMS es un poco más sofisticado que eso: también genera características como cuevas y ríos. Esos no están tan bien documentados: supongo que la generación de cuevas se realiza seleccionando grandes áreas “altas” en el plasma y luego volviendo a ejecutar un plasma más pequeño u otro generador de fractales para que quepa en el área, pero habría mucho de complejidad adicional en eso.
Siguiente paso, Flora. Hay muchos algoritmos existentes para sembrar un paisaje basado en plasma con flora, pero NMS parece ser más sofisticado que la mayoría de ellos. La técnica básica es probablemente la misma: extraiga valores de su PRNG para identificar parches donde existan cosas particulares, pero esta es la parte del juego que requeriría la mayor sintonía para tener sentido.
Tanto las plantas como los animales en NMS implican la generación de mallas de procedimiento , generando un objeto 3D a partir de partes basadas en un número de semilla. Este es un campo en expansión y, desafortunadamente, aunque hay mucha documentación disponible, no hay mucho con qué jugar. El único software que conozco que permite la generación de mallas procesales controladas por el usuario sin programación es .werkkzeug , una herramienta de escena de demostración que ahora tiene más de 10 años. Además, necesita texturas para esas mallas, pero la generación de texturas de procedimiento es una de las formas mejor establecidas de generación de procedimientos y hay muchas herramientas para jugar: juegue con el Diseñador de sustancias para tener una idea de cómo los valores se pueden integrar juntos para hacer texturas.
Debo mencionar que la generación de paisajes también se ha realizado anteriormente, aunque no suele ser en tiempo real o en el tipo de alcance que tiene NMS. Había una herramienta brillante para el usuario final llamada Pandromeda MojoWorld, pero lamentablemente parece haber muerto, aunque todavía puede encontrar archivos de lo que generó. E-On Vue es similar y moderno, pero como se mencionó, no es en tiempo real. Si los programadores de Hello Games fueran muy listos, y sospecho que lo son, harían que el algoritmo del generador comience a ejecutarse mientras conduces por impulsos hacia un planeta. No puede cambiar fácilmente su destino sin desconectarse de la unidad de pulso y 10–20 segundos es mucho tiempo para una computadora moderna, por lo que es una gran oportunidad para que la computadora trabaje en el planeta que le ha dicho por adelantado Te diriges hacia.
Así que espero que esto haya brindado una visión general de algunas de las características de generación de procedimientos que NMS probablemente usa y alguna apreciación del “estado del arte”. La generación de procedimientos es un campo de investigación activo y la generación de algunos aspectos toca la inteligencia artificial moderna (¿puedes generar una historia de manera procesal?), Por lo que es un campo realmente interesante para explorar si tienes interés en la programación.
(¿Ah, y poder ver un planeta en la distancia y volar hacia él en una órbita realista? Si eres un viejo cascarrabias como yo, lo ignorarás como lo que hizo Starglider 2 en 1988). absoluto según los estándares modernos, pero cuando salió ese juego fue el NMS de la época).