¿Cómo representa el videojuego ‘No Man’s Sky’ 18 quintillones de planetas?

La respuesta a esta pregunta radica en cómo cada planeta se genera procesalmente.

En realidad no están hablando de que haya 18 quintillones de planetas, sino 18 quintillones de planetas posibles. Cada planeta está codificado como un valor de 64 bits y (presumiblemente) cada uno solo se usará una vez. (Si ya existe un valor generado en la base de datos, se regenerará).

De este nivel de detalle obtenemos el número exacto de posibles variaciones en los planetas según los desarrolladores, 18,446,744,073,709,551,616 mundos. Un número de 64 bits se utiliza como semilla para los valores como colores, atmósfera, vida, gravedad, agua, minerales, paisajes, órbitas, lunas, artefactos, etc., en el planeta. Todas esas diferencias aplicadas a ese número resultan en 18 quintillones de variaciones posibles.

El servidor generará estos números solo cuando se necesite un nuevo planeta y luego el número de semilla se almacenará en el servidor y se vinculará a una ubicación en el mapa estelar para que otras personas lo exploren. Cada vez que se recupera ese número de semilla, siempre generará exactamente el mismo planeta en cada detalle. Si le doy la ubicación del mapa estelar para un planeta que visité, el servidor recordará el número de 64 bits que me dio y generará exactamente el mismo planeta en cada detalle en esa ubicación del mapa estelar para usted.


Ref: No Man’s Sky tardaría 5 mil millones de años en explorar (Wired UK) para confirmar que el método de generación se basa en un número de 64 bits y el número exacto de planetas que afirman que potencialmente puede crear.

En realidad, nunca alcanzarán este total de 18 quintillones en total, pero si la potencia informática sigue la ley de Moore, es completamente posible que puedan mantener sus servidores catalogando más planetas de los que sus jugadores puedan encontrar. Por lo tanto, es un universo efectivamente infinito para todos los intentos y propósitos hasta un límite de 18 quintillones.

No Man’s Sky se basa en el ruido pseudoaleatorio basado en una semilla de 64 bits … no para todos los planetas, sino para todo el juego . Es una función que, dada la entrada de la semilla, se asigna exactamente a una salida determinada … la única diferencia es que el rango completo de esa salida es de aproximadamente 18 quintillones de planetas.

Sin embargo, las especificaciones para esa función, y la semilla, pueden ser bastante pequeñas. ¿Ves qué tan grande es No Man’s Sky (en bytes, no en números de planetas)? El que responde la pregunta, Adam Helps, nos recuerda otro gran juego que utiliza este enfoque: Minecraft. Si dos usuarios usan la misma semilla (siempre que estén ejecutando una versión con la misma función World Generator, que puede cambiar cuando la actualizan, agregando biomas y otras cosas), los mundos generados serán los mismos para ellos.

Así que esto es lo que es genial: cada copia del juego No Man’s Sky contiene exactamente la misma semilla, por lo que todo lo que tu PS4 / PC tiene que hacer es calcular las funciones sobre la marcha y, matemáticamente, surgen los mismos mundos. Solo tienes que guardar en la RAM lo que está a la vista, y el juego calcula y olvida dinámicamente los paisajes con los que entra en contacto y se va.

Me imagino que los servidores en sí solo almacenarían la información que las personas cargan en los Beacons, y las ubicaciones de los personajes para que cuando se acerquen entre sí, puedan agruparse en un lobby para el juego sincronizado. Los datos que resultan de esos dos factores son relativamente pequeños, por lo que Hello Games no debería tener problemas para adquirir espacio en el servidor para esas tareas.

Nota: Esta respuesta se escribió antes de agregar los detalles a la pregunta.

No lo hace. Simplemente contiene código que es capaz de generar un paisaje en cualquier región donde esté presente un jugador, y ese algoritmo es capaz de generar una gran variedad de paisajes. Así es como funciona la generación de contenido procesal: generación algorítmica sobre la marcha, no representación real.

