Patrones y Arquitecturas de Desarrollo de Juegos en JavaScript

Rate this content
Bookmark

En el ámbito del desarrollo de juegos, la arquitectura y los patrones de diseño adecuados pueden marcar la diferencia. Esta sesión profundiza en el mundo de los patrones y arquitecturas de desarrollo de juegos en JavaScript, ofreciendo una exploración exhaustiva de las técnicas y estrategias utilizadas para crear juegos atractivos y bien estructurados.

FAQ

El sistema de entidad-componente (ECS) es un patrón arquitectónico de software que representa los juegos como entidades y sus componentes como comportamientos en los datos. Las entidades son colecciones de componentes que, juntos, forman objetos en el juego, como un automóvil en un videojuego, que puede tener componentes como velocidad y posición.

Los patrones y arquitecturas en el desarrollo de juegos ayudan a crear código más modular, mantenible y extensible. Facilitan la gestión del juego al simplificar el proceso de desarrollo y prevenir errores comunes, lo que mejora el rendimiento y la interacción del usuario con el juego.

Un bucle de juego es una secuencia repetitiva de instrucciones que controla el flujo de un juego. Incluye pasos como recibir entradas del jugador, actualizar el estado del juego, renderizar cambios en la pantalla y esperar antes de comenzar el ciclo nuevamente. Este proceso es fundamental en casi todos los videojuegos.

Desacoplar la lógica del juego del renderizado mejora el rendimiento y la flexibilidad del juego. Permite que la lógica del juego y la representación visual operen de manera independiente, facilitando cambios en la apariencia del juego sin afectar su funcionamiento interno, lo que también simplifica la depuración y el mantenimiento del código.

El paso de tiempo fijo asegura una cantidad constante de tiempo para cada iteración del bucle de juego, lo que proporciona estabilidad y previsibilidad. El paso de tiempo variable, por otro lado, permite adaptar el tiempo de cada iteración a diferentes factores como entradas del jugador o eventos del juego, ofreciendo flexibilidad y una respuesta más dinámica.

ECS promueve la reutilización de código al permitir que los componentes se definan una vez y se reutilicen en múltiples entidades. Esto facilita la creación de nuevos objetos de juego al combinar componentes existentes de manera flexible, lo que también ayuda a mantener un acceso eficiente a los datos y a escalar el juego más fácilmente.

En ECS, los sistemas son colecciones de entidades y componentes que ejecutan tareas específicas. Al separar las funciones y operar sólo con los componentes necesarios para una tarea, los sistemas mejoran la eficiencia del juego al reducir la carga de trabajo y facilitar la gestión del código, lo que a su vez mejora el rendimiento general del juego.

Olayinka Atobiloye
Olayinka Atobiloye
28 min
28 Sep, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy aborda el diseño y la arquitectura de juegos, incluyendo los sistemas de componentes de entidades, los bucles de juego y la desvinculación de la lógica del juego del renderizado. Los sistemas de componentes de entidades son populares en el desarrollo de juegos en JavaScript para representar juegos como entidades y sus componentes como comportamiento sobre datos. Los bucles de juego controlan el flujo del juego y actualizan su estado, con diferentes arquitecturas como el paso de tiempo fijo y el paso de tiempo variable. La desvinculación de la lógica del juego del renderizado mejora el rendimiento y la flexibilidad, permitiendo actualizaciones independientes y la fácil adición de nuevas características. Tener una clara separación de responsabilidades en el desarrollo de juegos mejora el rendimiento, aumenta la flexibilidad y facilita la depuración.

1. Introducción al diseño y arquitectura de juegos

Short description:

¡Hola a todos! Hoy les voy a guiar a través del diseño y la arquitectura de juegos. Cubriremos patrones y arquitecturas comunes en el desarrollo de juegos, incluyendo sistemas de entidad-componente, bucles de juego y desacoplamiento de la lógica del juego del renderizado. Comencemos con el sistema de entidad-componente, que es un patrón popular en el desarrollo de juegos. Representa los juegos como entidades y sus componentes como comportamiento en los datos. En el desarrollo de juegos en JavaScript, los sistemas de entidad-componente son esenciales.

Hola a todos, muchas gracias por venir a mi charla hoy. Mi nombre es Olayinka Atobele y hoy les guiaré a través del diseño y la arquitectura de juegos. Antes de comenzar, me gustaría darles una breve introducción sobre quién soy. Soy estudiante de ingeniería informática en la Universidad de Lagos. También soy ingeniero de software, escritor técnico y experto en GitHub Campus. Me apasiona mucho la diversidad e inclusión en la tecnología. Básicamente, organizo eventos y programas dirigidos hacia eso. Hoy hablaremos sobre los patrones y arquitecturas de desarrollo de juegos en JavaScript. Básicamente, les presentaré algunos patrones y arquitecturas comunes que pueden ayudarnos a acelerar el desarrollo de juegos en JavaScript. Entonces, ¿qué son exactamente el desarrollo de juegos, los patrones y las arquitecturas? Son soluciones razonables que se pueden utilizar para resolver algunos problemas comunes que enfrentamos en el desarrollo de juegos. El desarrollo de juegos puede volverse fácilmente voluminoso, especialmente a medida que escalas tus juegos, a medida que tus juegos se vuelven más grandes y poderosos, puede volverse más difícil de mantener, más difícil de expandir o extender sus características. Básicamente, lo que hacen los buenos patrones y arquitecturas es ayudarte a hacer tu código más modular, más mantenible, más extensible y, a largo plazo, incluso puedes mejorar el rendimiento de tu juego, qué tan bien funciona, qué tan bien los usuarios pueden interactuar con tus juegos y qué tan escalable es, qué tan fácil es para ti agregar otras características o incluso incorporar nuevos recursos a tus juegos. Entonces, ¿por qué es importante? Como mencioné anteriormente, el desarrollo de juegos es una tarea compleja. Es desafiante. Puede volverse fácilmente complejo. Los patrones y arquitecturas, tener buenos patrones y arquitecturas en su lugar, te ayudará a simplificar el proceso de desarrollo de los juegos y también ayudará a que la gestión del juego sea más manejable. Además, incluso podría ayudarte a prevenir algunos errores comunes, ya sabes, tener algunos errores en tus juegos. Entonces, ¿qué vamos a cubrir en esta charla? Vamos a comenzar... vamos a cubrir algunos patrones comunes e importantes en el desarrollo de juegos. Hablaremos sobre los sistemas de entidad-componente, ECS, luego hablaremos sobre los bucles de juego y luego hablaremos sobre el desacoplamiento, ya sabes, la lógica del juego del renderizado. Entonces, ahora comencemos con el sistema de entidad-componente. Entonces, el sistema de entidad-componente, ECS, es básicamente un patrón popular para el desarrollo de juegos. El sistema de entidad-componente es un patrón arquitectónico de software que representa los juegos como entidades y sus componentes como comportamiento en los datos. Esto tiene palabras grandes, así que solo para simplificarlo, voy a usar una analogía. Así que supongamos que muchos de nosotros estamos familiarizados con los juegos de Lego, los bloques de Lego, así que supongamos que estás construyendo un automóvil con bloques de Lego, ¿verdad?, entonces probablemente tendrás las ruedas, el volante, el cuerpo, todas esas diferentes partes, todos esos diferentes componentes, serán tus componentes. Básicamente, solo representan, ya sabes, el comportamiento, solo representan, como, una parte en particular, como los datos de todo tu juego, ¿verdad?, así que todo tu juego y, básicamente, las entidades son solo una colección de los componentes. Entonces, cuando, digamos, terminas de ensamblar todos tus diferentes bloques de Lego y tienes un automóvil. Entonces, en esa situación, como tu automóvil, que es básicamente, como, una colección de los diferentes componentes, es básicamente, en este caso, tu entidad, porque es solo, como, estás ensamblando diferentes componentes juntos, ¿verdad? Entonces, tus diferentes componentes que, básicamente, representan un comportamiento, como un dato en particular de tus componentes, ¿verdad? Básicamente, solo representan, ya sabes, una sola, ya sabes, pieza, como un solo dato, un solo comportamiento, y luego tu entidad es básicamente, ya sabes, una colección de diferentes componentes que, ya sabes, tal vez representen, como, una entidad en particular, un objeto en tu juego. Así que ahora, volviendo al desarrollo de juegos en el mundo de JavaScript, supongamos que estás construyendo,

