¿Es posible cargar un nivel intransitable en Super Mario Maker?

Esta entrada es un recuento gratuito del video ¿Es posible cargar un nivel imposible en Super Mario Maker? . Hay un enlace al video El nivel imposible en el video, así que también lo volveré a contar. Mi recuento no pretende ser exacto, solo quiero compartir material interesante.

Lo que se discutirá


Encontrar errores en el software puede ser muy diferente. Busco errores en los códigos fuente, en archivos binarios, en grandes complejos de software e incluso en algunos equipos. Pero hay un área en la que casi nunca hice nada: la búsqueda de errores en los juegos de computadora.

La gente pasa mucho tiempo buscando errores en los juegos. Estos pueden ser errores lógicos, matemáticos e incluso de programador. Alguien hace esto para mirar el juego desde un nuevo ángulo, mientras que alguien intenta pasar el juego al menos unos segundos más rápido que cualquier otro jugador. Me parece que fue la comunidad de speedraners (personas que juegan juegos por velocidad) quienes hicieron una gran contribución a la búsqueda de fallas y errores en el juego. Pero ahorraremos tiempo durante el pasaje en otro momento, hoy es solo una historia sobre la búsqueda de errores en la lógica del juego.

En septiembre de 2015, Nintendo lanzó Super Mario Maker, un juego de plataformas sobre el famoso fontanero Mario. Una de las características clave del juego era la capacidad de los usuarios de crear niveles ellos mismos (aquí se llaman cursos) y compartirlos con otros jugadores. Alguien crea niveles, rastrea el porcentaje de éxitos, y alguien, de hecho, pasa por estos niveles. Fue en este momento que los jugadores de los investigadores se peinaron: ¿es posible publicar un nivel infranqueable?


No tiene sentido dibujar algo así, aunque el nivel es realmente intransitable, tampoco podremos publicarlo.

Nintendo se enfrentó a una tarea bastante interesante: cómo evitar que la biblioteca se "abarrote" de niveles vacíos e intransitables. Y se las arreglaron bien con ella. La solución es bastante elegante y se ha utilizado más de una vez en juegos con un concepto creativo similar: debe pasar el nivel usted mismo antes de publicarlo y cargarlo en el servidor. Y una vez desde el principio y una vez desde cada punto de control. De hecho, la tarea se reduce al hecho de que es necesario desarrollar un curso que el autor podrá tomar durante la publicación, pero no después.

Intento número 1. Código de bloqueo


El juego tiene muchos objetos que interactúan entre sí según las reglas conocidas. Puedes intentar jugar algo como un código de bloqueo.

Por ejemplo, puede tomar la siguiente pieza de trabajo:


Un kupa (1) no puede atravesar un enjambre de monstruos en su camino (3), con la excepción de los fantasmas (2). Los monstruos, mientras están en la cabeza del otro, no se dispersan y se quedan quietos. Si Mario golpea un bloque de ladrillos (4), el monstruo inferior de la pila morirá, dejando caer al fantasma un bloque más abajo. Si el fantasma está en la misma línea con el compartimento, puede ir más allá. El autor del nivel conoce la cantidad de monstruos antes de cada fantasma, y ​​sabe cuántas veces necesitas golpear cada bloque para despejar el camino hacia el compartimento. Tan pronto como el cupé pasa a todos los monstruos, activa el gatillo y despeja el paso para Mario.

Este ejemplo es solo para fines ilustrativos: en intentos reales para hacer un bloqueo de código, todo fue más complicado. El jugador no ve monstruos, el nivel se divide en segmentos independientes, en cada uno de los cuales necesitas saber cuántas veces y qué ladrillo vencer. Y solo el pasaje exacto de todos los segmentos abre el pasaje a la salida del curso.

Desafortunadamente, este enfoque tiene una serie de desventajas significativas:

  • Algún tipo de entusiasta nerd puede pasar mucho tiempo y clasificar todo cuantitativamente.
  • Un jugador exitoso simplemente golpeará los bloques seleccionados al azar y, de repente, estos serán los mismos bloques que deben ser golpeados la misma cantidad de veces.
  • Los jugadores simplemente pueden descargar el curso y abrirlo en el editor. Después de estudiar, con la debida diligencia, aprenderán el "código".

Continuamos la búsqueda de un método de carga de nivel intransitable.

Intento número 2. Monedas rojas


El usuario ReflectivistFox publicó un video de The Impossible Level en el que propuso una idea interesante para publicar un nivel intransitable. Es cierto, hay una limitación importante: si juegas desde el principio hasta la salida, seguiremos su curso, y es ABSOLUTAMENTE EXACTO-COMPLETAMENTE-completamente aceptable si usas el punto de control. Parecería que bajo tales restricciones no es tan interesante considerar el concepto de nivel, pero de hecho, incluso ese paso es muy importante. ¿Todavía recuerdas que durante la carga de nivel es necesario atravesarlo no solo desde el principio, sino también desde cada punto de control? ReflectivistFox superó la mitad de la limitación: su nivel se puede alcanzar en el momento del arranque, pero no en modo normal.

