[en] Game development has been simplified so much in the last 25 years, they were programmed in pure assembly language, now there are tools where most of the creation of the videogame is hidden behind a high-level and much more intuitive layer. These tools are game engines and frameworks. One of the most popular is the XNA framework, created and currently discontinued by Microsoft. The target of this work is the creation of a JavaScript library which imitates the functionality offered by XNA, for the creation of 2D games, the library will interact with the HTML5 element Canvas. JavaScript has been chosen because it's one of the most flexible and popular programming languages, because of his regular updating and for the huge content created by users. Thanks to its characteristics, it allows executing games in any modern web browser, this makes posible the execution of games in smartphones too. The library must be able to render images on Canvas, load resources in memory, play sounds, manage animations and capture keyboard and mouse events. Aditionally, for the purpose of create more complete games, the library must offer support for 2D physics (gravity, collision detection, etc.), manage the game camera, and manage geometric elements and physic magnitudes (points, vectors, etc.). In this document we will analyze the JavaScript programmed classes and elements that allow to create games with all the functionality previously exposed, as well as the tests done to verify the correct behaviour of the library and the demos included which show little game examples made with the library.

[es] El desarrollo de videojuegos se ha simplificado mucho en los últimos 25 años, antes se programaban en puro lenguaje ensamblador, ahora existen herramientas donde la mayor parte de la creación del juego se oculta tras una capa de alto nivel mucho más intuitiva. Esas herramientas son los motores gráficos y los frameworks. Uno de los más populares es el framework XNA, creado y actualmente descontinuado por Microsoft. El objetivo de este trabajo es la creación de una librería JavaScript que imite la funcionalidad ofrecida por XNA para el desarrollo de videojuegos 2D, todo ello interactuará con el elemento HTML5 Canvas. Se ha elegido JavaScript por ser uno de los lenguajes más flexibles y populares actualmente, por su continua actualización y el inmenso contenido creado por los usuarios. Gracias a sus características, permite ejecutar juegos en cualquier navegador moderno, esto hace posible la ejecución de los juegos también en smartphones. La librería debe ser capaz de renderizar imágenes en Canvas, cargar recursos en memoria, reproducir sonidos, gestionar animaciones y capturar eventos de teclado y ratón. Adicionalmente, para poder crear juegos más completos, deberá dar soporte para físicas 2D (gravedad, colisiones, etc.), gestionar la cámara de juego y manejar elementos geométricos y magnitudes físicas (puntos, vectores, etc.). En el presente documento se analizarán las clases y elementos programados en JavaScript que permiten crear videojuegos con toda la funcionalidad anteriormente expuesta, así como las pruebas realizadas para la verificación del correcto funcionamiento de la librería y las demos incluidas que muestran pequeños juegos de ejemplo creados con la misma.