Implementación de nivel

Recientemente comencé a crear un juego de desplazamiento lateral, con fines de aprendizaje. Al crear varios niveles para él, me encontré con la pregunta, cómo implementar estos niveles en mi juego. Hice (y creo que esta es la forma común, corrígeme si me equivoco, lo agradezco) un juego basado en el estado, con un estado de menu, un estado de juego, etc. Entonces, ¿cuál es la forma común de implementar varios niveles en el estado del juego? ¿Debo crear un nuevo estado para cada nivel? o debería ser el estado del juego el único estado "jugable", y "saber" (sin importar cómo) el nivel actual en el que se encuentra? ¿Cómo se daría count del conteo de puntos o algo por el estilo (como un sistema en vivo o un simple sistema de puntaje de puntaje alto)?

La implementación del concepto de nivel varía bastante, pero me vienen a la mente dos técnicas comunes.

La mayoría de los juegos abiertos, donde los niveles / progreso son meramente un estado interno del jugador, la implementación normal es hacer que los activos del juego se pongan al día con el estado del jugador (por lo que si tu nivel comienza "en los muelles", tu juego comienza poniéndote allí, y comienza a cargar.) El juego espera hasta que todos los resources hayan terminado de cargarse, luego cambia al estado "cargado".

La otra técnica común es hacer que el nivel sea más explícito. El nivel que debe cargarse todavía proviene de la información de la session del jugador, pero usted carga el nivel en el juego y luego coloca las entidades en sus puntos de inicio. Esta es la norma para los juegos que tienen niveles literales que son arenas de juego. Los juegos guardados para estos juegos de estilo tienden a save solo la diferencia de las condiciones iniciales del nivel.

Como puede ver, ninguno de estos implica que tenga un estado de juego por nivel, solo que el nivel está jugando información de catchup to player session, o los activos están explícitamente cargados para el nivel y el jugador se coloca dentro de él.

En su desplazamiento lateral, esto podría tomarse como su información de session que contiene el índice / ID de nivel, y luego cargar ese nivel en Starr del juego. Cuando su índice de nivel cambia, almacena toda la información que necesita para viajar de un nivel al siguiente, luego libera el nivel actual y carga el nuevo, finalmente coloca su estado guardado.

Los puntos o el progreso del juego normalmente se administran a través de la información de la session, que generalmente incluye tu vida actual, puntuación, time de juego, pero no la información intranivel (como nivel de salud, velocidad, número de viñetas en la pantalla). Esta separación es importante en los juegos donde el nivel no siempre se asigna a la location (juegos donde vuelves a visitar las ubicaciones, por ejemplo), pero puede ayudarte a simplificar tu forma de pensar incluso en juegos lineales.

Simplemente, el estado del juego puede llevar consigo un índice para el nivel actual. Querrá un disparador (una function como mínimo) para cuando finalice el nivel, de modo que pueda download el nivel actual, actualizar el índice de nivel actual, luego cargar el (nuevo) nivel actual y comenzar a jugar.

Puede crear otro estado para cada nivel, pero generalmente no es necesario. Las diferencias de datos entre "front end" y "in game" no son las mismas que las diferencias entre los niveles. Si quería estado por nivel, podría tener otra máquina de estado en el estado del juego, la forma más rudimentaria de eso es un índice que representa el nivel actual. 🙂