Wild Witch Project - Um game que você nunca viu

Neste jogo você precisa ajudar uma bruxa adolescente a salvar seu mundo da Mortífera Bunda Assassina do Espaço Sideral

Marketing Viral, Vida Virtual, morte magnética...

Bom, enquanto ouço The Slander do Night Wish o café faz efeito o vento frio da janela se torna cálido. É um titulo curioso, enquanto dedicava minha imaginação à ideias macabras e assustadoras, ao ponto de não me deixarem dormir à noite (dois coelhos mortos-vivos trepando é uma cena que ninguém merece) dedicava meus poderes de lógica à criar a famosa vida-virtual!

Comecei a pensar em termos de marketing, e resolvi aplicar. A nova onda do momento é o famoso twitter, que começa a aparecer no Brasil. Para quem conhece, deve estar familiarizado com suas inutilidades, ou empolgado com suas possibilidades.
Hoje em dia o tiwwer é outra maneira de se conseguir ser ouvido. Trata-se de um mecanismo de mensagens curtas, alguns chamão de micro-blog. Na Franca ele tem tanta força que as pessoas chegaram a criar uma conta para seus filhos ainda na barriga da mãe! Usando uma cinta com sensores e um bluethoot o sistema twittava toda vez que o feto dava um chute! Sim, incrédulo, hoje em dia você não precisa perder tempo com coisas triviais, como "nascer", você já esta "on-line"!!!

Tecnicamente falando, criei uma conta no twitter para Cibele, e ando convidando uns amigos, pra conhece-la. Na esperança que mais gente goste dela e a adicione.
Eu não irei falar em momento algum que Cibele é uma personagem, a ideia é deixar as pessoas pensarem que é uma adolescente louca, e irem na dela.

Com certeza a melhor linguagem para esse projeto. Tendo em vista suas especificações e a proximidade com linguagem natural e os bons casos de uso.
Eu também posso ir aprimorando minha capacidade de escrever textos, que ultimamente anda tão destreinada quanto à de desenhar. E de quebra elaborar um perfil verbal mais refinado pra Cibele. Outra necessidade que vi é a de estudar mais oque as menininhas andam falando, pois eu tenho meus vicíos de linguagem, e Cibele deve ter os dela, compátivel com a faixa etária.
Em uma primeira instância montei um script em ruby para postar automaticamente.
Tudo que ele faz é mandar mensagens em intervalos aleatórios. Durante o processo de postagem fui refinando o sistema. Agora ele alem de enviar, guarda log de eventos, e eu posso configurar o intervalo de postagem sem mexer no código. Em seguida irei preparar o sistema para que algumas das configurações possam ser feitas remotamente!
Cloud Computing, um belo termo, o script roda local em minha maquina, mas decidi usar o Google Docs para escrever as entradas no Twitter. Assim onde quer que eu esteja posso atualizar a história!
Outra novidade, o controle de versão. Até então não usava isso em meus projetos pessoais. Mas surgio uma solução interessante no trampo, que resolvi testar aqui. Ainda apanhando pra aprender. GIT, o sistema desenvolvido por Linuz Talwards (criador do Linux), é muito bom. Diferente do SVN ele pode ser usado localmente.
Mas para deixar a coisa mais legal, criei um repositório no site GitHub, esse site é quase um twitter de coders, já que cada update ele manda por rss, posso ter seguidores e etc. Outra vantagem do GIT, se caso eu precise viajar e não possa deixar o computador ligado, basta pedir a um amigo fazer clone do projeto, e passar os arquivos de config para ele. Pronto!

