Esta obra esta bajo una licencia attribution-noncommercial-noderivs 2.5 de Creative Commons. Para ver una copia de esta licencia, visite https://creativecommons.org/licenses/by-nc-nd/2.5/ o envíe una carta a Creative Commons, 559 Nathan Abbott way, Stanford, California 94305, usa.
Introducción.
Historia de los videojuegos.
La llegada del ordenador personal.
Sistemas operativos o la torre de babel.
Anatomía de un videojuego.
Entrada.
Visualización.
Sonido.
Comunicaciones.
Game loop.
Los cimientos de un videojuego.
La idea.
Los elementos del juego.
Manos a la obra.
Primeros pasos con SDL.
Trabajando con SDL.
Vídeo.
Cargando y mostrando gráficos.
Efectos especiales: transparencias y alpha-blending.
Otras funciones de interés.
Gestión de eventos.
Tipos de eventos.
Lectura de eventos.
Eventos del teclado.
Eventos de ratón.
Eventos del joystick.
Otros eventos.
Joystick.
Recopilando información sobre el joystick.
Leyendo el joystick.
Audio.
CD-rom.
El window manager.
Timming.
Librerías auxiliares para SDL.
Sdl_ttf.
Sdl_image.
Sdl_mixer.
Sonidos.
Música.
Sprites: héroes y villanos.
Control de sprites.
Implementando los sprites.
Utilizando nuestra librería.
Un universo dentro de tu ordenador.
Almacenando y mostrando tiles.
Diseñando el mapa.
Scrolling.
Enemigos, disparos y explosiones.
Tipos de inteligencia.
Comportamientos y máquinas de estado.
Disparos y explosiones.
Que comience el juego, enemigos.
Niveles.
Temporalización.
Pantalla inicial, puntuación y vidas.
¿Y ahora que?
Instalación de SDL.
Windows (vc++)
Linux.
De c a C++
Clases y objetos.
Herencia.
Polimorfismo.
Punteros y memoria.
Recursos.
Bibliografía.
Programación.
Programación de videojuegos.
Gráficos.
Enlaces.
Programación.
Programación de videojuegos.
Gráficos.
La imaginación es el motor de la creatividad, y la creatividad el motor de la inteligencia.
Muchas son las personas que opinan que la programación de ordenadores es una ciencia, otros lo ven como una ingeniería, sin embargo, algunos preferimos verla como un arte. Si tienes este libro entre tus manos, es porque te interesa la programación y también los videojuegos. Si es así, enhorabuena, porque estas a punto de entrar en un mundo realmente fascinante. La programación de videojuegos es muy diferente a la programación tradicional, requiere de una gran creatividad, pero también de una gran curiosidad y ganas de descubrir y, por que no, inventar cosas nuevas. De hecho, cuando creamos un videojuego, estamos creando un mundo nuevo, con su propio aspecto y sus propias leyes. En ese sentido el programador es como un dios dentro de ese mundo. La mayoría de las personas que se dedican a la programación se han planteado en algún momento el hacer un juego, y sin embargo, son pocos los programadores que se deciden a hacerlo. ¿hace falta algún don especial para hacer videojuegos? Probablemente no, pero hay muy buenos escritores de novelas que no son capaces de escribir poesía, y viceversa. En programación parece ocurrir lo mismo, hay programadores especialmente dotados para la programación de gestión y otros se desenvuelven mejor con una programación más cercana a la máquina.
Supondré que el lector ya postura conocimientos de programación, y más concretamente del lenguaje c. En el transcurso del libro, vamos a introducir las técnicas básicas utilizadas en la creación de videojuegos de forma práctica y a través de ejemplos, incluyendo el desarrollo de un juego completo. Vamos a utilizar para ello una librería multiplataforma llamada SDL (simple direct media layer) que nos va a permitir que nuestros juegos sean portables entre Windows, Linux, Macintosh, Beos y otros. También vamos a introducir ciertas características de la programación orientada a objetos (po) que nos ofrece C++, pero no debe preocuparse el lector desconocedor de la PO, porque dedicamos un apéndice completo para familiarizarnos con los elementos que vamos a usar de dicho lenguaje. La programación orientada a objetos es hoy necesaria a la hora de conseguir juegos de calidad profesional, por ello, introduciremos ciertos aspectos de este paradigma de programación.
Respecto a al grafismo utilizado en el juego de ejemplo que desarrollaremos durante el libro, he utilizado la librería de sprites GPL de Ari Feldman (https://www.arifeldman.com/), al cual agradezco, y ánimo a seguir ampliando.
Antes de acabar, quiero hacer una aclaración. Este no es un libro sobre programación y uso de SDL. Es un libro sobre programación de videojuegos, por lo tanto, no esperes una exhaustiva referencia sobre SDL. Iremos descubriendo los diferentes aspectos de esta librería según los necesitemos en nuestro camino a la creación de un videojuego, es por ello que habrá elementos de la librería que no formaran parte de los temas cubiertos por este libro.
Quiero, finalmente, dejar patente el objetivo que siempre he perseguido mientras escribía el presente texto: mantener las cosas simples, sin entrar en tecnicismos innecesarios que distraigan al programador menos formal del objetivo final, que es dotarle de las herramientas necesarias para expresar toda su creatividad en forma de videojuego. No me cabe duda que hay cientos o miles de potenciales buenos programadores de juegos que, aun teniendo los conocimientos de programación necesarios, no han podido acceder a una información clara y carente de formalismos más propios de un texto universitario. Espero que este sea un libro para todos, aunque ello signifique sacrificar en precisión y formalidad. El intentar trasladar la información contenida en el libro a un lenguaje sencillo y accesible me ha resultado a veces ciertamente una difícil tarea, por lo que pido excusas si en algún momento no he conseguido expresar las ideas con la suficiente simplicidad y claridad.
Puede contactar con el autor en la dirección de correo electrónico.
Allá donde el tiempo pierde su memoria, grandes hombres y mujeres construyeron nuestro futuro.
La prehistoria de los videojuegos, se remonta a 1958. Bill Nighinbotthan presenta en una feria científica un aparato que permite, mediante unos potenciómetros, mover una raqueta en un tubo de rayos catódicos. Bill no fue capaz de intuir el basto potencial que aquel pequeño aparato tenía. Basándose en este aparato, Nolan Bushnell crea en 1972 un videojuego llamado pong. Nollan, que sí es capaz de ver las posibilidades de este nuevo mercado, funda atari, pero antes, Nollan ya había comercializado su primer videojuego: computer space. Años más tarde, en 1976, un empleado de atari llamado Steve Jobs, ayudado por Steve Wozniak, crean un videojuego llamado breakout. Dos años después, ambos dejaran atari para crear Apple computer y pasar a la historia de la informática.
Steve Wozniak y Steve Jobs en su garaje, california. 1976.
Es en 1978 cuando Taito lanza al mercado el famoso space Invaders. Este juego era capaz de almacenar las puntuaciones máximas, convirtiéndose en todo un clásico.
En los siguientes años, comienzan a aparecer en el mercado nuevos videojuegos de excelente calidad, y que se convertirán en clásicos.
Juegos como Donkey Kong, Frogger, Galaga, PacMan,
En la década de los 80, los ordenadores personales comienzan a popularizarse, y ponen en manos de particulares la posibilidad, no sólo de jugar a videojuegos creados para estos ordenadores, sino que ahora cualquiera puede adentrarse en el mundo de la programación de videojuegos. Estos pequeños ordenadores de 8 bits hicieron las delicias de miles de aficionados a la informática. En España se hizo muy popular el Sinclair Spectrum. Un pequeño ordenador muy económico con un procesador Z80 y una memoria de 48 kilobytes. Otros ordenadores similares fueron el Amstrad 464, MSX y Commodore 64.
Commodore 64
De esta época tenemos juegos tan recordados como Manic miner, Xevious, jet set Willy, Arkanoid y otros. A finales de los 80, surgen grupos de programadores en el norte de Europa que comienzan a crear pequeñas joyas de la programación que intentaban exprimir el potencial de estas pequeñas máquinas al máximo. Concretamente estos grupos se crean en torno a la máquina de Commodore, gracias a sus posibilidades gráficas y de sonido, algo más avanzadas que la de sus competidores de la época. Estos pequeños programas es lo que hoy se ha dado en llamar demos. Son por tanto los creadores de la actual demoscene.
En la década siguiente, aparecen ordenadores más potentes. Son equipos con microprocesadores de 16 bits y tienen entre 512 kbs y 1 Mb de memoria. Quizás el más popular de estos fue el amiga 500, también de Commodore, aunque sin olvidar al atari st o al Acorn Archimedes. Estos ordenadores tenían unas capacidades gráficas muy superiores a sus antecesores. Podían utilizar 4096 colores simultáneos, y su capacidad de sonido también comenzaba a ser bastante espectacular. De esta época son juegos como Defender of the Cro, Barbarian, Elvira, Lemings y Maniac mansión.
Paralelamente a esta evolución, otro ordenador iba ganando adeptos a marchas forzadas. Sus capacidades gráficas y de sonido no eran mejores que la de sus competidores, de hecho, eran bastante inferiores, sin embargo, lograron hacerse poco a poco con el mercado de los ordenadores personales, hasta el punto de reinar casi en solitario (con permiso del Apple Macintosh). Evidentemente hablamos del PC. Afortunadamente, al convertirse en el sistema mayoritario, sus capacidades gráficas y de sonido comienzan a avanzar a pasos agigantados. Una fecha clave es abril de 1987, cuando IBM presenta en el mercado la tarjeta gráfica VGA. Dejando obsoletas a las legendarias Ega y Cga. A la VGA la seguiría la svga, y después toda un abanico de tarjetas con cada vez más memoria y aceleración gráfica 3d, llegando hasta las actuales Vodoo, las GeForce de Nvidia y las Radeon de Ati, con unas capacidades gráficas fuera de lo común a un precio muy asequible. Como es normal, esta época esta marcada por juegos como Quake, Counter-Strike.
(Half Life), Heretic, Warcraft y Hexen.
El ordenador PC, comercializado por IBM en el año 1982, ha pasado por varias etapas de existencia. Aquellos primeros PC iban equipados con el sistema operativo PC Dos, que no era más que una versión de IBM del msdos de Microsoft. En los tiempos del msdos la programación de videojuegos era bastante compleja, hacían falta grandes conocimientos de lenguaje ensamblador y de la estructura interna de la máquina, así como de la tarjeta de video y de sonido. Toda la programación se hacía directamente sobre el hardware. Es fácil imaginar los inconvenientes, había que preparar el juego para que funcionara con muchos modelos de tarjeta gráfica y también para los diferentes modelos de tarjetas de sonido (adlib, gravis ultrasound (gus), Sound Blaster). Es decir, hacer un juego, por simple que éste fuera, requería un esfuerzo muy alto, sin contar con que no siempre toda la información necesaria para acceder al hardware estaba al alcance de todo el mundo.
La llegada de Windows tampoco mejora demasiado el panorama, ya que no permite un acceso directo al hardware y su rendimiento gráfico es pobre. El acceso a los recursos del sistema también varía de un sistema operativo a otro. Se hace imprescindible, pues, crear una interfaz común para el desarrollo de videojuegos que permita el acceso estandarizado y con una interfaz común a los recursos del sistema. Algunas de estas propuestas son OpenGL y DirectX (éste último sólo para sistemas Windows).
En el caso de OpenGL, se nos ofrece una interfaz multiplataforma, sin embargo, se limita a ofrecernos una interfaz de acceso a gráficos (especializada en 3d, aunque con posibilidades de 2d) y no nos permite el acceso a otros recursos del sistema (teclado, sonido, joystick, timmers).
DirectX, sin embargo, está compuesto por varias subinterfaz con el so y el hardware, como directdraw (gráficos 2d), Direct3D (gráficos 3d), directinput (entrada y salida), directplay (capacidades de comunicación en redes TCP/IP), directsound (acceso a hardware de sonido) y algún que otro componente más. Como vemos, DirectX tiene gran cantidad de capacidades, pero presenta dos inconvenientes. El primero es que sólo es válido para sistemas Windows, y el segundo es que por la propia naturaleza de la programación en Windows, su uso es algo engorroso y no apto para programadores con poca experiencia con las apis de Windows y más concretamente con la interfaz com+.
Afortunadamente, la empresa Loki games, ante la necesidad de hacer portables los juegos de Windows a Linux y a otros sistemas operativos, crean una librería multiplataforma llamada SDL (simple directmedia layer), que nos ofrece acceso a los recursos de la máquina (gráficos, sonido, entrada/salida, timming,) mediante una interfaz coherente e independiente del so. SDL, además, nos permite utilizar la interfaz OpenGL para gráficos 3d.
Por: Alberto García serrano.
Puedes bajarte todo el manual en formato pdf [URL=https://www.foro3d.com/attachments/79611d121839303aquí.-ayudarias-a-hacer-un-curso-gratis-para-crear-videojuegos-3d-ebook-programacion_de_videojuegos_con_sdl.pdf[/url].