Creación De Un Motor De Videojuegos 2D Multiplataforma De Código Abierto

Creación De Un Motor De Videojuegos 2D Multiplataforma De Código Abierto

Trabajo Fin de Grado JAGE (JustAnotherGameEngine): Creación de un motor de videojuegos 2D mu ti! ata"orma de código abierto Autor#es Rub%n Tomás Gracia Director#es Eduardo 'ena (ieto Grado en )ngenier*a )nformática Escue a de )ngenier*a + Ar,uitectura 2-./ Repositorio de la Universidad de Zaragoza – Zaguan http://zaguan.unizar.es Para mi abuelo Juan y mi tío abuelo Mateo, por ser quienes más influyeron en mi interés por los videojuegos Agradecimientos A mi fami ia, !or nunca rechazar mi afición !or os videojuegos2 A mi novia, !or apo+arme siem!re + a+udarme a seguir trabajando. A mis amigos, !or a+udarme en as !ruebas de !royecto. JAGE (JustAnotherGameEngine): !reación de un motor de videojuegos $% multiplataforma de código abierto Resumen 3oy en d*a os videojuegos est&n más !resentes en a vida diaria de o ,ue nunca han estado. 4on mucho más accesib es !ara a gente con !ocos medios0 Asimismo, a e5tensión de a )nformática ha !ropiciado e hecho de ,ue mucha gente ha+a !odido adoptar a !rogramación como hobb+2 Esto ha desencadenado un estal ido en e mundo de os videojuegos0 de gente ,ue !rograma sus !ropios videojuegos con bajo (o ning6n) !resu!uesto !ara uego !ub icar os en )nternet: conocidos como juegos indie0 est&n ahora en su mejor momento. Todo esto ha evado a cabo una retroalimentación !or a ,ue cada ve1 os videojuegos están más ace!tados0 + m&s gente ,uiere hacer su !ropio juego. 'uchas !ersonas no ,uiere un videojuego comercial0 solo e5! otar su ado art*stico en un mundo ,ue disfrutan0 + !or e o cada ve1 han surgido m&s herramientas ,ue !ermiten hacer juegos con un esfuer1o reducido: os motores2 En este !royecto se im! ementa, usando Java, desde cero + en código abierto, un motor de videojuegos 2D con a " e5ibi idad como m&5ima !rioridad2 Para demostrar dicha " e5ibi idad0 se han creado tres juegos com! etamente distintos con % 0 ,ue han !ermitido e5! orar todas as !osibi idades ,ue da e motor0 as* como servir de retroalimentación !ara e motor + saber ,u% era necesario cambiar en %ste !ara cum! ir os objetivos !ropuestos2 El !ro+ecto !retende ser una a+uda a todas as !ersonas ,ue ,uieren !robar e desarrol o de videojuegos0 tanto !ara aque as ,ue no saben ni ,uieren saber nada de !rogramación0 como !ara as ,ue ,uieren desarrol ar un motor !ropio, !uesto ,ue e !royecto se ha desarrol ado bajo una icencia de código abierto. IV Índice de contenido 1. INTRODUCCIÓN.........................................................................................................1 1.1. Objetivos................................................................................................................1 1.2. Metodología y herramientas..................................................................................1 1.3. Contenido de la memoria.......................................................................................2 1.4. Licencia usada........................................................................................................2 2. TECNOLOGÍA UTILIZADA.......................................................................................3 2.1. Por qué Java...........................................................................................................3 2.2. Por qué Gradle.......................................................................................................4 3. IMPLEMENTACIÓN DE LA BASE DEL MOTOR...................................................6 3.1. Requisitos funcionales...........................................................................................6 3.2. Extensibilidad del motor........................................................................................7 3.3. Base del motor.......................................................................................................9 4. IMPLEMENTACIÓN DE LAS EXTENSIONES......................................................11 4.1. Por qué un RPG, Tetris y Scramble.....................................................................11 4.2. Extensión RPG: JAGEmodules...........................................................................11 4.2.1. Patrón Composite.........................................................................................12 4.2.2. Gestor de recursos........................................................................................13 4.2.3. Datos de la partida........................................................................................13 4.2.4. Las implementaciones de GameState: modos de juego...............................14 4.3. Extensión Tetris: JAGEtetrisplugin.....................................................................16 4.4. Extensión Scramble: JAGEscrambleplugin.........................................................17 5. CONCLUSIONES.......................................................................................................19 5.1. Cronograma..........................................................................................................19 5.2. El futuro del proyecto..........................................................................................19 5.3. Opinión personal..................................................................................................20 Bibliografía......................................................................................................................21 ANEXO I: Descarga, compilación y ejecución...............................................................22 ANEXO II: Manual de usuario de RPG..........................................................................25 ANEXO III: Manual de usuario Tetris............................................................................30 ANEXO IV: Manual de usuario Scramble......................................................................32 V 1. INTRODUCCIÓN 8n motor de videojuegos es un !rograma ,ue se encarga de as tareas m&s com! icadas + re!etitivas, como !or ejem! o e renderi1ado de gráficos, + os c& cu os "*sicos2 A !artir de e o, e usuario !uede sim! emente dedicarse a definir as escenas ,ue uego e motor se encargará de hacer funcionar + de mostrar !or !antal a. 4in embargo, a ma+or*a de motores ,ue e5isten actualmente0 o son demasiado com! ejos !ara un juego 2D, demasiado senci os0 o demasiado caros2 'otores como 8nreal Engine. + Cr+engine2 son motores com! etamente enfocados a juegos 9D + tienen un reducido soporte 2D. 8nit+ Engine9 cada ve1 es mejor !ara os juegos 2D, sin embargo, sigue siendo más enfocado al 9D + es demasiado general !ara juegos en 2D. Game 'aker; es un buen motor 2D0 sin embargo su !recio !ara !oder an1ar un juego en <inu5 +a asciende a os =.;>2>>0 + su enguaje de scri!ting es bastante imitado. Y $PG 'aker@, un motor !ara videojuegos 2D $PG con e ,ue se !ueden hacer juegos decentes sin saber !rogramar nada0 + ,ue sabiendo !rogramar !uedes modificar o como ,uieras0 debido a ,ue todo e motor est& escrito en $ub+A.2B0 tiene muchas versiones distintas0 incom!atib es entre s*0 a un !recio demasiado e evado !ara alguien ,ue crea videojuegos sim! emente como hobb+2 Con e mercado de motores ,ue hay actualmente0 este !royecto ,uer*a !roponer una alternativa totalmente gratuita !ara iniciar a aque as !ersonas ,ue crean videojuegos como disfrute !ersonal0 !ero a a ve1 !ermitiendo crear juegos !erfectamente comerciales2 1.1. Objetivos El objetivo es desarrol ar un motor de videojuegos 2D com! etamente gratuito, ,ue !ermita a os usuarios crear videojuegos sin tener !or ,u% saber !rogramar0 ,ue funcione tanto en Cindows como en <inu50 + ,ue !ermita a fáci creación + distribución de e5tensiones de motor !ara !ermitir a creación de juegos com! etamente diferentes con e mismo motor2 1.2. Metodología y herramientas Este !royecto se ha evado a cabo en Java .2E0 usando a ibrer*a 4 ic:2D /0 ,ue faci ita e renderi1ado !or !antal a encapsu ando as amadas a F!enG<A>B en una A7) simi ar a a de Java2D[@B2 Para e iminar a necesidad de ,ue e usuario bus,ue + en ace as ibrerias al !royecto, as* como de crear os archivos ejecutab es finales0 se ha usado Grad eE como gestor de de!endencias + de com!i ación2 1 Unreal Engine. [Citado el 19/06/2016] https://www.unrealengine.com 2 CryEngine. [Citado el 19/06/2016] https://www.cryengine.com 3 Unity 3D. [Citado el 19/06/2016] https://unity3d.com 4 Game Maker. [Citado el 19/06/2016] http://www.yoyogames.com/gamemaker 5 RPG Maker. [Citado el 19/06/2016] http://www.rpgmakerweb.com 6 Slick2D. [Citado el 19/06/2016] http://slick.ninjacave.com 7 Gradle. [Citado el 19/06/2016] http://gradle.org 1 Por 6 timo, se ha uti i1ado Git3ubG como ! ataforma de gestión de configuraciones + de distribución0 debido a su gran uso en e softDare de código abierto !or sus !osibi idades de !artici!ación !6b ica en dichos !royectos0 as* como de su uso como copia de seguridad en caso de ,ue ha+a alg6n !rob ema con e com!utador usado. 1.3. Contenido de la memoria Esta memoria se divide en tres !artes c aramente diferenciadas2 Primero, se detal ar& e !rogreso de an& isis de entorno de os motores + enguajes de !rogramación ,ue con evó a a e ección de Java como enguaje de desarrol o, + de as in" uencias ,ue ha tenido e !royecto de otros motores + videojuegos2 4egundo, se detal ará cómo se ha im! ementado e motor + sus caracter*sticas m&s im!ortantes ,ue han !ermitido cum! ir os objetivos !ropuestos. Tercero, se e5! icará cómo se ha e5tendido e motor !ara os distintos juegos ,ue se han creado !ara demostrar todas sus capacidades2 1.4. Licencia usada Para este !royecto, se ha optado !or una icencia ()*+0 debido a ,ue

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    41 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us