Índice de contenido
- Sobre el curso y libro
- ¿Por qué usar Flame y Forge2D para crear juegos en Flutter?
- Prólogo
- Para quien es este curso y libro
- Temario del Curso y Libro
- Qué aprenderás en este curso de Forge2D con Flutter y Flame
- 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
Con Flame y Flutter, podemos realizar juegos en 2D enfocadas al ámbito móvil, escritorio o web; tal cual vimos en el curso/libro sobre "Primeros pasos con Flame con Flutter" podemos crear todo tipo de juegos en 2D usando sprite, colisiones, eventos de tap, teclado, Drag entre otros y un sistema de cámaras, por nombrar algunas características importantes; con Forge2D y Flame, podemos realizar todo lo anterior pero empleando un motor de física en 2D, para implementar saltos de una manera más sencillas, choques entre cuerpos, simulaciones, son algunos ejemplos de lo que podemos lograr.
Si alguna vez soñaste con crear tu propio juego al estilo Mario usando Flutter, este curso es para ti. Con Flame y Forge2D aprenderás a combinar la potencia de Flutter con un motor de física 2D que hace que tus personajes salten, choquen y se muevan de manera realista.
Con Forge2D tenemos cuerpos, que vienen siendo los componentes de Flame para crear componentes, pero a los cuales se les puede aplicar físicas como gravedad, colisiones, peso, fricción, rebote, entre otros, por lo tanto, con estas características, podemos crear fascinantes juegos al mejor estilo de Angry Birds o similares.
Este curso y libro es mayoritariamente práctico, iremos conociendo los fundamentos de Forge2D en base a pequeños ejemplos hasta lograr conocer lo suficiente de la librería para crear un juego en 2D con sistemas de físicas sencillas.
Sobre el curso y libro
¿Por qué usar Flame y Forge2D para crear juegos en Flutter?
Flame es un motor de juegos ligero para Flutter que te permite enfocarte en la creación de juegos 2D, sin preocuparte por la infraestructura compleja de un motor completo como Unity.
Forge2D complementa esto añadiendo físicas reales: gravedad, fricción, rebotes y colisiones que funcionan como esperarías en un juego clásico de plataformas.
En mi caso, al crear un juego tipo Mario, me di cuenta de que sin Forge2D tendría que programar cada salto y rebote manualmente. Con este motor, todo es más intuitivo: solo defines cuerpos, fuerzas y el motor hace el resto.
También tengo recursos gratuitos para el Curso en el Blog y el curso y libro comunitario/GRATIS en la web de Academia.
Es importante mencionar, que el curso también tiene el formato en libro con el 100% del contenido del mismo, es decir, el curso es equivalente al libro.
Prólogo
Con Flame y Flutter, podemos realizar juegos en 2D enfocadas al ámbito móvil, escritorio o web; tal cual vimos en el curso/libro sobre "Primeros pasos con Flame con Flutter" podemos crear todo tipo de juegos en 2D usando sprite, colisiones, eventos de tap, teclado, Drag entre otros y un sistema de cámaras, por nombrar algunas características importantes; con Forge2D y Flame, podemos realizar todo lo anterior pero empleando un motor de física en 2D, para implementar saltos de una manera más sencillas, choques entre cuerpos, simulaciones, son algunos ejemplos de lo que podemos lograr.
Con Forge2D tenemos cuerpos, que vienen siendo los componentes de Flame para crear componentes, pero a los cuales se les puede aplicar físicas como gravedad, colisiones, peso, fricción, rebote, entre otros, por lo tanto, con estas características, podemos crear fascinantes juegos al mejor estilo de Angry Birds o similares.
Este curso es mayoritariamente práctico, iremos conociendo los fundamentos de Forge2D en base a pequeños ejemplos hasta lograr conocer lo suficiente de la librería para crear un juego en 2D con sistemas de físicas sencillas.
Para quien es este curso y libro
Esta guía está dirigida a cualquier persona que quiera aprender a desarrollar en Flame con Forge 2D y conocer y aprender cómo trabajar con el motor de física para nuestros juegos.
- Para cualquier persona que quiera iniciar en el desarrollo de videojuegos en 2D para Android, iOS, Linux, Windows, MacOS o web.
- Para aquellas personas que conozcan cómo programar en Flutter y que buscan aplicar sus habilidades de programación en el desarrollo de videojuegos en 2D con un motor de física.
- Para aquellas personas que quieran aprender a desarrollar sus primeros juegos en 2D.
- Para aquellas personas que quieran aprender algo nuevo.
- Para las personas que quieran mejorar una habilidad y que quieran crecer como desarrollador y que quiera seguir escalando su camino en el desarrollo de aplicaciones con Flutter.
- Para todas las personas que ya saben desarrollar en Flame y con esto, en Flutter y quieran dar el siguiente paso y aprender a desarrollar juegos en 2D con el motor de física de Forge.
Temario del Curso y Libro
Este curso y libro tiene un total de 7 secciones, se recomienda que leas en el orden en el cual están dispuestos y a medida que vayamos explicando los fundamentos de Forge 2D con Flame en base a ejemplos; una vez domines la librería, puedes consultar las secciones en el orden que desees.
- Sección 1: Crearemos un proyecto en Flutter con las dependencias básicas necesarias para crear juegos con Forge 2D, Flame y Flutter.
- Sección 2: Explicaremos los conceptos básicos como qué es Forge 2D, los cuerpos, sus características y componentes, aplicar impulso, velocidad o fuerzas, formas de los cuerpos, manejar el contacto entre cuerpos y cómo interactuar con el mundo de Forge2D en general.
- Sección 3: Crearemos varios ejemplos pequeños para ir presentando uno a uno las características principales y funcionalidades de Forge2D, veremos de manera práctica los conceptos presentados en el anterior capítulo.
- Sección 4: Crearemos nuestro primer juego real en Forge que sería un juego de plataformas de saltos y desplazamiento horizontal, veremos cómo manejar el movimiento, saltos empleando la velocidad lineal además de emplear mapas de tipo tile.
- Sección 5: Crearemos un segundo juego en donde implementaremos funcionalidades similares al de Angry Birds como la de posicionar un ave, desplazar el ave en un radio específico mediante el evento drag y agregar impulsos en base a un vector resultante entre el origen y posición final.
- Sección 6: Crearemos un tercer juego en donde implementaremos funcionalidades similares a la de Pinball, agregar una bola, crear obstáculos, crear un brazo e implementar una meta movible.
- Capítulo 7: Crearemos un cuarto juego estilo Pong en el cual consiste en crear paredes, un par de barras e inclinar las barras y paredes según el ángulo de impacto de la pelota.
Qué aprenderás en este curso de Forge2D con Flutter y Flame
- Crear proyectos en Flutter listos para juegos 2D.
- Fundamentos de Forge2D: cuerpos, fixtures, fuerzas, colisiones y contactos.
- Aplicar físicas a personajes y objetos del mundo del juego.
- Construir juegos de plataformas con movimientos realistas.
- Implementar proyectos tipo Mario con tilemaps, enemigos y obstáculos.
- Ajustar animaciones, saltos y colisiones para que tu juego se sienta profesional.
Este curso es la segunda parte del curso/libro de Flutter y Flame
Puedes ver demos de las apps creadas en: