Cómo crear mecánicas de juego confiables usando solo Excel: modelado y optimización de soluciones

imagen

Estamos en búsqueda, no iteración


El diseño del juego es básicamente un proceso de búsqueda . Al participar en el diseño, exploramos muchas configuraciones de diseño posibles para resolver un problema de diseño específico. Por ejemplo, puede ser una forma de conectar habitaciones en una mazmorra, un conjunto de funciones y habilidades que poseen varios agentes del juego, "números mágicos" que determinan la efectividad de las unidades en un sistema de combate o una combinación de características que estarán presentes en nuestro juego.

Del mismo modo que un personaje controlado por IA utiliza un sistema de búsqueda de rutas para navegar por el mundo del juego, un diseñador necesita navegar por un espacio de muy alto nivel de posibles configuraciones, tomando una configuración inicial y cambiándola iterativamente. Consideramos cuidadosamente un aspecto separado del diseño: el sistema de combate, una de las partes del mundo del juego, el árbol tecnológico en la estrategia, y tratamos de encontrar una manera de mejorarlo cambiando esta configuración.

A los diseñadores les gusta usar el término "iteración" para describir este proceso, pero la palabra "buscar" sería más adecuada aquí. La verdad es que cuando creamos "iteraciones" de diseño, experimentamos con el juego que se está desarrollando. Hacemos suposiciones razonables sobre pequeños conjuntos de modificaciones que convierten la configuración de diseño actual en una nueva, que, en nuestra opinión, cumplirá mejor los criterios de diseño.

Tales "iteraciones" son completamente diferentes a los cambios lineales que generalmente ocurren en las "iteraciones" del código de la computadora; mucho más se parecen a una búsqueda en un laberinto con muchas curvas cerradas y retornos forzados. A menudo nos acercan a la meta, pero a menudo no está claro si el juego ha mejorado desde ellos. A veces resulta que los cambios de diseño, que, en nuestra opinión, deberían haber mejorado el juego, tener defectos imprevistos y tenemos que revertirlos o volver a intentarlo.

El diseño del juego es una disciplina increíblemente compleja. El diseño es como una habitación oscura con muchos objetos afilados; es extremadamente difícil moverse con seguridad a lo largo de él, alejándose de caminos muy transitados. Casi siempre nos esperan lesiones dolorosas en el camino, especialmente si te mueves demasiado rápido. Y tenemos bastantes herramientas para iluminar esta habitación oscura, así como algunas técnicas claramente definidas y detalladas para realizar un proceso de búsqueda de diseño.



Debido a la existencia de este cuarto oscuro, realizamos "iteraciones"; no sabemos cuáles serán las consecuencias de las decisiones hasta que las verifiquemos. En otras palabras, estamos en búsqueda (Will Wright en su charla en el GDC 2004 lo llamó "buscar en el espacio de la solución").

Por lo tanto, muy a menudo el diseño se convierte en un cuello de botella de rendimiento, la principal fuente de fallas y el mayor factor de riesgo en el desarrollo del juego. Incontables equipos de desarrollo quedaron atados de pies y manos por decisiones de diseño mal concebidas, deslizamiento en el proceso creativo, cambio de funcionalidad, percepción errónea del mercado objetivo y otros problemas de diseño que condujeron a problemas de calidad del producto.

Dados todos los peligros asociados con los experimentos de diseño, no es sorprendente que muchos editores y grandes desarrolladores estén tan ansiosos por evitar riesgos, prefiriendo adherirse estrictamente a géneros, licencias y supuestos de género establecidos y bien investigados. Es por eso que no van a los riesgos conocidos de la innovación de diseño que pueden traer resultados desconocidos. Explorar una habitación oscura es demasiado arriesgado.

Nos gustaría encontrar formas de cambiar esta actitud. En lugar de evitar la innovación, es mejor encontrar formas de mejorar nuestras habilidades de diseño, ampliar nuestras capacidades y crear herramientas poderosas que hagan que la innovación de diseño sea más segura y eficiente.

Esta serie de artículos


Este artículo será el primero de una serie de publicaciones sobre soluciones de modelado : un conjunto de herramientas para descomponer soluciones en modelos formales, que luego se pueden usar para buscar y encontrar el resultado más deseable.

