Creación de videojuegos en entornos de Software Libre (2010)
1. II Foro Cesine sobre Ocio Digital y Videojuegos
Creación de
videojuegos en
entornos de
Software Libre
Miriam Ruiz <miriam@debian.org>
Santander, 23 de marzo de 2010
2. Índice
Introducción al Software Libre
Copyleft: All Rights Reversed
Desarrollo de Software
Ejemplos de Componentes Libres
Ejemplos de Aplicaciones Libres
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.
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.
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
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
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.
29. El “bazar” vs. La “catedral”
Modelo de Modelo de
desarrollo desarrollo
Tipo Tipo
“catedral” “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
Fase inicial Fase de
desarrollo
tipo catedral transición
tipo bazar
33. Crecimiento de un proyecto Libre
Grupo Mecanismos
pequeño formales de
con una Formalización participación
estructura y resolución
informal de conflictos
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
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
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.
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/)
● 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
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.
59. II Foro Cesine sobre Ocio Digital y Videojuegos
Creación de
videojuegos en
entornos de
Software Libre
Miriam Ruiz <miriam@debian.org>
Santander, 23 de marzo de 2010