3D GAME BUILDER 1.6 - NOVIDADES

- Novo Sistema de Navegação no Editor

        A nova versão do 3D Game Builder possui agora um sistema totalmente novo para a navegação e interação no editor de cenários. Agora a câmera é livre para mover-se para qualquer direção, permitindo uma melhor visualização e interação nos cenários.

        Para movimentar a câmera do editor de mapas agora é necessário pressionar o botão direito do mouse e segura-lo, em seguida ao mover o mouse é possível mudar a direção da câmera. Para mover a câmera pelo mapa deve-se manter o botão direito do mouse pressionado e utilizar as teclas direcionais do teclado para navegar pelo ambiente e ir a qualquer lugar do cenário.

        Com isso ouve algumas mudanças. Agora para exibir o popup menu com as opção dos objetos que antes era exibido com o clique do botão direito do mouse agora é feito com o duplo clique do botão esquerdo em um objeto

- Novo Formato de Modelo 3D para Atores

        A nova versão do 3D Game Builder possui agora uma nova opção de formato para atores e objetos animados, o formato SMD.

        Diferente dos outros formatos de modelos com animações aceitos pelo 3D Game Builder (MD2 e MD3) que eram baseados em frames, o SMD é baseado em esqueleto, o que permite a criação de animações mais realistas e complexas. Outra vantagem do formato SMD é que ele não possui nenhuma limitação quando ao numero de animações ou de polígonos dos modelos.

        Os modelos SMD são divididos em dois tipos de arquivos:

        - O arquivo SMD Model contém referências do modelo, incluindo a geometria, a estrutura do esqueleto, textura e a ligação entre as meshs do modelo e o esqueleto. O arquivo não contém nenhuma animação, apenas o modelo estático.

        - O arquivo SMD Animation contém as informações sobre a animação e todos os dados necessários para executar a animação no esqueleto do modelo. O arquivo não contém nenhum objeto 3D, apenas as animações.

        Ambos os arquivos possuem a extensão .smd, porém é fácil diferenciá-los pelo tamanho, os arquivos SMD Model são maiores que os SMD Animation. Cada modelo SMD normalmente é composto por um arquivo SMD Model e diversos arquivos SMD Animation para as varias animações do modelo. Normalmente cada arquivo SMD Animation é usado para armazenar apenas uma animação.

        O formato SMD pode ser exportado facilmente pela maioria dos programas de modelagens 3D mais usados atualmente.

        Alguns plugins:

         - 3D Max - http://www.wunderboy.org/3dapps.php#max_smd

         - Blender - http://developer.valvesoftware.com/wiki/Blender

         - Maya - http://developer.valvesoftware.com/wiki/Blender

         - Outros - http://developer.valvesoftware.com/wiki/Blender

- Suporte Nativo a Comunicação em Rede

        Agora a nova versão do 3D Game Builder permite a comunicação entre computadores e a criação de jogos multiplayer em rede. Para isso o 3D Game Builder oferece dois novos componentes:

         - TCP Server: Componente servidor para receber conexões de clientes.

         - TCP Client: Componente cliente para conectar-se a servidores.

        Para o gerenciamento e controle da comunicação em rede o 3D Game Builder 1.6 inclui uma coleção de comandos e eventos para a linguagem script:

procedure TCPClientConnect();

procedure TCPClientDisconnect();

function TCPClientRead():String;

procedure TCPClientWrite(Msg:String);

procedure TCPClientClearBuffer();

procedure TCPServerActivate();

procedure TCPServerDesactivate();

function TCPServerRead():String;

procedure TCPServerWrite(ClientIP:String; Msg:String);

procedure TCPServerWriteToAll(Msg:String);

function IsTCPClientConnected():Boolean;

function GetTCPClientHost():String;

function GetTCPClientPort():Integer;

function GetTCPServerPort():Integer;

procedure SetTCPServerPort(Port:Integer);

procedure SetTCPClientPort(Port:Integer);

procedure SetTCPClientHost(Host:String);

Event OnConnect();

Event OnReceive();

Event OnDisconnect();

