Desarrollo Rápido de Videojuegos

May 8, 2018 | Author: José Manuel Cristiani Grajales | Category: Video Games, Software, Areas Of Computer Science, Computing, Technology
Share Embed Donate


Short Description

Download Desarrollo Rápido de Videojuegos...

Description

´ DESARROLLO R APIDO DE VIDEOJUEGOS Alvaro L´  Lopez Ortega ´ 

[email protected] ´ 1. INTRODUCC INTRODUCCIION Un videojuego es b´ basicamente a´ sicamente un programa para el entretenimiento. En los ultimos u´ ltimos anos, n˜ os, esta clase de pogramas ha sufrido grandes cambios, aunque todos ellos siguen manteniendo en com´un un una caracteristica que no ha variado en decenas decenas de anos: ˜ buscan ser lo m´as as espectaculares posibles, tanto en el aspecto gr´afico afico como en el sonoro. Se ha avanzado mucho en este aspecto. Los ordenadores sobre los que se ejecutan son radicalmente m´as as potentes, y por lo tanto se han creado progresivamente progresivamente videojuegos m´ mas a´ s y m as a´ s complejos. Por otro lado, este aumento de capacidad en los ordenadores ha permitido un nuevo enfoque del desarrollo de ˜ videojuegos. Hace ocho a˜ anos, pr´ practicamente a´ cticamente la totalidad de los videojuegos eran desarrollados por completo en lenguaje ensamblador. Necesidades de eficiencia y acceso a bajo nivel a dispositivos tales como la tarjeta de video o la de sonido hacian que este tipo de programaci´on on fuese el est´andar andar para el desarrollo de videojuegos. La situacion o´ n actual nada tiene que ver con el anterior tipo de programaci´ programacion. o´ n. Hoy en d´ d´ıa ıa los videojuegos normalmente mente se desarr desarroll ollan an en lengua lenguajes jes C/C+ C/C++, +, bas´ basandose a´ ndose en APIs APIs existentes para este tipo de programas. Actualmente la mayor´ yor´ıa ıa de los juegos se basan en librer´ librer´ıas ıas como OpenGL, Direct X o SDL, las cuales facilitan mucho el trabajo de desarrollo, as´ı como la estandarizaci estandariz acion o´ n de los mismos.

2. ESTADO ESTADO DE LOS JUEGOS JUEGOS LIBRES LIBRES En un principio, los sistemas libres fueron creados por y para desarrolladores. Esta es una situaci on o´ n que se est´ esta´ corrigiendo progresivamente para que se extiendan a toda clase de usuarios de ordenador. Si realizasemos una encuesta sobre los programas m´as as demand demandado adoss en el mundo mundo del softw software are libre, libre, uno de los grangrandes puntos destacados ser´ıan, ıan, sin lugar luga r a duda, los lo s videojuegos. En algunos de los sistemas libres, es posible ejecutar famosos juegos como la saga de Quake, Unreal o Civilization; Civilization; ahora bien, en general no se trata de software libre. Existen una serie de razones que pueden ayudar a explicar esta peque˜na na carencia dentro del software libre:

En primer lugar se trata de aplicaciones grandes. Un videojuego, aunque se suela presentar como una aplicaci´on on agradable y sencilla de utilizar, esconde una gran cantidad de trabajo. Se trata de desarrollo multidisciplinar. Al contrario que con los dem´ demas a´ s tipos de aplicaciones, el desarrollo de un videojuego no s´ solo o´ lo implica conocimientos de programaci´ programacion. o´ n. En el desarrollo de uno de estos programas intervienen papeles como los de un dise˜nador nador gr´afico afico y un m´usico. usico. Es l´ogico ogico pensar que en el desarrollo de un videojuego se ver´an an involucradas personas con perfiles profesionales bastante dispares. La raz´ razon o´ n anterior causa muchas dependencias entre los m´ modulos o´ dulos a la hora de desarrollar el programa. Es mucho m´ mas a´ s probable que se produzcan retrasos porque una de las dependencias se ha retrasado.

3. DESARROLLO DESARROLLO DE UN VIDEOJUEG VIDEOJUEGO O LIBRE Para desarrollar un videojuego libre es necesar´ necesar´ıo ıo tener en cuenta todos y cada uno de los aspectos implicados en el. e´ l. Por ejemlo, de nada sirve tener un motor gr afico a´ fico excelente si el juego carece de un material gr´ grafico a´ fico con una calidad suficiente. A continuaci´on on se expondr´an an las partes principales:

