O que faz um oponente de computador se sentir vivo?


107

Existem blogs ou white papers recomendados que falam sobre tornar a IA em um jogo de RPG mais real? (Especificamente em combate por turnos.)

Eu sei que algo deve estar lá fora, mas só estou encontrando trabalhos que falam sobre algoritmos por trás da IA. Estou analisando mais de perto "é isso que faz um oponente de computador se sentir vivo". Assumindo riscos, indo fácil, recuando, etc ....


Tantas respostas impressionantes, e eu gostaria de poder aceitar várias delas. Obrigado a todos!


Se o computador apresentar uma estratégia, isso o fará se sentir mais vivo. AI de FEAR foi elogiado porque iria flanquear o jogador (entre outras coisas) (embora eu acredito que muito do que realmente foi roteirizado)
thedaian

10
Sua animação da morte. Bang. Não, mas a sério, usando o ambiente contra você. E cometer erros - mas erros inteligentes . Direito? Como alguém que tem previsão, apenas ele fez a suposição errada em algum momento de sua cadeia de raciocínio.
Engenheiro

Não está claro se você deseja que os personagens do computador se sintam vivos ou que tenha a impressão de lutar contra outro jogador humano como você, que controla todos os personagens do computador?
Nikko

4
Como fazer um computador sentir vivo: assistir Bladerunner de novo ...
Kheldar

Você pode querer ler isso . Ele usa lógica difusa sobre uma árvore de decisão.
Jonathan Dickinson

Respostas:


109

Erros. Nada é pior do que um oponente de IA que pode atirar na sua cabeça a 24 km de distância, ou sempre escolhe a estratégia de vitória perfeita. Ele quebra a imersão e torna aparente que você está fazendo uma rotina. Erros podem fazer a IA parecer mais humana.

Muitos jogos de FPS forçam a IA a errar com seus primeiros tiros, avisando o jogador que a AI está lá, antes de ir para a matança.

Às vezes, jogos de estratégia podem selecionar uma estratégia sub-otimizada ou, ao avaliar ameaças, podem propositalmente ignorar uma proporção delas.

Um jogo de corrida em que trabalhei calculou quando o jogador estava por perto e depois rolou um dado para fazer os carros de IA na frente dele subvirarem pela esquina ou soprarem um pneu. Foi elogiado por sua IA realista.

No entanto, criar IA imperfeita ainda é um desafio. Você precisa cometer erros convincentes, a um ritmo convincente, em vez de executar uma ação perfeita após uma ação perfeita até cometer um erro ridículo. Isso pode ser ainda pior do que jogar apenas uma IA perfeita. Por exemplo, o programador que trabalhava na IA de corrida acima passou muito tempo modelando como um carro subvenciona e quais entradas a AI precisa fazer para causar uma subviragem convincente. Como sempre, o playtesting é vital.

Aqui está um bom artigo sobre o que é necessário para produzir esse tipo de erro: http://www.gamasutra.com/view/feature/3947/intelligent_mistakes_how_to_.php


38
"Muitos jogos de FPS forçam a IA a errar com seus primeiros tiros, avisando ao jogador que ela existe, antes de matar": No GURPS, chamamos esse treinamento de Imperial Stormtrooper Marksmanship Academy.
caos

4
Muitos erros e é um computador idiota.
LarsTech

30
Energia infinita é criada colocando-se um monte de caras de camisa vermelha em uma cela ao lado de um grupo de tropas de assalto. As tropas de assalto não podem atingir seu alvo, e os caras de camisa vermelha precisam morrer .
zzzzBov

Eu entendi o ponto da resposta e penso na linha entre perfeição para um computador e perfeição para um ser humano. O que muda? Um grande jogador de quake3 gosta de fatalidade no que é diferente de uma CPU no nível de pesadelo?
Pitto

Calculo todos os movimentos possíveis que uma IA pode realizar, atribuindo peso aos movimentos com base nas circunstâncias e nos traços de personalidade atribuídos à IA (como sede de sangue, medo da morte, raiva, etc.). Isso funciona muito bem em cenários como: você e a IA estão prestes a morrer, uma IA direta atiraria em você e depois pegaria o pacote de saúde, mas uma AI com muito medo de Medo vai tentar vencê-lo. A menos que eles tenham muita raiva ou sede de sangue, então eles atiram até que um de vocês esteja morto.
Ativista esgotado