El modelado y la optimización de decisiones a menudo se utilizan en la gestión, las finanzas, la planificación de proyectos y muchas otras áreas para mejorar el proceso de toma de decisiones y resolver diversos problemas y optimizaciones de toma de decisiones. Esto se logra buscando entre posibles alternativas, que es más rápido que una elección manual por parte de las personas.

A pesar de todas sus ventajas potenciales, el modelado y la optimización de soluciones, parece ser un tema bastante inexplorado para los diseñadores de la industria del juego. Una encuesta de diseñadores profesionales en el popular foro de desarrolladores mostró que solo el 25% de los encuestados al menos oyó hablar del modelado de decisiones, y solo el 8% lo usó en la práctica. Una encuesta similar realizada entre diseñadores a través de Facebook mostró aproximadamente los mismos resultados con un número similar de encuestados.


Cuando se usan correctamente, las soluciones de modelado pueden mejorar significativamente muchos aspectos del proceso de diseño:

  • Puede ayudar a optimizar la configuración de sistemas de diseño específicos o los valores óptimos de los parámetros del juego.
  • Puede arrojar luz sobre las decisiones como una combinación de características que deben incluirse en el juego.
  • Ayuda a modelar las decisiones que puede tomar un jugador, en particular, para identificar las estrategias dominantes o las formas en que el jugador puede "vencer al sistema".

En esta serie de artículos hablaré sobre ejemplos de las tres categorías de uso.

Definición


¿Qué es el "modelado de decisiones"?

En pocas palabras, entonces:

El modelado de decisiones es el proceso de simulación de una solución con la posterior automatización de la búsqueda de su cálculo.

Comenzamos preguntando algún tipo de solución, luego tratamos de seleccionar todos los factores en los que esta solución consiste, y luego los incorporamos en un modelo que describe con precisión la solución, y especificamos el conjunto de variables de entrada y una variable de salida. Luego buscamos soluciones óptimas para el conjunto de variables de decisión (o variables de entrada) que crean la mejor salida posible de todas las posibles.

Si todo se hace correctamente, entonces podemos buscar un número mucho mayor de posibles soluciones que las que se harían manualmente o en la imaginación. Aunque no podemos aplicar este sistema a todo, para algunas tareas podemos obtener mejores resultados, calcularlos más rápido y, en algunos casos, incluso podemos resolver problemas que no se pueden resolver de otra manera.

Durante este proceso, también indicamos una pluralidad de una o más condiciones , que se utilizan como límites que confirman la corrección de nuestro modelo. Dichas condiciones pueden limitar el rango de valores o el tipo de variables entrantes, así como cualquier otro aspecto de nuestro modelo.

¿Por qué construir modelos?


Si jugaste Sid Meier's Civilization , entonces probablemente algún día te preguntaste: “Espera un minuto, ¿cómo es la mejor manera de comenzar el desarrollo de la ciudad? ¿Necesito construir primero un monumento y luego un almacén? ¿O se necesita primero el almacén? ¿O tal vez primero un templo y luego un almacén? ¿Qué decisión es mejor tomar? ¿Alguien puede responder a esta pregunta?

También puedes recordar la mecánica del combate en la estrategia en tiempo real. Equilibrar los parámetros de múltiples unidades en RTS es una tarea notoria por su complejidad. ¿Qué pasaría si tuviéramos un sistema que nos permita acelerar la solución del problema de equilibrio respondiendo preguntas sobre cómo equilibrar la batalla de un juego sin tener que jugar cada solución? ¿Qué pasaría si pudiéramos hacer preguntas al sistema? Por ejemplo: "¿cuántos espadachines necesitas para derrotar a dos recolectores y tres arqueros?" O: "¿Cuál es la combinación más barata de arqueros y catapultas para derrotar a una torre de vigilancia enemiga?"

De hecho, ¡tal sistema puede ser creado!

Si podemos modelar estas tareas de diseño de la manera correcta, entonces podemos usar las herramientas de optimización automática para buscar todas las respuestas posibles para encontrar la que mejor se adapte a nuestros criterios, sin tener que jugar el juego miles de veces.

Aquí hay un ejemplo de un problema similar, un ejemplo que resolveremos en un artículo futuro de la serie.

