Novo tema!

Arrumei o tema do Blog! Comentem sobre o que acharam! =D

Valew!

Tutoriais

Bom, devido aos tutoriais que eu posto aqui ficarem muito ruins de visualizar por causa do tema do WordPress, enquanto eu não mudar o tema, vou adicionando em outros sites, como a UniDev, e vou colocando o link aqui.

Obrigado.

The Power of Schmooze Award

Selo The Power of Schmooze Award
O Diego da DieSoft Games me premiou com o prêmio The Power of Schmooze Award… Tem que passar para frente enviando este selo para 5 blogueiros que recomendem o seu blog. Essas brincadeira sempre terminam comigo! AEuaheuhAUEhuHEuhEhuHEu

Como não pode voltar, eu não tenho para quem passar… As pessoas que eu poderia passar já receberam! aehuheuhueuaHEhehuHAEuhAE

Mas se eu puder quebrar um pouco a regra, eu mando para o Neural Games, que é um blog de um amigo meu (é, ele ainda não tem meu blog na lista de links! UEAHuhauehuE)…

Valew!

Dados de Jogos – Parte 1

Vou começar uma pequena série de tutoriais simples de como armazenar dados do seu jogo em arquivos. Os tutoriais seguirão este índice:

  • Parte 1 – Arquivos de configuração do Allegro
  • Parte 2 – Arquivos XML com o TinyXML
  • Parte 3 – Arquivos próprios com a lib do C

Bom, como está na lista, vamos começar pelos arquivos de configuração do Allegro.

O Allegro possui funções para manipular arquivos no formato INI (apesar do formato, pode ter qualquer extensão), por exemplo:

[secao]
variavel=valor
var=12

Assim fica muito fácil de adicionar ou recuperar dados desse arquivo.

As funções básicas são essas:

void             set_config_file(const char *filename);
void             set_config_string(const char *section, const char *name, const char *val);
void             set_config_int(const char *section, const char *name, int val);
void             set_config_hex(const char *section, const char *name, int val);
void             set_config_float(const char *section, const char *name, float val);

const char * get_config_string(const char *section, const char *name, const char *val);
int               get_config_int(const char *section, const char *name, int val);
int               get_config_hex(const char *section, const char *name, int val);
float            get_config_float(const char *section, const char *name, float val);

Vamos ver uma por uma:
void set_config_file(const char *filename);
Está função carrega o arquivo de configuração que vai ser usado.

void set_config_string(const char *section, const char *name, const char *val);
Insere um valor no formato String (cadeia de caracteres) na seção section e campo name.

void set_config_int(const char *section, const char *name, int val);
Insere um inteiro na seção section e no campo name.

void set_config_hex(const char *section, const char *name, int val);
Insere um número hexadecimal na seção section e campo name.

void set_config_float(const char *section, const char *name, float val);
Insere um Float (ponto-flutuante) na seção section e campo nome.

const char * get_config_string(const char *section, const char *name, const char *val);
Retorna a string guardada no campo name e na seção section, caso dê algum erro, ele retorna val.

int get_config_int(const char *section, const char *name, int val);
Retorna um inteiro que estiver guardado no campo name e seção section, em caso de erro, retorna val.

int get_config_hex(const char *section, const char *name, int val);
Idem a anterior, porém com números hexadecimais.

float get_config_float(const char *section, const char *name, float val);
Idem, porém com floats.

Até aqui deu para entendermos as funções, mas vamos à um exemplo prático.

Suponhamos que queremos guardar as opções de vídeo do jogo e temos este arquivo:
config.ini

#
# Arquivo de configuração de vídeo
#

[config]
res_w = 640
res_h = 480
cores = 32
modo = 1
titulo = Meu jogo

Ah, eu me esqueci de dizer, que os # são comentários.

Então, vamos supor que res_w, seja o tamanho em pixels da resolução no eixo horizontal, res_h no vertical, cores, os modos de cores, modo, se for 1 é em Fullscreen e 0 em janela e titulo, o titulo da janela.

Agora vamos recuperar estes dados pelo programa em C++:

int w, h;                    // Resolução
int cor;                     // Cores
int modo;                  // Modo (Windowed ou Fullscreen)
char *title;       // Título da janela.

/* Seleciona o arquivo */
set_config_file("config.ini");

/* Colocamos o valor de default como -1, para verificarmos se deu erro */
w = get_config_int("config", "res_w", -1);

if (w == -1)
{
      // Erro aqui...
}

h = get_config_int("config", "res_h", -1);

if (h == -1)
{
      // Erro aqui...
}

cor = get_config_int("config", "cores", -1);

if (cor == -1)
{
      // Erro aqui...
}

modo = get_config_int("config", "res_w", -1);

if (modo == -1)
{
      // Erro aqui...
}

/* Aqui nós temos que alocar a string e copiar com o strcpy */
title = new char[50];
strcpy(title, get_config_string("config", "titulo", "Erro"));

Pronto, você resgatou todos os dados, basta saber usá-los! Agora, vamos supor que o usuário alterou as configurações pelo game e tem que salvar no arquivo:

/* Vou mudar os valores para testar */
w = 800;
h = 600;
cor = 16;
modo = 0;

title = new char[50];
strcpy(title, "GAme de Teste");

/* Vamos salvar no arquivo agora */
set_config_int("config", "res_w", w);
set_config_int("config", "res_h", h);
set_config_int("config", "cores", cor);
set_config_int("config", "modo", modo);
set_config_string("config", "titulo", title);

Fácil não? Agora basta criatividade para usar, pois dá para usar em uma infinidade de coisas, como um Highscore por exemplo (fiz isso no TheTarget), veja como está o arquivo:

#
# Highscores
#

[slot1]
pts = 18115
[slot2]
pts = 9325
[slot3]
pts = 3740
[slot4]
pts = 2740
[slot5]
pts = 1660

Bem simples, porém bem útil, desde que você consiga manipular os dados no jogo 😀

Valew! Até!

Enquete

Queria colocar uma enquete no Blog, mas o WordPress não aceita Flash, nem JavaScript, nem Formulários! Que saco viu! Então resolvi colocar o link para a enquete mesmo… 😀

Enquete

É isso ae… =D

Feeds RSS na UniDev!

É isso mesmo que você ouviu, alias, leu!

Está sendo implementado os sistema de Feeds por RSS no fórum da UniDev. Agora você pode ver as novidades pelo seu leitor de Feeds favorito. Apesar de não estar 100% perfeito (ainda está em desenvolvimento), já é possível assinar os feeds do fórum todo ou de uma certa área dele. Exemplo, para acessar os feeds do Fórum inteiro:
http://forum.unidev.com.br/feed/rss.php
Mas se quiser só de uma área, use:
http://forum.unidev.com.br/feed/rss.php?forum=X
Sendo o X o id dá área, exemplo, o de Allegro é 11.

Agora você pode ficar mais informado! 😀

Notícia original: http://www.unidev.com.br/maisnovidades.asp?id=4911

UniDev LowPoly Contest #1

Os usuários da UniDev organizaram um contest de modelagem LowPoly e ele já ta rolando!

O Tema escolhido foi Mini Mini World, onde o objetivo é criar um personagem, com caracteristicas que demonstre que ele é minusculo.

Bem desafiador, não? E aí, o que acha de participar também? Aqui segue o link do Contest:
http://forum.unidev.com.br/phpbb2/viewtopic.php?p=269012

E… Boa sorte!