Novidades Manual Downloads

Tutoriais

Exemplos

SVN

Forum Google Groups Links

Contato

Licença de uso

Sobre a GameSpaceLib
GameSpaceLib é uma biblioteca desenvolvida em C++ para o controle de dispositivos de entrada e saída: vídeo (2D), áudio e mouse, teclado e joysticks. A GameSpaceLib é gratuita, portável para outros sistemas operacionais e possui o código-fonte aberto.

O que a GameSpaceLib pode fazer?
Segue uma pequena lista de algumas das funcionalidades da GameSpaceLib que podem auxiliar no desenvolvimento de seu video game ou aplicação multimídia interativa:

Janela e aplicação
Permite criar aplicações no modo janela e em modo tela-cheia com possibilidade para alterar a própria resolução em tempo real.

Sprites
Gira, estica, reposiciona, inverte e recorta suas sprites e as desenha aplicando qualquer tipo de transparência. Oferece suporte a render-targets.
Lê os formatos JPEG, BMP, TGA e PNG com suporte à camadas de transparência.

Saída de dados
Desenha textos com anti-aliasing do jeito que você quiser: coloridos, transparentes, de diversos tamanhos e fontes true type.
Áudio
Carrega efeitos sonoros ou músicas nos formatos MP3, OGG, WAV, FLAC, etc., reproduz em formato stereo ou mono e permite que seu volume e freqüência sejam alterados em tempo real.
Vídeos
Carrega e toca arquivos de vídeo dos principais formatos (JPEG, AVI, WMV, etc.) possibilitando a criação de apresentações em vídeo e cutscenes assim como players interativos dentro do programa ou jogo.
Entrada de dados
Permite o controle de entrada de dados com teclado, mouse e joysticks de maneira fácil e intuitiva, sem a necessidade de criar funções para recepção de mensagens manualmente.
Pixel shaders
Permite aplicar shaders aos elementos gráficos utilizando a tecnologia e linguagem de alto nível Cg, da NVIDIA, permitindo alcançar resultados impressionantes nos jogos 2D.
Manual completo
Acompanha a documentação de todos os objetos, métodos e funções relevantes com explicações detalhadas e índice de funcionalidades, exemplos e tutoriais.

Quais são as vantagens da GameSpaceLib?
Dentre outras bibliotecas multimídia como SDL e Allegro, a vantagem da GameSpaceLib é que ela possui objetos muito mais fáceis e intuitivos para programação orientada a objetos. A GameSpaceLib foi programada para acessar diretamente as funções da API, o que a torna veloz, pois utiliza todos os recursos da placa de vídeo e de forma direta, sem passar por outros motores ou frameworks para fazer a mediação.

O que é preciso para programar jogos com a GameSpaceLib?
Para programar com a GameSpaceLib é necessário um compilador de C++ compatível com alguma versão do framework (Microsoft Visual Studio ou Dev-C++) e conhecimento em lógica da programação e em linguagem C++. Devido ao fato de que o GameSpace fornece apenas funções relativas as funcionalidades básicas de entrada e saída, ainda é importante que o desenvolvedor possua conhecimento em lógica da programação e programação de jogos.

Quanto custa a GameSpaceLib?
Nada. A GameSpaceLib é totalmente gratuita e pode ser utilizada, alterada e redistribuída livremente de acordo com a Licença Pública Menos Geral (LGPL) da GNU e de acordo com os parâmetros da iniciativa Open Source de software livre.

Dúvidas, sugestões, problemas/bugs ou propostas:
Você pode utilizar o forum do site ou escrever um e-mail:

Google Groups
Assine a lista de e-mail gamespacelib
Email:
Visite a página do grupo
  
Downloads

GameSpaceLib é um projeto morto, no lugar dela estou trabalhando na GS2D (GameSpaceLib 2).

Foi para resolver problemas de design da GameSpaceLib e melhor aproveitar o poder de multiplataformidade (permitam-me o neologismo) da linguagem C++ que decidi criar a GS2D, como uma versão 2.0 da GameSpaceLib.

Leia este artigo para saber mais.

Baixe a versão antiga aqui.

 
Novidades
18/12/2010 - Projeto desativado

O projeto GameSpaceLib foi desativado. Em seu lugar, estou trabalhando na GS2D (GameSpaceLib 2).


Foi para resolver problemas de design da GameSpaceLib e melhor aproveitar o poder de multiplataformidade (permitam-me o neologismo) da linguagem C++ que decidi criar a GS2D, como uma versão 2.0 da GameSpaceLib.


Leia este artigo para saber mais.



