Lição_1_5
Index Lições de Lição_6_10 Lição11-15-Exemplos Laminas-Portas

 1-Lição

Introdução

Lição que da uma breve explicação sobre o que é o sed, e como trabalhar com ele.

 

 

 

3D Game Studio

O 3D Game Studio, é um pacote de ferramentas desenvolvido pela conitec que auxilia no desenvolvimento de jogos e aplicações interativas ou não. O 3D Game Studio até a data em que foi escrito esse artigo, se encontra na versão A7. E você pode adquirir a sua versão trial, no site Oficial da empresa conitec.


Sed

O sed é o editor de paginas de código do 3D Game Studio, a partir da versão A7, a conitec Librelizou uma versão free do sed, que pode ser usada para fins não comercial. Você pode fazer download no site Oficial da empresa conitec.


Med

O med, é o editor de modelos do 3D Game Studio. Trabalha com diversos formatos e vem com o pacote do 3D Game Studio.


Wed

O wed é o editor de mapas, ele trabalha com blocos geométricos, mais da pra se fazer muita coisa com ele. E ainda é possível importar niveis criados em outros softwares.


Akcnex

É o motor do 3dgs,


Conitec

É a empresa responsável pela criação do 3D Game Studio.


Site do fabricante: www.3dgamestudio.com

3D Game Studio A7 Trial

Sed Versão Para Estudo

2-Lição

Olá Mundo

Lição que ensina como

fazer o seu primeiro programa,

usando a nova linguagem de

programação da acknex.

 

 

Para se aprender programação, devemos começar pelo inicio! Ou seja pelo bom e velho OlaMundo.

Para começar, inicie seu sed e crie uma nova pagina de códigos – File // New, ou CTRL+N.
Não esqueça que os ficheiros devem ser salvos com a extensão .C, para manter a organização crie uma pasta no seu desktop para guardar os trabalhos desenvolvidos.
Com a pasta criada salve o ficheiro como “ OlaMundo.c”, sem aspas.

Em primeiro lugar iremos incluir o ficheiro de cabeçalho para indicar que queremos usar os recursos do motor:

 

//Cabeçalho
//=================
#include <acknex.h>


Em seguida criamos uma string que ira armazenar a nossa mensagem:


//Armazena a mensagem em string
//=================================
STRING* ola = "Ola Mundo!";


E por ultimo criamos uma definição de texto com suas propriedades :


//Propriedades do texto a ser exibido
//===================================
TEXT* greetings_txt =
{
pos_x = 300; //Posição X na tela
pos_y = 250; //Posição Y na tela
string (ola); //String da Mensagem
flags = VISIBLE; //Flags usadas

}


Se você não entendeu o código, não se preocupe iremos trabalha-lo mais tarde, no momento apenas execute para ver o que acontece.
Clique em debug run , ou vá em – Debug // Debug run, ou simplesmente tecle F5.
Pronto você criou seu primeiro programa.

3-Lição

Variáveis

Lição que ensina como fazer o seu primeiro programa, usando a nova linguagem de programação da acknex.

 

 

 

 

Com certeza um elemento indispensável em qualquer linguagem de programação. Trabalhar com variáveis é extremamente fácil e divertido. Uma variável no lite-c é declarada com a palavra chave (var) seguida do nome atribuído, o nome deve começar com uma letra ou undescor "_" . Usamos variáveis para armazenar dígitos, veja alguns exemplos válidos de variáveis:

var vida;
var Munição;
var _caixa1;
var _Bomba;

Agora veja alguns exemplos inválidos de variáveis:

var $inimigo;
var 20;

Agora que você já conhece as variáveis, que tal ver como elas trabalham? Crie uma nova página de códigos no sed e associe ela ao compilador, se não souber como leia o post anterior.

Para imprimir a variável na tela usaremos um painel, não se preocupe em compreênde-lo, mais á frente iremos aprender sobre eles, apenas tente entender como funciona o trabalho das Variáveis.

Em primeiro lugar incluímos o cabeçalho:

//Cabeçalho

//=================

#include <acknex.h>


Em seguida declaramos a variável:

//Declaração da variável

//==================

var a = 5;


Por ultimo criamos um painel com um digito para imprimir a variável:

//Painel para impressão

//=================

PANEL* Variaveis=

{

digits (35, 10, "VAR = %0.f", *, 1, a);

flags = VISIBLE;

}


No caso dessa variável, estamos declarando um valor inicial, mas a mesma poderia ser declarada sem valor e ter o seu valor adicionado durante a execução do programa.

Mais do que adiantaria ter uma variável impressa na tela se ela não faz nada? Ela não faz nada porque não a pedimos para fazer algo!

Podemos fazer expressões com variáveis, tais como somar, dividir, multiplicar e subtrair.

Vamos a outro exemplo:

Vamos lá crie uma nova folha de códigos e inclua os cabeçalhos:

//Cabeçalho

//=================

#include <acknex.h>


Em seguida declare as variáveis

//Declaração das variáveis
//========================
var a = 5;
var b = 50;
var c = 0;


Crie o painel de impressão e os dígitos


//Painel para impressão
//=====================
PANEL* Variaveis=
{
digits (35, 10, "VAR1 = %0.f", *, 1, a);
digits (35, 25, "VAR2 = %0.f", *, 1, b);
digits (35, 40, "VAR3 = %0.f", *, 1, c);
flags = VISIBLE;
}

E aqui entra uma nova parte e uma das mais importantes da programação, a função (MAIN),
Mãe, Nucleo, principal nome já diz tudo, é a primeira função a ser chamada quando executamos a engine.

//Função principal do programa
//=============================
function main()
{
while(1)
{
c = a+b;
b = c*a;
wait(1);
}
}


Você certamente vera essa função em quase todos os seus programas.
Dentro da função main, temos um loop while onde contem a informação de que c, é = a, a+b e b é = a, c*a.
Não se preocupe com a lógica do programa, o intuito aqui é mostrar como funciona as variáveis e não os loops. O importante é que você tenha entendido como usar e para que servem as variáveis, e o que é a função main.


Memorize_______________________________________________
A função main é a função principal.
Variáveis são usadas para armazenar dígitos tais como a munição do herói, a quantidade de energia, o numero de vidas, etc.


Se você aprendeu a trabalhar com as variáveis, certamente não tera dificuldade alguma em desenvolver seus projetos.

 

4-Lição

Painéis

Lição que ensina como fazer o seu primeiro programa, usando a nova linguagem de programação da acknex.

 

 

 

 


Nessa parte iremos aprendera a imprimir dígitos, exibir imagens, botões, etc.
Tudo isso é possível graças aos painéis, como tudo no lite-c, definir um painel é muito simples.
Os painéis podem trabalhar com Dígitos, Janelas, Botões e Sliders. Um painel é declarado da seguinte maneira:

PANEL* NomeDoPainel =
{
...
...
}

Em primeiro caso, vamos aprender a trabalhar os dígitos.

Digits (Dígitos)
Você já viu em posts anteriores, algumas declarações de dígitos. Chegou a hora de saber o que os dígitos fazem, e como criar um digito.

Os dígitos recebem um valor de uma variável e o imprime na tela. Veja como é feita a declaração de um digito:

digits (x, y, formato, fonte, fator, variável);

Vamos testar o poder dos dígitos, criando um pequeno relógio que segue as horas conforme o relógio do windows. O que ele faz é usar instruções especificas para pegar o valor das variáveis horas, minutos e segundos do relógio do windows e imprimir na tela.

//Cabeçalho

//=================

#include <acknex.h>

#include <default.c>



//Painel para impressão

//=====================

PANEL* Variaveis=

{

digits (50, 50, 2, *, 1, sys_hours);

digits (65, 50, 2, *, 1, sys_minutes);

digits (85, 50, 2, *, 1, sys_seconds);

flags = VISIBLE;

}


Esse código esta alto explicativo. As palavras chave, sys_hours, sys_minutes e sys_seconds, são responsáveis por pegar os valores do relógio do windows.
Consulte o manual e veja os tipos de expressões que é possível se realizar com os digits.



Windows (Janelas)
Janelas são usadas para restringir uma determinada area, e mostrar apenas o que deve ser visto, e ainda com o uso de uma variável podemos move-la, revelando a outra parte da imagem.
Uma boa aplicação das janelas são as barras de energia. Uma janela é declarada da seguinte maneira:

