Primeiro vamos focar no problema de quando summonar um herói e depois no qual. Tentei dar uma lida sobre jogos de simulação de parques temáticos e como eles resolvem o problema de definir quando um visitante chega ao parque. A conclusão é que, bem, eles não resolvem do jeito que esperava. Em Sim Theme Park o que acontece é que um ônibus chega ao parque, despeja todos os visitantes que vão para a bilheteria. Lá na bilheteria o visitante define se vai ou não entrar no seu parque. Portanto, os visitantes chegam em algo equivalente as waves de um tower defense deixados por ônibus na porta do parque. Eu quero algo mais individualista já que pretendo ter menos agentes do que em Sim Theme Park, então a ideia de wave fica, mas apenas um herói por vez é sumonado.
Visitantes chegando no parque em Sim Theme Park |
Foi definida que existiria essa exponencial que indicaria qual é a probabilidade de um herói ser sumonado ao longo do tempo, então bastaria sortear um número e verificar se o valor é menor que o da exponencial naquele instante.Tá, então vamos sortear um número de 0 até quanto? Eu precisava definir um limiar para ser o valor máximo do sorteio e detalhe esse limiar também teria que se adaptar a atratividade total da cidade, senão os heróis seriam sumonados toda hora sem parar depois de certo valor de atratividade. Então nosso gráfico que estava apenas com uma função exponencial qualquer, agora também tinha uma função constante e ficou parecido com essa aqui:
Aqui temos uma função exponencial e uma constante considerando atratividade |
Para determinar quem é o herói que vai ser sumonado temos que determinar o que a cidade atrai. Para determinar o quanto a cidade é atrativa para um determinada classe de herói é preciso saber o quanto cada estrutura individualmente atrai. Todas as estruturas "construíveis" tem um componente chamado PlaceableBuilding, dentro desse componente existe uma estrutura chamada Hero Atractiviness. Essa estrutura é um dicionário que relaciona para classe de herói um valor de atratividade. O legal dessa estrutura é que posso mais pra frente se necessário balancear para cada classe individualmente. Já mostrei que aprendi como fazer dicionários serializaveis legais assim nesse link. Não consigo expressar o quanto estou adorando brincar com esses dicionários serializaveis.
Componente Placeable Building atualmente, provavelmente teremos outras classes de heróis |
Então o que temos essa semana é isso, sei que é bastante simples depois que se entende como foi feito, mas foi uma parte bastante interessante de se idealizar. Provavelmente, ambas as abordagens não são as melhores, mas resolvem e as implementei assim. Em alguma próxima postagem trago a personalização de cada herói.
Nenhum comentário:
Postar um comentário