18/4/2010 - GameSpaceGL reativado
Está sendo desenvolvida uma versão cross-platform baseada em OpenGL e SDL da GameSpaceLib. Os principais recursos, como o suporte a shaders, estão inclusos. O código está sendo constantemente atualizado e enviado para o repositório do projeto hospedado pelo Google Code:
code.google.com/p/gamespacelib

24/3/2010 - GameSpaceLib 1.5.8 lançada
Está liberada a versão 1.5.8 da GameSpaceLib. Esta nova versão traz poucas, porém importantes, alterações:

-Todos os métodos de nome Release foram mudados para Destroy evitando assim confusão quanto a verdadeira funcionalidade deles (que não possuem contador de referência).
-Novo método GS_SHADER::SetConstantArrayF para enviar arrays de floats como parâmetros uniformes.
-Novo método GS_SHADER::SetConstant1I para enviar parâmetros uniformes inteiros.

Com a adição dos novos métodos ao objeto GS_SHADER está mais fácil criar shaders com efeitos como o bloom.

Ir para a página de download

2/3/2010 - GameSpaceLib 1.5.7
Liberada a versão 1.5.7 da GameSpaceLib. Esta nova versão traz como novidade o suporte a maximização de janela e otimizações nos objetos GS_VECTOR-2/3/4/2i.

Download

8/2/2010 - GameSpaceLib 1.5.6 e Ethanon Engine
Foi disponibilizada a versão 1.5.6 da GameSpaceLib. Apesar de poucas, as novidades dessa versão são muito importantes para a estabilidade e performance da biblioteca.

Confira a lista completa:

-O sistema de busca por parâmetros uniformes do shader foi otimizado. Agora utiliza boost::unordered_map para busca. Isso irá melhorar a performance das aplicações feitas com a GSlib.
-Os métodos GAMESPACE_VIDEO_HANDLER::ResetVideoMode agora também permitem a troca entre os modos fullscreen e janela em tempo de execução sem comprometer o andamento do programa.
-O método GAMESPACE_VIDEO_HANDLER::StartApplication agora está mais seguro contra problemas de incompatibilidade de hardware.
-Arrumado bug que fazia com que aplicações em tela cheia ficassem com 16 bits de cor mesmo se o usuário quisesse 32.
-Adicionadas as macros GSK_NUMPAD0 - GSK_NUMPAD9 para captura do teclado numérico.
-A organização do código-fonte da biblioteca foi levemente reestruturada.
-O nome dos métodos GAMESPACE_VIDEO_HANDLER::SetWindowPos e ::GetWindowPos foram mudados para ::SetWindowPosition e ::GetWindowPosition por questões de compatibilidade com a Win32.

Outra novidade é que já coloquei no ar o site e os arquivos da Ethanon Engine para download. Tem alguns meses que estou divulgando screenshots, videos e comentários sobre esse engine 2D que estou desenvolvendo, e agora finalmente a primeira versão beta está disponível para download. O endereço do site é: www.asantee.net/ethanon/.

20/1/2010 - Liberada a GameSpaceLib 1.5.5
Foi disponibilizada para download a versão 1.5.5 da GameSpaceLib. Entre as novidades está um método que salva o conteúdo de sprites e render-targets em arquivo BMP, PNG, JPEG entre outros e um novo tipo de alpha blending (GSAM_MODULATE), ideal para alguns efeitos como luz e sombra, além de diversas correções e otimizações importantes.
Com a possibilidade de salvar render-targets, agora é possível compor imagens em tempo real com total aceleração de hardware (como lightmaps e decalques) e salvá-las para uso posterior.

Confira a lista completa de novidades:

-Os objetos GS_VECTOR passaram por diversas alterações, adições correções.
-Algoritmo para cálculo de FPS aprimorado.
-Os métogos Get simples foram transformados em constantes para permitir a passagem de ponteiros constantes de objetos, dando mais segurança e confiabilidade ao código
-Arrumado bug que causava crash quando o som não era carregado com sucesso.
-Corrigido um problema que ocorria quando se usava os eixos digitais do joystick.
-Funções de operação com matrizes em gsmath.h foram otimizadas.
-Adicionados métodos GAMESPACE_VIDEO_HANDLER::RoundUpPosition e ::IsRoundingUpPosition que tratam do arredondamento na posição dos sprites (útil para evitar o desalinhamento pixel-texel).
-Adicionado o método GAMESPACE_INPUT_HANDLER::GetLastCharInput que retorna o valor ASCII do último caractere digitado.
-Adicionados os métodos GAMESPACE_VIDEO_HANDLER::SetRectMode e ::GetRectMode que permitem alterar a quantidade de triângulos dos sprites, permitindo efeitos diferentes com vertex shaders.
-Adicionado o método GS_SPRITE::SaveBitmap que salva texturas em arquivo.
-Adicionado um novo tipo de alpha: GSAM_MODULATE.
-Adicionado o método GAMESPACE_INPUT_HANDLER::JoyButtonDown que retorna true se determinado botão do joystick está sendo pressionado. Uma alternativa ao método ::JoyButtonState.
-Adicionado o método GAMESPACE_VIDEO_HANDLER::GetWindowTitle.
-Por motivo de segurança e compatibilidade, muitos parâmetros e variáveis internas que eram do tipo int foram alteradas para unsigned int.
-A biblioteca agora avisa o usuário (através do console output) sobre perdas e recuperação do dispositivo IDirect3DDevice9.