Digamos que tenemos un juego llamado SuperTank. En SuperTank, manejamos un enorme tanque fantástico luchando en el campo de batalla con otros super tanques. Antes de cada batalla, podemos elegir una combinación específica de armas para nuestro tanque.


Tenemos 100 créditos que puede gastar en equipos. El supertank del jugador puede transportar 50 toneladas de armas, y también tiene 3 ranuras "críticas" para armas especiales de alta potencia.

El juego tiene los siguientes cinco tipos de armas, y el jugador puede usar cualquier cantidad de cada tipo, o abandonarlo por completo:


Supongamos que necesitamos que el supertank tenga el mayor valor de daño posible (asumimos que el daño por segundo está indicado, independientemente de la velocidad del arma). También suponemos que todas las armas tienen el mismo alcance, trayectoria de proyectil, precisión y frecuencia de disparo, es decir, son idénticas en todo excepto los valores mostrados en la tabla.

Ahora responda rápidamente cuántas ametralladoras, cohetes, láseres, etc. necesita ser colocado en un súper tanque? ¿Qué combinación de uno o más tipos de armas nos causará el mayor daño, sin exceder los límites de peso, precio y ranuras críticas?

Intenta resolver el problema manualmente o usando una calculadora.

¿Se puede hacer esto?

Si lo intentas, asegúrate rápidamente de que es sorprendentemente difícil.

Quizás haya una manera de resolverlo usando ecuaciones matemáticas complejas, pero somos diseñadores, y las matemáticas no son lo nuestro.

También piense en cómo cambiará la respuesta con otros parámetros. ¿Cambiará la respuesta si en lugar de 50 toneladas el súper tanque puede acomodar 60? ¿O si en lugar de 100 préstamos tenemos 110 o 90? ¿Cómo cambiará la marcha óptima? ¿Y si tenemos 2 o 4 ranuras críticas?

Ahora imagine que tenemos un sistema que calcula instantáneamente el diseño de las armas con el mayor daño para cualquier conjunto de parámetros (peso, precio, ranuras críticas). Es suficiente ingresar los parámetros de las armas de la tabla, luego ingresar los parámetros del supertank (50 toneladas, 100 créditos, 3 ranuras críticas) - ¡y BOOM! - Tenemos el mejor equipo.

¿No sería maravilloso?

Podríamos usar este sistema para obtener respuestas instantáneas a todo tipo de preguntas útiles:

  • ¿Cómo cambiará el esquema óptimo cuando cambien los parámetros del super tanque?
  • ¿Cómo cambiará el equipo óptimo al cambiar los parámetros del arma?
  • ¿Cuál es el daño máximo que puede hacer supertank para cualquier parámetro dado (peso, precio, ranuras críticas)?
  • ¿Los cuatro parámetros de arma (Daño, Peso, Precio, Ranuras críticas) son apropiados y equilibrados para cada tipo de arma?
  • ¿Tenemos armas demasiado poderosas que se usan con demasiada frecuencia? Si algún tipo de arma es tan útil que siempre es correcto usarla, entonces siempre será la solución óptima, por lo que no habrá una opción significativa. En este caso, deberíamos eliminar el arma del juego o cambiar su equilibrio para que, en ciertas condiciones, no sea útil.
  • ¿Raramente o nunca hemos usado armas? Similar al párrafo anterior: si algún tipo de arma es tan inútil que la decisión correcta es nunca usarla, entonces tampoco hay una opción significativa. En este caso, vale la pena eliminar el arma del juego o cambiar su equilibrio, por lo que en ciertas condiciones es razonable usarlo.

Todas estas son preguntas de diseño muy importantes, las respuestas que cualquier diseñador debería querer saber. Conocer estas respuestas será increíblemente útil al equilibrar un juego de SuperTank .

En solo unos pocos párrafos, describimos una tarea que nos resulta muy difícil de resolver manualmente, pero que se resuelve trivialmente utilizando herramientas integradas en Microsoft Excel.

En un artículo futuro, crearemos un modelo real de soluciones para este ejemplo, que responderá a todas las preguntas anteriores.

Verá que un modelo que se puede crear en minutos le permitirá resolver esta difícil tarea. En poco tiempo, crearemos una herramienta poderosa que nos permita explorar de manera rápida y confiable el espacio de diseño.

Hoja de ruta


