Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Stewart-DevTeam-Team/stewart_prealpha/llms.txt

Use this file to discover all available pages before exploring further.

Stewart sigue un conjunto de convenciones de código para mantener el proyecto consistente y legible para todos los contribuidores. El lenguaje principal es GDScript, y se acepta C# como alternativa opcional. Estas guías cubren desde la nomenclatura de variables y clases hasta el formato de los mensajes de commit.

Convenciones de GDScript

Nomenclatura

El proyecto usa tres estilos de nomenclatura según el tipo de símbolo:
EstiloUsoEjemplos
snake_caseVariables, funciones, archivosplayer_name, play_anim(), flags_manager.gd
PascalCaseNombres de claseCharacter, StateMachine, BaseState, AutoloadResource
UPPER_SNAKE_CASEConstantesPATH_MAX_LENGTH, CHARA_DISTANCE, EPSILON

Comentarios y documentación

Se usan ## para doc-comments en el formato de documentación de Godot, y # para comentarios de línea regulares.
## Recurso base para todos los personajes del juego.
## Contiene los datos compartidos entre el jugador y los NPCs.
class_name Character
extends Resource

# Distancia mínima entre personajes en fila
const CHARA_DISTANCE: float = 30.0

Clases abstractas

Las clases que no deben instanciarse directamente usan la anotación @abstract:
## Estado base abstracto para la máquina de estados.
@abstract class_name BaseState extends Node

Propiedades del inspector

Se usa @export para exponer propiedades al inspector de Godot, y @export_group para agruparlas:
@export_group("Movimiento")
@export var move_speed: float = 120.0
@export var run_speed: float = 200.0

@export_group("Personaje")
@export var character_data: Character

Referencias a nodos

Las referencias a nodos del árbol de escena se declaran con @onready:
@onready var animation_player: AnimationPlayer = $AnimationPlayer
@onready var state_machine: StateMachine = $StateMachine

StringNames

Los literales de tipo StringName usan el prefijo & para evitar conversiones innecesarias en tiempo de ejecución:
animation_player.play(&"idle")
animation_player.play(&"run_right")

Señales

Las señales se declaran con la palabra clave signal:
signal movement_started
signal character_reached_target(character: Character)

Regiones de código

Para organizar archivos largos se usan #region y #endregion:
#region Movimiento

func move_toward_target() -> void:
    pass

func stop_movement() -> void:
    pass

#endregion

Estructura general de un archivo

Un archivo GDScript típico del proyecto sigue este orden:
## Doc-comment de la clase.
class_name NombreDeClase
extends NodoPadre

# Constantes
const EPSILON: float = 0.001

# Señales
signal state_changed(new_state: BaseState)

# Propiedades exportadas
@export_group("Configuración")
@export var config_value: float = 1.0

# Variables privadas
var _current_state: BaseState

# Nodos
@onready var _animation_player: AnimationPlayer = $AnimationPlayer

#region Ciclo de vida

func _ready() -> void:
    pass

func _process(delta: float) -> void:
    pass

#endregion

Convención bilingüe

El proyecto usa dos idiomas con roles distintos:
IdiomaUso
InglésNombres de variables, funciones, señales, constantes y clases
EspañolComentarios, doc-strings y mensajes de error
## Mueve al personaje hacia su objetivo en la fila.
## Retorna true si el personaje llegó al destino.
func move_to_target(delta: float) -> bool:
    # Verificar si ya estamos suficientemente cerca
    if position.distance_to(target_position) < EPSILON:
        return true

    # Calcular dirección y aplicar velocidad
    var direction := position.direction_to(target_position)
    position += direction * move_speed * delta
    return false

Convenciones de commits

El proyecto sigue la especificación de Conventional Commits. El formato es:
<tipo>(<ámbito opcional>): <descripción en español>

Tipos de commit

TipoUso
featNueva funcionalidad
fixCorrección de error
docsCambios en documentación
choreMantenimiento (dependencias, configuración, etc.)
refactorRefactorización sin cambio de comportamiento
artCambios en assets de arte

Ejemplos

feat(movement): agregar sistema de movimiento en fila
fix(character): corregir animaciones direccionales
docs: actualizar README con requisitos de desarrollo
chore: configurar addons y fuentes del proyecto
refactor(state-machine): simplificar transiciones de estado
art(player): agregar sprites de animación de correr
El ámbito (scope) es opcional pero recomendado cuando el cambio afecta un sistema específico. Usar ámbitos consistentes facilita leer el historial del proyecto con git log.

Build docs developers (and LLMs) love