¿Cómo estar seguro de que un objective objective en un nivel de juego de 3 no será imposible?

Esto claramente no es un problema de encoding, sino el lógico. Estoy empezando a aprender cómo hacer un juego de combinar 3. pero hay una pregunta en mi mente.

cuando estableceré el objective para completar el nivel, ¿cómo sabré que se puede lograr el objective?

supongamos en un nivel donde tengo que recoger 5 objects rojos, 12 azules, 9 verdes haciendo coincidir los mismos (como héroes de la granja). ¿Cómo decidiría cuántos movimientos debo establecer para lograr este objective? Quiero decir que debería ser un desafío, pero no imposible.

ya que los objects engendran de forma aleatoria cuál es la garantía de que habrá suficiente cantidad de gems en el juego para que no sea imposible.

¿Hay alguna explicación lógica para esto, o simplemente tengo que probar y mirar cuántos movimientos se necesitan para lograr el objective?

¿Hay un algorithm que genera las gems de acuerdo con el set de objectives, o se generan de manera aleatoria?

Para ser más claro con mi pregunta, voy a tomar un ejemplo de farm-heros-saga de King.com.

En el nivel 9, el objective es recoger el número de cuatro types de objects 26, 26, 14, 5 respectivamente. y el número máximo de movimientos es 22.

ahora este objective puede ser alcanzable y desafiante (me refiero a que puede lograrlo en dos o tres bashs) pero no es imposible.

Ahora mi pregunta es qué hizo que esos muchachos estuvieran tan seguros de que no sería imposible, cómo decidieron que 22 movimientos serían suficientes y desafiantes.

bien … podrían haber puesto el número máximo de movimientos en 5 o 6. pero eso seguramente haría imposible borrar el nivel. Entonces, ¿cómo decidieron mantener el movimiento 22 o esto?

Están utilizando un patrón estático para generar y generar objects, o la proporción de gems coleccionables es fija (es decir, en el juego total habrá X%, Y%, Z%, M% de gems, respectivamente), o hay alguna otra manera. Solo necesito una pista, ¿qué debo search?

Según el generador de numbers aleatorios que esté utilizando, debería poder especificar un valor "sal". Esto le permite generar la misma serie de gems todo el time (aunque todavía son aleatorios). Si lo haces de esta manera, puedes ejecutar el nivel muchas veces y calcular cuántos movimientos debe realizar.

Un buen algorithm para generar cualquier tipo de rompecabezas solucionable es generar primero una configuration resuelta del rompecabezas, y luego retroceder un número de movimientos válidos que conducirían a esta configuration. Puede controlar fácilmente la dificultad por la cantidad de movimientos que realiza y tiene una solución válida para ello. Sin embargo, tenga en count que siempre podría haber una solución más rápida que la que generó.