En esta serie de artículos, ilustraremos algunos ejemplos más complejos y crearemos hojas de cálculo de referencia para que pueda ejecutar todos estos ejemplos usted mismo, utilizando solo Excel instalado desde las herramientas. Entre estos ejemplos estarán los siguientes:

  • Un ejemplo simple de una batalla por un juego de estrategia.
  • Un modelo para optimizar las coordenadas de varios teletransportadores "agujeros de gusano" entre sí y sectores poblados en un juego multijugador masivo espacial (MMO)
  • Un modelo que determina el nivel de impuestos para un modelo simplificado de la ciudad con el fin de equilibrar la satisfacción de los residentes y los ingresos fiscales en una estrategia 4X como la Civilización de Sid Meier
  • Un modelo para elegir hechizos y habilidades para las clases de personajes en un juego multijugador masivo
  • Modelo de optimización para determinar el orden de construcción óptimo para una colonia planetaria en una estrategia 4X similar al clásico Master of Orion
  • Un ejemplo de un equipo que intenta encontrar la combinación correcta de características para un juego, y un modelo de decisión para ayudarlos a elegir los compromisos apropiados

En general, esta serie estará compuesta de ejemplos simples de cómo encontrar estrategias óptimas para jugadores en subsistemas de juego específicos, y luego pasará a modelos de decisión que permiten optimizar los parámetros de los sistemas de juego y optimizar combinaciones de conjuntos de "características".

En cada uno de estos casos, describimos la tarea, mostramos cómo modelarla en Excel y resolverla usando la herramienta Solver incorporada (en la versión rusa - "Buscando soluciones") de Excel. En cada caso, verá que podemos hacerlo más fácil, más rápido y más confiable que sin usar Solver o una herramienta similar. También para cada ejemplo, agregaré hojas de cálculo para que pueda descargarlas y verificarlas usted mismo, recrear los resultados y experimentar con sus propios modelos.

Además, no olvide que la representación interna, ya sea una hoja de cálculo, un programa de lenguaje de alto nivel u otra cosa, no importa . Lo importante no es en lo que trabajamos: en Excel y Solver, Java / C ++ / C #, o en otra cosa, sino en el hecho de que modelamos la tarea y nos esforzamos por resolverla.

¿Por qué usar modelos de decisión?


Algunos lectores pueden ser escépticos ahora. Parece que construir modelos de decisión es mucho trabajo. ¿Por qué se necesita todo este esfuerzo si podemos hacer pruebas personalizadas en forma de pruebas de grupos focales y pruebas beta?

Para empezar, diré que las soluciones de modelado no son aplicables a todas las tareas . Algunas tareas son demasiado complicadas o demasiado difíciles de modelar usando tales técnicas, además, hay muchos aspectos en el diseño (por ejemplo, consideraciones estéticas, el valor del juego como entretenimiento y la "sensación" del juego) que son difíciles o incluso imposibles de modelar numéricamente. Y las soluciones de modelado definitivamente no eliminan la necesidad de pruebas grupales, pruebas beta o jugar diariamente su propio proyecto en el proceso de su desarrollo.

Pero incluso con todo esto en mente, al final de la serie de artículos le resultará claro que los métodos de modelado y optimización de soluciones nos brindan un conjunto de herramientas único y poderoso. Pueden resolver total o parcialmente muchos problemas que no se pueden resolver de otra manera, así como proporcionarle respuestas e información sobre todo tipo de problemas de diseño que son difíciles de resolver de otra manera.

Como con cualquier otra herramienta, su usuario debe decidir sobre su aplicabilidad.

Hay muchos casos en los que los modelos de decisión pueden ser inaceptables o demasiado engorrosos. Pero como verá en la serie de artículos, también son sorprendentemente útiles, y cuanto más tomemos las decisiones de diseño correctas y eliminemos los errores en las primeras etapas, incluso antes de la etapa de prueba, es más probable que los sistemas de diseño sean duraderos y emocionantes. e inconfundible.

Piense en las herramientas disponibles para un programador típico. El trabajo de los programadores es muy complicado, pero muchas herramientas lo simplifican para ayudar a encontrar errores incluso antes de la fase de prueba. Tienen compiladores que constantemente te recuerdan los errores tipográficos realizados; tienen prácticas de programación defensivas que identifican defectos de software; realizan revisiones de código que ayudan a identificar fallas en el código de otra persona o señalan prácticas de programación viciosas; Además, tienen muchas herramientas de análisis de perfiles y estáticos para eliminar todo tipo de errores de rendimiento y otros defectos.