Link para o download

5/10/2009 - Saiu a GameSpaceLib 1.5.4
Já está disponível para download aqui no site a versão 1.5.4 da GSlib. Entre as novidades da versão está o suporte à z-test, que pode ser usado para acelerar (e muito) o ordenamento de sprites, fazendo com que não seja obrigatório desenhar os sprites que ficam "por trás" primeiro, tornando a ordem de desenho livre e poupando a CPU de eventuais rotinas de sorting (ordenamento). O screenshot a seguir mostra um conjunto de sprites que foram desenhados em ordem aleatória, mas a sequencia de profundidade foi respeitada (pilares mais "próximos" escondem os de trás).



Outra novidade é o suporte a multitexturas, que permite combinar cores de várias camadas de textura sem precisar utilizar pixel shaders. Veja a lista completa das novidades da versão nova da GameSpaceLib no arquivo leia-me.txt incluso no SDK.

Esses recursos novos estão sendo utilizado em um engine que venho desenvolvendo já a alguns meses, mas que só agora disponibilizei algumas imagens da versão beta.



Este engine é totalmente baseado em sprites 2D e escrito com a GameSpaceLib. Ele usa pixel shaders para fazer a iluminação baseada em normalmaps. O engine suporta qualquer tipo de construção de mapas (isomérico, orthogonal, etc.) pois é baseado em entidades arbitrárias, ao invés de tiles fixos.

A primeira coisa que você verá no vídeo é o editor de entidades, onde o usuário pode configurar o tipo de iluminação, partículas e outros efeitos e propriedades da entidade. A segunda coisa que o vídeo mostra é o editor de mapas (em versão beta ainda).

Uma das características mais interessantes é a capacidade de pré-renderizar os lightmaps de entidades e luzes estáticas, então somente luzes e entidades dinâmicas irão ser computadas.

9/8/2009 - GameSpaceLib 1.5.3 disponibilizada para download
Está pronta a versão 1.5.3 da GSlib. Essa versão traz muitas otimizações e algumas correções.
As principais novidades incluem a possibilidade de carregar recursos (figuras ou arquivos de áudio) direto de buffers na memória virtual. Útil para carregar os arquivos do jogo de pacotes compactados que são descompactados virtualmente.
Outra novidade é a inclusão do suporte a câmera 2D, poupando o programador de terque implementar seu próprio sistema de "scroll".

Lista completa:
-Adicionado o método GAMESPACE_VIDEO_HANDLER::GetProgramPath que informa o caminho para o diretório onde se encontra o próprio arquivo *.exe.
-Adicionados os métodos GAMESPACE_VIDEO_HANDLER::SetCameraPos, ::GetCameraPos e ::MoveCamera que podem ser usados para mover a câmera da cena. Isso implicou em mudanças no vertex shader default (interno, contido no arquivo gsCgString.h).
-Os métodos GS_SPRITE::LoadSprite e GS_AUDIO_SAMPLE::LoadSample foram sobrecarregados para suportar o carregamento de arquivos de mídia localidados em buffers na memória virtual.
-Alguns ajustes na forma de saída das mensagens de erro e outros avisos.
-Padronizada a dimensão das strings C utilizadas internamente.
-Corrigido bug de cálculo na forma de recorte das fontes desenhadas a partir de sprites.
-Alguns métodos e funções do cabeçalho gsmath.h foram alteradas para uma melhor performance.
-Foi escrito um shader especial para o desenho das fontes geradas a partir de sprites. Isso tornou o desenho desse tipo de texto muito mais veloz.
-O shader padrão da GameSpaceLib ganhou um novo parâmetro uniforme: o "uniform float2 cameraPos", que receberá a posição da câmera durante o desenho de sprites.
-Corrigido o problema do método GAMESPACE_INPUT_HANDLER::GetJoystickUV que exibia alertas mesmo se estes estivessem desativados.

Mover para a seção de downloads

