Dark BASIC

...

Sobre

Esta poderosa linguagem permite que você faça desde programas simples como calculadoras virtuais a complexos jogos 3D, usando DirectX.

O Dark Basic é mais uma linguagem derivada do nosso velho amigo BASIC, ou seja, é simples ou tão simples como o Basic, pois tem simples e poderosas ferramentas de desenvolvimento 3D, basta pegar uns modelos de jogos na seção "Modelos" que você verá que em poucas linhas de comando pode-se fazer um jogo 3D bem legal, com comandos simples, ao contrário dos comandos estrambólicos do C++, por exemplo.

Porém, o Dark BASIC é pouco conhecido no Brasil, sendo assim a TGM umas das poucas fontes de informação no Brasil, mas isso irá mudar.

A interface do DB é bem moderna (cheia de frescura, diga-se de passagem), é parecida com a do QBasic, e bem mais bonita que a do QBasic.

Você pode encontrar vários tipos de Dark Basic (todos em Inglês por enquanto),  o que eu mais recomendo é a versão completa, que acompanha muitos exemplos e tutoriais completos.

O Dark Basic pode carregar bitmaps, midis e waves, mp3 e avis ou seja, além de fazer o jogo dos seus sonhos você pode colocar todas as músicas e figuras que você gosta, nos formatos mais populares e conhecidos, de fácil acesso e edição. Por isso dizem que o DB é o melhor e mais poderoso que existe.

Este jogo (foto ao lado), foi feito no DB, é bem ruim, mas como é um exemplo que já vem incluso no DB completo (faça o download no fim da página), você pode melhora-lo, quem sabe?

Para carregar figuras ou sons você primeiro deve passar para a pasta do seu projeto, que fica no diretório do Dark Basic, na pasta myproj.

Faça seu Dark BASIC sair das limitações do TRIAL

Todos devem ter reparado que a versão TRIAL do Dark BASIC 1.8 não compila, e ainda quando se roda um programa, ele fica mostrando uma imagem transparente chata do Dark BASIC... Mas fiquem calmos, vocês podem fazer seu DB rodar como se estivesse registrado! Para isso faça o seguinte:

Abra o arquivo WIN.INI, no diretório do WINDOWS (c:/WINDOWS, normalmente...), depois insira no Arquivo as seguintes linhas:

[DarkBasicStateData]
REGCODE=std24792x

E pronto! Você terá o Dark BASIC completo sem botar a mão no bolso!

Ficha completa

Requerimentos mínimos de sistema:

Windows 95 ou superior, Pentium 233 MHZ com 32MB de RAM, CD ROM de 4X, 23 MB de espaço em disco, placa de som compatível com mais de 4MB de RAM também compatível com DirectX.

Áudio:

Bufferização dupla automática, controle AVI, MIDI e MP3, efeitos sonoros 3D.

Recursos 2D:

Suporte a BMP (GIF e JPG futuramente), efeitos de edição de imagens, detecção de colisão de sprites e objetos.

Recursos 3D:

Suporte aos arquivos X0F e 3DS, terraforming de landscapes (matrizes), primitives embutidos, modelos dinâmicos, detecção de colisão, de polígonos, manipulação de modelos, trava de modelos em tela, animação, luzes ambientes e direcionais, filtragem de texturas, alphablending, fog, etc.

Entrada/Saída:

Controle por mouse, teclado e joystic, Force Feedback. Gerencia arquivos e sistema.

EDITOR: Interface amigável, sistema de ajuda integrado, exemplos e tutoriais, interface de linha de comando, compilação em executáveis.

Preço:

£45 ($70 USD) Agora com 50% de desconto no WWW.AMAZON.COM !!

Por Alexei Martchenko, presidente do SuperDownloads.

Alguns shoots de games feitos no Dark BASIC

Criando jogos em Dark BASIC - Parte 1


Autor:André Monteiro Santee

Introdução:
Para quem é este tutorial: Para programadores que conhecem a linguagem BASIC e pretendem programar seus jogos em Dark BASIC/DirectX.
E se eu não conheço nenhuma linguagem: Se vira, aprende. Tem muitos tutorias sobre BASIC aqui na TGM, e com eles você conhecerá mais do que o suficiente para poder prosseguir neste tutorial.
Mas antes de prosseguir quero avisar que Dark BASIC não é a linguagem ideal para criar jogos com fins profissonais, como jogos feitos por empresas. Pois Dark BASIC é uma linguagem de altíssimo nível, não, isto não é um elogio, isto quer dizer que ela é bem diferente de linguagem de máquina, sendo mais lento que os programas de outros compiladores como C/C++ e Assembly.
Minha proposta nesta série de artigos é esplicar a criação de jogos, des de jogos simples até jogos elaborados em 3D e com efeitos especiais, estarei postando de vez em qua os artigos, ainda não sei quantas partes ele terá.

Vamos ao que interessa,
Bom, para começar, vou esplicar a lógica de um jogo, feito em BASIC e em demais linguagens. Veja o código abaicho (compile no Dark BASIC):

sync on

hide mouse

do
cls

set cursor x,y
print "~O~"

if upkey()=1 then y=y-2
if downkey()=1 then y=y+2
if leftkey()=1 then x=x-2
if rightkey()=1 then x=x+2

sync
loop

