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 ensnake_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_casepara funciones/variables,PascalCasepara clases. - Organización de archivos: Scripts en
assets/, singletons enautoload/, tests enassets/tests/. - Especificidades de C#: Los archivos C# se nombran igual que su clase.