Índice de contenido
- De Principiante a Creador de Juegos: Dominando Flame y Forge2D
- El Ecosistema: ¿Qué necesitas dominar primero?
- El "Enfoque Pro": Cómo animar movimientos
- Tu Camino Hacia Desarrollador de Juegos
- Las 4 Fases del Curso:
- Recursos Gratuitos para Profundizar
- Libro y Curso Comunitario
- Repositorios Base y Apps Jugables
- Juega las Demos en Vivo
- Preguntas Frecuentes
- Experiencia del Autor
- 1. Introducción
- 2. Requisitos para tomar esta formación
- 3. Preguntas
- 4. Consideraciones
- 5. Recomendaciones
- 6. Actualizaciones
- 1. Crear un proyecto en Flutter y agregar Flame y Forge 2D
- 1. Presentación
- 2. ¿Qué es Forge 2D?
- 3. Clase principal y dependencias
- 4. Mundo y cámara
- 5. Cuerpos/body, Configuración base
- 6. Cuerpos/body, Características
- 7. Cuerpos/body, Fuerzas, impulsos y velocidad
- 8. Cuerpos/body, Tipos
- 9. Cuerpos/body, ContactCallbacks: Colisiones o contacto entre cuerpos
- 1. Introducción
- 2. Sobre la estructura de la clase
- 3. Legacy: Estructura base del proyecto: versión ^0.14.1+1
- 4. Estructura base del proyecto: versión ^0.15.1+1
- 5. Crear un círculo
- 6. Zoom y gravedad
- 7. screenToWorld
- 8. Crear el piso
- 9. Rebote/restitution
- 10. Inclinar el piso
- 11. Cuadrado en vez de un círculo
- 12. Fricción
- 13. Densidad, Fuerzas, impulsos y velocidad
- 14. Conclusiones
- 15. Cuerpos kinematic
- 16. Cuerpos kinematic: Desplazar horizontalmente
- 17. Sprite: Dibujar una caja
- 18. Reto: Sprite: Dibujar una pelota
- 19. SpriteAnimationComponent: Generar figuras
- 20. Crear paredes
- 21. Contacto/Colisión: Presentación
- 22. Agregar una caja o pelota de manera aleatoria
- 23. Contacto entre cuerpos
- 24. Crear una clase base para los bodies
- 25. Agregar una animación al momento del contacto
- 26. ContactFilter
- 27. Publicar en github
- 1. Introducción
- 2. Estructura base
- 3. Ground
- 4. Player: Clase character
- 5. Player: SpriteAnimation
- 6. Player: Body
- 7. Movilidad: Desplazamiento horizontal
- 8. Movilidad: Desplazamiento vertical o salto
- 9. Estados del player
- 10. Moverse en el aire
- 11. Moverse en el aire: Animación
- 12. Salto Doble
- 13. Impulso
- 14. Tileset: Configuración inicial
- 15. Tileset: Definir tamaño entre los tiles y GroundBody
- 16. Evitar que el player rote: body.setTransform(body.position, 0);
- 17. Follow para la cámara
- 18. Resolviendo problemas de visualización de los tiles/ground
- 19. Definir un EdgeShape para el Ground
- 20. Implementar one-way collision (ContactFilter), presentación
- 21. ContactFilter, implementación
- 22. Manejar los contactos en los extremos de los tiles y el player
- 23. Publicar en github
- 1. Introducción
- 2. Estructura base
- 3. Evento Tap
- 4. Drag, presentación
- 5. Drag update, implementar
- 6. Drag end, implementar
- 7. Generar el impulso
- 8. Evitar que el círculo pueda ser arrastrado por toda la pantalla, presentación
- 9. Evitar que el círculo pueda ser arrastrado por toda la pantalla, implementación
- 10. Permitir que el ave pueda moverse en un rango limitado superada la distancia máxima
- 11. Usar length2 en vez de length al momento de definir los límites del movimiento del ave
- 12. Remover al player una vez lanzado y pasado un tiempo
- 13. Sprite animado para el ave
- 14. Preparar el mundo, definir paredes
- 15. Objetivos colisionables: Cajas
- 16. Definir niveles: Generar varias cajas
- 17. Agregar cajas desde el main
- 18. Detectar cuando fueron agregadas las cajas desde el main
- 19. Detectar cuando fue posicionada la caja desde el componente en el mundo
- 20. Obtener listado de cajas desde el main
- 21. Verificar que todas las cajas fueron agregadas en el mundo y las cajas están en reposo
- 22. Bloquear ave al momento de generar las cajas
- 23. Contabilizar impactos, registrar el mayor impacto
- 24. Destruir las cajas
- 25. Publicar en github
- 1. Introducción
- 2. Estructura base
- 3. Pelota
- 4. Barra
- 5. Movimiento para la barra, primeras pruebas
- 6. Retornar la barra al origen
- 7. Movimiento, velocidad angular para la barra
- 8. Habilitar el movimiento invertido de la barra
- 9. Paredes
- 10. Paredes: Pared inferior
- 11. Paredes: Desplazar barra
- 12. Obstáculos
- 13. Meta
- 14. Meta: Desplazar
- 15. Niveles
- 16. Niveles: Variar mapa
- 17. Variar posición de la barra
- 18. Variar largo de la barra
- 19. Arreglar desplazamiento de la barra
- 20. Publicar en Github
- 21. Inclinar paredes y barra al contacto con la bola: Paredes verticales
- 22. Inclinar paredes y barra al contacto con la bola: Invertir
- 23. Inclinar barra al contacto con la bola
- 1. Introducción
- 2. Estructura base
- 3. Mover barra a los lados
- 4. Evitar que la barra escape
- 5. Impulso inicial para la bola
- 6. Aumentar velocidad de la bola al contacto
- 7. Inclinar paredes y barra al contacto con la bola
- 8. Generar segunda barra
- 9. Invertir dirección a la segunda barra
- 10. Publicar en Github
- Algunas recomendaciones
Este es el curso definitivo para crear juegos 2D con físicas reales en Flutter con Forge2D. Iremos paso a paso, desde conocer los fundamentos de Forge2D hasta construir juegos complejos con saltos precisos, colisiones, gravedad y simulaciones asombrosas que antes parecían imposibles sin Unity.
"Si alguna vez soñaste con crear tu propio juego al estilo Mario o Angry Birds usando Flutter, este curso es para ti. Aprenderás a combinar la potencia de Flutter y Flame con un motor de física 2D que hace que tus personajes salten, choquen y se muevan de manera realista."
Con Forge2D, transformarás simples componentes de Flame en cuerpos dinámicos. Le aplicaremos masa, fricción, rebote e impulsos. Es un curso mayoritariamente práctico donde iremos dominando la librería a través de pequeños juegos que escalarán en complejidad.
Lo que aprenderás en este Curso Maestro
- Fundamentos de Física: Entiende cómo aplicar Forge2D para manejar gravedad, fricción, impulsos y rebotes en tus personajes.
- Desarrollo de Plataformas: Construye juegos tipo Mario con Tilemaps, manejando saltos precisos y colisiones con el entorno.
- Físicas Complejas: Crea mecánicas estilo Angry Birds o Pinball usando vectores, eventos drag y obstáculos dinámicos.
- Cuerpos y Fixtures: Define la anatomía perfecta para tus Sprites, separando la lógica visual de las colisiones matemáticas.
- Eventos y Contactos: Programa respuestas exactas cuando dos cuerpos colisionan (ej. recolectar monedas o recibir daño).
De Principiante a Creador de Juegos: Dominando Flame y Forge2D
Flame es un motor de juegos ligero para Flutter que te permite enfocarte en la creación en 2D sin la sobrecarga de herramientas gigantes como Unity o Unreal. Sin embargo, animar saltos y programar colisiones píxel a píxel es agotador. Aquí es donde entra Forge2D.
Forge2D complementa a Flame inyectando físicas reales. En lugar de calcular trayectorias manualmente, defines cuerpos, aplicas una fuerza y el motor calcula el resto. Es el puente perfecto para que tus juegos de Flutter se sientan orgánicos y profesionales.
El Ecosistema: ¿Qué necesitas dominar primero?
| Paso | Concepto Clave | ¿Para qué sirve? | Prioridad |
|---|---|---|---|
| 1 | Flutter & Flame Core | Entender el game loop, carga de sprites, inputs de pantalla y cámaras. | Alta (Imprescindible) |
| 2 | Cuerpos (Bodies) en Forge2D | Crear entidades físicas invisibles que el motor calculará matemáticamente. | Alta (Imprescindible) |
| 3 | Fuerzas e Impulsos | Hacer que los personajes salten, se muevan o exploten en base a vectores. | Media-Alta |
| 4 | Contactos y Fixtures | Detectar cuándo y cómo dos cuerpos chocan para aplicar daño o recolectar ítems. | Media-Alta |
| 5 | BodyComponent | Unir la lógica matemática de Forge2D con el componente visual (Sprite) de Flame. | Media (Avanzado) |
El "Enfoque Pro": Cómo animar movimientos
Mira la diferencia entre calcular físicas manualmente en Flame vs aprovechar Forge2D. Usar el motor de física no solo te ahorra tiempo, sino que te brinda resultados realistas e impecables.
void update(double dt) {
// Simulando gravedad a mano
velocity.y += gravity * dt;
position.y += velocity.y * dt;
if (position.y > suelo) {
position.y = suelo; // Rebote manual impreciso
}
}void jump() {
// El motor calcula TODO: masa, gravedad y colisión
body.applyLinearImpulse(Vector2(0, -jumpForce));
}
Tu Camino Hacia Desarrollador de Juegos
Esta metodología 100% práctica está diseñada para llevarte de la mano, escalando desde los conceptos matemáticos básicos hasta desplegar un juego completo con Tilemaps.
Las 4 Fases del Curso:
- Fase 1: Preparación. Configuración del entorno Flutter y las bases del mundo de físicas Box2D (Forge2D).
- Fase 2: Fundamentos Físicos. Creación de cuerpos, aplicación de fuerzas, control de velocidad, gravedad, rebotes y manejo de colisiones por código.
- Fase 3: Juegos de Plataformas y Física Libre. Desarrollo de "Dino Jump" y "Angry Birds" integrando eventos táctiles y arrastre (Drag).
- Fase 4: Simuladores (Pinball / Pong). Juegos avanzados de rebote calculando ángulos de colisión, obstáculos dinámicos y metas móviles.
Recursos Gratuitos para Profundizar
Aquí tienes recursos libres para comprobar la calidad del código, interactuar con los juegos terminados y empezar tu aprendizaje ahora mismo.
Libro y Curso Comunitario
El 100% del contenido de este curso equivale a su versión en formato libro. Tienes una versión gratuita disponible para comenzar tus primeros pasos en Flame.
Repositorios Base y Apps Jugables
Te regalo el código fuente de las distintas aplicaciones creadas durante el curso:
Juega las Demos en Vivo
Preguntas Frecuentes
- ¿Para quién es este curso?
- Personas que ya tienen un conocimiento básico de Flutter y Flame y quieren dar el siguiente paso dominando físicas reales.
- Desarrolladores que buscan entender conceptos globales de videojuegos (cuerpos, mundos y físicas) aplicables luego a Unity o Unreal.
- Creadores interesados en exportar juegos 2D multiplataforma: Android, iOS, Windows, Mac, Linux y Web.
- ¿Cuáles son los requisitos?
- Haber cursado previamente las bases de Flame (recomendado) y entender el ecosistema de componentes de Flutter.
- Tener Flutter SDK instalado en Windows, MacOS o Linux.
- ¿Qué incluye el temario paso a paso?
- Configuración del Mundo, creación de Bodies (estáticos y dinámicos), aplicación de Joints, eventos de Drag y diseño de 4 juegos completos (Plataformas, Angry Birds, Pong y Pinball).
- ¿Es necesario dominar conceptos avanzados de física o matemáticas para empezar?
- No es indispensable. Flame provee herramientas integradas muy intuitivas para resolver la lógica de gravedad, rebotes e interacción, e incluso cuenta con soporte directo para Forge2D (un motor de física Box2D). Este libro te enseñará la lógica paso a paso para que comprendas el flujo del
Render Loopsin frustrarte con matemáticas complejas. - Es una formación extremadamente práctica con guías lógicas para el ciclo de vida de los PositionComponents, colisiones y sonidos.
- No es indispensable. Flame provee herramientas integradas muy intuitivas para resolver la lógica de gravedad, rebotes e interacción, e incluso cuenta con soporte directo para Forge2D (un motor de física Box2D). Este libro te enseñará la lógica paso a paso para que comprendas el flujo del
Experiencia del Autor
“Llevo años explorando los límites de Flutter. Descubrí que la combinación de Flame y Forge2D abre una puerta increíble para desarrolladores móviles que quieren entrar al desarrollo de juegos sin abandonar su lenguaje favorito (Dart). He construido y publicado estas mecánicas, simplificando la curva de aprendizaje matemática para que tú solo te enfoques en crear diversión.”