01 Primera fase de producción
Construir antes de decorar

Un player sólido y funcional.

El player es el centro de toda la experiencia. Antes de construir el mundo necesitamos un personaje que pueda moverse, detenerse, orientarse, colisionar y cambiar de animación correctamente dentro de un juego top-down.

Perspectiva Top-down 2D
Nodo principal CharacterBody2D
Resultado Player jugable
Representación temporal del player
01 Propósito

¿Qué buscamos construir?

El objetivo no es crear todavía un personaje con todas las habilidades del juego final. Queremos construir una base técnica estable que podamos ampliar durante las siguientes fases.

Objetivo principal

Crear un personaje que se sienta bien al controlar

El personaje debe responder inmediatamente, moverse con una velocidad estable, detenerse correctamente y representar visualmente la dirección hacia la que está mirando.

Si caminar por una habitación vacía no se siente bien, agregar contenido no solucionará el problema.
Todavía no necesitamos

Todas las habilidades

No construiremos herramientas, combate, inventario, recolección, diálogos ni construcción durante esta fase.

02 Preguntas fundamentales

¿Qué debemos resolver?

Antes de programar debemos saber cómo queremos que se comporte el personaje. Estas respuestas se convertirán después en decisiones técnicas.

01

¿Desde qué perspectiva veremos al personaje?

La perspectiva determina las animaciones, las colisiones, la dirección y la forma de explorar el escenario.

Decisión Vista top-down 2D con cuatro direcciones principales.
02

¿Cómo controlaremos el movimiento?

Debemos elegir controles simples que funcionen con teclado y que después puedan adaptarse a un mando.

Decisión WASD y flechas direccionales mediante acciones del Input Map de Godot.
03

¿Puede moverse en diagonal?

Un juego top-down normalmente necesita desplazamiento libre, aunque visualmente utilice cuatro direcciones.

Decisión Sí. El movimiento será de ocho direcciones, pero inicialmente utilizaremos animaciones de cuatro direcciones.
04

¿Qué ocurre al soltar los controles?

Debemos decidir si el personaje se detiene inmediatamente o conserva una pequeña inercia.

Decisión inicial Se detendrá inmediatamente para ofrecer un control claro y preciso.
05

¿Hacia dónde mira cuando se detiene?

La dirección del personaje será importante cuando agreguemos herramientas e interacción.

Decisión Mantendrá la última dirección en la que estaba caminando.
06

¿Qué debe demostrarnos esta fase?

Necesitamos una condición clara para evitar seguir agregando funciones indefinidamente.

Decisión Que el player puede recorrer una habitación de prueba con movimiento, animaciones y colisiones correctas.
03 Sistema completo

¿De qué está hecho un player?

El personaje no es solamente una imagen. Está compuesto por diferentes partes que trabajan juntas para producir una experiencia jugable.

IN

Input

Recibe las instrucciones del jugador: arriba, abajo, izquierda y derecha.

Convierte teclas en intención.
MV

Movimiento

Convierte la dirección recibida en velocidad y desplaza al CharacterBody2D.

Convierte intención en desplazamiento.
CL

Colisión

Evita que el personaje atraviese paredes, árboles, rocas y otros obstáculos.

Le da presencia física en el mundo.
DR

Dirección

Guarda hacia dónde mira el personaje aunque se encuentre detenido.

Prepara futuras interacciones.
AN

Animación

Selecciona la animación correcta según el movimiento, la dirección y el estado.

Comunica visualmente lo que sucede.
ST

Estados

Organiza comportamientos como estar quieto, caminar, usar una herramienta o recibir daño.

Evita un script desordenado.
04 Organización en Godot

Arquitectura del personaje

Cada nodo debe tener una responsabilidad clara. No debemos colocar todos los sistemas directamente dentro del nodo principal sin organización.

Esta es la estructura inicial recomendada para la escena Player.tscn. Puede ampliarse después, pero contiene únicamente los nodos necesarios para esta fase.

Player CharacterBody2D
AnimatedSprite2D Visual
CollisionShape2D Física
StateMachine Node
IdleState Node
MoveState Node
InteractionPoint Marker2D
Player

Controla el movimiento general y representa físicamente al personaje.

AnimatedSprite2D

Muestra y reproduce las animaciones correspondientes.

CollisionShape2D

Define la zona física que puede chocar contra el escenario.

StateMachine

Decide si el personaje está quieto, caminando o realizando otra acción.

InteractionPoint

Guardará la posición hacia la que el personaje interactúa en fases posteriores.

05 Control top-down

Reglas del movimiento

El movimiento debe sentirse predecible. Los controles deben comportarse igual sin importar la dirección en la que camine el personaje.

REGLA 01

La velocidad debe ser constante

Moverse en diagonal no debe hacer que el personaje avance más rápido. La dirección debe normalizarse.

