GM RPG - 4º Lição - Atributos do Herói - 1º parte

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por joaoneto em Seg 23 Fev 2009, 19:33

ATENÇÃO: POR ALGUMA INCOMPATIBILIDADE QUE EU AINDA NÃO SEI QUAL É, ESTA LIÇÃO NÃO FUNCIONA COM O GM 6.1. ASSIM QUE DESCOBRIR O PORQUE EU MODIFICO O CÓDIGO PARA QUE FUNCIONE.

Começo esta 4º lição de GM RPG agradecendo a todas as PMs e Posts dos usuários que estão gostando e usando o que eu estou ensinando. É muito importante para mim saber que está sendo útil, pois conhecimento não é nada se não foi passado para frente.
Na lição passada eu disse que falaríamos de Atributos do Herói. Para aqueles que ainda não tem a menor idéia do que eu estou falando, eu darei uma pequena prévia.

Ao se falar em atributos, estamos falando dos números e textos que compõem todos os dados do Herói. O nome do herói é um atributo, sua Classe é um atributo, bem como seu HP ,MP e Status atual. Dados numéricos, como HP, MP, Força, Destreza, etc. Não estão ali simplesmente à toa.
Jogos de Mesa e Eletrônicos costumam usar classes e raças para definir valores padrão aos atributos do Herói, como Força, inteligência, entre outros. Pensando nisso, temos o conceito como que se segue:

As classes e raças podem determinar vários tipos de atributos do herói, de como será a usa evolução até o tipo de equipamento que o mesmo pode usar, e os poderes mágicos ou físicos que este terá.
Ficou meio esclarecido o que seria os atributos do Herói? Eu espero que sim. Happy

Então em nossa aula de hoje, veremos como construir um sistema de atributos, baseando-se em Classe e raça. Eu pretendia fazer apenas baseado na classe, mas com certeza isso traria problemas para os cálculos se você desejasse fazer um jogo mais elaborado. Vamos começar.

Para baixar os arquivos necessários para esta aula clique Aqui

Nas aulas de GM Online eu comecei a falar de banco de dados. O Uso de banco de dados é muito importante, mesmo que se usem arquivos texto para armazenar as informações.
Mas porque eu gosto tanto de banco de dados? Por um motivo bem simples:
Recuperação, Atualização, Inserção e Deleção de dados de forma concisa.
Todo e qualquer BD usa de uma linguagem chamada de SQL. O SQL é de longe a melhor forma de manipulação de dados já inventada. Então porque reinventar a roda? Criar milhares de arquivos texto, scripts e mais scripts para se manipular os mesmos se temos uma ferramenta pronta, apenas esperando para ser usada? Esse é o meu motivo. Happy

Em nossa Lição de RPG, como estaremos lidando com um jogo Off-line, não há a necessidade de uma engine de BD como o MYSQL. Então, estaremos usando o SQLITE. Mas porque o mesmo não foi usado então? Porque ele não possui um item extremamente importante nos jogos Online: Segurança. Durante o desenvolvimento da aula você verá porque.
Então, para Continuar nossa lição, estarei disponibilizando três arquivos:

• Hat.dll -> A Dll de comunicação com o banco SQLITE.
• DB.db -> Nossa base SQLITE.
• SQLite Browser -> Ferramenta para editar o BD.
• SQLITE.gml -> Scripts desenvolvidos por mim para facilitar a operação do SQLITE.

Vamos criar várias tabelas, as quais eu passarei o script pronto para que você não tenha tanto trabalho e eu possa escrever menos aqui. Depois que concluirmos a lição, leia todo o material, e com certeza você achará como customizar para que essa que é a parte mais importante do jogo fique de acordo com o que você deseja. Alguns detalhes importantes:

Nosso herói terá os seguintes Atributos:
• Nome
• Classe
• Raça
• Nível
• HP atual
• HP máximo
• MP atual
• MP máximo
• Status Atual
• Força
• Destreza
• Agilidade
• Inteligência

Nossas Classes terão os seguintes atributos:
• Nome
• % Força
• % Destreza
• % Agilidade
• % Inteligência

