Notícias

3D GAME BUILDER SCRIPT LANGUAGE

        A linguagem de programação utilizada pelo 3D Game Builder é baseada na linguagem Object Pascal. O objetivo deste documento não é ensinar a programar em pascal, mas sim, mostrar as diferenças entre a linguagem pascal e a linguagem script utilizada pelo 3D Game Builder. É aconselhável ter certo conhecimento de programação, especialmente da linguagem pascal ou de delphi antes de ler este documento, caso você não tenha nenhum conhecimento é aconselhável primeiramente estudar a linguagem pascal ou delphi, na internet é possível encontrar diversas apostilas sobre estas linguagens.

        Características suportadas pela linguagem 3D Game Builder Script Language:


Flow Control:

     - If – Then – Else
     - For, While, Repeat – until
          - Break, Continue
     - Case
     - Try – except, Try – finally


Functions, Procedures:

     - Recursion
     - Mutual Recursion
     - Complex Return Types
     - Default Parameters


Classes:

     - Fields
     - Methods
          - Virtual
          - Static
     - Properties
          - Array Properties
          - Default Properties


Exceptions:

     - Native Exceptions


Data Types:

     - Basic Data Types
          - String
          - Integer
          - Boolean
          - Float
          - Variant
     - Structured Data Types
          - Records
          - Arrays, Dynamic Arrays
     - Enumerations


Características não suportadas pela linguagem 3D Game Builder Script Language:
     - Sets
     - With clause
     - Pointer
     - Interfaces
     - Function overloading
     - Goto, label, public, protected, private, published
     - E outras instruções de baixo nível (packed, in/out, cdecl/.., etc..)

Sintaxe:

        Uma das principais diferenças entre a linguagem 3D Game Builder Script Language e a linguagem Pascal/Delphi, é que na linguagem 3D Game Builder Script Language é possível declarar variáveis em qualquer parte do código, não necessitando ser somente no inicio do programa ou de uma função, porém quando uma variável estiver no meio do código é necessário sempre utilizar a clausula var antes da declaração. E também não existe definição de função principal no programa, todo o script roda como um programa, é possível declarar funções e em seguida chamá-las, todo o código fora de declarações de funções é considerado o programa principal.

        Exemplos de Declaração de variáveis:

procedure MostrarHora();
var Hora:String;          <- CORETO
    x:Integer;           
begin
   for x:=1 to 5 do
   begin
     Hora:=TimeToStr(Now);
     ShowMessage(Hora);
   end;
end;

MostrarHora;


procedure MostrarHora();
begin
  
   var Hora:String;         
   x:Integer;            <- ERRADO


   for x:=1 to 5 do
   begin
     Hora:=TimeToStr(Now);
     ShowMessage(Hora);
   end;
end;

MostrarHora;


procedure MostrarHora();
begin
  
   var Hora:String;         
   var x:Integer;            <- CORETO

   for x:=1 to 5 do
   begin
     Hora:=TimeToStr(Now);
     ShowMessage(Hora);
   end;
end;

MostrarHora;


var Hora:String;         
var x:Integer;            <- CORETO

procedure MostrarHora();
begin
   for x:=1 to 5 do
   begin
     Hora:=TimeToStr(Now);
     ShowMessage(Hora);
   end;
end;

MostrarHora;


var Hora:String;         
var x, y:Integer;            <- CORETO

procedure MostrarHora();
begin
   for x:=1 to 5 do
   begin
     Hora:=TimeToStr(Now);
     ShowMessage(Hora);
   end;
   for y:=1 to 5 do
   begin
     Hora:=TimeToStr(Now);
     ShowMessage(Hora);
   end;
end;

MostrarHora;


Variáveis Globais:

        Outra característica importante do 3D Game Builder Script Language é que normalmente em um projeto do 3D Game Builder existem diversos scripts associados a diferentes objetos, cada um destes scripts é considerado um programa diferente, variáveis declaradas em um não são acessíveis a outro. Para tornar uma variável acessível a todos os programas existe a declaração de variáveis globais, isto torna possível que a mesma variável seja manipulada por diversos scripts. Existem 4 funções para a manipulação destas variáveis:

WriteGlobalVar: É usada para declarar ou alterar o valor de uma variável global, caso a variável não exista ela é declarada, e o valor associado a ela, caso já exista somente o valor é associado a ela. A sintaxe da função é:

procedure WriteGlobalVar(Name: String; Value: Variant);

“Name” é o nome da variável e “Value” o valor que será associado a ela.

ReadGlobalVar: É usada para ler o valor de uma variável global, caso a variável não tenha sido declarada um valor nulo é retornado. A sintaxe da função é:

function ReadGlobalVar(Name: String): Variant;

“Name” é o nome da variável a ser lida.

ReadGlobalVarDef: É usada para ler o valor de uma variável global, caso a variável não tenha sido declarada o valor especificado como de retorno será retornado. A sintaxe da função é:

Function ReadGlobalVarDef(Name: String; DefValue: Variant):Variant;

“Name” é o nome da variável a ser lida e “DefValue” o valor quer será retornado caso a variável não tenha sido declarada.

CleanupGlobalVars: Destrói e libera da memória todas as variáveis globais que foram declaradas. A sintaxe da função é:

procedure CleanupGlobalVars;


Conclusão:

        Basicamente o resto da sintaxe do 3D Game Builder Script Language é a mesma da linguagem pascal/delphi.

        O 3D Game Builder Script Language possui mais de 700 funções, que vão desde manipulação de strings, até o controle de objetos 3D. Na ajuda do 3D Game Builder é possível encontrar o “Script Reference”, nele estão documentados todos estes comandos.