Desarrollo de Juegos

sobre GNU/Linux

Importante:

Puede descarga estas diapositivas con imagenes desde www.lorsersjuegos.com.ar

Conceptos sobre Video-Juegos

Juegos cerrados para PC y consolas recreativas.

Los años 80 y las computadoras personales.

Videojuegos libres y el sistema GNU/Linux.

“Las computadoras nos permiten crear y aprender

sobre tecnología, no solo jugar.”

Meta:

Difundir una comunidad que promueve y genera conocimiento.

Objetivos:

Promover proyectos similares y mantenernos en comunicación.

Redactar artículos sobre el desarrollo de Video-Juegos y Software Libre.

Desarrollar videojuegos completamente libres bajo la licencia GPL.

Sobre el proyecto LosersJuegos

Web: www.losersjuegos.com.ar

Modelos de desarrollo: D.O.S

Las reglas del sistema operativo DOS:

Realizar la mayor parte del trabajo con Assembler.

Cada programa depende de la arquitectura en que se desarrolla.

Contar cada ciclo de instrucción, y optimizar al máximo.

Economizar el uso de memoria.

Medios de almacenamiento muy reducidos.

Modelos de desarrollo: Direct X

Direct X

Windows

XBox

VideoJuego

Problemas actuales:

No es multiplataforma.

Tampoco es libre.

Es compleja.

Modelo sucesor del DOS:

Modelos de desarrollo: SDL (I)

SDL

GNU/Linux

VideoJuego

Modelo propuesto en la actualidad, SDL:

Windows

FreeBSD

BeOS

QNX

MacOS

otros sistemas...

Modelos de desarrollo: SDL (II)

SDL

GNU/Linux

VideoJuego

Ampliar la funcionalidad del modelo:

Windows

FreeBSD

BeOS

QNX

MacOS

otros sistemas...

OpenGL

SDL_image

SDL_net

mas bibliotecas...

Ejemplos con SDL

Temas a tratar:

Básico : Crear una ventana.

Movimiento: Manejo de imágenes y teclado.

Bucle: Velocidad constante.

Mejoras: Dirty Rectangles y procesos.

Colisiones: Mediante radios.

Un juego en Red: Manejo de SDL_Net.

Ejemplo: Crear una ventana

SDL_Init

SDL_SetVideoMode

x+

(0,0)

y+

SDL_FillRect

SDL_Flip

SDL_Delay

Diagrama base:

Coordenadas en pantalla:

Ejemplo: Manejo de imágenes

Cargar Imagen

Consultar el teclado

Mover la imagen

Imprimir

Terminar

¿ sale ?

no

si

Ejemplo: Velocidad constante (I)

En una arquitectura rápida:

En una arquitectura lenta:

salto de cuadro

salto de cuadro

5 cuadros por segundo (FPS)

3 cuadros por segundo (FPS)

Ejemplo: Velocidad constante (II)

Esperar

Mover la imagen

Imprimir

¿ actualizar?

equipo muy rápido

si

[...]

no

[...]

equipo

muy

lento

Ejemplo: Procesos y optimización gráfica

Imprimir fondo completo

Imprimir objeto

Mostrar objeto en pantalla

Imprimir Objeto

Mostrar en Pantalla

Restaurar zonas modificadas en pantalla

Double buffer

Dirty rectangles

Ejemplo: Colisiones

a

b

distancia entre 2 puntos

resultado de a+ b

distancia entre 2 puntos

distancia entre 2 puntos

resultado de a+ b

a

b

Ejemplo: SDL_Net (I)

PC 1

PC 2

Funcionamiento básico:

Estructuras:

P2P

Cliente - Servidor

Orientación:

UDP

TCP

Ejemplo: SDL_Net (II)

Atender un servicio

Esperar un cliente

Mover el objeto

Enviar posición

Recibir la posición del enemigo

Imprimir ambos

conectarce al servidor

Mover el objeto

Enviar posición

Recibir la posición del enemigo

Imprimir ambos

Servidor

Cliente

Contenidos, ejemplos y diagramas:

Hugo Ruscitti

Gabriel Valentin

Caricaturas (deshabilitado en esta versión):

Walter Velazquez

Diseño:

Hugo Ruscitti

Icono superior izquierdo (deshabilitado en esta versión):

Szymon "Azazel100"

Sábado 14 de Mayo del 2005

CTT Organizadas por el CaFeLUG

www.cafelug.org.ar

www.losersjuegos.com.ar

Preguntas

Importante:

Puede descarga estas diapositivas con imagenes desde www.lorsersjuegos.com.ar

Las notas de esta presentación son apenas un resumen de lo expuesto el día 14 de Mayo del 2005 en el evento CTT (Charlas Técnicas Trimestrales) organizado por el CaFeLUG en la UB (Universidad de Belgrano).

Cada grupo de desarrollo tiene su visión de los videojuegos.