Nossas raças terão os seguintes atributos:
• Nome
• % HP
• % MP
• Resistência a Status um
• Resistência a Status dois

Observe que nem falamos de armas e equipamentos. Estes serão tratados numa próxima lição. Os atributos com % significam que serão usados como parâmetro toda vez que o Herói evoluir um nível.
Será graças a esta porcentagem que o herói evoluirá mais de num determinado campo de acordo com a sua classe. Note que usei a raça para determinar a % de HP e MP. Contrariando a idéia de que estes dados seriam diretamente proporcionais aos usados na classe, será apenas para que a raça não fique apenas com Resistência a determinados status.
De cara, para termos todos estes dados guardados precisaremos das seguintes tabelas:

• tb_heroi -> Guardará os atributos principais do herói, como descrito acima.
• tb_classe_heroi -> Guardará os atributos das Classes, como descrito acima.
• tb_raca_heroi -> Guardará os atributos das raças, como descrito acima.
• tb_status -> Guardará a lista de status possíveis.

Observemos também que só uma das três tabelas receberá atualizações constantes durante o jogo. Apenas a tb_heroi. Para facilitar a sua vida, junto com o pacote de arquivos listados lá em cima estarão mais tres arquivos:

• Tabelas.txt -> Tabelas necessárias
• Querys.txt -> Todas as Querys possíveis nas tabelas criadas
• Cargas.txt -> Dados Iniciais para o exemplo.

Você pode dizer assim: “Mas porque você não manda o BD já com as tabelas criadas e a carga aplicada? Porque eu tenho que fazer isso?” Por algo bem simples:
Eu sei como fazer, a qualquer hora e lugar. E você, sabe? Se sim, ótimo, se não, é a sua oportunidade de estar aprendendo.

Em primeiro lugar, abra o SQLite Browser. A tela dele é esta:


Clique na pastinha, e abra nosso db.db. Na segunda aba, na Execute SQL, é aonde aplicaremos todos os scripts. Primeiro, abra o arquivo Tabelas.txt, selecione CREATE TABLE por CREATE TABLE separadamente e cole na tela, e clique em executar. Um detalhe a respeito dos Scripts é que eles estão separados por uma barra de ****, então, não pegue mais nada além disso.
Outro detalhe é a ordem. Para que tudo dê certo, é necessário que você execute cada um como estão nos arquivos.
Ao terminar o arquivo Tabelas.txt, abra o arquivo Cargas.txt e faça da mesma forma.
Ao terminar, seu SQLite Browser deve mostrar as 4 tabelas criadas na primeira aba, assim:


E na aba Browse Data todas as tabelas devem ter dois registros, como esta:


A parte de banco está inicialmente feita. Temos dois heróis, cada um de uma classe, de uma raça e uma tabela com dois status diferentes. Você deve ter notado que guardamos na tb_heroi apenas os códigos de Classe, raça e Status.
Ao se utilizar índices ( o que acabamos de fazer ) evitamos redundância de dados, além de otimizar os processos e facilitar na alteração dos mesmos. Você deve estar se perguntando:
“Mas onde entra essa bagaça toda no meu game?”
Para ser usado pelo GM, faremos as consultas, usando os modelos de SQL no arquivo de querys. Carregaremos objetos ds_grid com os dados no início do jogo, e os usaremos enquanto o jogo estiver rodando.
Ao usar BDs, estamos poupando o uso de arquivos texto, e conseqüentemente expondo nossos dados internos do jogo a qualquer um. Isso não impede que alguém que saiba que você usou uma base SQLite baixe o SQLite Browser e acesse os mesmos, mas impede que pelo menos os jogadores menos curiosos tentem mexer no seu game.
Vamos ao que interessa.
Se achar melhor, use o projeto criado para o menu, ou crie um novo. Copie para o diretório do projeto os arquivos hat.dll, db.db e importe o SQLite.gml. Dentro do seu projeto, a estrutura de scripts deve estar assim:


