Cómo Crear Videojuegos en C++ - Paso a Paso - Parte 2

Sdílet
Vložit
  • čas přidán 24. 07. 2024
  • En este video, te explico cómo dar el primer paso para desarrollar videojuegos con C++ desde 0; siendo este el segundo de una lista.
    De corazón, me hubiese encantado poder ver una serie de vídeos así cuando me preparaba las entrevistas para las empresas top de programación de videojuegos en C++ como: RockStar, Paradox Interactive, DECA Games o Activision Blizzard King entre otras; con la finalidad de tener un espacio en el que potenciar mis conocimientos y probar las ideas.
    Utilizaremos el framework SDL2 (Simple DirectMedia Layer) que nos permitirá interactuar con el sistema a bajo nivel y nos proporcionará herramientas tales como: abrir una ventana, manejar los eventos de teclado o crear un renderizador entre otros.
    ══════════════
    ENLACES MENCIONADOS
    👉 Github del canal: github.com/AlejandroSuau/thet...
    👉 Github del vídeo: github.com/AlejandroSuau/thet...
    👉 Página oficial de SDL: libsdl.org/
    👉 Github de SDL: github.com/libsdl-org/SDL
    👉 Github de SDL_Image: github.com/libsdl-org/SDL_image
    ══════════════
    SÍGUEME EN REDES SOCIALES
    👉🏻 Mi Instagram: / the.true.boolean
    ══════════════
    ÍNDICE DEL VÍDEO
    00:00 ¿Qué vamos a ver?
    00:20 Creación del próximo juego
    00:28 Compilación de SDL para Window añadida
    00:56 Paso 1
    01:20 Paso 2
    01:58 Paso 3
    02:20 Paso 4
    03:47 Paso 5
    04:48 Paso 6
    06:44 Paso 7
    08:15 Resultado final
    ══════════════
  • Věda a technologie

Komentáře • 7

  • @sarasm0630
    @sarasm0630 Před 18 dny +1

    Me encantas 🤩

  • @dani08sv
    @dani08sv Před 17 dny +1

    Me está siendo super útil y me esta viniendo bien repasar la base de como empezar un proyecto con SDL, lo que no veo es porque generar clases innecesarias como por ejemplo Engine. En el main() tengo lo que seria el engine directamente(Instancio la clase Game y tengo el bucle de run y voy llamando a las funciones Game.handleEvents, Game.update i Game.render) porque el ejecutable en si, ya considero que sea el propio engine. No acabo de ver el sentido de la clase Engine. Igual con los siguientes videos lo veo más.

    • @The.TrueBoolean
      @The.TrueBoolean  Před 17 dny +1

      Me alegra leer eso Dani! 🙂
      Es una muy buena pregunta, trato de responderte.
      En la programación, siempre hay cientos de caminos para lograr el mismo resultado, eso es lo "bonito", todos podemos ser creadores de nuestra propia solución. Sin embargo, cada camino que tomamos, nos ofrece unos beneficios y unas dificultades.
      En mi caso, he optado por abstraer los conceptos relacionados con el Engine y encapsularlos en esa clase: como el bucle principal, el manejo de eventos, la carga de texturas, etc. Así, cuando cree un juego, puedo mantener una referencia a esa clase y hacer uso de todas sus herramientas. Hacerlo así me permite tener un main.cpp simple, que únicamente se encargue de encender y comenzar el juego.
      Tú solución, es otro camino diferente que también te permite obtener lo que deseas. Sin embargo, presenta el inconveniente de no permitirte reutilizar la clase Engine, y hacer crecer el fichero main.cpp a medida que añadas funcionalidades a tu motor. Aunque quizás, es lo que necesitas y también está fantástico así 🙂.
      Estoy seguro de que en el vídeo del domingo, con el desarrollo del Flappy Bird, podrás ver más claramente a qué me refiero.
      ¿Mejor así? Abrazo

    • @dani08sv
      @dani08sv Před 17 dny

      @@The.TrueBoolean Sí, me imaginaba que era por eso. Otra cosa es el renderer que lo haces unique_ptr pero porque supongo que, viendo que va acabar siendo un flappy bird, vas a poder renderizar todo en el mismo sitio. Yo tengo el propio renderer dentro de cada objeto, con un diseño de que cada objeto se renderiza a si mismo en cadena(no se si por esto estoy teniendo bugs), primero tengo table.render(), luego dentro player1.render(), dentro tengo handCards.render() y luego acaba renderizandose cada carta ella misma. Lo que no me gusta que estoy arrastrando y pasando por todo el puntero al renderer y tambíen que tengo la logica y el renderizado en cada objeto, pero no se si el bug me puede estar viniendo por esto.

  • @dani08sv
    @dani08sv Před 17 dny +1

    No veo el porque cargar todas las texturas de una y al principio. Si juego tiene muchas texturas, vas a cargar todo al principio consumiendo memoria de manera innecesaria hasta que se usen las texturas, que igual ni se usan porque el usuario no va a cierto sitio o no ocurre nada que las utilice?

    • @The.TrueBoolean
      @The.TrueBoolean  Před 17 dny +1

      Totalmente Dani. Si te fijas, estamos cargando los 3 sprites del pájaro que conforman la animación y que sí vamos a utilizar. Sin embargo, también te diré que cargar todos los assets al comienzo del juego puede tener ciertos beneficios y puede ser una estrategia a considerar. Entre ellos encontramos el de prevenir al usuario de tiempos de carga durante el propio juego, produciendo así una sensación más fluída.

    • @dani08sv
      @dani08sv Před 17 dny +1

      @@The.TrueBoolean Sí eso también esta bien y tiene sentido, es que lo que tengo me parece que requiere demasiada ram porque lo comparo con otros juegos y no me cuadra estar usando casi 300MB(de momento) y me da la sensación de estar haciéndolo mal😅.