sexta-feira, 25 de novembro de 2011

Explorando o código fonte UnrealScript com UnCodeX

A maior e mais atualizada referência sobre UnrealScript é o código fonte que acompanha o UDK. Só que as vezes é difícil acompanhar o código fonte e entender o relacionamento entre as classes.

Para facilitar esta tarefa vamos utilizar uma ferramenta chamada UnCodeX, que foi desenvolvida por Michiel 'elmuerte' Hendriks, e que pode ser baixada na página do projeto.

A instalação é simples, na 1ª execução do programa aparecerá uma caixa de mensagem perguntando se deseja abrir a janela de propriedades. Escolha "Yes". Caso você queira abrir a janela de propriedades posteriormente, acesse o Menu: "Tree -> Settings...". 

Na propriedade "Source Paths" adicione a pasta "\Development\Src" do UDK, como na imagem abaixo.


O UnCodeX irá analisar todos os pacotes e classes para exibi-los da seguinte forma:


Como exemplo vamos pesquisar e analisar uma classe. No tutorial anterior eu usei o static mesh das "Botas de Pulo" do Unreal Tournament. Vamos tentar encontrar a classe que implementa as "Botas de Pulo". 

Acesse o Menu: "Find -> Find Class...", na pesquisa escreva "boots" e marque a opção "Search from the top" conforme a imagem, para que a pesquisa seja feita a partir da classe base Object.


Pressione "OK" para iniciar a pesquisa. O UnCodex encontrou a classe "UTJumpBoots" que é exatamente a que estávamos querendo. Se quisermos continuar a pesquisa basta pressionar F3 para "Encontrar o Próximo".


Clicando com o botão direito na classe, podemos observar que ela se encontra no pacote "UTGameContent". Vamos escolher a opção "Show Properties..." para termos uma visão geral das variáveis e funções desta classe.


Olhando no código fonte desta classe podemos perceber a existência de funções feitas para lidar com o aspecto multiplayer do Unreal Tournament.

Vamos começar analisando o bloco defaultproperties. É definido o StaticMesh que irá representar visualmente esta classe no jogo e são atribuidos valores para algumas variáveis, como a variável "Charges" que indica quantas vezes as botas podem ser usadas.


A função AdjustPawn() adiciona ou remove o bônus das botas no jogador. Nesta função podemos ver um erro de comentário resultante de uma operação Copiar/Colar.


Outra função interessante é a BotDesireability() que calcula o interesse de um Bot por este item. Basicamente a função verifica se o Bot já possui e quantas vezes ainda pode ser usada.


O principal objetivo deste artigo é mostrar que você pode aprender muitas coisas sobre UnrealScript visualizando o código fonte que vem com o UDK.