Se estiver tudo como foi dito logo acima, crie um objeto, chame-o de objQuery, adicione dois eventos, um Create e um press . Logo a seguir o script de cada um:
Create:
Código:
sqlite_init();
Press :
Código:
grid = sqlite_query("SELECT cod_heroi, nom_heroi from tb_heroi",2);

Se você colocar seu objeto na room agora e rodar, nada vai acontecer. Porque? Por que você apenas preencheu um objeto grid com o que veio do BD.
Você não pediu para mostrar nada, certo? Que tal desenharmos na tela o que foi recuperado? Antes de mais nada, adicione isto ao evento Create:

Código:
grid = ds_grid_create(0,0);
Agora, adicione um Evento Draw, e coloque este código:
Código:
if ds_grid_height(grid) > 0 {
    for(i=0;i<ds_grid_height(grid)-1;i+=1){
        saida = ds_grid_get(grid,0,i) + ' - ' + ds_grid_get(grid,1,i)
        draw_text(x,y+(i*20), saida)
    }
}
Agora sim. Coloque o objeto numa room, e ao rodar, pressione Enter. O resultado será esse:


Bem, logo de cara, já vimos que poderia ser complexo demais fazer isso, e eu tenho certeza que você agora está com milhões de duvidas. Estas serão sanadas, mas uma coisa precisa ser dita:
Estas Lições são para dar uma idéia de como fazer. Você não é obrigado a segui-las. O que eu quero com elas é que você aprenda, e descubra cada vez mais sobre este mundo maravilhoso que é a programação.
Por hoje é só. Criamos o BD, adicionamos scripts, fizemos uma consulta simples. Na próxima lição eu detalharei os scripts a respeito de suas funcionalidades, mostrarei como faremos para manter os dados constantes que precisamos durante a execução do jogo e como associar os mesmos. Um pouco de matemática para quando nosso herói evoluir e por fim, a exibição dos dados num menu.

Ah sim, para baixar os arquivos necessários para esta aula clique Aqui

Até lá.[b]


Última edição por joaoneto em Qui 26 Fev 2009, 14:36, editado 3 vez(es)

joaoneto

Número de Mensagens : 36
Idade : 39
Data de inscrição : 08/05/2008
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.deploy.net.br

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por Tirulink em Ter 24 Fev 2009, 09:13

muito legal Joaoneto, o tempo passa e vc continua sendo o mestre do mundo MAKER
parabéns!

aguardando as proximas aulas!

Tirulink

Número de Mensagens : 17
Idade : 31
Data de inscrição : 10/02/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por reddragon em Ter 24 Fev 2009, 10:53

Happy

essa aula ta valendo perder um tempo para estudar bem ela.

mas onde eu ri mais foi:

mundo maravilhoso que é a programação.

reddragon

Número de Mensagens : 267
Idade : 27
Data de inscrição : 19/03/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por xxxAKIRAxxx em Qua 25 Fev 2009, 02:03

E isso ai João.
Meus parabéns novamente.
muito bom.
uma duvida.
vc ja fez faculdade nesse ramo?

xxxAKIRAxxx

Número de Mensagens : 108
Idade : 26
Data de inscrição : 04/02/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   : 1
   :

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por CPinheiro em Qua 25 Fev 2009, 06:58

Olha, gostei bastante do método, estou até pensando em usar SQl eu um joguinho meu, mas tipo não acha que seria mais fácil e prático usar aquivos .ini não?
Além de serem de fácil manuseio, não é difícil desenvolver uma forma de encriptá-los, para que não mecham nele.

Fora isso, estou simplesmente adorando. Ainda só estou lendo (não pus em prática), mas creio que o MySQL vai ser muito útil pra mim. Very Happy

Continue com os tutoriais! o/

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por joaoneto em Qua 25 Fev 2009, 12:24

CPinheiro escreveu:Olha, gostei bastante do método, estou até pensando em usar SQl eu um joguinho meu, mas tipo não acha que seria mais fácil e prático usar aquivos .ini não?
Além de serem de fácil manuseio, não é difícil desenvolver uma forma de encriptá-los, para que não mecham nele.

Fora isso, estou simplesmente adorando. Ainda só estou lendo (não pus em prática), mas creio que o MySQL vai ser muito útil pra mim. Very Happy