3/7/2009 - Novo software open-source: ParticleFX
Foi disponibilizada para download mais uma ferramenta desenvolvida com a GameSpaceLib: a ParticleFX fornece uma fácil interface para edição de sistemas de partículas 2D dinâmicas. Os sistemas de partículas são salvos num arquivo PAR e o pacote do software inclui uma classe com código aberto escrita especialmente para carregar, processar e desenhar essas partículas. O sistema de renderização é voltado aos métodos de desenho 2D avançados que fazem uso da placa aceleradora 3D para rotação e transparência. O programa também permite ao programador aplicar efeitos de shader com a linguagem Cg (através da GameSpaceLib).

Você pode inserir os efeitos de partícula em seu jogo facilmente com o uso da classe ETH_PARTICLE_MANAGER, que acompanha o pacote e é instalada automaticamente. Veja o exemplo aqui. Apesar de ser facilmente adaptável a qualquer engine, biblioteca ou framework de renderização 2D, esta ferramenta foi escrita para trabalhar em conjunto com um engine open-source em que estou trabalhando e provavelmente já terá uma versão estável liberada para download ainda na primeira metade deste semestre.

Para saber mais e fazer o download da versão 1.0 completa do programa, que acompanha o código-fonte completo disponibilizado via licença LGPL, visite a página oficial: www.asantee.net/gamespace/ethanon.



Projetos
 

SpacePong 1.7.1
SpacePong é um remake bem simples feito com GameSpaceLib do clássico pong, para 1 ou 2 jogadores, todo feito em GameSpaceLib para áudio, vídeo e input. A proposta do jogo é oferecer algo simples que utilize vários dos recursos da GS para ajudar na divulgação da biblioteca. O jogo inclui o código-fonte que é automaticamente copiado para o diretório em que é instalado. Download e mais informações.

 

Light Castle Demo
Uma pequena demonstração feita com GameSpaceLib que ilustra o uso de pixel shaders em Cg para criar iluminação rápida, bonita e dinâmica em uma cena totalmente 2D. Inclui o código fonte dos shaders.
Este é apenas um demo técnico, não se trata de um jogo, mas serve de laboratório para recursos que podem ser utilizados em jogos reais.
É necessário ter placa de vídeo com suporte ao shader model 2 do DirectX 9 para rodar com configuração máxima. Download.
 
Imagine&Draw
Este pequeno programa desenvolvido com a GameSpaceLib é voltado ao público infantil, dos 3 aos 7 anos de idade. Esta ferramenta permite misturar cores e formas para a composição de cenas que podem ser salvas no formato JPEG.
Desenvolvido pela Tydres Entertainment, este programa é gratuito e pode ser utilizado livremente. Ideal para estimular a imaginação dos pequenos usuários de computador. Download.

 

Tutoriais
 



 

Sprites: personagens 2D com C++: este tutorial explica, passo-a-passo, como criar personagens 2D e movimentá-los no mapa utilizando as setas de teclado com GameSpaceLib e C++.



 

Efeito de sombra: este tutorial, escrito por Cristiano Douglas, irá ensinar como simular uma sombra como a que é utilizada no game Tanks Of War.



 

Pixel shaders: esse tutorial-exemplo mostra como utilizar normal maps e pixel shaders para criar um belo efeito de iluminação por pixel que realça o efeito de profundidade nos sprites.



 

Reinventando o estilo 2D: apresentação de slides+vídeo feita para ser exibida na Campus Party que fala sobre o uso do GPU moderno em jogos no estilo 2D e propõe um novo olhar a esse tipo de jogo.

 

Links
  • GNU GPL - informações sobre licenças de software livre
  • NVIDIA Cg - site oficial dessa linguagem de shaders
  • Open Source - site oficial da Iniciativa Código Aberto
  • GameDev - comunidade internacional de desenvolvedores de jogos
  • UniDev - comunidade de desenvolvedores de jogos brasileira
  • PDJ - comunidade de desenvolvedores de jogos brasileira
  • GameDev BR - comunidade de desenvolvedores de jogos brasileira
  • Tiled - editor de tilemaps genérico feito em Java
  • Box2D - um engine de física 2D simples e fácil de usar
  • Visual Studio Express - download gratuito do compilador Microsoft Visual C++
  • Dev-C++ - download gratuito do compilador (IDE de MingW) Bloodshed Dev-C++
  • Code::Blocks - outra ótima IDE de compilador C++ gratuita e multi-plataforma
  • Audiere - API de áudio gratuita e com código-fonte aberto (LGPL)
  • Novatec - editora brasileira de livros de programação
  • CrociDBlog - blog sobre programação e desenvolvimento de jogos
  • asantee.net - minha página pessoal

web counter


GameSpaceLib - Copyright © 2008-2010 André Santee