44

Outros falaram sobre IA, lógica, planejamento e a importância de cometer erros. E tudo isso é bom e útil no desenvolvimento da IA.

Mas a pergunta era sobre o que faz um oponente de computador se sentir vivo, e isso não é possível através da IA. Simplesmente não é. Os jogadores não julgam um personagem em um jogo com base em suas escolhas de nível estratégico; eles julgam isso com base em coisas muito menores.

Para que um oponente do computador se sinta vivo, o que você precisa é de um conjunto abrangente de animações e sons de alta qualidade (vocais, especialmente) para o oponente. O jogador não pode ver a IA. Ele não pode ouvir, ele não pode experimentar, ele não pode saber o que o oponente está pensando. A aparência de "esse personagem é uma entidade viva" é apresentada ao jogador inteiramente por meio das animações que tocam no personagem e dos sons produzidos pelo personagem (que novamente serão principalmente vocais).

É importante que o personagem reaja aos estímulos ao seu redor; olhar as coisas próximas, tocar objetos próximos (quando apropriado), parecer assustado quando surpreso e mostrar outras emoções quando apropriado.

Ao falar sobre essas coisas, é importante minimizar as repetições. Se o personagem usar a mesma animação de "ataque" toda vez que atacar, nunca se sentirá vivo. Se ele reproduzir uma única animação "inativa" em loop quando não estiver fazendo mais nada, não se sentirá vivo. Se ele diz que a mesma voz brinca duas vezes (especialmente consecutivamente), isso quebra a ilusão de que o personagem está vivo.

E é isso mesmo. Se o oponente que você está tentando fazer parecer vivo estiver fisicamente presente em seu jogo, seu sucesso em fazê-los parecer vivos será determinado principalmente pelos gráficos e sons mostrados ao jogador.

Se o oponente que você está tentando fazer parecer "vivo" não está realmente presente no jogo, como é o caso do Chess e do StarCraft, fique à vontade para desconsiderar esta resposta; sua melhor aposta é seguir as respostas focadas na IA.


4
Lembra-me de todos os inimigos em Mass Effect gritando "INIMIGOS EM TODA PARTE!" a cada 2 segundos.
Dashto

Eu gostaria de poder votar novamente MUITO MAIS. Eu trabalhei em dois FPS triple A e não posso enfatizar o quão importante as animações de qualidade (espreitar, gesticular, mover) e áudio (dizendo intenção, questionamento, conversa) são para criar um ótimo ambiente. A IA não é sobre derrotar o jogador, é sobre transmitir realismo, uma grande parte do realismo é como nos movemos e soamos.
AA Grapsas

1
+1, bons pontos. Me fez pensar em jogos Oblivioneque, onde sua tentativa de interagir com um NPC às vezes é dificultada por eles sentados na cama, virando de lado, levantando-se e finalmente encarando você, antes de finalmente reconhecer sua presença ... que sempre mexia com a minha imersão.
zenzelezz

Concorde que isso cria uma jogabilidade mais imersiva, discorde que isso a torna mais humana. Já viu quantos jogadores humanos se comportam na maioria dos jogos multiplayer? Em alguns jogos, metade dos jogadores está pulando sem motivo e a outra metade está enviando spam pelo bate-papo por voz com os mesmos clipes de voz vinte vezes por segundo. Os bots costumam se comportar melhor do que os humanos.
Lie Ryan

Uma das maneiras pelas quais você pode fazer com que uma IA pareça humana é provavelmente fazê-lo parar de raiva se continuarem sendo mortos. Ou tente induzir um novo jogador a trocar itens caros por jóias inúteis. Não seria um jogo divertido de jogar, mas pelo menos a IA parecerá "viva".
Lie Ryan

30