window(x, y, tamanho_X, tamanho_Y, bitmap, variavel_X, variavel_Y);

Esse é um exemplo simples de uma barra de vida para o herói:

//Cabeçalho

//=================

#include <acknex.h>

#include <default.c>



//Definição de variáveis

//======================

var vida = 100;



//Painel para impressão

//=====================

PANEL* Variaveis=

{

pos_x = 20;

pos_y = 10;

bmap = "barra.bmp";

window (50, 10, 128, 0, "barra.bmp", 0, vida);

flags = VISIBLE;

}


Alem das posições da janela, eu declarei também a posição do painel, assim a barra não ficara colada no canto da tela. Compile e execute o programa para ver o que acontece.

Button (Botões)
Botões são usados quando se quer interação com o usuario exemplo:
Um menu do jogo,
Os ícones de um RTS,
Etc.

A declaração de um button é da seguinte maneira:

button(x, y, bmp_normal, bmp_liberada, bmp_sobre, função_clicada, função_liberada, função_sobre);

Você precisa de três imagens para causar os três efeitos, mas também pode usar apenas uma e fazer um botão estatico.
Graças ao direito de usar até três funções em um botão, conseguimos realizar diferentes tipos de efeitos com apenas um único botão. A seguir vamos fazer um simples botão que encerra a aplicação:

//Cabeçalho

//=================

#include <acknex.h>

#include <default.c>


Uma nova flag foi usada nesse painel, a flag overlay serve para excluir as areas 100% pretas da imagem, sendo assim todas as areas 100% pretas no botão serão deletadas.



//Painel para impressão

//=====================

PANEL* Botoes=

{

pos_x = 50;

pos_y = 50;

button (50, 50, "botao1.bmp", "botao2.bmp", "botao3.bmp", EncerraPrograma, NULL, NULL);

flags = OVERLAY | VISIBLE;

}


A função main agora ganhou novos parâmetros. Você pode notar a instrução “mouse_mode = 2;”
mouse_mode define como você quer usar o mouse, ele recebe até três valores diferentes.

mouse_mode = 0;
Indica que não iremos usar o mouse e o torna invisível.

mouse_mode = 1;
Cria o ponteiro e o torna visível, esse modo é bom para trabalhar com cameras em fps.

mouse_mode = 2;
Esse modo abilita o ponteiro a trabalhar com cameras e botões, o que é bom em jogos do estilo rts.

A definição:
mouse_pos.x = mouse_cursor.x;
mouse_pos.y = mouse_cursor.y;

É necessaria para usar o mouse em painéis, ela indica que a posição do mouse é a mesma que a do cursor, caso a mesma falte na folha, não sera possível clicar nos botões.



//Função principal

//======================

function main()

{

mouse_mode = 2;

while (1)

{

mouse_pos.x = mouse_cursor.x;

mouse_pos.y = mouse_cursor.y;

wait (1);

}

}


Por fim criamos a função que encerra o programa, o loop diz que se não a tecla alguma pressionada, então aguarde. Caso contrario encerre o programa com a chamada sys_exit(NULL);



//Função que encerra o programa

//=============================

function EncerraPrograma()

{

while (key_any){wait(1);}

sys_exit(NULL);

}


Sliders
Imagine que você queira que o jogador mude a altura do som do jogo através de um menu, como fazer? É para isso que servem os sliders.
Temos dois tipos de sliders, os verticais e os horizontais.
Um slider vertical é definido da seguinte maneira:

vslider(x, y, tamanho, bitmap, valor_minimo, valor_maximo, variavel);

E o slider horizontal é definido da seguinte maneira:

hslider(x, y, tamanho, bitmap, valor_minimo, valor_maximo, variavel);

Vamos a um pequeno exemplo de slider:

//Cabeçalho

//=================

#include <acknex.h>

#include <default.c>



//Painel para impresão

//=====================

var hsvar = 100;

var vsvar = 100;



//Painel para impresão

//=====================

PANEL* Sliders=