La idea clave es usar el elemento del juego "moneda roja" (aclararé de inmediato que los jugadores los llaman "rojo" y "rosa". Eran rojos en juegos anteriores en la serie Mario y rosa en Super Mario Maker. El principio de su trabajo es el mismo, por lo tanto, en adelante usaré solo "rojo"). En los niveles ordinarios, las monedas rojas se usan como parte de la clave recolectada. El autor del curso tiene varias monedas de este tipo en lugares de difícil acceso. Tan pronto como Mario las recoge todas (el jugador sabe el número exacto de monedas), recibe la llave de una puerta especial, detrás de la cual puede haber algunos bonos o un pasaje más arriba en el nivel.

Una característica importante es que estos puntos se ven particularmente afectados por estos puntos. Checkpoint guarda el juego cuando Mario lo activa. Si el jugador pierde, el personaje muere, luego se carga desde el último punto de control. Todos los elementos del juego se restauran: enemigos, bonificaciones y más. Pero no monedas rojas. No se restauran, aunque el número de monedas recogidas permanece. Y esta no es toda la característica. Si recoge todas las monedas rojas y pierde, el comportamiento cambia: el contador se restablecerá a cero y las monedas estarán en sus lugares originales.

ReflectivistFox en su nivel usó dos características del juego.


Tenga en cuenta que el punto de control (bandera roja en el centro) está medio cerrado por el bloque. Tal configuración crea un efecto interesante: puede activarlo alcanzando el bloque superior, y al cargar el juego no puede crear un personaje dentro del bloque, y se "caerá" debajo, cerca de las puertas y el dinosaurio.

Por lo tanto, el jugador que arranca desde el punto de control será llevado a una ruta alternativa. En esta ruta le espera lo siguiente:


Hay muchos elementos y es muy difícil de describir brevemente, por lo que destacaré solo las cosas más importantes.

Mario aparece desde la puerta y su mirada se dirige de la misma manera que en la imagen, pero necesita llegar a la puerta de la derecha (4). Para hacer esto, necesita ir a lo largo de las flechas hacia la izquierda, subir y atravesar los bloques desde arriba hacia la derecha (en la captura de pantalla, el camino sube y hacia la derecha a lo largo del borde, pero no puedes hacer un disparo más exitoso). La construcción especial de objetos (1) prohíbe que el personaje gire, si lo hace, entonces el objeto (2) desaparecerá, y la pared en movimiento sobre él cerrará el pasaje. Todos los demás métodos están vinculados al dragón usando el bloque POW (3): empujará y moverá la espalda, lo que le permitirá llegar a la izquierda sin provocar al grupo antes (1). Desafortunadamente, mover la unidad POW (3) hace que sea imposible usar la puerta (4). Para entrar por la puerta, el jugador necesita colocar algo debajo de la puerta para estar al mismo nivel. El jugador puede intentar levantar el bloque POW (3) con un juego de manos y llevarlo a la puerta, pero el autor también se encargó de esto: la parte vertical de la ruta es demasiado alta para ser superada con un salto normal. Todas las opciones disponibles para el jugador provocarán una explosión de prisioneros de guerra o la imposibilidad de llevar esta unidad a la puerta (4). Precisamente es en situaciones tan irresolubles que encuentra un jugador que decide pasar este nivel desde un punto de control. Pero, ¿cómo lo pasó el propio autor tras su publicación?

Presta atención al bloque (vacío), que marqué con el número 5. Inicialmente, una moneda roja se encuentra en este lugar. Durante el pasaje, antes del punto de control, el jugador no puede pasar y seguramente tomará esta moneda, y es por eso que en este lugar ahora está vacío. Durante el control, el juego no puede determinar qué monedas rojas ha recolectado el jugador, por lo tanto, al cargar el estado del juego en el punto de control, restaura todas las monedas rojas, lo que permite al jugador gamberro recogerlas todas si es necesario. La segunda moneda roja está amurallada en la pared y es imposible recogerla, lo que garantiza la imposibilidad de volver a cargar el contador de monedas y, por lo tanto, durante el juego no habrá monedas en lugar del bloque (5) cuando sea necesario. Y en el momento de la publicación, estará garantizado allí, lo que le permite usarlo en lugar del bloque POW (3) para moverse hacia la izquierda y salir tranquilamente de la puerta (4). Y ya hay una salida del campo cerca.

El resultado de este intento:

  • Puede pasar el nivel si no utiliza el punto de control en absoluto. Por lo tanto, este método no nos conviene.
  • Pasar el nivel durante la publicación y durante el juego todavía tiene diferencias de juego, lo que significa que debemos continuar buscando.

No se desanime, continúe y mire.

Intento número 3. Seta extraña


La diferencia fue encontrada! Este es el llamado "hongo extraño". Con una probabilidad del 1%, aparece un hongo extraño en lugar del habitual.


Así es como se ve un hongo extraño.


Pero Mario después, hmm ... usando el hongo. Strange Mario difiere de los saltos usualmente significativamente más altos y largos. Además, si Mario primero come un hongo ordinario, y luego extraño, Mario se volverá extraño. Si haces lo contrario, seguirá siendo extraño: un hongo común no tendrá ningún efecto.