Pero los diseñadores no tienen tales herramientas. Podemos decir que nuestro trabajo también es complicado, pero no tenemos un compilador que nos diga que "cometimos un error de sintaxis". , , . , «». -, ; - , , , , .

, .

, , , .

, . , , , . , Cut the Rope Cut the Rope: Play Forever ( ); Ludi, Yavalath ( ); Evolver City Conquest ( ).

. : , « »?

— , —


, , : , , . :

  • . Microsoft Excel Solver (« »). , Excel, . , , ( ) .

  • (, , ). , : , , , . .

  • ; .

, , . , , , , , Solver Excel.

, : Excel, , . — , , .


, . , . , , , .

, :

  • . , , . , , . , , , , , .

  • (). , . « », , Excel. ( / ), ( ), .

  • . , - , , «» . . , , /, .

  • . , Excel Solver, , , , . Solver , . , , « » . Solver ( Frontline ) , , Solver .

  • . , , 100% , . : , , , .

:

  • , . , , , , .

, , . , . , , .

, , , , usability/, , , .

, . , , , Excel. , , Excel, . , , .

, . , , , , .

, , , , .

, , , .

. , . , , , .

Conclusión


, .

, «» «» . . , , , «» , .

— , . , . , , -. , .

2.


.


, , , , .

, , . , , .

, :

  • — , — , . 0 - , . , , . .
  • « » — . , , Tootsie Pop 17 0,25 , « ». .
  • «» — , . .
  • «» ( «») — , ( ) . , . ( : , , .)

( Solver (« »), Microsoft Excel), , , ( ) , (, ).

Solver , , ; , . («Simplex LP», «GRG Nonlinear», «Evolutionary») , , .

, , , Tootsie Pop, :


Podemos pedirle a Excel Solver que resuelva este problema ordenándole que minimice la celda objetivo "Masa restante en Tootsie Pop", y él rápidamente usaría experimentos para determinar que el valor de la celda de solución amarilla produce dicho resultado ( "Cuántas veces lamer para llegar al medio de Tootsie Pop") es 68.

Por supuesto, hacer esto es un poco estúpido, porque del enunciado del problema está claro que la respuesta será 17 / 0.25 = 68. No tiene sentido ejecutar el optimizador para resolver un problema que se puede resolver con aritmética simple.

Sin embargo, en la práctica, la mayoría de los problemas que enfrentamos no tendrán soluciones matemáticas simples. Tendrán muchas variables de decisión que conducen a la meta de maneras no obvias, y emparejar las variables de decisión y el resultado será demasiado complicado para los cálculos matemáticos manuales de la ecuación (y nuevamente, en esta serie evitaremos cuidadosamente las matemáticas complejas).

Nos centraremos en la descripción de las tareas y dejaremos todo el trabajo duro a Solver.

Ejemplo 1: impuestos


En nuestro primer modelo de decisión real, mostraremos un ejemplo de determinación de la tasa impositiva óptima. A nadie le gustan los impuestos, pero en este caso no pagaremos, sino que recibiremos impuestos; Espero que esto reduzca tu tormento.

Imagine que estamos creando una estrategia 4X similar a la Civilización de Sid Meier . Estamos en el proceso de crear ciudades con cierto nivel de insatisfacción, dependiendo de su tamaño. Los residentes "insatisfechos" esencialmente no están dispuestos a cooperar, y no recibimos ingresos de ellos. También podemos intentar obtener dinero de las ciudades cambiando la tasa impositiva de cada ciudad, pero con un aumento en la tasa impositiva, el nivel de insatisfacción crecerá exponencialmente, por lo que los impuestos muy altos se vuelven contraproducentes.

Supongamos también que podemos indicar una tasa impositiva con un incremento del 10% en el rango de valores del 0% al 50%. Aquí hay una captura de pantalla que muestra un sistema similar a la clásica estrategia 4X de Master of Orion 2 :


Como diseñadores, queremos hacer una pregunta simple: ¿cuál será la tasa impositiva óptima en el caso general?

