A pasta exportados deverá conter as builds do jogo.
O projeto de Godot em si deve ficar dentro da pasta projeto.
A pasta projeto/recursos/addons deve conter os componentes reutilizaveis.
Caso um componente seja útil e robusto o suficiente, ele poderá ser reintegrado ao nosso modelo no GitHub.
.
├── exportados
├── projeto
│ ├── elementos
│ │ ├── imagem
│ │ ├── musica
│ │ ├── som
│ │ └── texto
│ └── recursos
│ ├── addons
│ └── cenas
├── README.md
Componentes na pasta de addons devem ser transformados em plugins. Veja mais sobre: Tutorial de Plugin.
Todo o código deve ser escrito em português.
Nomes de pasta, cenas e scripts devem ser sempre em snake_case.
Exemplos: jogador/componente_controle.gd, menu_pausa.tscn.
Variáveis privadas devem ser iniciadas com um _:
func _calcular_velocidade():
passFunções públicas sempre devem ser documentadas com type hints:
func gerar_nova_posicao(posicao_alvo: Vector2, posicao_passada: Vector2) -> Vector2:
passFunções com parâmetros e retorno não claros devem ter comentários explicando em mais detalhe.
Isso pode acontecer principalmente devido às limitações de type-hint da Godot 3.x.
### Recebe Array de Vector2
func posicao_media(posicoes: Array) -> Vector2:
passDeclarações devem seguir a ordem: definição do arquivo -> declarações públicas -> declarações privadas -> funções.
Exemplo:
class_name ClasseTeste
extends Node
export var variavel_um: float
export var variavel_dois: PackedScene
signal sinal_um
signal sinal_dois(parametro)
var privada_um = 3
onready var privada_dois = $Componente
var privada_tres = Vector2.ONE
func _ready():
pass
func funcao_publica():
passFunções devem ser, sempre que possível, puras (i.e. sem efeitos colaterais). A responsabilidade de aplicar as mudanças propostas pela função deve ser de quem a chamou. Por exemplo, uma função que calcula a nova quantidade de uma entidade.
Procurar fazer assim:
func calcular_vida(entidade: Node, danificador: Node) -> float:
var modificador = 1
if danificador.tipo in entidade.fraquezas:
modificador = danificador.modificador
return entidade.vida + entidade.defesa - danificador.dano * modificadorAo invés de:
func calcular_vida(entidade: Node, danificador: Node):
var modificador = 1
if danificador.tipo in entidade.fraquezas:
modificador = danificador.modificador
entidade.vida += entidade.defesa - danificador.dano * modificador