2. Explorando el Sistema de Entidad-Componente (ECS)

Short description:

En el desarrollo de juegos, las entidades representan objetos en el juego, mientras que los componentes son los datos adjuntos a las entidades. Los sistemas son colecciones de entidades y componentes que realizan tareas específicas. ECS promueve la reutilización de código, admite un acceso eficiente a los datos y permite una fácil escalabilidad. Las entidades se crean y destruyen en tiempo de ejecución, y los sistemas se actualizan regularmente. ECS es popular porque separa el comportamiento y los datos, lo que hace que el código sea más manejable. Ejemplo de código: componentes de posición y velocidad con un sistema de movimiento.

digamos, un juego de video, ¿verdad? En tu juego de video, tal vez tengas un automóvil que se está moviendo o algo así. En ese caso, digamos que tu automóvil va a tener, ya sabes, velocidad, ¿verdad?, vas a tener una velocidad, vas a tener una posición, como, donde se encuentra actualmente tu automóvil. Todas esas dos cosas son un poco tus componentes, ¿verdad?, tu velocidad y tu posición, son componentes. Pero el automóvil en sí, que va a ser, ya sabes, como, ya sabes, un cierto automóvil va a tener una velocidad, va a tener una posición, va a tener un color, el automóvil en sí va a ser una entidad, porque básicamente es solo, ya sabes, una colección de diferentes componentes reunidos. Entonces, básicamente, ese es el concepto principal detrás de ECS. Básicamente queremos separar, ya sabes, diferentes, quieres separar el diferente[56] comportamiento y data en tus juegos en componentes. Y de esa manera, es fácil para ti, es básicamente fácil para ti, ya sabes, elegir cualquier componente que necesites. Ya sabes, al construir una entidad o para crear un objeto en tu juego, es fácil para ti, ya sabes, simplemente elegir diferentes componentes, ya sabes, como parte de las entidades. Y básicamente como, ya sabes, construir un nuevo, ya sabes, un nuevo objeto para tu juego, como directamente de la caja. Entonces, y básicamente, las entidades son identificadores únicos, como mencioné, y los componentes son solo data que se adjuntan a las entidades. Ahora, hablando de los sistemas, los sistemas son, por otro lado, básicamente solo una colección de entidades y componentes que realizan una tarea específica. Entonces, solo para, nuevamente, usando esa analogía. Supongamos que en una situación en la que tienes, tal vez, quieres realizar una tarea, digamos, en el caso de un juego de video, ¿verdad?, donde tienes, como, un automóvil, tu juego de video y quieres, básicamente, digamos, mover el automóvil. En esa situación, el único componente que realmente necesitas para realizar esa tarea es, digamos, posición y velocidad, ¿verdad? En este caso, probablemente no tienes ningún interés en, ya sabes, tal vez el color del automóvil o qué tan grande es el automóvil porque no afectan la tarea particular que deseas realizar en ese momento específico, ¿verdad? Entonces, básicamente, lo que hace el sistema es, básicamente, como, funciones que te ayudan a, como, separar, como, tareas específicas y los componentes específicos que están relacionados para que realmente puedas realizar la tarea. Y, básicamente, a largo plazo, lo que hace es que facilita, ya sabes, gestionar tu código, hace que tu código sea más manejable. Entonces, ¿cómo funciona ECS? Las entidades se crean y destruyen en tiempo de ejecución por tu motor de juego. Las entidades son básicamente solo objetos en tus juegos. Agregas componentes, tu motor de juego agrega, ya sabes, o elimina componentes de ellas en tiempo de ejecución. Eso es de tus entidades, ¿verdad? Y luego tus sistemas se actualizan regularmente, ya sabes, según las operaciones que realizas o que el usuario realiza dentro de los juegos. Entonces, ¿por qué ECS es tan popular, ya sabes, es una arquitectura de desarrollo de juegos muy popular, ¿verdad? ¿Y por qué es así? Es una buena elección para el desarrollo de juegos porque, en primer lugar, promueve la reutilización de código, ¿verdad? Como explicamos anteriormente, tienes, ya sabes, componentes específicamente definidos, lo que significa que puedes agarrar fácilmente un componente y adjuntarlo a diferentes entidades, no solo a un tipo de entidad. Puedes puedes crear fácilmente un objeto de juego modificado. Básicamente, todo lo que tienes que hacer es, ya sabes, definir una entidad de juego y simplemente crear una nueva, adjuntar algunos componentes a ella. Y también puede ayudar a admitir un acceso eficiente a los data, como, ya sabes, separación de, como, todos tus data en componentes bien definidos. Y se puede escalar fácilmente, ya sabes, a medida que tu juego se vuelve más grande, puedes escalarlo fácilmente. Entonces, solo para agregar, como, un pequeño ejemplo de código, solo para darle sentido a lo que he estado hablando hasta ahora. Entonces, en este ejemplo aquí, puedes ver que tienes, tienes un componente de posición, tienes un componente de velocidad. Y tu componente de posición, puedes ver, básicamente, solo tienes tu eje X y eje Y, ¿verdad? Y tu componente de velocidad, también tienes tu eje X y Y. Y luego tienes tu sistema de movimiento. Y esos, okay, volviendo atrás. Los componentes, como,

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
¿Tienes un producto grande construido por muchos equipos? ¿Estás luchando para lanzar a menudo? ¿Se convirtió tu frontend en un monolito inmantenible masivo? Si, como yo, has respondido sí a cualquiera de esas preguntas, ¡esta charla es para ti! Te mostraré exactamente cómo puedes construir una arquitectura de micro frontend con Remix para resolver esos desafíos.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Concurrent React y Server Components están cambiando la forma en que pensamos sobre el enrutamiento, la renderización y la obtención de datos en las aplicaciones web. Next.js recientemente compartió parte de su visión para ayudar a los desarrolladores a adoptar estas nuevas características de React y aprovechar los beneficios que desbloquean.En esta charla, exploraremos el pasado, presente y futuro del enrutamiento en las aplicaciones de front-end y discutiremos cómo las nuevas características en React y Next.js pueden ayudarnos a arquitectar aplicaciones más eficientes y con más funciones.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
Remix es un marco de trabajo web que te ofrece el modelo mental simple de una aplicación de múltiples páginas (MPA) pero el poder y las capacidades de una aplicación de una sola página (SPA). Uno de los grandes desafíos de las SPA es la gestión de la red que resulta en una gran cantidad de indirecciones y código defectuoso. Esto es especialmente notable en el estado de la aplicación que Remix elimina por completo, pero también es un problema en los componentes individuales que se comunican con un punto final de backend de un solo propósito (como una búsqueda de combobox, por ejemplo).
En esta charla, Kent demostrará cómo Remix te permite construir componentes de interfaz de usuario complejos que están conectados a un backend de la manera más simple y poderosa que hayas visto. Dejándote tiempo para relajarte con tu familia o lo que sea que hagas para divertirte.
Entendiendo la Arquitectura Fiber de React
React Advanced Conference 2022React Advanced Conference 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
Hemos escuchado mucho sobre la Arquitectura Fiber de React, pero parece que pocos de nosotros la entendemos en profundidad (o tenemos el tiempo para hacerlo). En esta charla, Tejas repasará su mejor intento de entender Fiber (revisado por otros expertos), y lo presentará de una manera 'explicar-como-si-tuviera-cinco años'.
Haciendo JavaScript en WebAssembly Rápido
JSNation Live 2021JSNation Live 2021
29 min
Haciendo JavaScript en WebAssembly Rápido
Top Content
JavaScript en el navegador se ejecuta muchas veces más rápido de lo que lo hacía hace dos décadas. Y eso sucedió porque los proveedores de navegadores pasaron ese tiempo trabajando en intensivas optimizaciones de rendimiento en sus motores JavaScript.Debido a este trabajo de optimización, JavaScript ahora se está ejecutando en muchos lugares además del navegador. Pero todavía hay algunos entornos donde los motores JS no pueden aplicar esas optimizaciones de la manera correcta para hacer las cosas rápidas.Estamos trabajando para resolver esto, comenzando una nueva ola de trabajo de optimización de JavaScript. Estamos mejorando el rendimiento de JavaScript para entornos completamente diferentes, donde se aplican reglas diferentes. Y esto es posible gracias a WebAssembly. En esta charla, explicaré cómo funciona todo esto y qué vendrá a continuación.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Crea un Juego Con PlayCanvas en 2 Horas
JSNation 2023JSNation 2023
116 min
Crea un Juego Con PlayCanvas en 2 Horas
Top Content
Featured WorkshopFree
Steven Yau
Steven Yau
En esta masterclass, construiremos un juego utilizando el motor WebGL de PlayCanvas desde el principio hasta el final. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la escritura de scripts, la creación de UI y mucho más.
Tabla de contenido:- Introducción- Introducción a PlayCanvas- Lo que vamos a construir- Agregando un modelo de personaje y animación- Haciendo que el personaje se mueva con scripts- 'Falsa' carrera- Agregando obstáculos- Detectando colisiones- Agregando un contador de puntuación- Fin del juego y reinicio- ¡Resumen!- Preguntas
Nivel de la masterclassSe recomienda familiaridad con los motores de juegos y los aspectos del desarrollo de juegos, pero no es obligatorio.
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
React Day Berlin 2022React Day Berlin 2022
86 min
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
Top Content
WorkshopFree
Hussien Khayoon
Kahvi Patel
2 authors
Usar una biblioteca puede parecer fácil a primera vista, pero ¿cómo eliges la biblioteca correcta? ¿Cómo actualizas una existente? ¿Y cómo te abres camino a través de la documentación para encontrar lo que quieres?
En esta masterclass, discutiremos todos estos puntos finos mientras pasamos por un ejemplo general de construcción de un editor de código usando CodeMirror en React. Todo mientras compartimos algunas de las sutilezas que nuestro equipo aprendió sobre el uso de esta biblioteca y algunos problemas que encontramos.
PlayCanvas de principio a fin: la versión rápida
JS GameDev Summit 2022JS GameDev Summit 2022
121 min
PlayCanvas de principio a fin: la versión rápida
Top Content
WorkshopFree
João Ruschel
João Ruschel
En esta masterclass, construiremos un juego completo utilizando el motor PlayCanvas mientras aprendemos las mejores prácticas para la gestión de proyectos. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la gestión de activos, scripting, audio, depuración, y mucho más.
Pruebas de Aplicaciones Web utilizando Cypress
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Pruebas de Aplicaciones Web utilizando Cypress
WorkshopFree
Gleb Bahmutov
Gleb Bahmutov
Este masterclass te enseñará los conceptos básicos de cómo escribir pruebas de extremo a extremo utilizando Cypress Test Runner.
Cubriremos la escritura de pruebas, abarcando todas las características de la aplicación, estructurando las pruebas, interceptando solicitudes de red y configurando los datos del backend.
Cualquier persona que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir el masterclass.
Construye un potente DataGrid en pocas horas con Ag Grid
React Summit US 2023React Summit US 2023
96 min
Construye un potente DataGrid en pocas horas con Ag Grid
WorkshopFree
Mike Ryan
Mike Ryan
¿Tu aplicación React necesita mostrar eficientemente muchos (y muchos) datos en una cuadrícula? ¿Tus usuarios quieren poder buscar, ordenar, filtrar y editar datos? AG Grid es la mejor cuadrícula de JavaScript en el mundo y está llena de características, es altamente eficiente y extensible. En esta masterclass, aprenderás cómo empezar con AG Grid, cómo podemos habilitar la ordenación y el filtrado de datos en la cuadrícula, la representación de celdas y más. Saldrás de esta masterclass gratuita de 3 horas equipado con el conocimiento para implementar AG Grid en tu aplicación React.
Todos sabemos que crear nuestra propia solución de cuadrícula no es fácil, y seamos honestos, no es algo en lo que deberíamos estar trabajando. Estamos enfocados en construir un producto e impulsar la innovación. En esta masterclass, verás lo fácil que es empezar con AG Grid.
Prerrequisitos: React y JavaScript básicos
Nivel de la masterclass: Principiante