- Shaders

        Shader são conjuntos de instruções de software que são utilizados principalmente para calcular e renderizar efeitos no hardware gráfico, com os shader é possível programar diretamente para a unidade de processamento gráfico (GPU).

        Os shaders são divididos em dois tipos:

         - Pixel Shader - Shader utilizado para trabalhar na estrutura dos pixels depois que os objetos são rasterizados. Com o pixel shader podemos criar efeitos nas imagens, como efeitos de vidro, rugosidade, desfoque e etc. Além disso, também permitem a criação de texturas procedurais.

         - Vertex Shader - Shader utilizado para trabalhar na estrutura de vértices dos objetos 3D, podendo modificar a sua estrutura em tempo de execução. É utilizado para otimização dos objetos 3D, pois a partir da programação conseguimos detalhes ou efeitos que seriam muito árduos para serem criados durante a modelagem. Por exemplo, modelar as ondas de um oceano além de ser difícil conseguir um resultado bom, alterá-lo dinamicamente para o mar não ficar estático é muito trabalhoso, um vertex shader é capaz de fazer isso com poucas linhas de código.

        A versão 1.5 do 3D Game Builder possuía alguns shaders, porém eles apresentavam algumas incompatibilidades em algumas placas de vídeos. Nesta nova versão do 3D Game Builder todos os shaders foram refeitos e novos shaders pré-definidos foram acrescentados, agora o 3D Game Builder possui 6 tipos de shaders pré-definidos:

         - Diffuse Specular Shader

         - Cel Shading

         - Bump Mapping

         - Toon Shading

         - Gooch Light

         - Environment Mapping

        Além disso, esta nova versão trás uma grande novidade que a possibilidade do desenvolvedor programar os seus próprios shaders através da linguagem GLSL. Para isso basta acessar o menu “Banco de Dados -> Shaders -> Custom Shader” e programar o shader diretamente no 3D Game Builder.

- Animação por Intervalo de Frames

        Na nova versão do 3D Game Builder não é mais necessário associar nomes aos frames das animações de modelos MD2 e MD3. Agora é possível definir um intervalo de frames para cada animação no próprio 3D Game Builder.

        Para selecionar o intervalo de frames nas animações de atores MD2 ou MD3 basta clicar na chave ao lado da caixa com o nome da animação e digitar o intervalo dos frames para a animação.

        Também é possível executar animações usando de intervalos de frames através do comando script SetObjectAnimation.

        Exemplo: SetObjectAnimation(‘Ator1’, ‘20|50’);

        Onde:

        20 = Frame inicial

         | = Separador

        50 = Frame Final

- Espelhos

        Outra novidade é que o 3D Game Builder 1.6 agora possui agora um componente especial para criar espelhos nos cenários. Basta adicionar o objeto e ele ira refletir tudo o que estiver na sua frente.

- Novo Algoritmo para Seleção de Objetos com o Mouse

        A nova versão do 3D Game Builder possui agora duas opções de algoritmos para seleção de objetos no editor de cenários.

         - Ray Casting: Mais rápido e compatível com a maioria das placas de vídeo, porém não é possível selecionar objetos do tipo GUI, Terrenos e Waterplanes.

         - Z-Buffer: Maior precisão, porém lento em algumas placas de vídeo da ATI.

        Para escolher o algoritmo de seleção de objetos basta acessar o menu Opções->Mouse Pick System.

- Back Face Culling

        A nova versão do 3D Game Builder também oferece a opção de ativar ou não o back face culling, ou seja, a remoção de faces internas dos objetos, na versão anterior elas por padrão eram sempre desativadas (por questão de performance) e quando se olhava para dentro dos objetos era possível ver através deles. Agora para cada mapa é ser possível escolher se as faces internas dos objetos vão ser renderizadas ou não.

        Para desabilitar o back face culling no editor basta acessar o menu Opções->Culling. Para desabilitar o back face culling durante a execução do jogo deve-se habilitar a opção nas propriedades do mapa.

- Novas Funções para a Linguagem Script

        Além das novas funções da linguagem script que já foram descritas, outras funções novas funções tambem foram adicionadas a linguagem scripts:

function GetObjectMaterial(ObjectName : String) : String;

Função que retorna o nome do material associado ao objeto.

procedure SetFullscreen(State : Boolean);

Função que alterna o jogo entre tela cheia e janela.

function IsFullscreen : Boolean;

Função que retorna true se o jogo estiver sendo executado em tela cheia.

function GetFPS : Integer;

Função que retorna o valor do FPS (frames per second) atual do jogo.

function GetWindowMousePositionY : Integer;

Função que retorna a posição do mouse relativa à janela no eixo X.

