sexta-feira, dezembro 28, 2007

Um pouco sobre meu TCC

Bem, eu estou de férias na faculdade e a maioria das pessoas que estão na mesma situação não querem saber de estudos até o ano que vem. Mas eu não sou assim. Depois de começar meu Trabalho de Conclusão de Curso com um grande atraso nesse semestre, eu estou aproveitando as férias pra dar uma boa adiantada nele e ficar tranquilo quando as aulas voltarem no próximo ano (e com elas o caminhão de trabalhos que os professores costumam passar).

Já faz um tempo que eu venho querendo comentar sobre meu TCC aqui, mas sempre batia uma preguiça na hora de escrever um post grande. Agora, eu respeito aos meus três ou quatro visitantes diários, resolvi que já era hora de falar sobre ele.

Alguns já sabem, mas não custa repetir, meu trabalho é um Ambiente Visual para a Criação de Jogos. Trata-se de um game maker, com características próprias, como o acesso ao código-fonte do jogo criado (o que permite usar meu projeto para criar o esqueleto do jogo e depois editar o código-fonte para fazer ajustes, se necesário).

O trabalho se divide em duas partes principais: o Ambiente Visual e um Framework.

O Ambiente Visual será a Interface Gráfica em si, onde o usuário irá desenvolver o jogo. Este ambiente irá oferecer maneiras de se carregar e configurar recursos utilizados no jogo (imagens, sons, fontes...) e definir os eventos e ações que cada Entidade irá desempenhar no jogo (como mover-se, checar mouse e teclado, instanciar e destruir outras entidades...). Depois de tudo editado usando a interface, o código-fonte do jogo será gerado automaticamente e compilado.

O Framework deverá conter diversas funções para criação e controle de jogos (como funções de desenho, acesso a dispositivos de entrada, armazenamento...), funções de controle das Entidades (mover, atualizar, desenhar...), e estruturas de dados (listas de imagens, sons, fontes, entidades e outros que são gerenciados internamente pelo framework). A idéia do framework é abstrair a biblioteca sobre a qual o jogo rodará (mais sobre isso abaixo), e facilitar e diminuir o código gerado pela interface gráfica. O framework pode (e deve) ser utilizado independente da interface, sendo uma opção rápida para o desenvolvimento de jogos.

Atualmente eu tenho trabalhado no desenvolvimento do framework, que tem o nome provisório de VisualGame Framework (se alguém tiver uma idéia de nome melhor, me avise :)). Eu havia iniciado o desenvolvimento usando o Managed DirectX, mas tive alguns problemas e resolvi mudar. Testei várias opções (XNA, SDL.NET, GDI+ e Irrlicht) e por hora me decidi pelo IrrlichtCP, mas isso ainda pode mudar.

Como vocês devem ter reparado, os testes foram todos feitos com bibliotecas gerenciadas pelo .Net. Isso foi uma decisão minha porque eu pretendo usar o compilador do .Net na hora de gerar o executável do jogo (testes foram feitos com sucesso com o CSC e o MSBuild). Como a interface será feita no Visual C# Express, o desenvolvedor já terá que ter o .Net Framework instalado para usá-la e este será o único requisito. Caso eu escolhesse uma biblioteca Win32, o desenvolvedor teria que instalar também um compilador (como o gcc), o que não me agrada muito no ponte de vista de usuário (diz aí, você gosta quando tem que instalar um monte de coisa pra usar um programa?).

No entanto, essa também não é uma decisão final. A versão final desse trabalho só será apresentada no final de 2008 e até lá algumas coisas podem mudar. De acordo como está estruturado o framework hoje, não é muito complicado trocar de biblioteca (cada conversão entre as bibliotecas que eu citei acima demorou um ou dois dias apenas), mas trocar de linguagem certamente daria um trabalho um pouco maior. Eu citei 'trocar de linguagem' porque ainda existe a possibilidade de o programa ser voltado para criar jogos em Java para celular (o que justificaria bastante o produto, como uma ferramenta para gerar jogos casuais e advergames de forma rápida e descomplicada).

Muito bem, chegamos ao fim deste post que eu espero que seja o primeiro de muitos sobre o assunto. Futuramente eu quero falar um pouco mais sobre sobre os testes com as bibliotecas e quais os problemas com os quais eu me deparei, além de apresentar melhor o framework, mostrá-lo em funcionamento (estou desenvolvendo um joguinho como teste) e disponibilizá-lo caso alguém se interesse em testá-lo. Se alguém tiver alguma sugestão ou crítica, solte a língua nos comentários.

E é isso aí. Feliz ano novo e sucesso nos seus projetos. Até a próxima.

3 comentários:

CrociDB disse...

Eu num acesso seu blog sempre, mas sempre acompanho pelos feeds! =D

Gostei do seu projeto para o TCC!

Tava pensando aqui, se você criar o seu Maker para suportar alguma linguagem de Scripts, não é melhor do que gerar o código fonte e então compilar? Tá certo que isso iria gerar muito mais trabalho né... hehehe

Só peço uma coisa... posta todos os seus avanços aqui no blog, é muito bom ver isso! hehehe

Boa sorte com o projeto, e um ótimo Ano NOvo! =D

Flww

Diego disse...

CrociDB, a minha idéia é essa mesmo, a interface vai criar todo o código e depois chamar o MSBuild pra compilar e gerar o executável.

Também vai ser possível apenas gerar o código para editá-lo numa IDE e depois compilar.

Sobre o script, inicialmente eu estou pensando em usar o próprio C#. Na prática não ele não seria exatamente um script, já que o código criado pelo usuário viraria simplesmente um método que seria adicionado ao código gerado automaticamente, mas isso fica transparente para o usuário.

Valeu pelo interesse e pode deixar que eu vou postando os avanços por aqui. Feliz 2008 pra você também cara. Falou.

Anônimo disse...

adorei sua ideia do tcc, tb to adiantando meu tcc nas ferias e meu tema tb e flamewoek para desenvolvimento de siw se vc tiver alguma coisa teorica de framework por favor min passe por emai(yanybaby2@yahoo.com.br) ou poste no seu blog.