Bem, o SYNC ON aí no começo liga o duplo Buffer, ideal para jogos. O HIDE MOUSE É usado apenas para esconder o ponteiro do mouse na tela.
Com o DO nós começamos o laço de repetição que acaba com o LOOP, (se você não sabe o que é DO e LOOP este tutorial não é para você).
O SET CURSOR X,Y serve para posicionar o cursor (local onde serão mostrados os textos) nas posiçoões X e Y, que são variáveis do tipo inteiro (no Dark BASIC as variaveis não precisam ser declaradas, exceto as ARRAYs). E em seguida usamos o PRINT, que mostrará na tela a STRING "~O~" nas posições X e Y pixels.
Esses IF ***KEY()=1 servem para ver se uma tecla está sendo pressionada. No Dark BASIC, se uma tecla for pressionada ele retornará 1, caso contrário retornara 0. Então SE UMATECLA()=VERDADEIRO. O depois do nós incrementamos ou decrementamos o valor da variavel, sendo que a próxima vez que os comandos entre DO e LOOP forem lidos, o X ou Y estarão diferentes, aí da a ilusão que ele está se movendo, sendo que na verdade ele apenas está sendo jogado em outra posição, no caso, 2 pixels para cima, baicho, esquerda ou direita. O CLS serve para apagar a posição antiga do "~O~", E o SYNC para atualizar a tela.

O Dark BASIC tem um comando mais apropriado quando se trata de textos. É o TEXT, vou fazer abaicho um programa identico ao acima mas usando o TEXT, para você entender melhor:

sync on

hide mouse

do
cls

text x,y,"~O~"

if upkey()=1 then y=y-2
if downkey()=1 then y=y+2
if leftkey()=1 then x=x-2
if rightkey()=1 then x=x+2

sync
loop

Como você pode ver o TEXT x,y dispensou o SET CURSOR e o PRINT.

Programando jogos em Dark BASIC - Parte 2: Imagens 2D

Agora que você já sabe como é que funcionam os movimentos nos jogos vou esplicar e mostrar como é fácil colocar imagens na tela.

Carrengando BITMAPs:
O Dark BASIC já vem com um comando pronto para que você possa carregar bitmaps. Da versão 1.8 do Dark BASIC para baixo ele suportava apenas imagens no formato .BMP, mas a partir da 1.9 ele suporta mais formatos, entre eles RLE, JPG e GIF.
Para carregar bitmaps, não importa o formato, é sempre o mesmo comando, veja:

LOAD BITMAP "nomedoarquivo.BMP",1

Sendo o "nomedoarquivo.BMP" a string que define o nome do arquivo. É importante lembrar que neste caso, a imagem "nomedoarquivo.BMP" estaria dentro da pasta do projeto. Se o mesmo estivesse em alguma pasta dentro da pasta do projeto você poderia especificar "nome_da_pasta/nomedoarquivo.BMP".
E este ",1" no fim determina o número da imagem, sempre que você for se referir a imagem você vai chama-la por 1, que no caso seria um número de valor inteiro, se você colocasse 1.5 no lugar do 1 retonaria com uma menssagem de erro no compilador, pois só podem ser números inteiros.
Definindo o comando LOAD BITMAP:

LOAD BITMAP "nome_do_arquivo",numero_do_bitmap

Você pode também não especificar nenhum número após a string, sendo assim o bitmap será jogado diretamente na tela.

Images:
Images são diferentes de bitmaps, pois com images você pode joga-las em uma posição X e Y, e também com images que você pode definir sprites e texturizar matrizes e objetos, isso você verá mais para frente.
O comando mais importante para a obtenção de images é o GET IMAGE, ele parece meio assustador, mas não é não. Vamos supor que você tenha um arquivo em BMP, com 40x80 pixels chamado "personagem.bmp" e você deseja transforma-lo em image, você faz o seguinte:

LOAD IMAGE "personagem.bmp"
rem Como não especificamos nenhum número esse bitmap será jogado na tela diretamente
GET IMAGE 1,0,0,40,80

Bom, aí temos um exemplo de GET IMAGE, sendo esse primeiro número o número da image, (sempre que você for fazer algo com esta image você ira chama-la pelo número). Este 0,0,40,80, é definido assim: ele pegara o bitmap que está na tela nas coordenadas 0,0 (x1,y1), e 4,80 (x2,y2).
Com este comando teremos uma image de número 1.
E depois que você usar o GET IMAGE em um BMP não se esqueça de dar um DELETE BITMAP numero_do_bitmap, para descarrega-la da memória.

Um jeito mais simples:
Você pode também usar apenas o LOAD IMAGE "nome_da_imagem.extenção",número_da_imagem. Assim você terá uma IMAGE automáticamente, mas com a desvantagem de que você não poderá captura-la em lugares especificos.

Movimentos com imagens:
 

rem Exemplo de movimento de imagem:
sync on

circle 20,20,20
get image 1,0,0,40,40

do
cls

paste image 1,x,y

if upkey()=1 then y=y-5
if downkey()=1 then y=y+5
if leftkey()=1 then x=x-5
if rightkey()=1 then x=x+5

sync
loop

Neste exemplo o CIRCLE 20,20,20 cria um círculo de raio 20, na posição 20 por 20, eu fiz este círculo só para mostrar como se usa o PASTE IMAGE e também como se faz movimentos com imagens.

Bom, por enquanto é só. No próximo artigo eu falarei de como usar SPRITES no Dark BASIC.