Mostrando postagens com marcador AllegroNet. Mostrar todas as postagens
Mostrando postagens com marcador AllegroNet. Mostrar todas as postagens

quinta-feira, janeiro 01, 2009

Meu Trabalho de Conclusão de Curso

Enfim, depois de mais de um mês sem postar, estou de volta.

Não que eu esteja reclamando, mas estes últimos meses foram bem puxados. Encontrar tempo pra terminar o TCC enquanto trabalho, faço provas e trabalhos de outras matérias não é uma tarefa simples. Mas no fim deu tudo certo, meu trabalho foi bastante elogiado, aprovado com nota máxima e tal. E agora eu estou em um misto de alívio e felicidade por ter terminado a faculdade, e ainda uma pontinha de saudades que a turma vai deixar.

Para a apresentação do trabalho, eu ainda consegui (graças ao meu orientador, Júlio César da Silva) a participação do professor Esteban Walter Gonzalez Clua, do Instituto de Computação da UFF, na minha banca de avaliação. Pra quem não conhece, ele é membro da ABRAGAMES e um dos responsáveis pela criação do SBGames. A participação dele foi muito importante, pois não só meu trabalho foi avaliado e aprovado por alguém que manja muito do assunto jogos, mas também pode me ajudar com minhas pretensões futuras (mas eu volto a falar disso outra hora).

Além do Esteban, participaram da minha banca outros dois os professores: Eugênio da Silva, que foi meu professor em algumas disciplinas da faculdade (pegou pesado nesse último período, heim professor!) e Carlos Vitor de Alencar Carvalho, da Universidade Severino Sombra.

Apesar de poder ser meio bobo fazer isso aqui no blog, agradeço muito a estes quatro pela força com o TCC (e claro, pela minha nota 10 ;P).

Voltando ao trabalho e ao verdadeiro motivo deste post, estou disponibilizando um PDF pra quem tiver interesse em ler minha monografia. O texto completo tem 75 páginas e não é nenhum monstro em termos de tamanho (ainda mais se se levar em consideração que parte destas páginas são ocupadas por dois anexos).

A monografia, pra quem não sabe (que feio, não leu minhas postagens antigas) é sobre um sistema para criação de jogos visualmente, uma espécie de game maker. No texto eu faço um apanhado sobre a situação da indústria de jogos e os jogos no meio acadêmico, além de tratar de conceitos envolvidos na geração deste tipo de ferramentas e das tecnologias utilizadas no projeto. Por fim, é falado das partes que compõem o projeto em si: um wrapper para a biblioteca gráfica Allegro, um framework para criação de jogos, um ambiente visual e um gerador de código.

O software proposto no trabalho está em um estado funcional, já sendo possível criar jogos simples com ele. Toda a parte de carregar imagens e efeitos sonoros, criar entidades e atribuir eventos e ações já funciona, além disso o código-fonte já é gerado automaticamente e depois compilado, utilizando o MSBuild. Em breve eu posto aqui um link pra quem quiser testar.

Para baixar o arquivo da monografia, clique na imagem abaixo ou aqui. Boa leitura!


quarta-feira, fevereiro 27, 2008

Um pouco do que eu ando fazendo