Aqui está uma lista de alguns conceitos simples que podem tornar seu oponente mais vívido:

  1. Intenção
    Dê ao jogador uma maneira de adivinhar a 'intenção' da IA. Isso pode ser tão simples quanto gritar "Quantidade acima da qualidade" antes de tentar um ataque certeiro, "Flanqueá-lo" enquanto tenta ficar atrás de você ou "Leve o líder, nada mais importa" antes de atacar o protagonista. Você também pode se tornar mais complexo, por exemplo, fazer com que eles dêem uma linguagem de sinais aos seus colegas de equipe e depois alterem o comportamento deles.

  2. Desespero
    À medida que o oponente se aproxima da morte, você pode dar a ele uma sensação de desespero. Mude suas táticas em determinados marcos da saúde. Torne os estágios posteriores mais em pânico, com maior risco da parte deles (ir para o granizo maria, em vez de lascar lentamente). Comunique isso visualmente também (animações mais exageradas, veias pulsantes etc.).

  3. Sair com um estrondo.
    Dê a eles uma morte que torne a luta com eles algo que vale a pena repetir. Grunhidos caem animadamente. Chefes soliloquiam. Se for um personagem orgulhoso, faça com que eles se recusem a matá-lo e cause o último dano causado a eles mesmos. Você entende a deriva.


4
Oi. Você realmente não precisa escrever sua qualificação em sua resposta. Preencha o seu perfil e, se alguém estiver interessado, se você souber do que está falando, clique em seu nome. É isso aí ;).
Notabene

1
O ponto de intenção é bom. Uma boa estratégia é fazer com que seus companheiros de equipe de IA (se existirem) gritem o que os oponentes estão fazendo - "eles estão flanqueando!", "Eles estão recarregando!" etc. De fato, essa estratégia é bastante eficaz, mesmo quando a IA inimiga não está fazendo isso. :)
tenpn

1
@ Notabene, não discordando do seu comentário, mas como nota - você tem o representante para editar as informações estranhas. :) Acabei de editar, mas está "sujeito a revisão" para mim. :)
Ciclope

2
@Cyclops. Sim, eu considerei isso. Mas poderia parecer bastante rude sem o devido comentário e eu queria deixar Jordaan decidir por conta própria sobre isso. Quero dizer que amigável, é claro. Mas vamos parar de destruir uma boa resposta com os comentários do tópico:]
Notabene

3
Ei. Só para que todos saibam, incluí a linha de Bacharelado como uma forma de autodepreciação. Aqui na Austrália, um diploma de bacharel em jogos não vale o papel em que está impresso. Não havia intenção de se gabar. "Aqui estão alguns conselhos óbvios, que culminaram com meus US $ 30.000 e três anos de estudo". Desculpe se não transmiti isso corretamente.
Jordaan Mylonas

22

Eu recomendo este google IO falar é sobre o google doodle pacman. Às 18:00, eles começam a falar sobre a personalidade dos fantasmas em pacman. É realmente impressionante como você pode simplesmente colocar personalidades no caminho simples.

Google I / O 2011: Os segredos do Google Pac-Man: um game show

Vale a pena assistir a todo o vídeo. Eu realmente recomendo.


Não realmente responder à pergunta, mas poderia ser inspirador ... (eu acho)
Notabene

11
Eu diria que é uma resposta válida. A questão era sobre como fazer um oponente de computador se sentir "vivo", e projetar a personalidade dos fantasmas faz exatamente isso.
Ciclope

14

Eu não conheço nenhum desses blogs, mas como um RPG tático baseado em turnos é meu segundo gênero favorito logo após roguelikes, escreverei uma postagem para você. Pela minha experiência, não foi uma dificuldade de IA tática em um RPG ou RTS que muitas vezes me deixou de lado, mas o contrário: a miopia completa da AI e a ausência de decisões da equipe. Humano nunca vai jogar assim.

Naquela época, quando eu ainda via os JRPGs como um pináculo do design de jogos, uma vez tentei fazer um "TRPG japonês típico" com grande foco em combates táticos por turnos, como Final Fantasy Tactics. Como sempre, tornou-se apenas uma demonstração de tecnologia para busca de caminhos e IA, então vou compartilhar meus pensamentos sobre o assunto.

A maioria desses TRPGs não se incomoda muito com a IA. A diversão dos jogadores não vem de um desafio tático ou estratégico complexo, mas da agricultura em geral e do abuso da IA ​​de uma maneira engraçada. Portanto, não importa muito que suas IAs façam coisas que nenhum humano jamais faria. Normalmente, é suficiente ter uma IA estúpida e equilibrá-la com o design do jogo, de forma que ele nunca precise ver mais de um movimento com antecedência e use apenas os melhores movimentos de curto prazo. Claro que nunca parece real, mas quem se importa? Parece errado, quero acreditar que é possível criar diversão com base em ações complexas de IA em vez de agricultura e rolo a vapor. Talvez desnecessário e demorado, mas possível.