Analizando las propuestas de cada grupo nos encontramos con 3 conceptos generales.

Los juegos cerrados para PC y consolas recreativas simplemente nos proponen jugar, es idéntico comprar juegos para la PC y la consola recreativa. Sólo podemos jugar con la tecnología que otros desarrollan.

Esto no siempre fue así, en Los años 80 era muy común oír que un pequeño grupo de estudiantes desarrollaban videojuegos dentro de una habitación, lamentablemente pocos compartían sus conocimientos con el resto de las personas.

Así, quienes conocemos las ventajas de utilizar GNU/Linux, proponemos un nuevo concepto: no buscamos desarrollar juegos encerrados en una habitación aislados de todo. Podemos crear, aprender y compartir conocimiento sobre tecnología desarrollando videojuegos completamente libres.

En esta charla adoptamos únicamente el último concepto, videojuegos libres.

En base a este concepto comenzamos un proyecto llamado LosersJuegos.

Buscamos promover el conocimiento y los proyectos que impulsan el desarrollo de videojuegos completamente libres.

La licencia GPL garantiza los términos de uso legal que un programa debe tener para ser conciderado libre, básicamente otorga 4 libertades fundamentales:

La libertad de ejecutar el programa sea cual sea el propósito.

La libertad de estudiar y/o modificar el programa para ajustarlo a tus necesidades.

La libertad de distribuir copias, ya sea en forma gratuita o a cambio del pago de un precio.

La libertad de distribuir versiones modificadas del programa, de modo que toda la comunidad se beneficie con tus modificaciones.

Existen otras licencias con términos similares, todas son bienvenidas siempre y cuando sean compatibles con la licencia GPL.

Nuestro principal interés se basa en aprender y desarrollar sobre tecnología. Nadie nace sabiendo, es importante recordarlo.

Antes de proponer nuestro modelo de desarrollo veremos a grandes rasgos que modelos existían años atrás:

En el sistema operativo DOS tenías todo el equipo a tu disposición, se acostumbraba (dados los límites tecnológicos) a economizar cada recurso y a utilizar Assembler como mínimo en todas las rutinas críticas, como el acceso a video y sonido.

Unos años mas tarde Microsoft compró a una empresa de Londres, llamada Render Morphics, lo que hoy en dia conocemos como Direct-X.

La propuesta era diferente, en esta caso contábamos con un biblioteca (library en inglés, a veces mal traducida como librería).

Una biblioteca es un conjunto de rutinas que nos facilitan ciertas tareas. En este caso facilitan el acceso a los dispositivos multimedia (Audio, Video etc.) sin preocuparnos por el modelo de cada dispositivo de Hardware.

Con esta explicación queremos dejar en evidencia que los modelos de desarrollo cambian. Así como cambiamos el modelo de DOS por Direct-X y Windows, hoy nos preguntamos: ¿ Direct-X es adecuado en la actualidad ?

Un modelo de desarrollo debe adaptarse a su época, hoy utilizamos GNU/Linux como muchos usuarios (cada vez más). El Software Libre representa una propuesta muy interesante. Existen dispositivos, lenguajes de programación y sistemas operativos mucho mas variados que a mediados de los 90.

Direct-X no resuelve nada de esto, es una tecnología cerrada. Sólo la empresa que cuenta con los derechos legales correspondientes puede darnos la posibilidad de adaptar este modelo a la realidad. Este es el motivo principal por el cual no existen muchos juegos para GNU/Linux, están atados al modelo DirectX.

Pero existe otro modelo mejor adaptado a la actualidad, SDL.

Es muy simple de utilizar, funciona en varios sistemas operativos y soporta muchos lenguajes de programación.

Además se distribuye bajo la licencia LGPL, lo cual nos asegura que no estaremos sujetos a las decisiones o conveniencias de una empresa. Podremos ver, estudiar, modificar y distribuir todo el código de la biblioteca y así extender su soporte.

Otra característica de SDL es su diseño, SDL resuelve el acceso básico al sistema multimedia, por ejemplo: podemos indicarle a la biblioteca que genere una ventana, reproduzca un sonido e imprima algún gráfico.

Si buscamos extender estas funcionalidades tenemos la posibilidad añaadir otras bibliotecas como OpenGL (generalmente para manejar gráficos en 3D), SDL_image (para cargar formatos de imágenes como PNG, JPEG etc.) y SDL_Net (para el manejo de redes)

Existen muchas otras bibliotecas en www.libsdl.org

Estas diapositivas no incluyen una descripción detallada de cada ejemplo, es muy difícil transcribir la explicación práctica del momento.

Para acentar por escrito una explicación preferimos hacerlo mediante artículos individuales, puede encontrar estos artículos en www.losersjuegos.com.ar (sección documentos).

Recuerde desacargar los ejemplos pulsando aquí.

2005-04-23T20:14:15