Gr´ Graficos a´ ficos : El apartado gr´ grafico a´ fico del videojuego es el m´ mas a´ s vistoso de todos. Como o´ mo basar este apartado es una de las decisiones cr´ cr´ıticas ıticas para el resultado final del juego. Hoy en d´ d´ıa ıa existen un gran n umero u´ mero de motores gr´ grafia´ ficos y librer´ librer´ıas ıas que facilitan mucho el trabajo en este punto. punto. La elecci´ elecci´on o n de uno uno u otro otro cond condic icio iona nar´ r´anel a nel renrendimiento y la portabilidad de nuestra aplicaci´on. on. M´as as adelante se expondr´an an las opciones m´as as importantes hoy en d´ıa ıa en el mundo del de l software libre. Sonoro : Tambi´ Tambien e´ n es un punto a tener en cuenta, aunque en ´ no existe una posibilidad de elecci on esta ocasion o´ n tan grande como en el punto anterior. Existen una gran variedad de librer´ librer´ıas ıas que permiten que el videojuego pueda leer una gran variedad de formatos de sonido,

incluso de librer´ıas que dan un paso m´as y nos brindan la posibilidad de dotar de caracteristicas avanzadas y bastantes novedosas al videojuego; por ejemplo, ´ sonido cuadraf onico.

L´ogica : El juego ha de tener un motor de l o´ gica, m´as o menos complejo, que haga que el juego presente una cierta complicacio´ n a los ojos del jugador. Hoy en d´ıa los motores l´ogicos de los juegos se basan en t´ecnicas de inteligencia artificial: algoritmos de caminos m´ınimos, m´aquinas de estado para implementar el comportamiento de los oponentes, etc. Media : Los gr´aficos, sonidos, modelos o texturas que se van a utilizar en el juego tambi e´ n son un punto a tener en cuenta. En este punto es probable que se vea involucrada una persona con un perfil fuera del campo de la inform´atica, lo que en algunas ocasiones no es f ´acil encontrar en el mundo del software libre. ´ 4. LIBRERIAS LIBRES Como ya se ha expuesto anteriormente, existen una serie de librer´ıas libres que facilitan mucho el desarrollo de videojuegos. En el presente apartado se van a exponer algunas de ellas:

4.1. 3D OpenGL : Se trata un API para desarrollar aplicaciones gr´aficas. Fue creado inicialmente por Silicon Graphics en 1992 y actualmente es uno de los estandares m´as importantes en la programaci o´ n de aplicaciones con capacidades 3D. Silicon Graphics en un principio desarroll´o una librer´ıa para que las aplicaciones de sus estaciones gr´aficas Iris fuesen portables entre unos modelos y otros. El nombre de esta librer´ıa era ”Iris GL τ  fu´e la predecesora de lo que actualemente es OpenGL. Una de las grandes ventajas de OpenGL es que se trata de una tecnologia abierta, y por lo tanto no esta controlada por una u´ nica compa˜nia. En este caso, existe un comit´e de estandarizaci´on, el OpenGL ARB (OpenGL Architecture Review Board). Los miembros de fundadores de este comit´e son empresas tan importantes como: SGI, Digital Equipament Corporation, IBM, Intel y Microsoft. Actualmente 3Dfx (hoy NVidia), 3DLabs, ATI, Evans & Sutherland, Hewlett-Packard, NVidia o Sun Microsystems. Otra de las ventajas de este sistema es la gigantesca base de conocimientos que existe a su alrededor. A lo largo de sus nueve an˜ os de vida se han escrito cientos de art´ıculos, libros y programas libres con los que cualquiera puede aprender a utilizar este motor gr´afico.