Lembrando o Final Fantasy Tactics original e seu mod incondicional FFT 1.3, eu estabeleci os seguintes objetivos para a IA humana e divertida:

  • A IA deve criar um desafio, mas um desafio divertido e não um desafio de "pesquisa completa humana". Esse divertido desafio deve ser esperado com frequência pelo jogador no contexto geral de uma missão atual. Geralmente é aí que os scripts entram em cena, criando uma IA de um truque.
  • A IA deve ser inteligente, mas não profunda, o Minimax. Diferentes tipos de IA devem ter falhas diferentes, assim como diferentes personalidades humanas. É uma coisa rara de se encontrar em jogos, Advance Wars tinha personalidades com roteiro para generais, por exemplo, mas as unidades também podem tê-las.
  • A IA deve evitar parecer burra quando não se destina. A estupidez obscena arruina completamente qualquer ilusão de inteligência, sempre vencendo estratégias também. E brechas criadas por scripts descuidados, essas são as piores.

Pensei em abordar o número 1 com comportamentos emergentes, o número 2 com personalidades diferentes e a escolha de estratégias "semi-aleatórias" semelhantes a humanos, o número 3, mantendo a codificação embutida no mínimo e um teste cuidadoso.

Então, quais são esses comportamentos sobre o que estou falando, é uma sequência de habilidades com scripts para usar? A melhor capacidade de uma lista ponderada? Não, o que eu tinha em mente era uma combinação de uma inteligência desejada , tipo de personalidade e um papel derivado das habilidades e armas atualmente disponíveis. Você pode descrever essa combinação como um "estúpido traficante de danos" ou "curador defensivo inteligente". Assim, as especializações de IA, como classes ou profissões, por exemplo, uma Archer AI que usa arco para disparar flechas com algum conjunto de habilidades de arqueiro genéricas predefinidas, como Take Aim ou Arrow Shower, tornam-se logicamente emergentes em vez de codificadas.

Basicamente, é importante detectar e operar nessas funções: negociante de danos, absorvedor de danos, desabilitador, skirmisher, curandeiro, buffer / debuffer, área de efeito; geralmente, um personagem desempenhará pelo menos dois desses papéis.

Para tirar sarro tático disso, queremos que os comportamentos manejem vários casos de maneira sólida:

Caso mais simples. Muitos duendes fracos emboscam nossos heróis. A ameaça percebida é óbvia, os goblins tentarão sobrecarregar o jogador, com cada goblin tendo uma personalidade estúpida de berserk com algumas habilidades corpo a corpo primitivas, a fraqueza percebida também é óbvia, como atrair os goblins a um único personagem blindado e resistente ao fogo e, em seguida, lançar uma série de tiros AoE baseadas em feitiços nessa direção geral. Encontre um absorvente de dano, encontre um AoE'er, especialize-o para o tipo de dano de AoE'er, envie o absorvente de dano para a massa de goblins, lance um feitiço de AoE danificado quando os goblins se agruparem.

Caso usual para testar interações simples da equipe. O jogador encontra um cavaleiro, um arqueiro, um mago e um clérigo. A ameaça percebida agora é mais complexa, várias interações se tornam disponíveis. Você já pode ver possíveis papéis e suas combinações. O clérigo irá polir e curar, o mago distribuirá coisas mágicas complexas, mas altamente prejudiciais, o cavaleiro atacará alguém ou defenderá um mago, o arqueiro ajudará o cavaleiro cortando aqueles que tentam fugir dele ou tornando sua estratégia de defesa mais completa, isso vai depender da escolha do cavaleiro. As personalidades dos inimigos podem ser decididas aleatoriamente, transformando o mesmo encontro em uma experiência única. O jogador terá que decidir qual é a melhor estratégia com as unidades que ele possui atualmente, e se a IA tentar fazer o mesmo no outro lado da tela, seria interessante.

