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
- 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 é:
“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.