Crystal Space : Se trata de un motor 3D libre. Su desarrollo comenz´o en 1998 y actualmente es bastante conocido y usado en el desarrollo de juegos ’Open Source’. Las principales caracteristicas de Crystal Space son: 1. Se trata de un motor con seis grados de libertad. Esto quiere decir que la c´amara se puede mover y rotar en cualquier direcci´on en el mundo virtual que se est´a renderizando para el juego. Este es un aspecto que se da por supuesto en los dos anteriores engines, pero que no cumplen todos. Hace unos a˜nos, la potencia de las m´aquinas no era suficiente como para esta clase de render en tiempo real. Ante este problema, la solucio´ n que se adopto por regla general fu´e restringir los grados de libertad. Gracias es´ juegos tan famosos como Quake son ta optimizacion, ejecutables en m a´ quinas con una potencia reducidad (desde el punto de vista de las m´aquinas actuales). En Quake, por ejemplo, no es posible girar el punto del espectador de lado (giro con la misma Z y distinto X e Y). 2. Se trata de un motor muy portable: Actualmente soporta plataformas tales como: GNU/Linux, GNU/HURD, FreeBSD, NetBSD, DOS, win32 (Windows 9x/NT/ME/2000/XP), MacOS/X, MacOS/X Server 1.0, etc. Open Inventor : OpenInventor es un entorno de desarrollo creado por Sillicon Graphics. Se basa por completo en OpenGL y proporciona un entorno de trabajo para C++ sobre el que desarrollar aplicaciones 3D. Presenta un modelo de programaci´on basado en el manejo de escenas tridimensionales que simplifican de una forma dr´astica la programacio´ n de esta clase de aplicaciones. Incluye un gran conjunto de objetos sobre los que trabajar: cubos, pol´ıgonos, texto, materiales, c´amaras, luces, etc. Actualmente, Open Inventor es un producto libre, ya que SGI liber´o su c´odigo poco despu´es de hacer lo mismo con una implementaci o´ n de OpenGL. En este momento, las tres plataformas en las que tiene m´as fuerza Open Inventor son: estaciones gr´aficas de SGI, GNU/Linux y Windows. 4.2. 2D SDL : es una librer´ıa libre y multiplataforma enfocada a servir de base en el desarrollo de videojuegos. Actualmente SDL est´a siendo usada en varios juegos comerciales (Civilization: ’Call To Power’, Myth II ’Soulblighter’, Railroad Tycoon II o Hopkins F.B.I., entre otros). Esta librer´ıa es el resultado de una empresa que se dedicaba a portar juegos a GNU/Linux. Desde el primer momento SDL ha sido libre y Loky Games, su creadores, han desarrollado juegos comerciales basados en ella. Al contrario que otras librer´ıas, SDL

no s´olo tiene en cuenta el punto de vista gr a´ fico de la aplicaci´on, si no tambi´en otros aspectos importantes en un videojuego, como el Sonido, el acceso al CD-ROM, la posibilidad de usar Joysticks, etc. Otro de los puntos fuertes de SDL es su simplicidad. Un programador que quiera comenzar a usar esta librer´ıa u´ nicamente tiene que estar familiarizado con la programaci´o n gr´afica, el API de la librer´ıa es simple e intuitivo, por lo que la curva de aprendizaje hasta dominar SDL ser´a muy suave. Desde el punto de vista de las aplicaciones gr´aficas y en concreto juegos, la portabilidad es un aspecto que tiene cierta importancia, y que en muchas ocasiones se ha descuidado. SDL es una solucio´ n parcial para este problema, pero desde cualquier punto de vista, muy interesante. Aun trat´andose de una librer´ıa de bajo nivel, proporciona una portabilidad asombrosa.

Allegro : Se trata de una librer´ıa parecida a SDL en sus objetivos, pero muy anterior en el tiempo. La primera versi´on de Allegro funcionaba sobre MS-DOS, y desde ah´ı se ha portado y mejorando durante a˜nos. Al igual que SDL proporciona herramientas para trabajar con im´agenes, sonido y perif e´ ricos. A lo largo de su extenso desarrollo se han incluido funcionalida´ des: trabajar con numeros en coma flotante, c´alculos para programas con gr´aficos tridimensionales, manejo de la entrada/salida de ficheros, compresi´on, etc. Una vez m´as se trata de software libre, y hay disponible un grandisimo n´umero de programas que hacen uso de esta librer´ıa, as´ı como documentaci´on y recursos. 4.3. Sonido OpenAL : Una librer´ıa tiene dos puntos fuertes. En primer lugar es una plataforma neutra para el trabajo con sonido. Por otro lado, se trata de la opci´o n m´as extendida a la hora de dotar a los videojuegos de sonido cuadraf´onico. SDL mixer : Quiz´a una de las librer´ıas mas usadas para dotar de sonido a videojuegos libres. Al igual que SDL es altamente portable y muy potente. Es posible utilizar, de forma transparente para el programador, librer´ıas como libogg/libvorbis, mikmod o´ libsmpeg. Esto proporciona al desarrollador un amplio abanico de posibilidades sobre qu´e formatos de sonido utilizar en el videojuego.