Esta debería ser una tarea simple, porque solo hay 6 valores aceptables de la tasa impositiva. Simplemente podemos probar cada uno de los 6 valores de forma manual, encontrar el que nos da el mayor ingreso, ¡y sobre esto considerar el problema resuelto!

(De hecho, probablemente pueda encontrar una ecuación matemática para resolver este problema, como en el ejemplo de Tootsie Pop, pero será contraproducente, porque estamos preparando este modelo para que se convierta en uno más complejo, que no se puede resolver usando ecuaciones Además, en esta serie de artículos evitamos las matemáticas).

Comencemos describiendo la tarea de la siguiente manera:

  • Tenemos una ciudad de tamaño 12 (lo que significa 12 millones de personas). Estas personas están representadas como 12 "ciudadanos" separados.
  • Cada ciudadano en cualquier momento puede estar satisfecho o insatisfecho.
  • Los ciudadanos satisfechos pagan en forma de impuestos (tasa impositiva x 10) (es decir, por ejemplo, una tasa impositiva del 20% nos da 2 unidades monetarias en ingresos fiscales por cada ciudadano satisfecho).
  • Los ciudadanos insatisfechos no pagan impuestos.
  • Hay 3 ciudadanos insatisfechos en la ciudad que siguen insatisfechos independientemente de la tasa impositiva.
  • Un número adicional de ciudadanos se vuelve infeliz según la siguiente fórmula: (Población) x ((Tasa de impuesto) x (Tasa de impuesto)) x 3.5, el valor se redondea hacia abajo al número entero más cercano. Para nuestra ciudad de tamaño 12, esto nos dará 0 ciudadanos insatisfechos adicionales a tasas de 0% y 10%, 1 ciudadano insatisfecho adicional a una tasa de 20%, 3 ciudadanos insatisfechos adicionales a una tasa de 30%, 6 a una tasa de 40% y 10 a tasa del 50%.

Es simple, ¿verdad?

Lo describiremos en la hoja de cálculo adjunta al artículo de la siguiente manera:


Puede notar que establecemos el cuadro de decisión amarillo (Nivel de impuestos (0-5)) como una forma indirecta de indicar la tasa de impuestos. En lugar de especificar la tasa de impuestos directamente en la celda de decisión, la celda de cálculo de la Tasa de impuestos toma el número de Nivel de impuestos de la celda de decisión y lo multiplica por 10%. Hay una razón lógica para hacer esto indirectamente, y lo veremos pronto.

Ahora podemos experimentar y sustituir todos los valores posibles del nivel de impuestos. Simplemente puede ingresar cada uno de los números del 0 al 5 en la celda Nivel fiscal y obtener lo siguiente:


Como puede ver, hay una tasa impositiva óptima: 30%, que maximiza los ingresos fiscales, dando 18 unidades de moneda.

¡Automaticemos el sistema!


Esto es ciertamente genial, pero ¿qué pasa si tenemos más de seis opciones? ¿Qué pasa si hay cientos de posibles tasas impositivas o si necesitamos cambiar otras variables de decisión? Todo se volverá demasiado complicado para probar los valores manualmente.

Como veremos, esto es exactamente para lo que se usa Solver.

Primero, restableceremos el valor de la celda Nivel fiscal a cero. Luego iremos a la pestaña Datos de Excel y veremos en el lado derecho de la cinta, en la sección Análisis, el botón Solver ("Buscar una solución").


Si no lo ve, vaya a Opciones de Excel, seleccione la categoría Complementos, asegúrese de que los Complementos de Excel estén seleccionados en la lista desplegable Administrar. ), haga clic en Ir y asegúrese de que el Complemento Solver esté marcado.

Después de hacer clic en el botón Solver, debería ver un cuadro de diálogo similar.


Veamos ahora todos los pasos involucrados en la configuración del cuadro de diálogo Solver.

En el campo "Establecer objetivo" ("Optimizar la función objetivo") indicamos lo que necesitamos optimizar. En este caso, estamos tratando de obtener la mayor cantidad posible de ingresos fiscales, por lo que seleccionaremos el cuadro naranja para el objetivo, que representa los ingresos fiscales, y luego haremos clic en "Para: Máx."

