Jogos, simulações, computadores, vida
Por razões sobrenaturais, estou rejogando alguns Final Fantasies e o Metroid Zero (em inglês mesmo), além do Torkeko’s Fushigi Dungeon 2 (uma das séries de roguelikes gráficos japoneses, baseada em Dragon Quest). Isso me deixou pensando em algo que gostaria de ver mais em jogos: vida artificial. Simulações. Um ecossistema simples, um sistema econômico simples para as lojas, um sistema de clima… Não me parece tão complicado. Não estou falando de usar IA “de verdade” (seja lá o que for), não estou falando de jogos sobre vida artificial com redes neurais e evolução complexa como o Creatures, mas sim de aplicar em jogos mainstream um modelinho básico de agentes, como nos primeiros capítulos do livro do Russel & Norvig.
Por exemplo, imagine o seguinte mundo de jogo para um roguelike: plantas são a base da cadeia alimentar. “Árvores” são fontes fixas, eternas e renováveis de comida, distribuídas por um algoritmo radial recursivo na criação do cenário. “Grama” cresce para todo o lado a cada N turnos, com alguma aleatoriedade, e desaparece quando consumida. Herbívoros consomem plantas, carnívoros consomem herbívoros, onívoros plantas & herbívoros. As criaturas percebem certo número de quadros e andam pra lá e pra cá (ou ficam paradas) quando estão saciadas; saem atrás de comida quando com fome. Um parâmetro de agressividade define se elas atacam só por atacar. Dá pra fazer as criaturas brotarem do nada e desaparecerem subitamente depois de F turnos, e acho que já fica bastante interessante; mas não é impossível fazer também reprodução sexuada, com seleção natural limitada (basta jogar no filho a média de todos os parâmetros que definem os pais, com alguma porcentagem de chance de mutação aleatória).
Aí você bota o jogador no meio desse mundo.
Sinto falta disso no nethack, sinto falta disso no Final Fantasy, sinto falta disso no Zelda, sinto falta disso no Metroid, e sinto especial falta disso em jogos como Pokémon e Harvest Moon. Sei lá, acho que ia baixar muito a quantidade necessária de suspensão de descrença. Ultimamente não consigo deixar de ver os bichos do FF como imagens que pipocam aleatoriamente.
* * *
Incidentalmente, pensar em vida artificial me faz pensar no porquê fico tão entediado com o trabalho em empresa, e por que quis fazer ciência da computação — no que exatamente quero dizer com “eu queria fazer videogames”. Videogames pra mim sempre foram mundinhos a explorar, e não desafios lógico-reflexivos (quando era criança eu ficava olhando a fitinha do Pac-Man do Atari, convencido que lá dentro o come-come continuava seu drama de buscar comida e fugir de fantasmas). Esta é uma lista de coisas que acho divertidas em computação:
- IA, mesmo que primitiva. Não estou interessado nas questões filosóficas. Acho que fiquei com o Dijkstra nessa: a questão de se máquinas podem mesmo pensar me parece como a questão de se submarinos podem nadar.
- Simulações de vida artificial, economia, clima, sociedade, com propósitos sérios ou não.
- Parsing e interpretação. Fazer o computador entender linguagens, e fazer ou dizer coisas em resposta. De novo, não me interessa que não seja uma compreensão da linguagem de verdade. Adoro os brinquedinhos lingüísticos do Verde, por exemplo, geradores markovianos, etc.
Exemplos de aplicações: Eliza, Alice, Harvest Moon, Animal Crossing, jogos de simulação de romance, bichos virtuais e animais de estimação eletrônicos, recepcionistas robôs japonesas, controle de computadores por reconhecimento de voz.
Pra comparar, essa é uma lista típica de coisas que não acho divertidas em computação:
- Fazer com que o programa de controle de clientes fale com a base de dados marca X, e não mais com a marca Y.
- Implementar uma interface gráfica para um programa de linha de comando.
- Reescrever um script que roda de minuto em minuto como um dæmon usando inotify.
- Resolver o problema clássico do planejamento usando redes de Petri, pra ver se fica eficiente.
- Diagnosticar problemas de rede.
- Mexer no kernel.
Em outras palavras, estou interessado nas aplicações de computação carregadas de significado “humano” — mesmo que o tal significado seja totalmente ignorado pela máquina e seja sobreposto ao programa por nós mesmos. Vendo meu curso agora, apesar de ainda achá-lo excepcionalmente bom, e apesar de muito interessantes que sejam o Knuth, o Tanembaum, o Hennessy & Patterson, o que eu queria ter explorado mesmo era o Russel & Norvig, e não o fiz. Na sua página o Norvig citou alguns estudos que parecem indicar que as pessoas levam dez anos para saber um assunto, em diferentes áreas. Mexo com computação há seis; talvez agora que estou largando o campo profissionalmente ainda dê tempo de fazer algo legal?
Acho que está claro que ninguém vai me pagar pra fazer as coisas da primeira lista. Com sorte e alguma insistência, quem sabe eu conseguiria viver desses assuntos na academia; mas até aí, na academia você consegue viver lidando com qualquer coisa, e no mundo existem coisas que me interessam mais que computadores.
* * *
Sim, tudo isso porque estou com inveja da Satomi Hakase de Negima. Como não ficar?
(originalmente discutido com o boto)
NiGHTS tinha algo primitivamente parecido com o que você sugeriu. Cada fase é habitada por uns anjinhos chamados Nightopians e você pode “criá-los” chocando os ovos deles e cruzando-os com os inimigos dando seres bizarros. Dependendo de como você os trata, o humor deles muda assim como a reação deles quando encontram você (alguns cantam, outros jogam pedras, etc). A música da fase é dividida em segmentos e cada segmento possui 4 variações; qual delas toca depende do humor dos Nightopians. A maioria dos jogadores passa totalmente batido a esse sistema.
Realmente seria interessante se tivesse algo mais elaborado do gênero…
Embora eu goste de outros tipos de jogo, aqueles com algum elemento de exploração realmente são bem mais cativantes. Grandia é um dos meus jogos favoritos pela atenção aos detalhes, cada cenário tem um monte de elementos com os quais você pode interagir. Nada de muito complexo, por exemplo você entrar numa casa e apertar o botão próximo a pesos no chão e eles são animados como se o personagem tivesse tentando erguê-los (o sprite é sequer animado). Mas esse tipo de “bobeira” deixa o jogo com mais profundidade.
Comment by Jinn — 2007-06-19 20:55:41
Jinn, NiGHTS é um bom exemplo do que estou falando justamente porque não é muito elaborado e está meio “de escanteio”. Jogos com simulações detalhadas existem; por exemplo, o Sim City e os outros Sim *, o Spore que tá pra sair e o já citado Creatures. O que eu acho é que pequenos sistemas, simples mesmo, podiam muito bem ser mais usados pra dar cor a jogos ‘normais’, como FF.
Comment by leoboiko — 2007-06-20 16:14:38
A sua segunda lista é interessante. Pegando os dois primeiros itens (ou só o primeiro, vá), imagine agora não resolver esse problema, mas criar um programa que resolva esses problemas!
Por exemplo, o 1o caso o programa te faria algumas perguntas, “ah, como é o separador”, “quais as palavras chaves possíveis”. Ou melhor ainda, você copia e cola exemplos para ele e ele “entende” como fazer.
Comment by Tabgal — 2007-06-20 18:55:39
Tab: Sim, isso é mais interessante, e eu adoro essas coisas. Mas não me pagam pra isso. Empresas não estão interessadas em soluções realmente pesquisadas a fundo e programadas com boa engenharia (regra geral: tudo o que o chefe não entende é automaticamente “custo desnecessário”). O programa que você sugeriu cai como uma luva para resolver em scheme, mas é só mencionar a palavra “scheme” numa empresa e o chefe já está lá do outro lado da sala.
Claro, isso não me impede de fazer longos scripts python ou bash (funcional!) que conversam com o usuário e automatizam as coisas e fazem café e massagem nas costas — esses dias atrás era pra eu adaptar o mysql.conf de uma máquina virtual xen para usar menos memória, e eu terminei com um script que altera os nossos mysql.confs para usar uma quantidade arbitrária de memória — mas essas coisas não têm reconhecimento ou incentivo. O que deixa o chefe contente é que o pessoal do Java inventou um discador novo que espiona mais coisas dos usuários que o discador antigo.
De toda forma, tudo isso ainda é três ordens de magnitude mais chato que agentes, redes neurais, lógica fuzzy, AL etc.
Comment by leoboiko — 2007-06-21 12:51:32
Estive pensando sobre isso também… Já imaginou em um MMORPG, se a quantidade de monstros e vegetação e “vida” no cenário recebe-se influencia os jogadores? Do tipo, quando o game é lançado tudo é lindo e verde e cheio de animais selvagens, mas quando o jogo começar a encher de gente, os cenários “e tudo em volta” forem morrendo, os monstros fossem migrando e tal…
Tenho várias idéias mas estou meio com sono XD
Comment by Gobr — 2007-06-21 22:29:58
oi oi poijnm eh tjhh j5m,ufgbr5my5kmmj4hu
Comment by keronlay — 2007-10-11 09:57:22
eu skel bonitona marcio te amo
Comment by keronlay — 2007-10-11 09:58:13