Tema da Monografia
Sistema de software que integra C++ com linguagens de script.
Resumo
É comum, principalmente no desenvolvimento de jogos eletrônicos, a necessidade de um método prático de se inserir conteúdo lógico dinamicamente em uma aplicação. Linguagens de script (como Lua ou Python) são ferramentas que, dentre outras coisas, fornecem esse tipo de funcionalidade. Podem ter seu código fonte tanto compilado e processado dinamicamente quanto incorporado na aplicação desejada para que esta, por sua vez, adquira acesso a essas conveniências. No entanto, tal incorporação pode trazer vários desafios, especialmente o de ter que aprender a usar uma API (Application Programming Interface) diferente para cada linguagem de script usada.
Esta monografia apresentará um sistema de software que permite ao usuário integrar facilmente diversas linguagens de script a um programa escrito em C++ usando uma API unificada para incorporação e um exportador automatizado de interfaces C++ para essas linguagens de script. Ela explicará todos os principais mecanismos desse sistema, assim como a teoria e a tecnologia por trás deles.
Objetivos
- Desenvolvimento de uma biblioteca C++ que abstrai o uso da API de uma(s) linguagem(s) de script(s) de forma clara, prática de usar, e facilmente estendível para aceitar outras linguagens de script, sendo que inicialmente terá suporte a Lua e Python. O usuário da biblioteca não necessitará de conhecimento específico da API das linguagens para incorporá-las em seu programa, assim como não precisará se importar com qual linguagem de fato está sendo usada, pois o sistema será capaz de reconhecer as linguagens às quais ele fornece suporte.
- Desenvolvimento de uma ferramenta que interpreta parte do código C++ do usuário a fim de gerar wrappers (código fonte, nesse caso em C++, que serve de intermediário para um ambiente externo, como as linguagens de script) das classes e funções desse código para cada linguagem de script que o sistema estiver configurado para reconhecer. Assim, o usuário poderá usufruir das funcionalidades que desenvolveu em C++ na liguagem de script de sua preferência.
- Desenvolvimento de qualquer outra ferramenta que seja necessária para o devido funcionamento conjunto dos dois resultados acima de maneira a simplificar o máximo possível o uso do sistema como um todo.
Atividades Já Realizadas
- A biblioteca do primeiro objetivo já foi desenvolvida em anos anteriores pelos autores deste trabalho, porém ainda depende de uma ferramenta externa (SWIG (Simplified Wrapper and Interface Generator)) para geração dos wrappers, o que introduz vários problemas na incorporação das linguagens.
- A ferramenta do segundo objetivo atualmente é o próprio SWIG, mas para corrigir ou contornar os problemas e restrições impostas por este, está em desenvolvimento uma terceira ferramenta. No momento ela encontra-se em uma versão preliminar e é a maior prioridade da dupla. Pretende-se que esta ferramenta forneça as mesmas funcionalidades que o SWIG, efetivamente servindo como uma alternativa ao SWIG.
Cronograma de Atividades
- 2011-2012
- Desenvolvimento do sistema usando SWIG.
- Janeiro/2013
- Pesquisa de possíveis soluções para os problemas apresentados pelo uso do SWIG. Procura de um orientador para o trabalho de formatura.
- Fevereiro
- Início do desenvolvimento da ferramenta que lidaria com os problemas do SWIG.
- Março
- Continuação do desenvolvimento da dita ferramenta. Revisão de prioridades: Tentar fazer um gerador de Proxies antes de tentar substituir o SWIG inteiro.
- Abril
- Mais desenvolvimento. Avaliação de monografias de anos anteriores.
- Maio
- Mais desenvolvimento. Elaboração desta proposta para o trabalho de formatura.
- Junho
- Versão prototipal do gerador de Proxies. Início da elaboração da monografia.
- Julho
- Terminar o gerador de Proxies. Avaliar tempo disponível para terminar o resto do projeto. Prosseguir com a monografia.
- Agosto
- Terminar as partes essenciais da monografia e do projeto.
- Setembro
- Entregar a prévia da monografia.
- Outubro
- Fazer todos os acabamentos finais no sistema de software e na monografia.
- Novembro
- Confecção do pôster e apresentação do trabalho.
- Dezembro
- Entregar a monografia.
Estrutura Esperada da Monografia
- Introdução
- Motivação.
- Objetivos.
- Problemas.
- Estrutura do Projeto
- Visão geral.
- Biblioteca de abstração de APIs de linguagens de script.
- Gerador de wrappers e interfaces.
- Integrando e entregando tudo para o usuário.
- Atividades realizadas
- Origem do projeto: sistema de scripts da UGDK.
- Uma interface comum para Lua e Python.
- Integração com SWIG.
- Problemas do SWIG.
- Nosso próprio gerador de wrappers.
- Módulos de CMake.
- Resultados e produtos obtidos
- libouroboros
- opwig
- Conclusão
- Bibliografia
- Parte Subjetiva - Fernando
- Desafios e frustrações.
- Disciplinas do curso.
- Continuação do estudo.
- Parte Subjetiva - Wilson
- Desafios e frustrações.
- Disciplinas do curso.
- Continuação do estudo.