un tiempo record. En el momento de comenzar el proyecto hubo que valorar cada una de las opciones en cada uno de los puntos implicados en el videojuego para tomar una opci´on sobre c´omo se iba a realizar el planteamiento o con que herramientas se iba a desarrollar. El tipo de juego y su funcionamiento era un requisito del proyecto: Un juego de estrategia con un gran peso en la inteligencia y comportamiento global de los personajes. Algo parecido a juegos tan famosos como Civilization o StarCraft. Se realiz´o un estudio de sobre todos los puntos anteriormente expuestos, y como resultado de sopesar cada uno de los puntos se tom´o la siguiente decisi´on: Como librer´ıas b´asica sobre la que desarrollar los gr´aficos se opt´o por SDL. Esta eleccio´ n se vi´o condicionada por el background de la gente implicada en el proyecto, aunque desde un punto objetivo SDL es una de las dos mejores librer´ıas libres de esta clase. Para el apartado sonoro se opto´ por SDL Mixer, un uso mucho m´as simple que OpenAL y que el manejo raw”del sonido fueron las principales razones para este elecci o´ n. Una vez tomadas estas dos elecciones t´ecnicas, quedaba aun una por tomar: el lenguaje del programaci´on sobre el que se iba a realizar el desarrollo. En princio parecia l´ogico optar por C: es el lenguaje por excelencia, y para el desarrollo de un juego es el m´as adecuado por razones de eficiencia. Esta u´ ltima decisi´on era una de las que m´as pod´ıan condicionar que el desarrollo del videojuego llegase a buen puerto. El desarrollo en C no es r´apido, y la restricci´on m´as fuerte del proyecto era el tiempo de desarrollo. Llegados a este punto era necesario buscar un lenguaje de alto nivel sobre el que desarrollar el juego, de otra forma, no ser´ıa posible terminarlo en el plazo fijado. La mejor opcio´ n como lenguaje de muy alto nivel que encontramos fue Python. Un lenguaje potente, simple y extendido con una gran base de conocimientos disponible. Python permit´ıa desarrollar la l´ogica del juego de una forma a´ gil: con primitivas y tipos abstractos de datos de alto nivel y sin preocupaciones con el manejo de memoria. Ahora bien, la opci´on por Python pod´ıa hacer que el desarrollo fuese muy r´apido, pero al ser un lenguaje interpretado, la ejecuci´on fuese realmente lenta. Este era un tema peliagudo que hab´ıa que probar. Para ello se utiliz´o PyGame, un wrapper para Python de SDL. Los resultados fueron algo decepcionantes, realizando una simulaci´on del juego a una resoluci´on considerable los resultados visuales eran algo pobres por problemas de eficiencia.

´ R APIDO ´ 5. MAS TODAVIA

´ AL DESARROLLO DE 6. UNA APORTACION VIDEOJUEGOS LIBRES

El presente art´ıculo es parcialmente el resultado de un proyecto en el que se tuvo que desarrollar un videojuego en

La elecci´on sobre tecnolog´ıa estaba tomada, pero exist´ıan serios problemas de eficiencia si se basaba el juego en Py-

Game. Para el proyecto SDL y Python segu´ıan siendo las mejores opciones teo´ ricas, aunque en la pr´actica viesemos que el resultado no era demasiado bueno. Este problema estar´ıa solucionado si existiese una librer´ıa como PyGame pero con nivel de abstraccio´ n superior, en la que los tipos b´asicos ya fuesen de alto nivel e implementados nativamente. Existe una librer´ıa gr´afica llamada Kyra que encajaba perfectamente con estas necesidades: dispone de tipos nativos de alto nivel, est´a bajada en SDL y es libre. Para el desarrollo del videojuego ser´ıa perfecto poder utilizar Kyra desde Python. Y aqu´ı es donde comienza la aportaci´on. El primer paso para el desarrollo del juego fu´e el desarrollo de PyKyra, el binding de Kyra para Python.

7. PYKYRA Se trata de una librer´ıa de muy alto nivel para el desarrollo de videojuegos. Disponde de todos los tipos nativos que proporciona Kyra: Sprite, Image, Canvas, etc.. con lo que el nivel respecto a PyGame es considerablemente m a´ s alto. El desarrollo de PyKyra no se ha limitado a realizar un binding. PyKyra incorpora funcionadidades adicionales a las proporcionadas por Kyra:

Sonido : Por defecto es posible usar s´onido, de una forma completamente transparente. Soporta, gracias a SDL Mixer, formatos tales como MP3, OGG o WAV. Carga de imagenes : Kyra puede leer imagenes desde imagenes desde ficheros de datos propios, pero no desde un fichero como PNG, JPEG, GIF. PyKyra a˜nade esta posibilidad con la intenci´on de intentar expandir las posibilidades del motor. Soporte de video MPEG : Con PyKyra es posible mostrar videos MPEG con una carga para la aplicaci´on poco superior a la generada para descomprimir este formato de forma nativa. Al margen de estas nuevas funcionalidades, se ha simplificado de una forma dr´astica la interface de Kyra con el objetivo de que, a la hora del desarrollo de un videojuego basado en Kyra, la parte m´as importante sea la de la lo´ gica y que los gr´aficos y el s´onido sea algo que se implemente de una forma r´apida y sin complicaciones.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF