Mantener un estilo de código consistente facilita la lectura, revisión y mantenimiento del proyecto. Sigue estas reglas tanto al escribir código nuevo como al editar archivos existentes.

Política bilingüe

Beast Card Clash aplica una estricta división bilingüe:

Qué Idioma
Código (identificadores, variables, funciones, nombres de clases) Inglés
Comentarios Español
Cadenas de documentación (docstrings) Español
Mensajes de confirmación (commit) Español o Inglés
# Configura el jugador humano con los datos guardados en PlayerStats
func setup_player() -> void:
    player = Player.new(PlayerStats.player_name, PlayerStats.team, false)
    player.create_deck()
    players.append(player)

C# sigue sus propias convenciones estándar (las directrices de programación de C# de Microsoft). Las reglas detalladas a continuación se aplican principalmente a GDScript.

Convenciones de nomenclatura

Variables y funciones

Utiliza snake_case para todas las variables, nombres de funciones y parámetros.

# Correcto
var player_name: String
var battle_ui: Control
var max_players: int = 4

func get_current_player() -> Player:
    pass

Clases y tipos

Utiliza PascalCase para los nombres de clases e identificadores de tipos.

class_name BattleManager
class_name CardScene

Constantes

Utiliza SCREAMING_SNAKE_CASE para las constantes.

const MAX_CARD_VAlUE: int = 10
const ONDULAION_SPEED := 3.5

Enums

Los nombres de los tipos enum utilizan PascalCase. Los valores individuales del enum utilizan SCREAMING_SNAKE_CASE.

enum Elements { FIRE, WATER, EARTH, AIR, ENERGY }

Tabla de resumen

Tipo de identificador Convención Ejemplo
Variable snake_case player_name, battle_ui
Función snake_case get_current_player()
Parámetro snake_case card: Card, target: Character
Clase / Tipo PascalCase BattleManager, CardScene
Constante SCREAMING_SNAKE_CASE MAX_CARD_VALUE, ONDULATION_SPEED
Enum (nombre) PascalCase Elements, Teams
Enum (valor) SCREAMING_SNAKE_CASE Elements.FIRE, Teams.ADN

Nomenclatura de archivos y escenas

Qué Convención Ejemplo
Archivos GDScript snake_case.gd battle_manager.gd, player_stats.gd
Archivos de escena snake_case.tscn battle_scene.tscn, cards_list.tscn
Archivos C# PascalCase.cs BattleManager.cs
Nodos de escena PascalCase StateMachine, BattleUI, Dice

Los nombres de los nodos de escena y los nombres de archivos/scripts siguen convenciones diferentes. Un nodo en el árbol de escenas se escribe en PascalCase (p. ej., BattleUI), pero su archivo asociado se escribe en snake_case (p. ej., battle_ui.tscn).


Estructura de carpetas del proyecto

El proyecto utiliza carpetas codificadas por colores en el editor de Godot para comunicar la función de cada directorio a primera vista.

  • beast_card_clash/
    • addons/ (Turquesa): Plugins y herramientas de terceros.
    • assets/ (Amarillo): Todo el contenido del juego (cartas, personajes, UI, música).
      • battle/
      • cards/
      • characters/
      • elements/
      • tests/ (Rojo): Escenas y recursos de prueba.
      • ui/
    • autoload/ (Azul): Scripts singleton globales.
    • .vscode/: Configuración del editor.

GDScript vs C#

GDScript

GDScript es el lenguaje principal de Beast Card Clash.

class_name BattleManager
extends Node

const MAX_PLAYERS: int = 4
var current_turn: int = 0

func start_round() -> void:
    current_turn += 1

C#

C# sigue las convenciones estándar de Microsoft C#. PascalCase para miembros públicos, camelCase para campos privados.

public class BattleManager : Node
{
    private const int MaxPlayers = 4;
    private int _currentTurn = 0;

    public void StartRound()
    {
        _currentTurn++;
    }
}

Lista de verificación de consistencia

Antes de enviar un pull request, verifica que tu código cumpla con estas reglas:

  • Idioma y comentarios: Identificadores en inglés, comentarios en español.
  • Convenciones de nomenclatura: snake_case para funciones/variables, PascalCase para clases.
  • Organización de archivos: Scripts en assets/, singletons en autoload/, tests en assets/tests/.
  • Especificidades de C#: Los archivos C# se nombran igual que su clase.

Páginas relacionadas


This site uses Just the Docs, a documentation theme for Jekyll.