creación de videojuegos en entornos de software libre (2010)
TRANSCRIPT
Creación devideojuegos en
entornos deSoftware Libre
Miriam Ruiz <[email protected]>Santander, 23 de marzo de 2010
II Foro Cesine sobre Ocio Digital y Videojuegos
Índice
Introducción al Software Libre
Ejemplos de Aplicaciones Libres
Copyleft: All Rights Reversed
Desarrollo de Software
Ejemplos de Componentes Libres
Interrumpidme libremente
No me como a
nadie por preguntar
Introducción al Software Libre
¿Qué es Software?
Según la IEEE, es la suma total de los programas, procedimientos, reglas,
documentación y datos asociados que forman parte de las operaciones de un sistema.
Incluye más los programas en sus distintas formas (código fuente y código ejecutable o
binario) y su documentación.
Software es todo lo intangible
¿Qué son las Licencias?
Conjunto de términos o condiciones bajo las que se permite utilizar, modificar, distribuir y/o
comunicar públicamente el software, en una forma determinada, por parte de quienes poseen
los derechos de autoría del mismo.
Por defecto, sin una licencia explícita que autorice el uso, modificación, difusión o
comunicación pública, no tenemos ningún derecho ni permiso para usar de ningún modo
la aplicación
¿Qué es el Software Libre?
Libertad 0: Usar el programa y los resultados de su ejecución con cualquier propósitoLibertad 1: Estudiar el programa, aprender y poder aplicar el conocimiento obtenido
Libertad 2: Copiar, distribuir y difundir el programa, en su totalidad o en parte
Libertad 3: Modificar y mejorar el programa y publicar los cambios realizados
¿Por qué hacer un juego Libre?
● Porque es la mejor forma de difundirlo sin invertir muchísimo en publicidad
● Porque hay un montón de elementos libres sobre los que nos podemos apoyar para crearlo
● Porque podemos contar con el apoyo de mucha gente de la comunidad para desarrollarlo
● Porque podemos extenderlo a muchos sistemas para los que no tendríamos capacidad si no
● Porque el juego sobrevivirá en el tiempo
¿Qué software NO es Libre?
El software no libre (software propietario, software privativo, software privado) se refiere a
cualquier programa informático en el que se tienen limitadas las posibilidades de uso, modificación o redistribución (con o sin
modificaciones), o que su código fuente no está disponible o el acceso a éste se encuentra
restringido.
Dos conceptos diferentes
Libre
Gratis
Libertad
Dinero
¿Qué software NO es Libre?
● Software privativo o propietario: Otorga el derecho de uso del programa binario a cambio de una cantidad de dinero y en determinadas condiciones.
● Shareware: Permite probar el programa antes de comprarlo.
● Freeware: Se puede usar de forma gratuíta en determinadas condiciones.
● Código fuente disponible para su inspección pero no para su uso, modificación y distribución libres.
Software Libre != Software Gratuito
Tres aspectos del Software Libre
Licencia
Metodologíade desarrollo
Comunidad
Copyleft: All Rights Reversed
¿Qué es el Copyleft?
● Eliminar las restricciones de distribución o modificación impuestas por el copyright
● Condición de que el trabajo derivado se mantenga con el mismo régimen de derechos de autoría que el original
● Permite proteger una gran diversidad de obras, tales como programas informáticos, arte, cultura y ciencia, es decir prácticamente casi cualquier tipo de producción creativa
Distribución sin Copyleft
Libre Libre Libre
Privativo Privativo Privativo
Autor/a
Distribución con Copyleft
Libre Libre Libre
Privativo Privativo Privativo
Autor/a X X
Tipos de Copyleft
Licencias: La elección sencilla
● Protección con copyleft fuerte: GPL v3● Protección con copyleft débil: LGPL v3● Sin copyleft, pero queremos que tenga
protección contra patentes: Apache 2.0● Si queremos una licencia sencilla sin copyleft,
contra patentes, DRM, etc: MIT o BSD-2
Licencias: La elección menos sencilla
● Para trabajos que no sean de software, considerar las licencias Creative Commons (CC-by ó CC-by-sa 3.0)
● Si queremos protección con copyleft fuerte para aplicaciones en red, aún a costa de limitar su uso comercial: AGPL v3
● Si queremos copyleft débil y que explícitamente sea incompatible con GPL: CPL, EPL, MPL 1.1, CDDL,...
● Si tenemos dependencias que limiten nuestras opciones, hay que tenerlas en cuenta.
● Algunas licencias son muy populares en sectores concretos
Licencias Creative Commons
Cláusulas disponibles:● Reconocimiento ("by", o Attribution)● No Comercial ("nc", o Non commercial)● Sin Obra Derivada ("nd" o No Derivate Works)● Compartir Igual ("sa" o Share Alike)
6 licencias principales para escoger:● by, by-nc● by-nd, by-nc-nd● by-sa, by-nc-sa
Realmente libres (DFSG):● CC0 (dominio público)● CC-by 3.0● CC-by-sa 3.0
Proceso de desarrollo
Desarrollo de un juego Libre
● Idea, concepto y diseño inicial● Elección de la arquitectura y las herramientas● Selección de la licencia● Recopilación de componentes● Desarrollo del código y elementos artísticos● Publicación del código fuente● Integración en los diferentes sistemas● Distribución de los binarios● Comunidad de desarrollo● Mantenimiento, bugs y desarrollos posteriores
El Sistema Operativo
● Elemento que actúa de intermediario entre el hardware y el software, y provee los sistemas y librarías básicas
● Hay numerosos sistemas operativos, tanto para ordenadores como para videoconsolas, móviles, etc. Algunos son privativos y otros no
● Existen diversas librerías, frameworks y entornos de ejecución que nos permiten abstraernos del sistema operativo sobre el que se va a ejecutar el programa
El Sistema Base
● Tecnologías de las que vamos a depender: C/C++, Posix, Java, Python, OpenGL, SDL, Flash, Perl, Crystal Space, Ogre, .Net, DirectX, VB, Delphi, XULRunner, ...
● Entorno de desarrollo: modificación del programa, compiladores soportados, herramientas de transformación, edición de contenidos, ...
● Componentes: compatibilidad de la licencia, portabilidad de las librerías, estabilidad, mantenimiento, ...
La toolchain
● Herramientas, binarios y librerías necesarias para realizar la compilación
● Dependiendo de las herramientas de desarrollo elegidas se podrá usar en unos sistemas operativos u otros
● Si existe una toolchain libre en la que se pueda compilar, se puede compilar potencialmente para cualquier sistema
● Si se necesita una toolchain privativa, solo se podrá portar a algunos sistemas, y estará condicionada a la empresa que la fabrique
La parte artística
● No se puede coger cualquier cosa que encontremos por ahí: copyright, licencia, condiciones
● Será tan libre, distribuíble, portable, etc. como lo sea la parte más restrictiva de las piezas que lo componen
● Elementos habitualmente problemáticos: texturas, mapas, modelos, fotos, tipos de letra, sonidos, música, iconos, etc.
El proceso productivo
El “bazar” vs. La “catedral”
Modelo dedesarrollo
Tipo“catedral”
Modelo dedesarrollo
Tipo“bazar”
El “bazar” vs. La “catedral”
● El esquema de desarrollo estilo “catedral”, en el que se establece una jerarquía de decisiones, se está viendo cada vez más desfasada por un modelo que aporta mejores resultados en muchos casos: el modelo “bazar”
● Los nuevos medios tecnológicos están transformando la sociedad, de tal forma que cada vez van desapareciendo más los conceptos de producer y consumer, y va surgiendo uno nuevo: “prosumer”
Cooperación competitiva
El Software Libre configura un paradigma de desarrollo entre pares sin la necesidad de una autoridad coordinadora, que se aprovecha de los mecanismos de evolución natural para mejorar
la calidad, y en el que la permanencia en las posiciones de control del producto están regidas por la meritocracia y la participación activa,
eliminando automáticamente a quienes no innovan
Nacimiento de un proyecto Libre
Modelo dedesarrollotipo bazar
Fase detransición
Fase inicialtipo catedral
Crecimiento de un proyecto Libre
Mecanismosformales departicipacióny resoluciónde conflictos
Formalización
Grupopequeñocon una
estructurainformal
Ejemplos de Componentes Libres
Simple DirectMedia Layer (SDL)
● Bibliotecas en C que proporcionan funciones básicas para realizar dibujado 2D, sonido y música y carga y gestión de imágenes
● Wrappers a otros lenguajes de programación como C++, Ada, C#, Basic, Erlang, Lua, Java, Python, etc.
● Multiplataforma, soportando oficialmente Windows, GNU/linux, MacOS y QNX, además de otras como Dreamcast, GP32, GP2X, ...
● Licencia LGPL
Capas de SDL
PyGame
● Módulos del lenguaje Python que permiten la creación de videojuegos en 2D
● Es esencialmente un interfaz de las bibliotecas SDL, orientado al manejo de sprites.
● Permite prototipar y desarrollar rápidamente● También puede utilizarse para crear otros
programas multimedia o interfaces gráficas de usuario.
Open Graphics Library (OpenGL)
● Es una especificación estándar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D
● Hay implementaciones eficientes de OpenGL para Mac OS, Microsoft Windows, GNU/Linux, varias plataformas Unix y PlayStation 3
● Existen implementaciones software que permiten ejecutar aplicaciones OpenGL sin soporte de aceleración hardware
● iPhone soporta la variante OpenGL ES
Pipeline de OpenGL
OpenGL vs. DirectX
● Tiene llamadas más rápidas que DirectX y acceso directo a nuevas características de las GPU mediante extensiones
● Acceso a las nuevas características en todas las plataformas. DirectX solo las permite en las últimas versiones de Windows. La única forma de disponer de las últimas características en XP es con OpenGL
● OpenGL es multiplataforma● OpenGL es un estándar abierto y sin coste
Crystal Space
● Framework para aplicaciones 3D escrito en C++● Puede ser usado para cualquier tipo de
visualización 3D● Es muy portable y se ejecuta en Microsoft
Windows, Linux, UNIX, y Mac OS X● Crystal Space es software de código abierto,
licenciado bajo LGPL.● Existen bindings para Python y Java, entre
otros.
Crystal Space
Otros motores 3D Libres
● Otros motores Libres 3D en tiempo real:– OGRE– Irrlicht Engine– Soya 3D– Horde3D– Panda3D– Axiom– Delta3D– G3D Engine– JmonkeyEngine– Lightfeather– NeL– OpenSceneGraph– OpenSG– PySoy– Xith3D
Isométrico: FIFE Engine
MMORPG: Planeshift
Edición en el juego: Cube 2
Novelas visuales: Ren'Py
Programación fácil: Löve
Otros recursos
● Gráficos: Clker.com (http://www.clker.com/), OpenClipArt (http://openclipart.org/), Image *After (http://gpl.imageafter.com/), BurningWell (http://www.burningwell.org/), Vecteezy (http://www.vecteezy.com/)
● Modelos 3D: BlendSwap (http://www.blendswap.com/)● Fuentes de texto: OpenFontLibrary (http://openfontlibrary.org/)● Sonidos: Free Sound Samples from the OLPC project (
http://wiki.laptop.org/go/Sound_samples), PDSounds (http://www.pdsounds.org/), Sound Bible (http://soundbible.com/), OpenOffice.org gallery (http://www.freedesktop.org/wiki/OpenOffice)
● Música: Jamendo (http://www.jamendo.com/), Wikipedia (http://en.wikipedia.org/wiki/Wikipedia:Sound/list), The Mutopia Project (http://www.mutopiaproject.org/), ccMixter (http://ccmixter.org/), simuze (http://www.simuze.nl/)
● Miscelánea: Wiki on FreeGameDev, Free Art Search (http://search.freegamedev.net/), Free Game Resources in Löve Club (http://love2d.org/forum/viewtopic.php?f=3&t=12), OpenGameArt (http://opengameart.org/), otros juegos Libres
Crystal Space
● Framework para aplicaciones 3D escrito en C++● Puede ser usado para cualquier tipo de
visualización 3D● Es muy portable y se ejecuta en Microsoft
Windows, Linux, UNIX, y Mac OS X● Crystal Space es software de código abierto,
licenciado bajo LGPL.● Existen bindings para Python y Java, entre
otros.
Ejemplos de Aplicaciones Libres
GIMP
Blender
Wings3D
Audacity
Cinelerra
Eclipse IDE
Code::Blocks
Creación devideojuegos en
entornos deSoftware Libre
Miriam Ruiz <[email protected]>Santander, 23 de marzo de 2010
II Foro Cesine sobre Ocio Digital y Videojuegos
Licencia
Copyright © 2010, Miriam Ruiz
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 (CC-by-
sa 3.0) license. You can use, copy, modify, merge, remix, distribute, display, perform, sublicense and/or sale it freely under the
conditions defined in that license.
See http://creativecommons.org/licenses/by-sa/3.0/