En la sección "Al cambiar las celdas variables", seleccione las celdas que debe calcular el "Buscador de soluciones". Necesitamos determinar la tasa impositiva óptima, así que seleccione el cuadro de solución amarilla (Nivel impositivo (0-5)). Si todo funciona bien, como resultado, a esta celda se le asignará un valor de 3 correspondiente a una tasa impositiva del 30%, cuya optimización ya hemos determinado en los cálculos manuales.

Finalmente, necesitamos agregar algunas restricciones . De hecho, las restricciones son requisitos previos para cualquier celda en nuestro modelo de solución, y Excel Solver se enfocará solo en aquellas soluciones que satisfagan las restricciones especificadas. Dichas restricciones pueden limitar ciertas celdas (generalmente celdas de decisión y celdas de cálculo) a valores mínimos y / o máximos especificados, y / o hacer que Solver las procese como variables enteras o binarias (0 o 1). Las restricciones son increíblemente útiles para crear el modelo correcto, que será limitado.

Solver requiere al menos algunas restricciones que le permitan determinar los límites de las celdas de decisión; en otras palabras, los valores mínimo y máximo para cada celda. Para agregar una restricción, debe hacer clic en el botón Agregar a la derecha, y luego se abrirá el siguiente cuadro de diálogo:


Agregaremos dos restricciones, una para que la celda de solución del Nivel de impuestos satisfaga la condición> = 0, y otra más para que la celda de solución sea <= 5. Luego, en la lista Método de resolución, seleccione Evolutivo ("Evolutivo" buscar una solución ") y haga clic en Resolver (" Buscar una solución ").

Después de trabajar durante unos 30 segundos, Solver nos dará una respuesta similar:


Oh, hubo un problema. Solver recibió la cantidad correcta de ingresos, pero la tasa de impuestos es incorrecta. El jugador puede establecer impuestos solo con un incremento del 10%, pero Solver obviamente establece tasas de impuestos fraccionales, lo que el jugador no puede hacer.

Puede resolver el problema limitando el valor de la celda de tasa impositiva a números enteros. Puede ser igual solo a 0, 1, 2, 3, 4 o 5, pero sin valores intermedios.

Afortunadamente, en Solver esto puede ser bastante fácil de lograr. Abra Solver, haga clic en el botón Agregar, seleccione la celda de solución Nivel fiscal y luego seleccione la restricción int en la lista desplegable en el medio:


Ahora ejecute Solver nuevamente y obtenga lo siguiente:


Perfecto! Con poco esfuerzo, obtuvimos la respuesta correcta en Solver. Como veremos pronto, con un aumento en la escala de tareas, el volumen de trabajo realizado por la herramienta para nosotros excede significativamente el tiempo dedicado a configurarlo.

Ciudad en crecimiento


Expandamos la tarea ahora complicando ligeramente el modelo de ciudad.

En cualquier estrategia 4X, las ciudades (o planetas, colonias u otras unidades habitadas) crecen con el tiempo. Asumiremos que la ciudad tiene un aumento constante del 8% por turno, comenzando desde 1,500 mil (1.5 millones) de ciudadanos, y aumentando a un tamaño de 12 millones de habitantes. Ahora nuestra hoja de cálculo se verá así:


Cada nueva fila posterior de la tabla describe un curso del juego.

También cambiamos el cálculo del nivel base de insatisfacción. Ahora se calcula como un segundo del nivel de población básico (en millones), redondeado a la baja. Debido a esto, la insatisfacción básica será 0 hasta que la ciudad crezca hasta el tamaño 4, después de lo cual crecerá linealmente con el tamaño de la ciudad.

Como antes, podemos experimentar con los niveles de impuestos manualmente cambiando los valores del Nivel de impuestos. Recibiremos 0, 102, 190, 222, 144 y 65 unidades de moneda en ingresos fiscales, con cada nivel de impuestos del 0% al 50%.

Y nuevamente podemos hacer que Solver resuelva este problema; él determinará rápidamente que la tasa impositiva óptima es del 30% como antes, lo que nos da un ingreso de 222 unidades monetarias. Así es como se ve el cuadro de diálogo Solver:



Tasas de impuestos variables


Pero, por supuesto, el jugador no jugará de esta manera. Nuestra "ciudad" simulada establece una tasa de impuestos y la mantiene igual para cada movimiento del juego. Pero un jugador real puede tener una tasa impositiva en cualquier momento, y a menudo necesitará ajustarla porque su ciudad está creciendo y las circunstancias están cambiando.

¿No sería genial si no solo pudiéramos determinar una tasa impositiva óptima única, sino también calcular el valor óptimo en cada movimiento?

Ella nos hará saber al instante cómo el jugador puede ajustar mejor los impuestos.

¡Y resulta que esto se puede hacer! Después de haber configurado el modelo de solución de la manera correcta, podemos implementarlo increíblemente simple.

La mayor diferencia es que necesitamos eliminar la celda de decisión del Nivel de impuestos (0-5) y reemplazarla con una columna completa de celdas de nivel de impuestos, como se muestra a continuación.


Ahora, en lugar de obligar a Solver a optimizar una sola celda, le ordenamos que optimice toda la columna de Nivel de impuestos. Así es como se verá el cuadro de diálogo Solver: puede ver que es casi igual que antes, solo que en lugar de una celda, las variables y restricciones ahora representan un rango completo de celdas en la columna Nivel impositivo.


Solver en realidad demuestra que un cambio en la tasa impositiva cambia los resultados: el ingreso acumulado ahora es de 232 unidades monetarias. En comparación con la misma tasa impositiva, el crecimiento es solo del 5% (222 contra 232 unidades), pero sigue siendo significativo porque sabemos que algunos jugadores podrán lograrlo.

Si observa de cerca la solución que recibió Solver, puede ver que comienza con una tasa impositiva del 50%, porque una ciudad de tamaño 1 no contiene suficientes personas para generar descontento. En el proceso de crecimiento de la ciudad, la herramienta cambia la tasa de impuestos en cada turno en el rango del 20% al 30%, dependiendo de cuál generará más ingresos.

La hoja de cálculo para este ejemplo se puede descargar aquí ; en él, las tres etapas de este ejemplo se dividen en hojas separadas de una hoja de cálculo (el mismo impuesto para una ciudad con una población permanente, el mismo impuesto para una ciudad en crecimiento y una tasa impositiva variable para una ciudad en crecimiento).

Conclusión


La solución que encontramos muestra algo interesante: la naturaleza discreta de nuestro simulador de juego, que representa una agrupación arbitraria de millones de personas como "ciudadanos" discretos que pueden tener uno o dos estados discretos de satisfacción, introduce características características en el modelo. Aunque el juego en sí mismo en cierto nivel requerirá tal discretización en aras de la accesibilidad y la jugabilidad, los jugadores inteligentes y astutos podrán explotar esta fragmentación artificial para obtener ventajas sobre los jugadores que no quieren molestarse con los niveles de impuestos en cada turno.

Esta situación lleva a una pregunta interesante: ¿es esto lo que queremos? ¿La mecánica de los jugadores hace necesario que participen en la microgestión de los niveles de impuestos en cada turno? ¿Y queremos permitir a los jugadores orientados al poder vencer al sistema de esta manera; ¿Tal truco coincide con su ganancia del 5%?

No puedo responder estas preguntas. Al final, eres un diseñador que establece objetivos de diseño, por lo que depende de ti decidir si este nivel de operación del sistema cumple los objetivos que estableciste para el juego.

Por supuesto, este modelo es solo un marco desnudo. En una estrategia 4X real, los jugadores pueden tomar todo tipo de decisiones sobre cómo desarrollar la ciudad, construir edificios y hacer otros cambios que afecten el crecimiento de la ciudad, la satisfacción, los ingresos fiscales y la productividad.

En un futuro artículo de la serie, construiremos un modelo similar, pero mucho más complejo, de una colonia planetaria completa en un juego que recuerda al Maestro de Orión 2 . Este ejemplo será mucho más sofisticado, porque podremos tomar decisiones en cada turno que afectarán aún más todos estos parámetros, como el crecimiento y la productividad, es decir, cada decisión tendrá consecuencias que afectarán las decisiones posteriores. Sin embargo, todavía estamos convencidos de que el optimizador evolutivo de la herramienta Solver puede hacer frente a esta tarea.

En el próximo artículo, cumpliremos nuestra promesa y optimizaremos la compra de armas para SuperTank en el ejemplo del artículo introductorio.

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


All Articles