REGLA 02

El movimiento debe usar move_and_slide()

CharacterBody2D resolverá las colisiones y permitirá deslizarse junto a paredes.

REGLA 03

La velocidad será una variable editable

Utilizaremos una propiedad exportada para probar diferentes velocidades sin modificar constantemente el código.

REGLA 04

Input y animación estarán separados

Primero calculamos cómo se mueve el personaje. Después decidimos cómo debe representarse visualmente.

06 Comunicación visual

Direcciones y animaciones

Aunque el personaje pueda moverse diagonalmente, durante el primer prototipo utilizaremos cuatro direcciones visuales para mantener el alcance controlado.

Arriba

El personaje muestra la espalda.

Abajo

El personaje mira hacia la cámara.

Izquierda

Perfil orientado hacia la izquierda.

Derecha

Perfil orientado hacia la derecha.

Estado Dirección Nombre sugerido
Idle Abajo idle_down
Idle Arriba idle_up
Idle Izquierda idle_left
Idle Derecha idle_right
Walk Abajo walk_down
Walk Arriba walk_up
Walk Izquierda walk_left
Walk Derecha walk_right
07 Presencia física

Colisión del personaje

La colisión no debe cubrir todo el sprite. En un juego top-down normalmente representa los pies y la zona que toca el suelo.

La colisión se coloca en los pies

Esto permite que la parte superior del sprite pueda pasar visualmente delante de objetos como arbustos o decoraciones.

Debe ser más pequeña que el sprite

Una colisión demasiado grande hace que el personaje parezca chocar con objetos antes de tocarlos.

Usaremos una forma simple

Una cápsula o círculo suele comportarse mejor que una forma rectangular al pasar cerca de esquinas.

El punto de origen estará cerca del suelo

Esto ayudará después a ordenar correctamente los personajes y objetos por profundidad.

08 Organización del comportamiento

Máquina de estados

Durante esta fase solo necesitaremos dos estados. Sin embargo, construiremos la estructura pensando en futuras acciones.

Un estado representa lo que el personaje está haciendo en un momento determinado. El player no debería intentar estar quieto, caminar y usar una herramienta al mismo tiempo.

Estado 01 Idle
Estado 02 Move
Futuro Tool
Futuro Hurt
En esta fase solamente programaremos Idle y Move. Los otros estados se muestran para entender cómo podrá crecer la arquitectura sin reescribir todo el personaje.
09 Control del alcance

Qué entra y qué no entra

El player será ampliado en otras fases. Ahora debemos evitar convertir esta etapa en el desarrollo completo del personaje.

Sí construiremos

Player básico

  • Movimiento en ocho direcciones.
  • Animaciones visuales de cuatro direcciones.
  • Estado Idle.
  • Estado Move.
  • Colisión física.
  • Última dirección recordada.
  • Escena Player reutilizable.
Todavía no construiremos

Sistemas avanzados

  • Ataques o combate.
  • Herramientas.
  • Recolección de recursos.
  • Inventario.
  • Barra de vida.
  • Sonidos de pasos.
  • Efectos especiales.
10 Ruta de producción

Misiones de la Fase 1

No construiremos todo al mismo tiempo. Cada misión debe funcionar antes de comenzar la siguiente.

01
Preparación

Configurar el Input Map

Crear las acciones move_up, move_down, move_left y move_right.

02
Escena

Crear Player.tscn

Construir la estructura inicial usando CharacterBody2D como nodo principal.

03
Programación

Implementar el movimiento

Leer el input, normalizar la dirección, calcular la velocidad y utilizar move_and_slide().

04
Física

Ajustar la colisión

Colocar una forma pequeña en la zona de los pies y probarla contra paredes.

05
Dirección

Guardar hacia dónde mira

Mantener la última dirección incluso cuando el jugador deja de moverse.

06
Animación

Configurar Idle y Walk

Crear y reproducir las animaciones correspondientes a cada dirección.

07
Arquitectura

Implementar IdleState y MoveState

Separar los comportamientos básicos dentro de una máquina de estados sencilla.

08
Pruebas

Crear una habitación de prueba

Probar movimiento, diagonales, paredes, esquinas, dirección y cambios de animación.

11 Definición de terminado

¿Cuándo cerramos la Fase 1?

La fase termina cuando el player puede utilizarse como la base real del juego. No debe depender de trucos temporales ni presentar errores visibles durante las pruebas.

Progreso de la fase 0 de 10 misiones completadas
0%
Resultado esperado

Paolo puede recorrer el mundo con confianza.

Al terminar esta fase tendremos un personaje top-down que responde correctamente, se orienta, se anima y colisiona con el escenario. Esta será la base sobre la que construiremos la cámara, la interacción, las herramientas y todos los sistemas futuros de IslandCrafter.

01