Já se foram duas semanas de aula e por enquanto as coisas ainda estão tranquilas na faculdade. Com isso, eu estou tendo bastante tempo pra trabalhar no meu TCC e no AllegroNet, e resolvi falar um pouco sobre o que eu estou fazendo no momento:

  • Estou quase terminando a documentação em XML do AllegroNet, usando como base o manual do Allegro e adicionando detalhes da implementação no C#. Quando concluir a documentação, eu pretendo publicar o projeto no SourceForge.


  • Acho que não tinha comentado aqui, mas eu não estava conseguindo implementar as funções de callback do Allegro no .Net. Esse problema foi resolvido usando delegates.


  • Outro problema que eu tinha no wrapper do Allegro era que, por algum motivo estranho, as funções que usam o tipo fixed (que nada mais é que um alias para long) não estavam funcionando dentro do .Net. Para resolver isso, eu reproduzi essas funções numa DLL nativa, sendo que agora eu passo o parâmetro como int e o valor é convertido para fixed nesta DLL.


  • Como as fontes de bitmap do Allegro não suportam caracteres especiais (como acentos) eu estava atrás de uma forma de contornar isso e resolvi usar o AlFont. Em função disso, também estou fazendo um wrapper do AlFont para .Net e as funções principais (como textprinf, textout, text_lenght e text_height) já estão funcionando.


  • Mudando um pouco de assunto, eu revisei o tutorial sobre temporizadores no J2ME e adicionei syntax highlight com o Prettify. Agora os códigos estão coloridos e bem mais agradáveis de ler.


  • That's all folks.

    sexta-feira, janeiro 18, 2008

    AllegroNet - Primeira versão

    Pois é, conforme eu falei anteriormente, estou fazendo um wrapper do Allegro para .Net e a primeira versão acaba de sair do forno com o nome de AllegroNet.

    Neste primeiro lançamento eu coloquei apenas as funções principais do Allegro, mas já há um número bem alto de funções disponíveis e eu acredito que as funções mais importantes já estão todas aí.

    Duas ausências sensíveis são o suporte a joysticks (que estão no topo da lista pras próximas versões) e o som (que eu não pretendo portar, já que não vou usar o som do Allegro no meu TCC, mas se houver interesse de outras pessoas eu posso fazer).

    Uma lista completa das funções já disponíveis, das que estão na fila e das que deram problema estão no arquivo "Funções.txt" que acompanha o projeto. As funções que não são citadas nesta lista são as que eu não pretendo portar, a menos que haja interesse de outras pessoas.

    O projeto, com código-fonte incluso, pode ser encontrado aqui. Nele há uma solução do Visual C# 2005 que contém, além do projeto AllegroNet, um outro projeto que demonstra o funcionamento do wrapper, e alguns arquivos com instruções.

    O AllegroNet é de uso livre e se encaixa sob a mesma licença do Allegro (gift-ware). Se você fizer algo usando meu wrapper, não é necessário nem mesmo me avisar, mas se quiser me avisar seria legal pra que eu saiba que meu trabalho foi útil pra outras pessoas.

    Qualquer dúvida, sugestão, comentário ou crítica, é só entrar em contato.

    Download: clique aqui.

    domingo, janeiro 13, 2008

    Portando o Allegro para o C#

    Antes de mais nada, eu quero dizer que eu adoro reinventar a roda quando se trata de programação. Apesar de existir muita coisa pronta e muito bem-feita por aí, ás vezes eu gosto de fazer minha própria versão. Isso me dá um controle maior sobre o que a biblioteca está fazendo e serve como uma boa base pra estudos.

    Mas pra que eu estou falando sobre isso? Como eu disse anteriormente, eu estou desenvolvendo meu projeto de TCC e andei tendo problemas com algunas bibliotecas testadas. Agora eu resolvi usar o Allegro, uma boa biblioteca com a qual eu já trabalhei e testes mostraram que ele tem um bom desempenho.

    Acontece que não há uma versão oficial do Allegro para .Net, então a saída normal seria buscar um wrapper que alguém já fez e pronto. Ao invés de fazer isso, eu resolvi criar meu próprio wrapper do Allegro (chamado AllegroNet). Você deve estar pensando "etâ cara doido, procurando mais trabalho!". Sim, é mais trabalho. Mas eu gosto :P

    Fazer um wrapper no .Net para uma DLL nativa é bem mais simples do que eu pensava. Você só precisa mapear cada função da DLL no .Net usando o DllImport. Além disso, basta re-declarar as structs no seu código, já que elas não podem ser importadas diretamente.

    Eu começei a mexer com isso no sábado de tarde e agora (uma e pouco da manhã de domingo) já é possível carregar e desenhar uma imagem com meu wrapper. É pouca coisa, mas o tempo que demorou pra fazer isso também não foi muito grande.

    Eu pretendo portar apenas as principais funções do Allegro pro .Net, ou melhor, pretendo portar apenas as funções que eu vou usar no meu framework. Mas se alguém por aí tiver interesse em usar o Allegro com .Net e quiser que eu porte mais coisas, é só me avisar que eu posso aumentar a tradução.

    Como sempre, ao invés de dar o link pro download, eu vou prometer que em breve eu libero a DLL pra vocês testarem e também o código, pra quem tiver interesse. Eu sei que isso é chato, mas realmente não dá pra liberar o projeto no pé que ele está agora.

    Aguardem novidades.