No estoy seguro de dónde vino el número 18 quintillones, pero 18 quintillones de bytes serían 18 mil millones de gigabytes. Todo el almacenamiento en todo el mundo es del orden de 295 mil millones de gigabytes, por lo que puede estar bastante seguro de que No Man’s Sky no representa 18 quintillones de bytes, incluso a solo un byte por planeta.

No genera todos esos planetas a la vez. Mi proyecto actual funciona de manera similar. Al comienzo del juego (generación inicial) se genera una cierta cantidad de espacio. No estoy seguro de cómo lo manejan, pero en mi juego, el planeta inicial se mantiene en gran parte en la memoria para reaparecer. Más allá de eso, cada planeta es generado por algoritmos matemáticos. Mi juego usa una generación sembrada que permite usar diferentes semillas, pero la suya usa la misma “semilla” para todos. Esto significa que los mismos planetas se generan en el mismo lugar para todos. También significa que donde quiera que viaje en el espacio encontrará planetas.

Debido a que el proceso matemático genera estos planetas, no necesitan ser almacenados en el disco. Solo los componentes que se usan para hacer los planetas deben almacenarse en el disco. Es muy probable que algunos (o todos) de los planetas que visites en tu juego se almacenen en caché en el disco (por velocidad), pero no sería absolutamente necesario.

Genera planetas utilizando la generación de procedimientos. Al igual que si estás visitando un planeta ‘A’, solo existe ‘A’ en la memoria del juego. Todos los planetas no existen. Pero si visita otro planeta ‘B’, ‘A’ desaparece de la memoria y solo ‘B’ está presente.

Los planetas son generados por una función / procedimiento, como y cuando se considera. No se almacenan específicamente en la memoria del juego. Como resultado, cuando el jugador “se aleja” de algún planeta en el juego, se olvida. 18 quintillones es solo una estimación bruta. Es como un nuevo número aleatorio que se genera cada vez. Por lo tanto, en cada etapa hay una probabilidad [matemática] \ dfrac {n} {\ infty} \ aprox. 0 [/ matemática] de que el nuevo planeta sea exactamente uno entre los n anteriores. Entonces, esencialmente, uno nuevo cada vez.

Los planetas son generados por computadora usando algoritmos. Sí, serán muy redundantes.

More Interesting

¿Qué porcentaje del total de minerales posibles en el universo existe en la Tierra?

Aproximadamente, ¿cuándo dejarán de orbitar los planetas ya que aparentemente nada es perpetuo, incluidos otros cuerpos celestes?

Geología: ¿Cómo están conectadas las capas de la Tierra, la transferencia de calor, la deriva continental, la expansión del fondo marino y la tectónica de placas?

Si dejamos un objeto en el espacio, ¿viajará en la misma dirección que el sistema solar o se retrasará?

¿Cuál es la velocidad orbital de la tierra?

¿Cuál es el objeto más alejado del sol en nuestro sistema solar?

Hablando teóricamente, ¿cuánto costaría eliminar a todos de este planeta?

Cómo, como individuo, salvar nuestro medio ambiente

¿Cómo serían las condiciones de la superficie en la Tierra si estuviera en una órbita venusiana? (Recibiendo más flujo solar y más viento solar)

¿Qué planeta o luna en nuestro sistema solar sería el mejor para colonizar en los próximos 25 años?

¿Es teóricamente posible terraformar Marte y darle océanos en unos pocos siglos y una atmósfera respirable en unos pocos milenios?

¿Qué tan estables son las órbitas alrededor de cuerpos que no son más o menos esféricos, por ejemplo, un cilindro largo?

¿Crees que la Tierra es un disco plano (bíblico) o crees toda la evidencia científica en la Tierra esférica?

Si la Edad de Hielo terminó literalmente hace millones de años, y la Tierra se ha estado calentando constantemente desde entonces, ¿por qué hay tantos traficantes de miedo que quieren que creas falsamente que las personas, los automóviles y la contaminación están detrás del calentamiento global?

¿Qué pasaría si uno de los planetas de nuestro sistema solar fuera destruido? ¿Habría algún efecto en nuestro planeta madre o en el sistema solar en su conjunto?