Em uma segunda etapa, estou desenvolvendo o sistema de I.A. do jogo. Bom, o sistema é em Lua, mas da mesma forma que chamo o ruby eu chamo a Lua pelo ruby. No momento o que mais rápido deve sair é a percepção de clima. Sim, se esta de noite, Cibele deve "mimir", ou no máximo acordar pra fazer um pipi (sim, ela vai postar issu, sei que muitos vão achar pouco feminino... mas dane-se, a intenção é um twitter bem "newbie"). Então desenvolvi em Lua a classe clima. Estou remexendo no meu projeto no Google Code, faz séculos que aquilo esta lá... e até hoje a Sangria não me deu uma mão com a tradução pro inglês ~_~. Vou acabar largando aquilo.
Estou mudando a temática JSON de respostas do sistema. Achei uma alternativa mais elegante. A classe clima agora responde coisas como:
~$ lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require("globals")
> require("terreno/clima")
> clima = Clima()
> print( clima )
São 0 e 0 da manhã, o tempo esta normal com temperatura normal (23°)
Acho que se eu fizer um retorno desses, com separações de TABs devo ter um resultado minimamente interessante pra futuras expansões da I.A. em linguagem natural.
As respostas aos eventos aleatórios do clima viriam de estruturas de array, como:
["Nossa ta frio hj:("],
["Vou ver oque acho pro almoço",
["Uhmm! Cogumelos!",
"Amoras rsrsrs! Nossa o pé tava cheiinho hj!",
"Porra! O galo me bicou! Tomá banho! Ele
nem cuida dos filhote, vai regulá ovo"]],
["Acho que vi um vulto!",
"Caraio! Vi a coisa de novo! To cumedo",
"Ai!!! Ele ta la fora"],
["Caraca, que dor de cabeça!
Nunca mais misturo vodika com absinto"]
Mas por hora fazendo a personagem dormir, e reagir ao clima estaria bom. Se tiver chovendo posso sair da linha de tempo das postagens para um conjunto de frases especifico ou mesmo outra linha de tempo!

Terceira etapa chutar o páu da barraca com bastante força. Alguém já ouviu falar em Eliza Bot? Outra coisa que me deparei, e achei aplicações praticas aqui, descrita em Janeiro de 1966 por Joseph Weizenbaum, esse programa usa algumas artimanhas da língua para fingir uma conversação.
http://www.masswerk.at/elizabot/
É limitada essa versão em JavaScript, no entanto existem exemplares mais robustos... infelizmente escritos em Pearl (ecah).
A vantagem.... Cibele poderá dár algumas respostas automaticamente ao povo que quizer falar com ela! Isso tanto é bom, nesse projeto como no jogo em si!

Sei que invariavelmente toda a I.A. dos NPCs do jogo serão baseadas em maquinas de estado.
O quão complexas eu ainda so posso chutar.
Tipo, o Padre da cidade tem um sistema de contagem, se a bruxinha não inspirar ser boazinha (ou se praticar roubos ou outros atos pra conseguir dinheiro e ele ficar sabendo) irá regular água-benta. Isso se resolve com flags, contadores e códigos extras para classes (meta-códigos poderiam ser perfeitos, mas já que apenas o conceito ja me deixa enrolado, vamos deixar pra lá).

Quanto às criaturas mortas....
Estou fechando os sculpts dos zumbis. Vou mais tarde tentar implementar paralax-mapping nos modeles, oque me permitira criar modelagens mais realistas ainda do que essa. Mas ando tendo algum problema em compilar os sources, a OGRE sempre reporta erro! Não sei se é alguma configuração que não percebi que tinha que ter ou bug na versão mesmo.
Mas está ai meu zumbizinho:

Off-topics:
Obs.: Alguns que assinaram meu rss devem ter notado que apaguei o ultimo post, pois é, nunca mais faço rascunho aqui. Dei um enter onde não devia e o malebento publicou.

Blender 2.49... prévia pro sonhado 2.50 que surgira um dia iluminando nossos monitores com suas dadivas maravilhosas... mas por enquanto so posso dizer CASSETA!!!
http://wiki.blender.org/index.php/User:Theeth/etch-a-ton
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.49/Projection_Paint

Problemas e soluções:
Pra quem tem o mesmo problema de rodar o ruby no Ubunto ou Debian, é so digitar "ruby source download" no google e em seguida clicar onde ta escrito "stable version" ou "stable qualqueroisa". Baixe descompacte (tudo com botão direito, n perca tempo tutoriais de terminal.
Desistale tudo de ruby, menu de sistema/administração/Synaphtic -> procure por ruby e mande desinstalar TUDO.
Depois p sofrimento de todos, abra o terminal e navegue para a pasta que você descompactou o ruby (cd nomeda_pasta ) e digite em sequencia os comandos:
./configure
make
sudo make install
(entre com sua senha)
Agora va no google baixe o "rubygens source", novamente jogue em qualquer lugar entre na pasta pelo pronpt de comando (shell) e digite:
sudo ruby setup.rb
Pronto, mais um mini tutorial resolvido!

Quanto ao cron so aceita caminhos absolutos, tipo n podia colocar o comando:
ruby /home/eu/programacao/...bla3.../script.sh
o certo é
/etc/bin/ruby1.8 ruby /home/eu/programacao/...bla3.../script.sh
vai entender!?