Este blog esta em reforma no momento.

Preparando testes de I.A. em cenários complexos

O projeto do Lua-Alchemy é realmente impressionante. Pena que eu não tenho muito como contribuir com a equipe de desenvolvimento, a não ser oferecendo meu "case".

O modelo final do sistema de I.A. não irá fugir disto: Evento In/Out
A API do Lua-Alchemy ainda não parece estar 100% mas eles disponibilizaram uma biblioteca pré-compilada que fascilitou muuuuito meu trabalho. Com base no que já existe na API eu criei este modelo de conversa cliente/servidor:
--[[
Seletor de opcoes
  @param message  - lua_String -> Mensagem a ser exibida
  @param function - lua_String -> Função de retorno
  @param ...      - lua_String -> Lista de opções
]]--
Seletor.show("Escolha uma opcao abaixo", "escolhaFeita", "Lagartixa", "Amendoim", "Mingau", "Assembleia", "Porcelana")


function escolhaFeita( opt )
   print( "Voce escolheu " .. opt .. " apartir da AS3/Flex" )
end
Seletor é criado na propria AS3 do Flex:


lua = new LuaAlchemy();
lua.setGlobal("Seletor", new Seletor() );
lua.setGlobal("Mensagem"new Mensagem() );


Para os que chegaran agira e os que se esqueceram, estou usando esse porte de Lua para AS3 para os testes sem precisar desenvolver tudo em C++.
Outro detalhe é que este projeto aparte se encontra hospedado no GITHub.

E pra quem pensa em usar Lua-Alchemy esta não é a melhor abordagem, os desenvolvedores implementaram a API do Flex e Flash completa. Mas meu intúito é ter o menor código relacionao ao AS3 dentro da Lua, o objetivo final é o host com C++.

O próximo passo é criar um pequeno grafico na tela com os personagens interativos. Cada qual com sua maquina de estados, e quando se clicar em cada um Lua vai cruzar os dados com a maquina de estado maior (Cibele).
O modelo básico ja esta concluido. Pelo que espero o sistema de classes irá resolver 90% da interação, e poderei "codar" funções próprias pra cada personagem se necessário.

Percebo agora o quanto dá pra fazer o sistema dinâmico, Lua esta respondendo bem (ao menos nos testes do Lua-Alchemy) ao doString, isto quer dizer que vou ser capas de expandir o código em tempo de execução apartir das ações ocorridas. Até aqui a idéia de usar um banco de dados no lugar de simples arquivo serializado esta se mostrando bem mais funcional, pois irei poder guardar pedaços de código separados e carrega-los apenas quando necessário.

Pode parecer uma coisa inutil à primeira vista, cada bloco de memória que Lua levanta quando precisa mede uns 64Kb mais ou menos, pode parecer ridículo quando se pensa em sistemas atuais que exigem 2GB de RAM no mínimo pra se jogar jogos, mas para outros dispositivos? Pode ser que eu nem chegue a implementar issu tudo, mesmo sendo fácil pra cassete com essas técnologias, mas a funcionalidade esta ai.

if Cibele.iventario.dinheiro < 300 then
  Mensagem.show( "Você não pode comprar esta beringela" )
end

Processo criativo em ação


Permanganato de Potássio
Pescador de profissional como seu pai e avô.
Infelizmente de família sempre muito pobre pela dificuldade de achar emprego, pois Lambarilia do Norte não tem rios nem lago.

Este foi o começo de Permanganato de Potássio, jogado num TXT em algum lugar dos documentos de  produção, até uma revisão. Quando o revi pela ultima vez percebi algo a acrescentar:

Pescador de profissional como seu pai e avô.
Infelismente de família muito pobre.  Tem dificuldade de achar emprego, pois Lambarilia do Norte não tem rios nem lago. Mas o orgulho da tradição de pescadores fala mais alto em suas veias.

Adepois numa terçeira olhada percebi ainda o detalhe do orgulho da tradição no personagem.
Logo me toquei que este orgulho poderia se encaixar na trama como uma peça de quebra-cabeça central...

Pescador de profissional como seu pai e avô.
Infelismente de família muito pobre.  Tem dificuldade de achar emprego, pois Lambarilia do Norte não tem rios nem lago. Mas o orgulho da tradição de pescadores fala mais alto em suas veias.
Seu grande apego e respeito ao passado se mostram numa memória brilhante que este homem tem e na alegria que tem de contar os causos que sua memória presenciou.

Tão logo este personagem no meio da vila é ponto de referência para se achar elementos na trama.

Cibele também esta ganhando mais poderes enquanto escrevo as tramas, a fim de desvendar mistérios estou projetando poderes especiais.

Esse ver e rever cada texto e cada conceito tem se tornado constante e se mostrado eficiente em amarrar todas as histórias de forma eficiente.


Próximo passo é entrar no X-Mind com estes dados.
Se tudo correr bem o próximo post deve ser um dos mais insanos....

Construção do personagem, ideias novas

A palavra bruxa (witch) pronunciada atualmente gera sempre uma série de imagens ja desgastadas na mente das pessoas.
Uns pequenos ajustes na apresentação de Cibele, como já notaram ela não aparece voando em vassouras, e nem terá isso no jogo... cavalos-de-pau são exceção.
Não vai ter chapéu pontudo, ela não é um Gandalf de calcinha. E vai precisar de sua agilidade pra sobreviver.

Coisas que andei descobrindo entre meus estudos de cenário:
  • Todo mundo confunde esse projeto com Wicth da Disney!
  • A imagem que muitos associam à bruxa é a da mulher injustiçada queimada das fogueiras da idade média. Isto se deve ao pensamento originado da doutrina cristã, dominante e afeta até mesmo os pagãos, de valorizar a figura do mártir, o sofredor e o penitente.
  • A imagem da bruxa velha, feia, má e com verruga no nariz, do hemisfério norte também se deve à influência do pensamento da Igreja, só que no caso a corrente luterana valoriza muito o rico, o soberano. Então a bruxa foi relegada à uma caricatura cómica das festas de Haloween.
  • Tanto a imagem da mulher bela e curandeira quanto a mulher velha e maligna tem sua origem na própria cultura e pensamentos Celtas, onde a imagem da dualidade tem uma conotação sagrada.
  • Nunca existiu "um povo" celta, na verdade oque nós denominamos celtas em nossa ignorância e falta de estudo, são vários povos de língua e costumes semelhantes que vieram da mesma região. e tem sua origem talvez na "idade do bronze" e tiveram a infeliz ideia de passarem suas tradições apenas por via oral.
  • O Rei Arthur muito provavelmente poderia ter nascido romano e não bretão!
  • Asterix pode não ter existido, mas uma vila na Gália que enfrentou os romanos e teve sucesso existiu
  • Os utensílios como vassouras e colheres de pau foram usados pelas praticantes de magia da idade média em substituição aos artefatos originais, justamente por temer perseguições, as formas dos instrumentos originais se perderam na lembrança. Mas muito certo é que a vassoura veio a substituir algo como aquele espanador que se vê sendo usado por monges nos animes e servia igualmente para espalhar as más vibrações do ar.
  • Veneza tem hoje um titulo ridículo de cidade dos amantes, mas já foi uma das cidades mais importantes em tempos antigos, financiou uma das cruzadas, e começou como uma vila de pescadores num pântano que só sobreviveu porque seus inimigos morreram por doenças provocadas pelos mosquitos do pântano!
  • A Ilíada de Homero possui cenas censuradas! (como a tortura até a morte de Heitor, e sacrifícios humanos).
Notas legais
Estou fazendo alguns testes com o Blender 2.5. O Grease Pencil esta impressionante! Nem parece que estou num soft 3D.
No entanto ele ainda não sera usado em produção, pelomenos para a maioria dos elementos o 2.49 dá e basta e é mais seguro. O Python do 2.5 ainda tem planos de mudar e muito, oque irá me prejudicar na hora de exportar material.
No demais quanto a modelagem, acabou que me habituar aos atalhos do 2.5 não demorou mais do que 30 minutos!

Redesenhando o mesha Coruja do Mato

Acho que ainda nem criei o post oficial dele, mas aqui esta um redesign do mesha Coruja do Mato.
Apesar de que eu já havia modelado ele, no entanto foi uma modelagem "direta" no Blender, sem rascunho nem nada.
Agora essa imagem com as pernas mais flexiveis e aparência "fusquinha" me parecem ser mais atraentes.
O design inicial era algo misturado de trator com um bulbo enorme e uma carinha de robo.
As armas devo manter.
Bom, postei pouco essa semana, e fim de semana estarei fazendo um upgrade no micro, uma HD maior e migrando para o Ubuntu 10.04 Lucid Linx ^_^

Composição da cena, e testando efeitos

Consumindo 1GB de memoria e 9 min no Blender 2.49 para o render em Full HD e suavização de serrilhado, ele esta até modesto.
Decidi aplicar este efeito de lente olho-de-peixe mas infelizmente ele descarta as particulas (por isso a chama das velas sumio). A configuração da distorção também é complicada.
A idéia veio deste blog http://proyectossalvador.blogspot.com/2008/04/fisheye-effect-in-blender.html seria o ideal pois não faria distorções feias que podem ocorrer em softwares gráficos em pós-produção.
Agora vou testar o node-editor, talvez eu consiga inserir a chama da vela em forma de malha, oque talvez seja mais adequado, já que não estava muito satisfeito com elas.
O corpo das velas também precisa de uma regulagem ou alguma coisa que não os deixe tão emissi

Comemorando o dia do trabalho um widget de analize de trabalho

Olha vou contar a verdade, podem até duvidar, mas é uma grande coincidência eu estar soltando isto hoje "Dia do Trabalhador".
Em um insalubre momento de tédio na espera de um projeto e outro no serviço comecei a rascunhar este sistema.
Agora periodicamente o meu micro rastreia a pasta do projeto Wild Witch e reporta as alterações de arquivo para o meu servidor web.
Criei um pequeno widget com um layout ainda à definir que informa ao usuário as ultimas mudanças e em quais arquivos estou trabalhando.
Muito mais rápido doque se eu estivesse blogando ("cá entre nós" blogar exige uma demanda de tempo e estudo grande, a média de preparo de um post é de uma hora) e mais comodo do que o Twitter.
O projeto agora se encontra hospedado no GitHub, quem sabe alguém me ajuda a optimizar e implementar novos recursos, como diagramas, segurança, entre outros.

http://github.com/marcosbitetti/AnalizerJobFile

Enjoy.