{

pos_x = 50;

pos_y = 50;

vslider (20, 80, 90, "vslider.bmp", 0, 100, hsvar);

hslider (80, 80, 90, "hslider.bmp", 0, 100, vsvar);

digits (20, 180, 3, _a4font, 1, hsvar);

digits (180, 88, 3, _a4font, 1, vsvar);

flags = OVERLAY | VISIBLE;

}


Nossa função main ganhou mais uma instrução... a palavra chave "screen_color" define uma cor de fundo para a tela, no nosso caso a cor é a azul.

//Função principal

//======================

function main()

{

screen_color.blue = 150; //Define a cor de fundo como azul

mouse_mode = 2;

while (1)

{

mouse_pos.x = mouse_cursor.x;

mouse_pos.y = mouse_cursor.y;

wait (1);

}

}


Com isso você aprendeu a trabalhar a interação com o usuario e a exibição de valores. Agora seu jogo já pode ter painéis, barras de vida, dígitos de munições, etc.
Na próxima parte iremos tratar de textos fontes e strings para a exibição de mensagens e criação de fontes próprias para a personalização das suas interfaces.

5-Lição

Ações

Lição que ensina como fazer o seu primeiro programa, usando a nova linguagem de programação da acknex.

 

 


 

Ações são como as funções, com a diferencia de que é possível visualiza-las na lista behaviour.

O que é behaviour? É uma lista de ações contida no wed editor de mundos. Quando é criada uma ação no seu script e o mesmo ou o main esta lincado ao nível no wed, elas podem ser vistas e aplicadas em entidades.


Para ver a lista de ações, clique com o botão direito do mouse sobre uma entidade do seu mapa e va em behaviour. Essa é a lista:




No entanto, não compramos o 3dgs lembra? Logo não temos o wed para trabalhar as actions, e agora? Aguarde, você vera mais abaixo...

Uma ação é declarada com a palavra chave ACTION, seguida do nome da ação com parentese. E seu corpo fica entre chaves.

Neste exemplo, usamos um modelo .mdl e um modelo .hmp:


Modelo .mdl

É o modelo padrão do 3dgs, é esse o formato final que precisamos. Caso você esteja usando outro software para modelar, consulte o manual do sed e veja os formatos que é possível importar.


Modelo .hmp

É um modelo de terrenos usado pelo 3dgs, pode ser criado com o MED editor de modelos, que tem suporte a height map.


Vamos ao código:


code:

//Cabeçalho

//=========

#include <acknex.h>

#include <default.c>




Essa é ação do modelo e como não temos o wed, ela sera aplicada ao mesmo, no momento de sua criação.


As três primeiras linhas, são para dimensionar o modelo, para que ele não apareça muito grande e cubra toda a visão.

O ajuste varia de acordo com o modelo no MED.


//Ação do modelo

//============

action MeRoda()

{

//Ajusta o tamanho do modelo

//=====================

my.scale_x = 0.3;

my.scale_y = 0.3;

my.scale_z = 0.3;

//Loop que faz com que o modelo gire constantemente

//======================

while (1)

{

my.pan = my.pan + 0.1;

wait (1);

}

}




Na função main, temos algumas instruções novas.


level_load();

É usada para carregar um nível, seja em .hmp ou .wmp.


vec_set();

O vec_set, recebe dois vetores, sua função é copiar o valor do segundo para o primeiro.


ent_create();

Usamos o ent_create para criar entidades no nível, em nosso caso o Modelo.mdl


//Função principal

//==============

function main()

{

//Aguarda o Nivel.hmp ser carregado

//===========================

level_load ("Nivel.hmp");

wait(1);

//Aguarda a camera se ajustar

//============================

vec_set(camera.x, vector(0, 0, 30));

wait(1);

//Cria o nosso modelo nas posições 0, 0, 30 e com a ação MeRoda

//=============================

ent_create("Modelo.mdl", vector(0, 0, 30), MeRoda);

}

 

Ai esta a nossa ação. Você certamente já esta apto a desenvolver seu proprio jogo, uma vez que você já sabe como manipular botões, funções, ações, painéis, textos, etc... porem isso não é o suficiente para se fazer um bom jogo.

 

 

Não desespere pois com a prática aprende num estante mas com calma.

 

Obrigada pela sua atenção .

Aulas em actualização.