Si todo fuera tan simple, cualquiera podría crear un nivel como este:


La longitud del foso está especialmente diseñada para que el Mario habitual no salte sobre él, y el extraño es fácil. Es suficiente repetirlo una y otra vez hasta que se cae un hongo extraño. Desafortunadamente, este método no nos conviene, ya que da un total de 1% para la probabilidad de pasar. Afortunadamente, el nivel de Nintendo tampoco está contento debido al hecho de que al 99% es intransitable y decidieron arreglar esta situación. En el momento de la publicación, nunca aparecerán hongos extraños.

Aqui esta! Solo necesitamos invertir la lógica. Si durante el pasaje habitual el hongo puede caerse, pero no durante la publicación, entonces debe llevar todo a un absoluto. Es necesario forzar la aparición del hongo, y luego, en el modo habitual, el extraño Mario siempre jugará, y en el momento de la publicación, el habitual.


Esto puede parecer una "granja de hongos" completa, lo que obligará a Mario a recolectar alrededor de 200 hongos (un límite de 100 bloques de un tipo, pero puede colocar 100 en el mundo principal y otros 100 en el adicional).


Y aquí hay un ejemplo de una "trampa" para el extraño Mario. Debido a un salto más alto, no podrá convertirse en una rama a la izquierda y quedará bloqueado hasta que termine el temporizador (para ser precisos, hay un astuto sistema de bombas y obstáculos que obligan a Mario a saltar más alto, y para el extraño Mario esto es suficiente para encerrarse, y el habitual solo activa la bomba y puede salir de curso).

Poniéndolo todo junto y resumiendo:

  • Un muy buen intento, que con una gran probabilidad no permitirá pasar el juego en modo normal.
  • Sin embargo, hay una probabilidad de 13.4% (0.99 ^ 200 ~ 0.134, si creemos que todo se genera con la misma probabilidad) de que el hongo extraño no se caerá, y el nivel aún se pasará. E incluso si no es uniforme, entonces todavía hay una posibilidad, y el nivel se puede alcanzar potencialmente.

Que hacer Última oportunidad

Intento número 4. Bloques con una entidad doble


¿Recuerdas la primera foto de este artículo? Lo repetiré:


Este nivel fue publicado en realidad entre otros niveles. Y se puede publicar todavía.

Nintendo hizo un buen trabajo cuando se le ocurrió la lógica de verificar los niveles, pero este no fue siempre el caso. Cuando el juego recién se lanzó, tenía errores. Y si usamos uno de ellos, podremos cumplir nuestro plan.

Primero necesitas borrar todos los datos en Wii U e instalar Super Mario Maker v1.0. Debes hacerlo sin conexión para que el juego no se actualice. Y será posible jugar el juego tal como estaba en el momento del lanzamiento.

Ahora necesitamos hablar sobre bloques con una entidad doble. Esta es una falla que permitió que los bloques se vean de una manera, mientras que en realidad son completamente diferentes. Para crear uno, tenía que tomar uno de los tres tipos de bloques: una moneda, una nube o un bloque infranqueable sólido, colocarlo en el mapa y colocar otro bloque en la parte superior del mismo conjunto, pero moviéndose a lo largo de la ruta, y luego eliminar la ruta (los bloques con una ruta inicialmente tienen pequeño camino).


Ponemos un bloque continuo con una ruta en la nube.

Tales bloques colapsarán y se comportarán como el bloque original, y se verán superpuestos. Después de un tiempo, Nintendo lo parchó, lo que rompió todos los niveles que usaban este error, porque la reparación de bloques prácticamente dobles solo se superpuso.


Los bloques (1) solo se ven sólidos, pero lógicamente son monedas comunes.

Después de crear dicho nivel, no es necesario publicarlo de inmediato. Más precisamente, vale la pena intentarlo: el juego ofrecerá seguir nuestro curso, lo que haremos fácilmente. Pero enviarlo al servidor falla, no activamos Internet. Pero de todos modos, el nivel se marcará como aprobado y enviado al servidor sin verificaciones adicionales. Incluso después de actualizar el juego a la versión actual. En el que el curso ya es imposible de completar.

Hecho Aquí está: cargado y absolutamente seguro de ninguna manera y bajo ninguna circunstancia es un nivel aceptable. En el cuarto intento, se logró el éxito. Esto concluye nuestro breve viaje al mundo de exploración del juego Super Mario Maker.

Conclusión


Gracias por leer esta hoja de texto con imágenes. Traté de hablar sobre el proceso de encontrar errores en la lógica de la aplicación. En este caso, este es un juego, pero los enfoques generales se conservan si se transfieren al sistema y al software de la aplicación. El código se puede escribir bien, pero esto no significa que todo funcionará según lo previsto. Las vulnerabilidades lógicas son muy peligrosas y difíciles de detectar, pero esto también es interesante.

Todos los buenos juegos, vulnerabilidades y bueno!

Source: https://habr.com/ru/post/es433424/


All Articles