function GetWindowMousePositionX : Integer;

Função que retorna a posição do mouse relativa à janela no eixo Y.

function GetWorldMousePositionX : Float;

Função que retorna a posição do mouse relativa ao mundo no eixo X.

function GetWorldMousePositionY : Float;

Função que retorna a posição do mouse relativa ao mundo no eixo Y.

function GetWorldMousePositionZ : Float;

Função que retorna a posição do mouse relativa ao mundo no eixo Z.

procedure SetActiveSkybox(Skybox : String; ObjectName : String);

Função que muda o skybox ativo no objeto.

function GetActiveSkybox : String;

Função que retorna o nome do skybox ativo atualmente no cenário.

function GetObjectAnimationCurrentFrame(ObjectName : String) : Integer;

Função que retorna o frame atual da animação que esta sendo executada no objeto.

procedure CreateMD2Actor(Name : String; MD2Actor : String; PositionX : Float; PositionY : Float; PositionZ : Float; RefObjectName : String);

Função usada para criar um ator MD2 no cenário em tempo de execução.

procedure CreateMD3Actor(Name : String; MD3Actor : String; PositionX : Float; PositionY : Float; PositionZ : Float; RefObjectName : String);

Função usada para criar um ator MD3 no cenário em tempo de execução.

procedure CreateSMDActor(Name : String; SMDActor : String; PositionX : Float; PositionY : Float; PositionZ : Float; RefObjectName : String);

Função usada para criar um ator SMD no cenário em tempo de execução.

procedure CreateObject(Name : String; Objeto : String; PositionX : Float; PositionY : Float; PositionZ : Float; RefObjectName : String);

Função usada para criar um objeto (externo) no cenário em tempo de execução.

procedure AddSMDActorAnimation(ObjectName : String; FileName : String);

Função utilizada para adicionar um arquivo de animação a um ator SMD. Para executar a animação deve se utilizar o comando SetObjectAnimation normal, o nome da animação será o mesmo do nome do arquivo sem a extensão.

        Além dos comandos utilizados para alterar as variáveis dos shaders criados na linguagem GLSL programados no editor de Custom Shaders.

procedure SetCustomShaderUniformInt(ShaderName : String; VarName : String; Value : Integer);

procedure SetCustomShaderUniformFloat(ShaderName : String; VarName : String; Value : Float);

procedure SetCustomShaderUniformVec2(ShaderName : String; VarName : String; Value0 : Float; Value1 : Float);

procedure SetCustomShaderUniformVec3(ShaderName : String; VarName : String; Value0 : Float; Value1 : Float; Value2 : Float);

procedure SetCustomShaderUniformVec4(ShaderName : String; VarName : String; Value0 : Float; Value1 : Float; Value2 : Float; Value3 : Float);

procedure SetCustomShaderUniformSampler2D(ShaderName : String; VarName : String; Value : String);

- Importação Automática de Texturas de Modelos Externos

        Agora não é mais necessário copiar manualmente as texturas de objetos externos para a pasta “Textures” do projeto, agora elas são copiadas automaticamente e o desenvolvedor será avisado quando alguma das texturas não for encontrada.

        Além disso, foram feitas diversas melhorias na importação de modelos externos.

- GUI Image

        O 3D Game Builder 1.6 também traz mais um componente para a paleta GUI Objects, o componente Image, com ele é possível criar objetos GUI contendo uma imagem associada. Pode ser utilizado para melhorar a aparência dos menus ou então para criar interfaces.

        Além disso, foi corrigido o problema em que os objetos GUI algumas vezes ficavam sobrepostos pelos objetos da cena.

- Melhoria no Algoritmo de Sombras

        Foram feitas algumas melhorias e correções de bugs no algoritmo usado pelo 3D Game Builder para gerar sombras nos objetos. Agora ele já esta estável para ser utilizado na maioria dos casos. Porém ainda deve ser verificado o resultado final, pois existem alguns problemas em alguns objetos.

- Compatibilidade com o Windows XP, Windows Vista e Windows 7

        A nova versão do 3D Game Builder esta compatível com todas as novas versões do Windows.

        Entretanto é necessário executá-lo com privilégios de administrador no Windows Vista e 7.

- Nova Documentação

        A nova versão do 3D Game Builder também inclui uma nova documentação mais completa e melhor organizada, além disso, agora também é possível fazer pesquisas na documentação.