Caso complexo para testar as interações da equipe e o planejamento estratégico. Há uma batalha em que você enfrenta uma gangue de quatro assassinos (negociante de dano cuidadoso e inteligente + skirmisher). Poucos em números, com aparência ameaçadora, a ameaça percebida reside em ataques hábeis e mortais, e a fraqueza percebida é que é fácil reduzir a força geral com apenas um único assassino morto. Então, naturalmente, eles são espertos, usam habilidades que funcionam bem entre si e podem focar os personagens mais perigosos dos jogadores de fogo; os gravemente feridos recuam, curam e se lustram para voltar à batalha. Obviamente, o jogador tentará destruir um deles primeiro, e os assassinos terão que suavizar essa estratégia fácil, para que seja menos dominante.

Caso difícil para muita estratégia. Existem vários esquadrões de inimigos, com cada líder de esquadrão decidindo os melhores movimentos táticos locais e, em seguida, uma melhor decisão estratégica global é selecionada para beneficiar todos os esquadrões.

Caso impossível. Adicione um general para decidir uma estratégia e peça aos líderes de esquadrão que a implementem da melhor maneira possível.

Já existem muitas cartas, e por muito tempo, a implementação foi uma bagunça e eu nunca superei um "caso difícil", mas mesmo assim essa abordagem de táticas divertidas parecia factível. Comecei com FSMs, mas tive que abandonar essa abordagem rapidamente, tornou-se uma bagunça emaranhada de estados e transições impossíveis de depurar. Depois de um tempo, decidi com personagens semi-autônomos baseados em percepção de habilidades, como no paradigma "senso-pensar-agir" com árvores de comportamento para possíveis ações individuais, uma estratégia global que afeta possíveis ações de equipe baseadas em possíveis ações individuais, também uma versão bastardizada de algo como previsão estatística N-Gram foi lançada.

Como isso funcionou? Surpreendentemente bem, a IA até leu minha mente várias vezes, mas eu me cansei e a abandonei, pois havia falhas convincentes mais do que suficientes:

  • A maior falha era que, às vezes, toda a operação de IA era estranha e caótica, mesmo que eu punisse a mudança rápida de estratégias. Provavelmente, a lógica da estratégia ou as personalidades erradas eram culpadas, mas nunca descobri. Sim, a arquitetura de código era horrível.
  • Ajustar o cenário desejado com uma seleção cuidadosa de habilidades e personalidades disponíveis é entediante.
  • A marcação de capacidade para funções deve ser muito cuidadosa, ou alguns combos malucos apareceriam.
  • O mesmo vale para a identificação de personalidade, mas, em vez de combos malucos, você vê rodízios cuidadosos polidos por ataques frontais.
  • Era difícil decidir sobre um nível de "inteligência" para uma determinada habilidade.
  • Algumas decisões aparentemente estúpidas que foram necessárias para um design de nível como "sustentar essa muralha do castelo, não importa o que" tivessem que ser implementadas de maneira tola.
  • Planejar unidades para realizar um ataque baseado em tempo também foi um truque.

Eu acho que minha abordagem era medíocre, na melhor das hipóteses, se não totalmente ruim, e a IA era um buggy e um pé no saco para se desenvolver ainda mais, mas mesmo assim eu me diverti bastante jogando contra ela, quase como se estivesse brincando com um garoto distraído, que ainda é melhor que o Tactics Ogre :)


Achei algumas de suas idéias bastante estimulantes e, com alguns ajustes, pode melhorar a IA em um sim em que estou trabalhando.
jumpnett

@jumpnett É bom saber, eu esperava que pelo menos uma idéia geral pudesse ser entendida :) Como um bônus, você começa a ouvir mais dos meus pensamentos malucos, agora no seu sim. Imaginando um sim em tempo real, acho que uma das escolhas mais importantes seria uma lógica de agendador de tarefas arrumada. Acho que eu teria tentado organizar as tarefas dessa maneira: haveria tarefas principais com prioridades, "estratégias" como "construir uma casa" com pré-requisitos como "4 trabalhadores; quadrado 4x4 de nós livres no ponto 10,10; 10 pranchas de madeira; 20 lajes de pedra ". A estratégia será considerada concluída quando todos os pré-requisitos forem atendidos.
EnoughTea 01/09/11

Cada pré-requisito geraria uma subtarefa para atingir o pré-requisito correspondente; as subtarefas podem ser paralelas, seqüenciais ou até mutuamente exclusivas. Quando a tarefa terminar com êxito, defina seu pré-requisito como completo. Por exemplo, a tarefa "10 pedras" é seqüencial para tarefas "4 trabalhadores" e "lugar 4x4", pois você não pode reunir pedras sem trabalhadores e não pode colocar pedras sem um lugar, mas seria paralelo a um Tarefa "20 pedras", pois você não quer uma situação em que tenha muita pedra, mas não madeira, e seus funcionários estão esperando a madeira em vez de usá-la primeiro.
EnoughTea 01/09/11

Pensar nas tarefas em termos de pré-requisitos é geralmente muito útil, como quando uma nova tarefa estratégica é colocada em um planejador, você pode querer saber se ela pode ser iniciada imediatamente ou não. Com esse sistema, você pode reunir facilmente todos os pré-requisitos incompletos de tarefas com maior prioridade e verificar se os pré-requisitos das novas tarefas estão em conflito com eles.
EnoughTea

O principal gargalo aqui é uma resolução de subtarefas que não podem ser concluídas. Estes vêm em dois tipos: 1) não pode ser concluído agora e 2) nunca pode ser concluído. geralmente para o número 1, você deseja criar uma nova estratégia com maior prioridade, que ajudará a estratégia anterior, e para o número 2, você deve abandonar a estratégia para sempre. O problema é que é difícil distinguir entre esses dois tipos, não posso dizer muito aqui. Bem, talvez a sua abordagem já é assim, mas talvez você vai limpar para mais algumas ideias :)
EnoughTea

4

Nem sempre faça com que ele responda à sua ação X com a ação Y. Ao avaliar cada ação em potencial, adicione um fator aleatório de falsificação para que a IA nem sempre escolha a mesma opção, mas escolha algo razoável.

Avalie se um ataque tem uma chance razoável de ter sucesso ou, pelo menos, causar danos significativos. Muitos jogos simplesmente possuem rotas de ataque com script que um humano pode aprender e usar para emboscar a IA repetidamente.


3

Uma coisa que vejo sugerida é que a IA comunique seus "pensamentos" ao jogador de alguma forma. Isso geralmente é feito em atiradores em primeira pessoa, fazendo com que os inimigos (irrealisticamente) gritem seus planos para o jogador (ou seja, "flanqueie-o!", "Ele está lá!", Etc.).

No final do dia, os jogadores sabem que estão jogando contra uma IA, então qualquer coisa inteligente que a IA faça sem antes informar o jogador pode ser descartada como trapaça.


No credo dos assassinos Quando você era perseguido, os perseguidores gritavam "Ele está aqui!" ou "Para onde ele foi?" ou alguns desses para outros perseguidores. Então IMHO: pode ser realista.
James Khoury

1
É verdade que faz sentido em muitos casos e pode depender do contexto do jogo. Os guardas em Assassin's Creed teriam maneiras diferentes de se comunicar, por exemplo, uma equipe da SWAT moderna. E muitas vezes a solução realista não é necessariamente a mais divertida; pode ser frustrante ser constantemente flanqueado pela IA sem aviso.
Mrhlf

1

Muitas vezes, pensamos em "como criamos a IA?"

Isso está pulando a grande questão: "O que é IA?"

Essa palestra do TED.com, que eu assisti alguns anos atrás, compartilhou uma abordagem muito inspiradora da definição de Inteligente Artificial.

Se você deseja que seus jogadores sintam que os inimigos são "inteligentes", isso fornecerá uma resposta de alto nível e, essencialmente, uma nova maneira de pensar sobre a IA, que é a "capacidade de prever"

http://www.ted.com/talks/jeff_hawkins_on_how_brain_science_will_change_computing.html


0

Para mim, "sentir-se vivo" significa que o personagem age como você pensaria na vida real.

As pessoas na vida real têm necessidades, motivações, medos, falhas. Eles conversam, reagem um com o outro se for um grupo, fogem porque cuidam da própria vida.

Se eles são militares ou treinados, eles têm táticas.

Então, talvez você deva verificar no campo do comportamento humano, assim nas ciências humanas, não nas ciências da computação.


1
Hmm, não tenho certeza disso. Acima de tudo, a IA tem que ser divertida. É divertido para os inimigos fugir? Certamente é mais divertido combatê-los, já que o objetivo do jogo é lutar?
tenpn

Depende da diversão que você quer. As pessoas se divertem em simulações, outras em jogos de arcade ... qual é a sensação mais parecida com a vida real?
Nikko
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.