1 Creación de videojuegos en entornos de Software Libre Miriam Ruiz Santander, 23 de marzo de 2010 II Foro Cesine sobre Ocio Digital y Videojuegos
2 Índice Introducción al Software Libre Ejemplos de Aplicaciones Libres Copyleft: All Rights Reversed Desarrollo de Software Ejemplos de Componentes Libres
3 Interrumpidme libremente No me como a nadie por preguntar
4 Introducción al Software Libre
5 ¿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
6 ¿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
7 ¿Qué es el Software Libre? Libertad 0: Usar el programa y los resultados de su ejecución con cualquier propósito Libertad 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
8 ¿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
9 ¿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.
10 Dos conceptos diferentes Libre Gratis Libertad Dinero
11 ¿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.
12 Software Libre != Software Gratuito
13 Tres aspectos del Software Libre Licencia Metodología de desarrollo Comunidad
14 Copyleft: All Rights Reversed
15 ¿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
16 Distribución sin Copyleft Libre Privativ o Autor/a
17 Distribución con Copyleft Libre Privativ o Autor/a X X
18 Tipos de Copyleft
19 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
20 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
21 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
22 Proceso de desarrollo
23 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
24 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
25 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,...
26 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
27 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.
28 El proceso productivo
29 El “bazar” vs. La “catedral” Modelo de desarrollo Tipo “catedral” Modelo de desarrollo Tipo “bazar”
30 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”
31 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
32 Nacimiento de un proyecto Libre Modelo de desarrollo tipo bazar Fase de transición Fase inicial tipo catedral
33 Crecimiento de un proyecto Libre Mecanismos formales de participación y resolución de conflictos Formalización Grupo pequeño con una estructura informal
34 Ejemplos de Componentes Libres
35 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
36 Capas de SDL
37 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.
38 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
39 Pipeline de OpenGL
40 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
41 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.
42 Crystal Space
43 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
44 Isométrico: FIFE Engine
45 MMORPG: Planeshift
46 Edición en el juego: Cube 2
47 Novelas visuales: Ren'Py
48 Programación fácil: Löve
49 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/)http://www.clker.com/http://openclipart.org/http://gpl.imageafter.com/http://www.burningwell.org/http://www.vecteezy.com/ ● Modelos 3D: BlendSwap (http://www.blendswap.com/) ● Fuentes de texto: OpenFontLibrary (http://openfontlibrary.org/)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)http://wiki.laptop.org/go/Sound_sampleshttp://www.pdsounds.org/http://soundbible.com/ ● 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/)http://www.jamendo.com/http://en.wikipedia.org/wiki/Wikipedia:Sound/listhttp://www.mutopiaproject.org/http://ccmixter.org/ ● 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 Libreshttp://search.freegamedev.net/http://love2d.org/forum/viewtopic.php?f=3&t=12http://opengameart.org/
50 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.
51 Ejemplos de Aplicaciones Libres
52 GIMP
53 Blender
54 Wings3D
55 Audacity
56 Cinelerra
57 Eclipse IDE
58 Code::Blocks
59 Creación de videojuegos en entornos de Software Libre Miriam Ruiz Santander, 23 de marzo de 2010 II Foro Cesine sobre Ocio Digital y Videojuegos
60 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/