Continue com os tutoriais! o/
Como eu já disse isso outras vezes e vou dizer de novo:
"Ninguém é obrigado a fazer da forma como eu ensino."
No início do tópico eu falo sobre o porque de se usar banco de dados:
Todo e qualquer BD usa de uma linguagem chamada de SQL. O SQL é de longe a melhor forma de manipulação de dados já inventada. Então porque reinventar a roda? Criar milhares de arquivos texto, scripts e mais scripts para se manipular os mesmos se temos uma ferramenta pronta, apenas esperando para ser usada?
Eu peço sinceras desculpas, mas para mim usar arquivos INI pra guardar grandes quantidades de informação é lá da época que se usava Windows 3.11. No caso de pequenas configurações eu até concordo e uso, mas nesse caso aqui não.
xxxAKIRAxxx escreveu:
E isso ai João.
Meus parabéns novamente.
muito bom.
uma duvida.
vc ja fez faculdade nesse ramo?

Eu trabalho com programação a mais de 5 anos. no ramo eu estou a dois. Desenvolvo aplicativos em qualquer linguagem, usando qualquer banco de dados.

joaoneto

Número de Mensagens : 36
Idade : 39
Data de inscrição : 08/05/2008
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.deploy.net.br

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por CPinheiro em Qui 26 Fev 2009, 08:40

Eu sei que ninguém é obrigado a fazer desse jeito. Foi apenas uma sugestão para melhorar a aula, não precisava ser GROSSO desse jeito.

Mas entendo seu motivo. SQL é uma boa idéia, realmente.

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por vinians em Qui 26 Fev 2009, 13:02

Cara, ta ficando sinistro o seu tuto!! Tem até Banco de Dados com Foreign Key :O Parabéns

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por Dancity em Qui 26 Fev 2009, 19:41

Muito bom... eu não fazia a minima idéia de nada agora tow entendendo...

Dancity

Ranking : Nota A
Número de Mensagens : 1339
Data de inscrição : 11/01/2009
Notas recebidas : A
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por patoki em Qua 06 Maio 2009, 14:11

Seus tutos sao muito bons, vai deixar de os fazer?

patoki

Número de Mensagens : 175
Idade : 20
Data de inscrição : 19/12/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por doidobr em Seg 18 Jan 2010, 17:42

Ainda não funciona com gm 6.1?

doidobr

Número de Mensagens : 669
Idade : 22
Data de inscrição : 21/02/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por _riqueikki_ em Qui 21 Jan 2010, 12:18

Obrigado pela aula,eu conseguir entende muita coisa desta aula,conseguir criar um personagem(TESTE) e deu certo,agora essa parte ficou facil para enteder como criar os atributos do Heroi e do vilão!!! Cool

_riqueikki_

Número de Mensagens : 79
Idade : 21
Data de inscrição : 11/01/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://www.essb-nero.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por romulo_rla em Ter 02 Nov 2010, 10:36

Alguém póde me ajudar por favooooooorr?
Dá esse erro quando um aperto enter:


___________________________________________
ERROR in
action number 1
of Key Press Event for Key
for object objQuery:

In script sqlite_query:
In script sqlite_exec:
Error in code at line 1:
return external_call(global.qry,global.db,argument0);
^
at position 29: Unknown variable qry

romulo_rla

Número de Mensagens : 45
Idade : 26
Data de inscrição : 02/09/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.zoomdicas.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Arquivo para download

Mensagem por MatudaMaker em Seg 29 Jun 2015, 12:04

Não consegui baixar os arquivos, alguém pode me ajudar ?

MatudaMaker

Ranking : Sem avaliações
Número de Mensagens : 1
Data de inscrição : 19/06/2015
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por itarodrigo em Seg 29 Jun 2015, 23:11

o tópico é de 2009, acho que não serve mais.

itarodrigo

Número de Mensagens : 599
Idade : 33
Data de inscrição : 28/08/2010
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: GM RPG - 4º Lição - Atributos do Herói - 1º parte

Mensagem por Conteúdo patrocinado Hoje à(s) 22:10


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum