Este es un proyecto personal para crear un prototipo de juego táctico inspirado en Dofus y otros juegos similares (Metal Slug Tactics, Wakfu, XCOM, FFtactics, etc).
El proyecto está siendo desarrollado en Unity 6.1 usando URP y vista isométrica 2.5D.
-
Usar Unity versión 6.1 o superior.
-
Proyecto configurado con Universal Render Pipeline (URP).
-
Para ejecutar el prototipo:
-
Abrir la escena principal (
Assets/Scenes/MainScene.unity). -
Correr el proyecto (
Play).
-
-
Variables privadas de instancia: prefijo
_(underscore).- Ejemplo:
_renderer,_gridManager
- Ejemplo:
-
Variables locales (dentro de métodos): camelCase (iniciales minusculas).
- Ejemplo:
spawnPosition,tileObj
- Ejemplo:
-
Propiedades públicas: PascalCase (iniciales mayúsculas).
- Ejemplo:
GridPosition,SelectedTile
- Ejemplo:
-
Escribir nombre de variables en inglés para mantener la consistencia y facilitar la colaboración internacional.
- Ejemplo:
playerHealthen lugar desaludJugador.
- Ejemplo:
-
Métodos y funciones: PascalCase (iniciales mayúsculas).
- Ejemplo:
CalculateDistance,SpawnEnemy
- Ejemplo:
-
Clases: PascalCase (iniciales mayúsculas).
- Ejemplo:
PlayerController,EnemyAI
- Ejemplo:
-
Interfaces: IPascalCase (iniciales mayúsculas y prefijo
I).- Ejemplo:
IPlayerController,IEnemyAI
- Ejemplo:
-
Usar espacios en blanco para mejorar la legibilidad del código.
- Ejemplo:
if (condition) { ... }en lugar deif(condition){...}
- Ejemplo:
-
No es necesario el uso de {} en una sola línea o si tienen un return inmediato.
- Ejemplo:
if (condition) DoSomething();en lugar deif (condition) { DoSomething(); }
- Ejemplo:
-
Uso de tabs para la correcta identación del código.
- Ejemplo:
if (condition) { ... }debe estar indentado con tabs.
- Ejemplo:
-
Usar comentarios para explicar el propósito de bloques de código complejos o no evidentes.
- Ejemplo:
// Este método calcula la distancia entre dos puntosantes de un método que realiza esa acción.
- Ejemplo:
-
Evitar comentarios innecesarios o redundantes.
- Ejemplo:
// Incrementa el contadoren IncrementCounter().
- Ejemplo:
-
Comentarios en inglés para mantener la consistencia y facilitar la colaboración internacional.
- Ejemplo:
// This method spawns an enemyen lugar de// Este método genera un enemigo.
- Ejemplo:
-
Usar
SerializeFieldpara variables privadas que necesitan ser visibles en el Inspector de Unity.- Ejemplo:
[SerializeField] private int _health;
- Ejemplo:
-
Usar
constpara valores constantes que no cambian durante la ejecución del programa.- Ejemplo:
const int MAX_PLAYERS = 4;
- Ejemplo:
-
Usar
readonlypara variables que no deben cambiar después de la inicialización.- Ejemplo:
readonly int _maxHealth = 100;
- Ejemplo:
-
Usar new() dentro de lo posible al crear variables, listas,etc.
- Ejemplo:
List<int> myList = new();
- Ejemplo:
-
Usar Eventos dentro de lo posible para manejar los sistema.
- Ejemplo:
OnPlayerDie,OnPlayerSpawn
- Ejemplo:
-
Documentar el código con comentarios claros y concisos.
- Ejemplo:
// Este método se encarga de...
- Ejemplo:
-
Usar nombres descriptivos para las variables y métodos.
- Ejemplo:
CalculateDistance,SpawnEnemy
- Ejemplo:
-
Evitar abreviaciones innecesarias en los nombres de variables y métodos.
- Ejemplo:
CalculateDistanceen lugar deCalcDist
- Ejemplo:
-
Evitar referenciar en exceso a objetos de Unity (ejemplo:
GameObject,Transform,MonoBehaviour) en los nombres de variables y métodos.- Entre menos se use más fácil es testear nuevos personajes, habilidades, etc.
-
Generar grid básica
-
Detección de clicks en tiles
-
Efecto de resaltado al pasar mouse
-
Sistema de selección de tiles
-
Spawn de unidades en el grid
-
Sistema básico de turnos
-
Movimiento de unidades
-
Ataque y habilidades básicas
-
UI de combate
-
Proyecto personal de [Luis Orlando Miño Bustos]
-
Proyecto no comercial, uso educativo y de experimentación.
-
Agregar sistema de pathfinding (ej: A* Pathfinding para movimiento de unidades).
-
Implementar IA básica para enemigos.
-
Sistema de habilidades con área de efecto (AoE).
-
Sistema de estadísticas para unidades (vida, ataque, defensa, etc).
-
Sistema de estados alterados (poison, stun, heal-over-time).
-
Animaciones y FX básicos para habilidades.
-
Guardado y carga de partidas.
-
Múltiples tipos de terreno que afecten movimiento o combate.
-
Mejorar UI para turnos y habilidades.