Conectar-se
Quem está conectado
24 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 24 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 20/11/2011
Número de Mensagens : 39
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Regras para nomear variáveis e outros recursos

em Sab 03 Dez 2011, 20:35
Olá, pessoal. Decidi criar esse post porque não vi nenhum parecido aqui no fórum e porque acho pertinente para todos aqueles que escrevem programas, desde iniciantes até pessoas com conhecimento mais avançado.

Trago aqui algumas sugestões para padronizar a criação dos nomes dos recursos (sprites, sons, rooms, objetos etc) e variáveis, a fim de ficar mais fácil referenciar aos mesmos durante o desenvolvimento do jogo.

A sintaxe que eu geralmente utilizo é como se segue abaixo e eu a sigo rigorosamente a fim de me ajudar durante a escrita de código. Não se trata de nenhuma regra e sim apenas uma sugestão que pode nem ser a melhor.

Peço de antemão que quem utiliza um padrão diferente, compartilhe conosco, pois eu mesmo às vezes tenho problemas na hora de definir um nome.

Vamos lá:

    Em primeiríssimo lugar, cuidado com as variáveis e constantes já definidas pelo GM na hora de criar nomes de variáveis. As palavras "gravity" e "c_white", por exemplo, são palavras reservadas e não podem ser usadas.


    Em segundo lugar, evite utilizar espaços e pontos na definição dos nomes de recursos e variáveis, pois se você for usar o editor de código do GM, isso pode gerar conflitos na hora de ser interpretado.


    Em terceiro lugar, é recomendado manter os nomes apenas com letras minúsculas, pois o compilador do GM é do tipo case sensitive (ab1, AB1, aB1 e Ab1 são interpretados como 4 variáveis distintas, por exemplo) e isso pode gerar conflitos com a utilização do editor de código.


    Em quarto lugar é interessante manter um padrão de sintaxe na hora de escrever os nomes, para que seja fácil recordar enquanto se escreve código sem ter que ficar verificando toda hora. A sintaxe que eu utilizo é como segue abaixo.


tipo_(prefixo)nome principal_(sufixo)


Tipo é a abreviatura do recurso correspondente ao que está sendo nomeado. É a primeira classificação que é feita com os nomes. Seguem abaixo os principais tipos que eu utilizo nos meus nomes:

bkg- background
c - constante
f - função
mus- musica
obj- objeto
pth - caminhos (paths)
rom- room
snd- sound
scr- script
spr- sprite
v - variável


Após o tipo, é adicionado o underline(_).


Prefixos são opcionais e servem para diferenciar características diferentes de um mesmo nome principal. Por exemplo, para os sprites do personagem principal (heroi) referentes ao heroi parado, o heroi correndo e o heroi pulando, eu utilizo os seguintes nomes para os recursos:

spr_stdhero;
spr_runhero;
spr_jmphero;

Seguem abaixo os principais prefixos que eu utilizo, sendo que é uma lista que continuamente vai sendo aumentada:

min - mínimo, menor valor
max - máximo, maior valor
std - parado (stand)
run - correndo (run)
wlk - andando (walk)
jmp - pulando (jump)
menu - rotinas de menus
btn - button
sup - superior
sub - inferior
mid - médio
big - grande, maior
hp - saúde do herói (hp = hit points)
ehp - saúde do inimigo (enemy hp)
bhp - saúde do chefe (boss hp)
wpn - arma (weapon)
mag - magia


Os prefixos NÃO são separados do nome principal.


Sobre os nomes principais: aqui não existe exatamente uma padronização, o nome principal é aquilo que identifica a essência do que está sendo nomeado. Pode ser o herói, um item, um monstro, uma barra de energia, uma fase, uma magia, entre outros. No geral, eu utilizo expressões em inglês (como já devem ter percebido, rs). Isto porque o inglês é uma língua mais fonética e portanto as palavras são geralmente menores que as equivalentes em português. Como eu trabalho mais com programação em linhas de código, quanto menor o nome de alguma coisa, menos trabalho eu terei com a digitação. Existem alguns nomes-chave que eu utilizo, porém é uma lista que também é continuamente aumentada:

hero - protagonista da história, o heroi.
enemy - inimigos comuns
boss - inimigos- chefe de fase
finalboss - chefe final do jogo


Porém, em algumas situações (como na construção dos inimigos do jogo), é interessante definir os nomes para os objetos do jogo e usar esses nomes na identificação dos recursos pertinentes a ela. Fica mais fácil do que manter nomes principais como enemy1 e enemy2, por exemplo. Nesse caso, é interessante manter uma documentação, mesmo que simples, desses nomes a fim de evitar que eles se misturem e confunda ainda mais a escrita do código.


Sufixos, assim como os prefixos servem para discriminar ainda mais características de um determinado recurso.

Sugestões de sufixo:

1,2,3...
esq - esquerda
dir - direita
up - cima (up)
dwn - baixo (down)
cen - centro
parent - se a instância é objeto pai



Alguns exemplos de variáveis criadas com essas minhas dicas e suas interpretações:

obj_hero - o herói
spr_stdhero_esq - a imagem (spr) do herói parado (stdhero) virado para a esquerda(esq).
spr_shot_dir : sprite do tiro comum para a direita
spr_midshot_dir : sprite do tiro médio para a direita
spr_bigshot_dir : sprite do tiro maior para a direita
obj_hpbarrogau : objeto barra de energia do inimigo "Rogau"
v_menucursor: variável que registra a posição do cursor no menu principal.
obj_box_1: uma caixa qualquer;
obj_box_2:outra caixa qualquer;
snd_enemyhurt: efeito sonoro quando se acerta o inimigo;
mus_fase1: música da fase 1 do jogo;
spr_wpnenemy_parent: sprite do objeto pai que define as armas do inimigo



Enfim, espero ter ajudado alguém com essas dicas e contribuído para o conteúdo do fórum. Mais uma vez, peço que quem utiliza uma forma diferente de padronização compartilhe conosco. Abraços!
avatar
Ranking : Nota D
Notas recebidas : D
Data de inscrição : 14/02/2010
Número de Mensagens : 911
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Regras para nomear variáveis e outros recursos

em Sab 03 Dez 2011, 21:25
Legal seu tutorial.

Ele está mais para uma dica, mas tudo bem Happy

Mas, sobre a parte "manter os nomes apenas com letras minúsculas", nao acho que atrapalha(nao tanto quando o espaço).Aliais eu uso isto para diferenciar sprites parecidos no meu game, ponho tipo:

Player
player
pLayer
etc

Happy
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 24/11/2009
Número de Mensagens : 803
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 10

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Regras para nomear variáveis e outros recursos

em Sab 03 Dez 2011, 21:31
Legal o tuto cara, mas eu sempre uso:
oPlayer1> objeto Player1
sPlayer1> Sprite Player1
vAtirando>Variavel atirando
gvpontos>Global variavel pontos

=D
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 07/06/2011
Número de Mensagens : 673
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 2

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Regras para nomear variáveis e outros recursos

em Sab 03 Dez 2011, 21:43
Eu já sou um pouco conservador neste aspecto... Geralmente não abrevio, mas quando faço isso utilizo:

rm - room
tml - timeline
fnt - fonte
left - esquerda
right_ direita
etc...

Gostei da dica do tutorial. Até que está bem explicado e é perfeito para iniciantes. Mas que eu saiba isso não é uma padronização não e sim "expressões" que ficaram populares quando criamos algo no Game Maker. De qualquer forma, belo trabalho!

Até mais!
avatar
Data de inscrição : 20/11/2011
Número de Mensagens : 39
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Regras para nomear variáveis e outros recursos

em Qua 07 Dez 2011, 23:58
Galera, valeu pelas críticas. Espero que tenha ajudado alguém. Abraços.
Conteúdo patrocinado

Re: Regras para nomear variáveis e outros recursos

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum