Estamos em busca, não em iteração
Design de jogos é basicamente um processo de
busca . Estando envolvidos no design, exploramos muitas configurações possíveis de design para resolver um problema específico de design. Por exemplo, pode ser uma maneira de conectar salas em uma masmorra, um conjunto de funções e habilidades que vários agentes do jogo possuem, "números mágicos" que determinam a eficácia das unidades em um sistema de combate ou uma combinação de recursos que estarão presentes em nosso jogo.
Assim como um personagem controlado por IA usa um sistema de localização de caminhos para navegar no mundo do jogo, um designer precisa navegar em um espaço de alto nível de possíveis configurações, pegando algumas configurações iniciais e alterando-as iterativamente. Consideramos cuidadosamente um aspecto separado do design - o sistema de combate, uma das partes do mundo do jogo, a árvore tecnológica da estratégia - e tentamos encontrar uma maneira de aprimorá-lo alterando essa configuração.
Os designers gostam de usar o termo "iteração" para descrever esse processo, mas a palavra "pesquisa" seria mais adequada aqui. A verdade é que, quando criamos "iterações" de design, experimentamos o jogo que está sendo desenvolvido. Fazemos suposições razoáveis sobre pequenos conjuntos de modificações que transformam a configuração atual do design em uma nova que, em nossa opinião, atenderá melhor aos critérios de design.
Essas "iterações" são completamente diferentes das alterações lineares que geralmente ocorrem nas "iterações" do código do computador; muito mais se assemelham a uma busca em um labirinto com muitas curvas fechadas e retornos forçados. Muitas vezes, eles nos aproximam do objetivo, mas muitas vezes não está claro se o jogo melhorou com eles. Às vezes acontece que as mudanças no design, que, em nossa opinião, deveriam melhorar o jogo, apresentar falhas imprevistas e precisamos revertê-las ou tentar novamente.
O design de jogos é uma disciplina incrivelmente complexa. O design é como uma sala escura com muitos objetos pontiagudos; é extremamente difícil movê-lo com segurança, afastando-se de estradas bem pisadas. Quase sempre lesões dolorosas nos aguardam ao longo do caminho, especialmente se você se mover muito rápido. E temos algumas ferramentas para iluminar essa sala escura, bem como algumas técnicas claramente definidas e detalhadas para executar esse processo de pesquisa de design.
Devido à existência desse quarto escuro, realizamos "iterações" - não sabemos quais serão as consequências das decisões até que as verifiquemos. Em outras palavras, estamos
em busca (Will Wright, em sua
palestra no GDC 2004, chamou de “busca no espaço da solução”).
Portanto, muitas vezes o design se torna um gargalo de desempenho, a principal fonte de falhas e o maior fator de risco no desenvolvimento de jogos. Inúmeras equipes de desenvolvimento acabaram atrapalhando as soluções de design mal concebidas, escorregando no processo criativo, alterando a funcionalidade, a percepção errônea do mercado-alvo e outros problemas de design que levaram a problemas de qualidade do produto.
Dados todos os perigos associados aos experimentos de design, não é de surpreender que muitos editores e grandes desenvolvedores estejam tão ansiosos para evitar riscos, preferindo aderir estritamente a gêneros, licenças e premissas de gêneros estabelecidos e bem pesquisados. É por isso que eles não correm os riscos conhecidos de inovação de design que podem trazer resultados desconhecidos. Explorar um quarto escuro é muito arriscado.
Gostaríamos de encontrar maneiras de mudar essa atitude. Em vez de apenas
evitar a inovação, é melhor encontrar maneiras de melhorar nossas habilidades de design, expandir nossos recursos e criar ferramentas poderosas que tornariam a inovação em design mais segura e eficiente.
Esta série de artigos
Este artigo será o primeiro de uma série de posts sobre
soluções de modelagem - um conjunto de ferramentas para decompor soluções em modelos formais, que podem ser usados para pesquisar para encontrar o resultado mais desejável.
A modelagem e a otimização de decisões são frequentemente usadas em gerenciamento, finanças, planejamento de projetos e em muitas outras áreas para melhorar o processo de tomada de decisão e resolver vários problemas e otimizações da tomada de decisão. Isso é feito através da pesquisa entre possíveis alternativas, que são mais rápidas do que uma escolha manual das pessoas.
Apesar de todas as suas potenciais vantagens, modelagem e otimização de soluções, parece ser um tópico bastante inexplorado para designers na indústria de jogos. Uma pesquisa com designers profissionais no popular fórum de desenvolvedores mostrou que apenas 25% dos entrevistados ouviram falar de modelagem de decisão e apenas 8% usaram na prática. Uma pesquisa semelhante realizada entre designers via Facebook mostrou aproximadamente os mesmos resultados com um número semelhante de entrevistados.
Quando usadas corretamente, as soluções de modelagem podem melhorar significativamente muitos aspectos do processo de design:
- Isso pode ajudar a otimizar a configuração de sistemas de design específicos ou os valores ótimos dos parâmetros do jogo.
- Ele pode esclarecer as decisões como uma combinação de recursos que precisam ser incluídos no jogo.
- Ajuda a modelar as decisões que um jogador pode tomar, em particular, para identificar as estratégias dominantes ou as maneiras pelas quais o jogador é capaz de "vencer o sistema".
Nesta série de artigos, falarei sobre exemplos das três categorias de uso.
Definição de
O que é "modelagem de decisão"?
Simplificando, então:
A modelagem de decisão é o processo de simular uma solução com a automação subsequente da pesquisa para seu cálculo.
Começamos perguntando algum tipo de solução, depois tentamos selecionar todos os fatores em que essa solução consiste e, em seguida, os incorporamos em um modelo que descreva com precisão a solução, e especificamos o conjunto de variáveis de entrada e uma variável de saída. Em seguida,
procuramos soluções ideais para o conjunto de variáveis de decisão (ou variáveis de entrada) que criam a melhor saída possível de todas as possíveis.
Se tudo for feito corretamente, podemos procurar um número muito maior de soluções possíveis do que seria feito manualmente ou na imaginação. Embora não possamos aplicar esse sistema a tudo, em algumas tarefas podemos obter melhores resultados, calculá-los mais rapidamente e, em alguns casos, podemos até resolver problemas que
não podem ser resolvidos de nenhuma outra maneira.
Durante esse processo, também indicamos uma pluralidade de uma ou mais
condições , que são usadas como limites, confirmando a correção do nosso modelo. Tais condições podem limitar o intervalo de valores ou o tipo de variáveis recebidas, bem como quaisquer outros aspectos do nosso modelo.
Por que construir modelos?
Se você jogou
Civilization de Sid Meier , provavelmente um dia se perguntou: “Espere um pouco, como é a melhor maneira de começar o desenvolvimento da cidade? Preciso primeiro construir um monumento e depois um armazém? Ou o armazém é necessário primeiro? Ou talvez um templo primeiro e depois um armazém? Qual decisão é
melhor tomar? Alguém pode responder a essa pergunta?
Você também pode se lembrar da mecânica do combate na estratégia em tempo real. Equilibrar os parâmetros de várias unidades no RTS é uma tarefa notória por sua complexidade. E se tivéssemos um sistema que nos permitisse acelerar a solução do problema de balanceamento, respondendo a perguntas sobre como equilibrar a batalha de um jogo sem reproduzir cada solução? E se pudéssemos fazer perguntas ao sistema? Por exemplo: “quantos espadachins você precisa para derrotar dois catadores e três arqueiros?” Ou: “Qual é a combinação mais barata de arqueiros e catapultas para derrotar uma torre de vigia inimiga?”
De fato, esse sistema pode ser criado!
Se conseguirmos modelar essas tarefas de design da maneira correta, podemos usar as ferramentas de otimização automática para procurar todas as respostas possíveis para encontrar a que melhor se adapta aos nossos critérios,
sem precisar jogar o jogo milhares de vezes.
Aqui está um exemplo de um problema semelhante - um exemplo que resolveremos em um artigo futuro da série.
Digamos que temos um jogo chamado SuperTank. No SuperTank, dirigimos um enorme tanque fantástico lutando no campo de batalha com outros super tanques. Antes de cada batalha, podemos escolher uma combinação específica de armas para o nosso tanque.
Temos 100 créditos que você pode gastar em equipamentos. O super tanque do jogador pode transportar 50 toneladas de armas e também possui 3 slots "críticos" para armas especiais de alta potência.
O jogo possui os seguintes cinco tipos de armas, e o jogador pode usar qualquer quantidade de cada tipo ou abandoná-lo completamente:
Suponha que precisamos que o super tanque tenha o maior valor de dano possível (assumimos que o dano por segundo seja indicado, independentemente da velocidade da arma). Também assumimos que todas as armas têm o mesmo alcance, trajetória do projétil, precisão e frequência de tiro, ou seja, são idênticas em tudo, exceto nos valores mostrados na tabela.
Agora responda rapidamente quantas metralhadoras, foguetes, lasers etc. precisa ser colocado em um super tanque? Que combinação de um ou mais tipos de armas nos causará o maior dano, sem exceder os limites de peso, preço e espaços críticos?
Tente resolver o problema manualmente ou usando uma calculadora.
Isso pode ser feito?
Se você tentar, verifique rapidamente se é surpreendentemente difícil.
Talvez haja uma maneira de resolvê-lo usando equações matemáticas complexas, mas somos designers, e a matemática não é nossa coisa.
Pense também em como a resposta mudará com outros parâmetros. A resposta mudará se, em vez de 50 toneladas, o super tanque puder acomodar 60? Ou se, em vez de 100 empréstimos, tivermos 110 ou 90? Como a engrenagem ideal mudará? E se tivermos 2 ou 4 slots críticos?
Agora imagine que temos um sistema que calcula instantaneamente o layout das armas com o maior dano para qualquer conjunto de parâmetros (peso, preço, slots críticos). Basta digitar os parâmetros das armas da tabela e, em seguida, os parâmetros do supertank (50 toneladas, 100 créditos, 3 slots críticos) - e
BOOM! - nós temos o melhor equipamento.
Isso não seria maravilhoso?
Poderíamos usar esse sistema para obter respostas instantâneas a todo tipo de perguntas úteis:
- Como o esquema ideal muda quando os parâmetros do super tanque mudam?
- Como o equipamento ideal mudará ao alterar os parâmetros da arma?
- Qual é o dano máximo que a supertank pode fazer por qualquer parâmetro (peso, preço, slots críticos)?
- Todos os quatro parâmetros da arma (dano, peso, preço, slots críticos) são apropriados e balanceados para cada tipo de arma?
- Temos armas muito poderosas que são usadas com muita frequência? Se qualquer tipo de arma for tão útil que seja sempre correto usá-la, será sempre a solução ideal, portanto não haverá escolha significativa. Nesse caso, devemos remover a arma do jogo ou alterar seu equilíbrio para que, em determinadas condições, não seja útil.
- Raramente ou nunca usamos armas? Semelhante ao parágrafo anterior - se algum tipo de arma é tão inútil que a decisão certa é nunca usá-la, também não há escolha significativa. Nesse caso, vale a pena remover a arma do jogo ou alterar seu equilíbrio, para que em certas condições seja aconselhável usá-la.
Todas essas são perguntas de design muito importantes, as respostas que qualquer designer deve querer saber. Conhecer essas respostas será incrivelmente útil ao equilibrar um jogo
SuperTank .
Em apenas alguns parágrafos, descrevemos uma tarefa que é muito difícil de resolver manualmente, mas que é trivialmente resolvida usando as ferramentas incorporadas no Microsoft Excel.
Em um artigo futuro, criaremos um modelo real de soluções para este exemplo, que responderá a todas as perguntas acima.
Você verá que um modelo que pode ser criado em minutos permitirá resolver essa tarefa difícil. Em pouco tempo, criaremos uma ferramenta poderosa que nos permitirá explorar de forma rápida e confiável o espaço do design.
Roteiro
Nesta série de artigos, ilustraremos alguns exemplos mais complexos e criaremos planilhas de referência para que você possa executar todos esses exemplos sozinho, usando apenas o Excel instalado a partir de ferramentas. Entre esses exemplos, estão os seguintes:
- Um exemplo simples de uma batalha por um jogo de estratégia
- Um modelo para otimizar as coordenadas de vários "buracos de minhoca" de teleporte em relação uns aos outros e setores preenchidos em um MMO (Space Mass Multiplayer Game)
- Um modelo que determina o nível de impostos para um modelo simplificado da cidade, a fim de equilibrar a satisfação dos moradores e as receitas tributárias em uma estratégia 4X como a Civilização de Sid Meier
- Um modelo para escolher feitiços e habilidades para classes de personagens em um enorme jogo multiplayer
- Modelo de otimização para determinar a ordem de construção ideal para uma colônia planetária em uma estratégia 4X semelhante ao clássico Master of Orion
- Um exemplo de uma equipe tentando encontrar a combinação certa de recursos para um jogo e um modelo de decisão para ajudá-los a escolher os compromissos apropriados
Em geral, esta série será composta de exemplos simples de como encontrar estratégias ótimas para jogadores em subsistemas específicos de jogos e, em seguida, seguirá para modelos de decisão que permitem otimizar os parâmetros de sistemas de jogos e combinações de conjuntos de "recursos".
Em cada um desses casos, descrevemos a tarefa, mostramos como modelá-la no Excel e resolvê-la usando a ferramenta Solver incorporada (na versão russa - “Finding Solutions”) do Excel. Em cada caso, você verá que podemos torná-lo mais fácil, rápido e confiável do que sem o uso do Solver ou de uma ferramenta similar. Também para cada exemplo, adicionarei planilhas para que você possa baixá-las e ver você mesmo, recriar os resultados e experimentar seus próprios modelos.
Além disso, não esqueça que a representação interna - seja uma planilha, um programa de linguagem de alto nível ou qualquer outra coisa -
não importa . O importante não é o que trabalhamos - no Excel e Solver, Java / C ++ / C # ou em outra coisa, mas o fato de modelarmos a tarefa e nos esforçarmos para resolvê-la.
Por que usar modelos de decisão?
Alguns leitores podem estar céticos agora. Parece que construir modelos de decisão é muito trabalhoso. Por que todo esse esforço é necessário se podemos realizar testes personalizados na forma de testes de grupos focais e beta?
Para começar, direi que as
soluções de modelagem não são aplicáveis a todas as tarefas . Algumas tarefas são muito complexas ou difíceis de modelar usando essas técnicas; além disso, existem muitos aspectos no design (por exemplo, considerações estéticas, o valor do jogo como entretenimento e a "sensação" do jogo) que são difíceis ou mesmo impossíveis de simular numericamente. E as soluções de modelagem definitivamente
não eliminam a necessidade de testes em grupo, testes beta ou execução diária de seu próprio projeto no processo de desenvolvimento.
Mas, mesmo com tudo isso em mente, ao final da série de artigos, ficará claro para você que os métodos de modelagem e otimização de soluções nos fornecem um conjunto de ferramentas exclusivo e poderoso. Eles podem resolver completamente ou parcialmente muitos problemas que não podem ser resolvidos de outra maneira, além de fornecer respostas e informações sobre todos os tipos de problemas de design que são difíceis de resolver de outra maneira.
Como com qualquer outra ferramenta, seu usuário deve decidir sobre sua aplicabilidade.
Existem muitos casos em que os modelos de decisão podem ser inaceitáveis ou muito pesados. Mas, como você verá na série de artigos, eles também são surpreendentemente úteis, e quanto mais tomamos as decisões corretas de design e nos livramos de bugs nos estágios iniciais, mesmo antes da fase de teste, maior a probabilidade de os sistemas de design serem duráveis, emocionantes e inconfundível.
Pense nas ferramentas disponíveis para um programador típico. O trabalho dos programadores é muito complicado, mas é simplificado por muitas ferramentas para ajudar a encontrar erros, mesmo antes da fase de teste. Eles possuem compiladores que lembram constantemente os erros de digitação; eles têm práticas defensivas de programação que identificam defeitos de software; realizam análises de código que ajudam a identificar falhas no código de outra pessoa ou apontam práticas de programação viciosas; Além disso, eles têm muitas ferramentas de análise de perfil e estática para se livrar de todos os tipos de bugs de desempenho e outros defeitos.
Mas os designers não possuem essas ferramentas. Podemos dizer que nosso trabalho também é complicado, mas não temos um compilador que nos diga que "cometemos um erro de sintaxe".
Não temos um criador de perfil, nem ferramentas de depuração nem ferramentas de análise estática. Não podemos realizar revisões de código porque não temos nenhum "código". Escrevemos especificações e documentos de design, e é tudo; podemos trocar documentos e especificações de funções dentro da equipe e esperar que nossos colegas nos dêem um bom feedback, mas na maioria das vezes precisamos colocar o sistema no jogo para entender se funciona ou não.Isso torna o design incrivelmente arriscado, longo e caro.Como no caso da programação, as pessoas tendem a cometer erros e isso é parte integrante do processo, por isso precisamos do maior número possível de ferramentas de alta qualidade para proteger a nós mesmos e a nossos projetos.Ainda estamos muito longe de possuir ferramentas de design completas que ajudam os designers a explorar o espaço do design. Ainda precisamos seguir o caminho que os compiladores, depuradores, profilers e ferramentas de análise estática fizeram na programação. Mas já vemos o surgimento de vários solucionadores específicos e ferramentas de design de jogos, incluindo um testador de jogabilidade da versão Cut the Rope chamada Cut the Rope: Play Forever ( link ); O sistema de design de jogos abstratos de Ludi, que gerou o jogo de tabuleiro Yavalath ( link ); e meu próprio assistente automático Evolver por equilibrar o jogo para celular City Conquest ( link ).As soluções de modelagem nos ajudarão a dar mais alguns passos para esse nível de suporte e nos permitirão começar a complementar e expandir o intelecto de nossos designers com a ajuda de ferramentas automatizadas. E se temos uma escolha: ter ou não ter ferramentas, por que escolher "não ter"?O principal não é planilhas, o principal é modelos
Esta série de artigos foi escrita para designers - ou seja, para todos os designers, independentemente da experiência que eles têm: arte, software, experiência na criação de histórias ou jogos de tabuleiro. Portanto, não complicaremos nem prometeremos o seguinte:- . Microsoft Excel Solver (« »). , Excel, . , , ( ) .
Se você é um designer, esta série de artigos fornecerá todas as ferramentas necessárias para você criar modelos de soluções sem a necessidade de você ou programadores escreverem código. Se você é um programador, a série fornecerá instruções bastante diretas para programar seus próprios modelos de solução em qualquer linguagem Java, para que você possa criar seus próprios modelos de solução, a partir do zero ou com base em um modelo que já é usado no Solver e no Excel.Esses artigos devem ser apenas um ponto de partida para que você possa pegar os conceitos apresentados aqui e escolher por si próprio: se deve implementá-los no Excel, se deve escolher outra ferramenta de otimização ou tentar criar seu próprio solucionador em uma linguagem de alto nível. As planilhas são uma base sólida para começar, mas esses modelos de decisão provavelmente se tornarão seu trampolim para os modelos mais ricos e complexos que se integram à sua arquitetura de jogos.Explicações
Antes de chegarmos muito longe nas soluções de modelagem, precisamos dar algumas explicações. A modelagem e otimização de soluções não cria um sistema completo para o design de jogos, e não vamos dizer nada assim. É útil encará-los como uma ferramenta que ajuda em alguns aspectos do processo de design e, como qualquer ferramenta, possui muitas limitações.Aqui estão algumas das limitações que você precisa saber sobre:- . , , . , , . , , , , , .
- (). , . « », , Excel. ( / ), ( ), .
- . , - , , «» . . , , /, .
- . , Excel Solver, , , , . Solver , . , , « » . Solver ( Frontline ) , , Solver .
- Eles não garantem a otimização . Devido ao fato de trabalharmos com modelos complexos, é impossível ter 100% de certeza de que encontramos a solução ideal . Às vezes, precisamos nos concentrar no segundo melhor: dedicaremos mais tempo à otimização ou começaremos do zero e otimizaremos novamente, para que possamos dizer com um alto grau de confiança que encontramos a solução ideal ou muito próxima da solução ideal.
Último e mais importante:- Precisamos garantir que o modelo esteja envolvido nas tarefas necessárias . Nem todas as tarefas são importantes o suficiente para exigir tais esforços, precisamos conhecer nossas prioridades com precisão e evitar focar desnecessariamente na otimização de tarefas inúteis e na ignorância de outras maiores, que podem ser muito mais importantes.
Em termos simples, para que as soluções de modelagem sejam úteis, algumas condições devem ser atendidas. Deveríamos ser capazes de incorporar a solução em questão em um determinado modelo discreto e expressar o resultado da solução como um valor único. Em outras palavras, devemos ser capazes de expressar, usando o modelo de solução, um conjunto finito de dados de entrada em um valor de saída, para que minimizar ou maximizar o valor de saída nos forneça uma solução aprimorada.Nos casos em que existem aspectos subjetivos que não podem ser incorporados neste modelo, por exemplo, aspectos estéticos ou aspectos de usabilidade / jogabilidade, precisaremos separá-los claramente do modelo de decisão ou usar a modelagem de decisão como primeira passagem ou simplesmente abandonar completamente a modelagem de decisão .Para modelar soluções em uma planilha, também precisamos limitar a complexidade do modelo. Se nosso jogo executar algo muito complexo, talvez não seja possível recriar essa complexidade no Excel. No entanto, deve-se ter em mente que isso é apenas uma limitação do poder dos modelos que podem ser criados no Excel, e não dos próprios modelos de decisão. Em nosso próprio mecanismo de jogo, podemos criar solucionadores muito mais poderosos, e espero que esta série de artigos o inspire a fazer exatamente isso.Por outro lado, é improvável que todas essas limitações tornem a modelagem de decisão inútil. Mesmo no caso em que a tarefa é muito complicada para otimização completa no modelo de solução, esse modelo ainda pode nos ajudar a escolher muitos componentes de design muito mais próximos da configuração correta, além de encontrar e depurar muitas tarefas básicas, mesmo nos estágios iniciais de desenvolvimento.E mesmo quando o modelo de solução não consegue encontrar a solução ideal para o problema, porque a tarefa é muito complicada ou requer uma abordagem estética e outros fatores humanos subjetivos, ainda pode ajudar a estreitar os limites da solução, eliminando impasses e reduzindo a complexidade do problema. .Por fim, mesmo que você decida não usar a modelagem de decisão, não tente otimizar planilhas ou criar seus próprios solucionadores, um entendimento da modelagem de decisão ainda o ajudará a mudar de idéia sobre a tomada de decisões de design.Esta série de artigos é um estudo. Examinaremos muitos exemplos de tarefas de design de jogos e exploraremos as formas de modelagem e otimização fornecidas por poderosas ferramentas de design. Você pode estar cético ou decidir não usar otimizações, mas espero que você siga nossa pesquisa e descubra como terminaremos a série.Conclusão
No final, queremos criar o design corretamente .Muitas questões de design são subjetivas; elas não têm respostas "certas" ou "erradas". Mas em alguns casos eles certamente são . E, nesses casos, precisamos saber como obter a resposta certa, ou pelo menos entender como lidar com a definição da resposta "correta" e procurar sua solução.Modelagem e otimização de soluções são ferramentas poderosas que nos ajudam em muitos casos. Eu acredito que essas ferramentas devem estar nas ferramentas de cada designer. Tendo se adaptado a eles, você perceberá que essas ferramentas têm um enorme potencial não realizado em um estudo mais rápido e confiável da sala escura do design de jogos. Em uma série de nossos artigos, mostraremos quantos usos ele possui.Parte 2. Noções básicas de otimização e implantação de simulação
A planilha para este artigo pode ser baixada aqui .Preparação do Modelo de Solução
Agora que falamos sobre modelos de solução, explicamos como são úteis e listamos algumas de suas limitações, gostaríamos de ilustrar os conceitos básicos com um exemplo simples.Mas antes de fazer isso, precisamos introduzir algumas regras em relação à estrutura e formato. Assim como no código, se você não tomar cuidado, as planilhas podem rapidamente se transformar em caos.Em termos simples, haverá quatro tipos de células em nossas planilhas:- — , — , . 0 - , . , , . .
- « » — . , , Tootsie Pop 17 0,25 , « ». .
- «» — , . .
- Um "objetivo" (ou "saída") é uma célula cujo valor procuramos minimizar (ou maximizar) quando o otimizador está em execução. Nos nossos exemplos, sempre haverá apenas uma célula de destino, ela sempre tem uma cor laranja e um contorno preto. ( Nota: existem solucionadores mais poderosos que suportam o trabalho com várias metas, mas para nossos artigos isso será muito complicado.)
Quando executamos o otimizador (a ferramenta Solver (“Solution Finder”) embutida no Microsoft Excel), ele simplesmente olha para a célula de destino especificada e tenta alterar as variáveis de decisão, mas pode (dentro dos limites que definimos) ou minimizar ou minimizar ou maximizar o valor dessa célula de destino (qualquer que especificarmos).O Solver não sabe quase nada sobre os cálculos realizados no interior ou sobre as conexões entre as células de decisão e as células de objetivo; ele simplesmente executa um dos vários algoritmos disponíveis, tentando minimizar ou maximizar o valor da célula-alvo, procurando possíveis valores das células da solução. Esses algoritmos ("Simplex LP", "GRG Não Linear", "Evolucionário") são projetados para serem muito mais inteligentes do que explorar todas as opções possíveis para soluções variáveis por força bruta, e muitas vezes encontram respostas para problemas sérios com incrível eficiência.Por exemplo, se quiséssemos saber quantas vezes você precisa lamber para chegar ao meio do Tootsie Pop, poderíamos usar uma planilha semelhante:Podemos solicitar ao Excel Solver que resolva esse problema, ordenando-o para minimizar a célula de destino "Massa restante em Tootsie Pop", e ele rapidamente usaria experimentos para determinar que o valor da célula de solução amarela produz esse resultado ( “Quantas vezes para lamber para chegar ao meio de Tootsie Pop”) é 68.
Obviamente, fazer isso é um pouco estúpido, porque, a partir da declaração do problema, fica claro que a resposta será 17 / 0,25 = 68. Não faz sentido executar o otimizador para resolver um problema que pode ser resolvido com uma aritmética simples.
No entanto, na prática, a maioria dos problemas que enfrentamos não terá soluções matemáticas simples. Eles terão muitas variáveis de decisão que levam ao objetivo de maneiras não óbvias, e combinar as variáveis de decisão e a saída será muito complicado para calcular manualmente a equação matemática (e, novamente, nesta série, evitaremos cuidadosamente matemáticas complicadas).
Vamos nos concentrar na descrição das tarefas e deixar todo o trabalho duro para o Solver.
Exemplo 1: impostos
Em nosso primeiro modelo de decisão real, mostraremos um exemplo de determinação da taxa de imposto ideal. Ninguém gosta de impostos, mas neste caso não pagaremos, mas receberemos impostos; Espero que isso reduza seu tormento.
Imagine que estamos criando uma estratégia 4X semelhante à
Civilização de Sid Meier . Estamos no processo de criar cidades com um certo nível de insatisfação, dependendo do tamanho. Residentes “insatisfeitos” não estão essencialmente inclinados a cooperar e nós não recebemos renda deles. Também podemos tentar obter dinheiro das cidades alterando a taxa tributária de cada cidade, mas com um aumento na taxa tributária, o nível de insatisfação aumentará exponencialmente, para que impostos muito altos se tornem contraproducentes.
Suponha também que possamos indicar uma taxa de imposto com um incremento de 10% no intervalo de valores de 0% a 50%. Aqui está uma captura de tela que mostra um sistema semelhante à estratégia clássica de 4X do
Master of Orion 2 :
Como designers, queremos fazer uma pergunta simples: qual será a taxa de imposto ideal no caso geral?
Essa deve ser uma tarefa simples, porque existem apenas 6 valores aceitáveis da taxa de imposto. Podemos simplesmente testar cada um dos 6 valores manualmente, encontrar o que nos dá a maior renda e, com isso, considerar o problema resolvido!
(De fato, você provavelmente pode encontrar uma equação matemática para resolver esse problema, como no exemplo de Tootsie Pop, mas será contraproducente, porque estamos preparando esse modelo para que ele se torne um modelo mais complexo, que não pode ser resolvido usando equações Além disso, nesta série de artigos, evitamos a matemática.)
Vamos começar descrevendo a tarefa da seguinte maneira:
- Temos uma cidade de tamanho 12 (o que significa 12 milhões de pessoas). Essas pessoas são representadas como 12 "cidadãos" separados.
- Todo cidadão em um determinado momento pode estar satisfeito ou insatisfeito.
- Cidadãos satisfeitos pagam na forma de impostos (taxa de imposto x 10) (ou seja, uma taxa de imposto de 20% nos dá 2 unidades de moeda na receita tributária para cada cidadão satisfeito).
- Cidadãos insatisfeitos não pagam impostos.
- Existem 3 cidadãos insatisfeitos na cidade que permanecem insatisfeitos, independentemente da taxa de imposto.
- Um número adicional de cidadãos fica descontente com base na seguinte fórmula: (População) x ((Taxa tributária) x (Taxa tributária)) x 3,5, o valor é arredondado para o número inteiro mais próximo. Para nossa cidade de tamanho 12, isso nos dará 0 cidadãos insatisfeitos adicionais a taxas de 0% e 10%, 1 cidadão insatisfeito adicional a uma taxa de 20%, 3 cidadãos insatisfeitos adicionais a uma taxa de 30%, 6 a uma taxa de 40% e 10 a taxa de 50%.
É simples, né?
Nós descreveremos isso na
planilha anexada ao artigo da seguinte forma:
Você pode perceber que definimos a caixa de decisão amarela (Nível de imposto (0-5)) como uma maneira indireta de indicar a taxa de imposto. Em vez de especificar a taxa de imposto diretamente na célula de decisão, a célula de cálculo da Taxa de imposto pega o número do Nível de imposto da célula de decisão e o multiplica por 10%. Há uma razão lógica para fazer isso indiretamente, e veremos isso em breve.
Agora podemos experimentar e substituir todos os valores possíveis do nível tributário. Você pode simplesmente inserir cada um dos números de 0 a 5 na célula Nível de imposto e obter o seguinte:
Como você pode ver, há uma taxa de imposto ideal: 30%, o que maximiza a receita tributária, fornecendo 18 unidades de moeda.
Vamos automatizar o sistema!
Isso certamente é ótimo, mas e se tivermos mais de seis opções? E se houver centenas de alíquotas possíveis ou se precisarmos alterar outras variáveis de decisão? Tudo se tornará muito complicado para testar os valores manualmente.
Como veremos, é exatamente para isso que o Solver é usado.
Primeiro, redefiniremos o valor da célula Nível de imposto para zero. Em seguida, iremos para a guia Dados do Excel e veremos no lado direito da fita, na seção Análise, o botão Solver ("Procurar uma solução").
Se você não vê, vá para Opções do Excel, selecione a categoria Suplementos, verifique se Suplementos do Excel está selecionado na lista suspensa Gerenciar. ), clique em Ir e verifique se o suplemento Solver está marcado.
Depois de clicar no botão Solver, você verá uma caixa de diálogo semelhante.
Vamos agora dar uma olhada em todas as etapas envolvidas na configuração da caixa de diálogo Solver.
No campo "Definir objetivo" ("Otimizar a função objetivo"), indicamos o que precisamos otimizar. Nesse caso, estamos tentando obter o máximo de receita tributária possível, para selecionar a caixa laranja da meta, que representa a receita tributária, e clicar em "Para: Máx." Na lista de botões de opção.
Na seção "Alterando células variáveis", selecione as células que o "Localizador de soluções" deve calcular. Precisamos determinar a taxa de imposto ideal; portanto, selecione a caixa de solução amarela (Nível de imposto (0-5)). Se tudo der certo, como resultado, será atribuído a esta célula um valor 3, correspondente a uma taxa de imposto de 30%, cuja otimização já foi determinada em cálculos manuais.
Finalmente, precisamos adicionar algumas
restrições . De fato, restrições são pré-requisitos para qualquer célula em nosso modelo de solução, e o Excel Solver se concentrará apenas nas soluções que atendam às restrições especificadas. Essas restrições podem limitar certas células (geralmente células de decisão e células de computação) a valores mínimos e / ou máximos especificados e / ou fazer com que o Solver os processe como variáveis inteiras ou binárias (0 ou 1). As restrições são incrivelmente úteis para criar o modelo correto, que será limitado.
O Solver requer pelo menos algumas restrições que permitem determinar os limites das células de decisão - em outras palavras, os valores mínimo e máximo para cada célula. Para adicionar uma restrição, você precisa clicar no botão Adicionar à direita e a seguinte caixa de diálogo será aberta:
Adicionaremos duas restrições, uma para que a célula de decisão do nível de imposto atenda à condição> = 0 e outra para que a célula de decisão seja <= 5. Em seguida, na lista Método de resolução, selecione Evolucionário (“Evolucionário” procure uma solução ") e clique em Resolver (" Encontrar uma solução ").
Depois de trabalhar por cerca de 30 segundos, o Solver nos dará uma resposta semelhante:
Oh, houve um problema. O Solver recebeu a quantia correta de renda, mas a taxa de imposto está incorreta. O jogador pode definir impostos apenas com um incremento de 10%, mas o Solver obviamente define taxas de imposto fracionárias, o que o jogador não pode fazer.
Você pode resolver o problema limitando o valor da célula da taxa de imposto a números inteiros. Pode ser igual apenas a 0, 1, 2, 3, 4 ou 5, mas sem valores intermediários.
Felizmente, no Solver, isso pode ser bem fácil de alcançar. Abra o Solver, clique no botão Adicionar, selecione a célula da solução Nível tributário e selecione a restrição int na lista suspensa no meio:
Agora execute o Solver novamente e obtenha o seguinte:
Perfeito! Com pouco esforço, obtivemos a resposta correta no Solver. Como veremos em breve, com um aumento na escala de tarefas, o volume de trabalho realizado pela ferramenta para nós excede significativamente o tempo gasto na configuração.
Cidade em crescimento
Vamos expandir a tarefa agora, complicando um pouco o modelo da cidade.
Em qualquer estratégia 4X, as cidades (ou planetas, colônias ou outras unidades habitadas) crescem com o tempo. Assumiremos que a cidade tem um aumento constante de 8% por turno, começando de 1.500 mil (1,5 milhão) de cidadãos e aumentando para um tamanho de 12 milhões de habitantes. Agora, nossa planilha ficará assim:
Cada nova linha subseqüente da tabela descreve um curso do jogo.
Também alteramos o cálculo do nível básico de insatisfação. Agora é calculado como um segundo do nível básico da população (em milhões), arredondado para baixo. Por esse motivo, a insatisfação básica será 0 até que a cidade cresça para o tamanho 4, após o que crescerá linearmente com o tamanho da cidade.
Como antes, podemos experimentar manualmente os níveis de imposto alterando os valores do nível de imposto. Receberemos 0, 102, 190, 222, 144 e 65 unidades monetárias em receitas tributárias, com cada nível tributário de 0% a 50%.
E, novamente, podemos fazer com que o Solver resolva esse problema; ele determinará rapidamente que a taxa ideal de imposto é de 30% como antes, o que nos dá uma renda de 222 unidades monetárias. Aqui está a aparência da caixa de diálogo Solver:
Taxas de imposto variáveis
Mas, é claro, o jogador não jogará dessa maneira. Nossa “cidade” simulada define uma taxa de imposto e mantém a mesma para cada jogada do jogo. Mas um jogador real pode ter uma taxa de imposto a qualquer momento, e muitas vezes precisará ajustá-la porque sua cidade está crescendo e as circunstâncias estão mudando.
Não seria ótimo se não apenas pudéssemos determinar uma única taxa tributária ideal, mas também calcular o valor ideal em cada movimento?
Ela nos informará instantaneamente como o jogador pode ajustar melhor os impostos.
E acontece que isso pode ser feito! Depois de configurar o modelo de solução da maneira correta, podemos implementá-lo de maneira incrivelmente simples.
A maior diferença é que precisamos remover a célula de decisão de nível de imposto (0-5) e substituí-la por uma coluna inteira de células de nível de imposto, conforme mostrado abaixo.
Agora, em vez de forçar o Solver a otimizar uma única célula, solicitamos que ele otimize toda a coluna Nível tributário. Aqui está a aparência da caixa de diálogo Solver - você pode ver que é quase a mesma de antes, mas em vez de uma célula, as variáveis e restrições agora representam todo um intervalo de células na coluna Nível de imposto.
O Solver realmente prova que uma alteração na taxa de imposto altera os resultados - a receita acumulada agora é de 232 unidades monetárias. Comparado com a mesma taxa de tributação, o crescimento é de apenas 5% (222 contra 232 unidades), mas ainda é significativo porque sabemos que alguns jogadores serão capazes de alcançá-lo.
Examinando com mais atenção a solução que o Solver recebeu, você pode ver que ela começa com uma taxa de imposto de 50%, porque uma cidade de tamanho 1 não contém pessoas suficientes para gerar descontentamento. No processo de crescimento da cidade, a ferramenta altera a taxa de imposto em cada turno, na faixa de 20% a 30%, dependendo de qual trará mais renda.
A planilha para este exemplo pode ser baixada
aqui ; nele, os três estágios deste exemplo são divididos em folhas separadas de uma planilha (o mesmo imposto para uma cidade com população permanente, o mesmo imposto para uma cidade em crescimento e uma taxa de imposto variável para uma cidade em crescimento).
Conclusão
A solução que encontramos mostra algo interessante: a natureza discreta de nosso simulador de jogo, que representa um agrupamento arbitrário de milhões de pessoas como "cidadãos" discretos que podem ter um ou dois estados discretos de satisfação, introduz características características no modelo. Embora o jogo em si, em algum nível, exija tal discretização por questões de acessibilidade e jogabilidade, jogadores inteligentes e astutos poderão explorar essa fragmentação artificial para obter vantagens sobre jogadores que não querem se preocupar com os níveis de impostos a cada turno.
Essa situação leva a uma pergunta interessante: é isso que queremos? A mecânica dos jogadores exige que eles participem da microgestão dos níveis de impostos a cada turno? E queremos permitir que os jogadores orientados a energia superem o sistema dessa maneira; Esse truque corresponde ao ganho de 5%?
Não consigo responder a essas perguntas. No final,
você é um designer que define metas de design; portanto, cabe a você decidir se esse nível de operação do sistema atende aos objetivos que você definiu para o jogo.
Obviamente, este modelo é apenas um quadro vazio. Em uma estratégia 4X real, os jogadores podem tomar todos os tipos de decisões sobre como desenvolver a cidade, construir prédios e fazer outras mudanças que afetam o crescimento da cidade, satisfação, receita tributária e produtividade.
Em um artigo futuro da série, construiremos um modelo semelhante, mas muito mais complexo, de uma colônia planetária inteira em um jogo remanescente do
Master of Orion 2 . Este exemplo será muito mais sofisticado, porque seremos capazes de tomar decisões em cada turno que afetarão subsequentemente todos esses parâmetros, como crescimento e produtividade, ou seja, cada decisão terá consequências que afetarão as decisões subseqüentes. No entanto, ainda estamos convencidos de que o otimizador evolucionário da ferramenta Solver é capaz de lidar com essa tarefa.
No próximo artigo, cumpriremos nossa promessa e otimizaremos a compra de armas para o SuperTank no exemplo do artigo introdutório.