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

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