Hola de nuevo a todos,
Este es el segundo hilo oficial del proyecto, que a su vez es la continuación directa del anterior. El motivo de esta apertura es "desongestionar" un poco. ¡65! páginas que tenía el anterior. Lo cual llena de orgullo ver la participación que tubo el proyecto, sobre todo al principio. Pero, ¡que no decaiga la cosa!
Lo que viene acontinuación es un resumen rápido junto con un artículo que pensé en colgar en la web, pero prefiero ponerlo aquí, ya que por ahora lo ve más gente.
1.- BomberGUM! el proyecto
BomberGUM! a partir de un hilo (que yo pispo abrí) en el que se discutia sobre si los juegos pueden ser
GPL y ser rentables. Conclusión, lo que es conclusión... no llegamos a ninguna (se tiene que estudiar cada caso en solitario muy detenidamente), pero a partir de aquí surgió la idea de realizar un juego GPL. Después de hablarlo, salió la idea de hacer un clon de [tadoramo]
Bomberman, pero con añadidos. Abrí, en su momento, un hilo en
MANGANIME,
en el que pedía la colaboración de algunos expertos dibujantes del foro. Al rato, apareció una habitual llamada GUM y, muy simpatica ella, una vez entendido más o menos lo que quería en menos de 24 horas ya tenía un personajillo, muy simpático también, de piel rosa y traje azul y naranja. Inmediatemente, y en honor a su creadora llamé al juego BomberGUM! El proyecto fué avanzando en conceptos... pero nunca se acabó de gestar en si. Más adelante os hablaré de algunos de los motivos de porqué se paró, y como podemos solucionarlos. Pero antes, hablemos de el grupo que se formó a partir del juego...
1.1.- psEol GPL (Game Programming Leaders)
psEol es el acrónimo de "psEudocodigo-ElOtroLado".
Muchos direis, ¿seudoqué? (viene un poco de royo)
http://www.pseudocodigo.com era/es un proyecto en el que estoy metido también. En principio los integrantes del grupo pseudocódigo somos los que vamos a "enseñar" al resto como hacer diversas cosas. Todos estamos/hemos estudiado diversas carreras y queríamos realizar un proyecto ambicioso... el de enseñar a todos los niveles. De la misma manera que se enseña en la universidad... pero no como enseñan los profesores, de la misma manera que un amigo te explica las cosas para que lo entiendas mejor. De una forma próxima y sencilla. Ahora la cosa se ha reactivado en todos los sentidos. El ".com" se transformará en una -pequeñísima, somos los mismos- empresa de desarrollo de software (tanto libre como privativo, de todo debe haber), linux (administración, instalación, mantenimiento) y etc. Pero... claro, nunca nunca nunca quisimos hacer eso que muchos piensan "já ahora que son conocidos se montan una empresa y ya nos quedamos sin tutoriales ni proyecto". No, para eso, mudaremos la idea a
http://www.pseudocodigo.org, será un
http://www.freshmeat.net pero de proyectos de habla hispana, pero con artículos de programación de todos los niveles... pero sobre todo orientados a los proyectos que hagamos, y "hosting" para psEol (para gestionar usuarios y tal). Es decir... ahora estoy preparando un artículo sobre C++ (clases y demás) ya que mucha gente sabe C, pero no C++. Si hay alguien que quiera hacer un artículo sobre métodos de ordenación aplicable a un juego tipo Bomberman... encantados! o cualquier otra cosa. Queremos crear una comunidad en la que el conocimiento circule libremente, y que el conocimento que demos, sirva para todos los del grupo.
ElOtroLado.net ya lo conoceis, es esta web. No creo que haga falta extenderme tanto como en la anterior, ya que todos los de aquí la conoceis... solo decir, que esta es la mejor comunidad del mundo, aunque hayan varios trolls por aquí [666]
El conjuto, psEol GPL, intenta ser la unión de los dos mundos, que no son tan dispares (en ambos hay gente con conocimiento y ganas). Nuestra intención es que no hayan muchos "niveles". Yo, por ejemplo, estoy al mismo nivel que cualquiera, ya que mi trabajo no deja ser como el de cualquiera, ni más ni menos importante. Espero que esto no se convierta en una sociedad piramidal por obligación. Aunque a veces lo sea, y hayan "jefes" de cada departamento, estos han de ser como compañeros. Es decir: piramidal del buen royitou.
1.2.- Presente (inmediato, 14 de julio del 2004)
No hablaré del pasado, porque todos todos todos lo conoceis (sino, busqueda avanzada, coñe), además... no vaya a ser que alguien cambie algo, porque puede que no nazcais.
Chorradas a parte (intento no ser demasiado serio en algunas cosas, muchos ya me conocieis... se ha de tener humor, aunque esto ha de ser serio), el presente es el siguiente: está todo parado. ¿Por qué? sencillamente, porque se le dió mucho empuje al principio y luego pocos resultados. El enfoque era erróneo. Mucha gente (por no decir el 90%) del grupo esperaba a que yo realesara un código, algo con lo que trabajar. Las pruebas que yo hice... son una P**A M****A, y solo eran para probar los diversos objetos/personajes en 3D. No era nada con lo que se pudiera trabajar. A parte del problema que tuebe con la librería para huesos CAL3D. Además, dentro de un mismo grupo (gráficos, redes...) al no poder quedar, nadie se mojaba. Normal. A parte, yo estoy en muchos proyectos. Así que he decidido acabar los que ya tengo, y guardarme las nuevas ideas para el futuro. He perdido muchas cosas durante estos meses por tener demasiado trabajo, muchas y muy queridas algunas. Este es el momento de acabar todo lo que hemos empezado (sobre todo yo). Y con ese espíritu quiero relanzar el proyecto. Yo estoy dispuesto, ¿y vosotros?
1.3.- Futuro
Para empezar, BomberGUM! no está del todo definido, aunque no lo parezca. Hemos de "congelar" conceptos. No hemos acabado de hablar de tipos de juego. Ni de todas las armas. Ni tan siquiera hemos acabado de fijar las liberías y plataformas. Para ello, voy a explicaros lo que se debe de acabar de hacer, que por otro lado, es lo que se hace en los videojuegos profesionales. Con ello, espero que de vuestro "tiempo libre" le dediqueis unos minutos al proyecto. Además, espero que gracias a esto todo sea 100% reutilizable.
1.4.- ¿Por qué un juego desde cero?
Por aprender. Por la satisfacción propia (la de todos) de haber creado algo propio. Si usaramos librerías precocinadas, se nos quedarían demasiado grandes, y tampoco aprenderíamos los conceptos básicos. No se trata de hacer un juego: se trata de aprender, enseñar y crear una comunidad en la que todo el mundo pueda aportar algo. Quizás en un futuro nuestro "motor" sea considerado como una opción. O quizás no. Solo espero que todos saquemos algo de ello. Si además, sale un juego divertido, multiplataforma y libre... Cava para todos!
2.- COMENCEMOS DE NUEVO!!!!
2.1.-Tipos de juego que tendrá BomberGUM! (en su primera versión)
Si, quizás sean "pocos" tipos de juego... pero seamos realistas: todos tenemos ideas, y muy buenas, seguro. Pues las guardais y cuando vayamos a hacer segundas partes o otros juegos, las exponeis. Si no salen (porque puede que hayan muchas) exponerlas más adelante.
* Mini RPG: visión isométrica o superior al estilo
Anima Crossing, que nos servirá para desplazarnos de un escenario a otro, hablar con gente y realizar pequeños eventos (coger, dar...). Hemos de hablar de la historia (para ellos los hilos privados del foro del proyecto ;))
* Tipo BomberMAN: Pero con variantes, como bombas chicle que al explotar dejan pegajoso el suelo unos X segundos... hemos de fijar unas cuantas más.
* Tipo MarioKart: Por ahora suelos planos... en un futuro, quien sabe. Las armas del apartado anterior sirven igual.
Posibilidad de jugar el segundo y tercer modo en red. Quien sabe si el primero también.
2.2.-Trabajos a realizar
El primer trabajo que voy a nombrar es nuevo... y es uno del que no habiamos hablado hasta ahora:
a) Scripting: hemos de realizar un "mini" lenguaje de scripting que nos servirá para agilizar el trabajo como animaciones, envio de información etc. Es más, sin el no podemos hacer prácticamente nada.
Podemos hacerlo de muchas formas, pero yo recomiendo, básicamente 2: Un script própio, que iríamos definiendo aquí, sería del estilo:
ANIMACION{
bomba.png 0.0 1.0 "Booom"
}
POSICION{
3.4,4.89,12.0
}
ESCENARIO{
NOMBRE "LA VILA DEL PINGÜINO"
TEXTURAS bueno.png,bonito.png,barato.png
ARRAY 1 {
{0,0,0},
{1,1,1},
[...]
}
(no me extiendo más)
O mediante XML. Creo que haciendolo de la primera forma optimizaríamos mucho más el juego, y lo podríamos hacer multiplataforma (ya que con XML dependeríamos de una librería, ya que hacer un parser... no se, depende de las ganas).
b) Paralelamente al scripting ir definiendo como serán los escenarios, personajes...
Con estos dos primeros puntos ya habremos hecho MUCHISIMO. Os lo digo por experiencia, en otro proyecto, solo llegar aquí ya hizo verlo tod clarisimo, tan claro que la implementación fue muy rápida. Por razones "legales" no podemos usar el mismo código... hagamoslo mejor!!!
c) Una vez se sepan (más o menos... pero más que menos) los dos anteriores... empezar a codificar!!! pero eso si de la siguiente manera:
Cada grupo tiene un trabajo: redes, gráficos y audio básicamente. El trabajo de cada grupo debe ser 100% independiente del trabajo de los demás para que se pueda serailizar internamente... es decir, que si yo soy de gráficos, no pintaré hasta que esté todo calculado, y no se calculará hasta que todos los inputs (redes/teclado/joystic...) hayan sido procesados.
Si el trabajo de uno, se mete en el de otro (es decir, hayan trozos de código de recoger de teclado y pintar a la vez juntos) mal. Una vez una función acaba su trabajo le da los resultados al siguiente en la lista. Esto es obvio, pero no se suele hacer...
d) Juntar partes: durante el desarrollo debe haber comunicación entre equipos. Pero siempre se debe separar muy bien (como he dicho antes) el trabajo de unos y de otros. Pero al final, cada módulo deberá comunicarse con el del resto. Una vez hecho esto...
e) Debugar/optimizar el código: y esto se hace ahora, al final. Podemos pasarnos centenares de años para optimizar algo, y no adelantar. Siempre es preferible que funcione y luego optimizar, sino se queda estancado. Obviamente, tampoco se debe hacer muy chapuzas dese el principio.
2.3.- Herramientas y mecanismos de desarrollo
a) Lenguajes y herramientas básicas:
* Programación:
- Plataformas:
> Linux: GCC (como compilador central, en su variante g++, aunque gcc también compila c++), entornos de desarrollo como KDevelop.
> Windows: Lo mismo, mediante Dev-CPP (que ya viene todo integrado). También es posible que usemos CYGWIN, pero ya hablaremos. Intentaremos evitar en la máximo posible Visual C++
> PowerPC: gcc tiene un port para MacOS X, así que no creo que haya mucho problema
> Dreamcast y varios... idem.
- Herramientas generales:
> Gestor de Bugs
> CVS
* Animación:
- Blender3D: para modelajes en 3D de algunos personajes/escenarios
- 3D Studio MAX: si, no es libre... pero tenemos licencia oficial (a parte,
oki es 'Discreet Official Trainer' o algo así :P), y el resultado que obtendremos es independiente de plataforma y del software. Poco a poco intentaremos tender a 100% Blender, pero es una gran herramienta. Si no podeis obtener una licencia... usad Blender.
- Efectos 2D: Ya veremos, pero cualquier software de dibujo podría servir (siempre y cuando el formato resultante sea 'útil').
* Audio: Ashitaka compró un software de edición, mejor que lo cuente el. Más adelante más info.
* Hardware:
En lo que espero que algún día se convierta en mi propia oficina he metido:
- Workstations:
> AMD Atholon 2000+, 120gb HD, GeForce 5...
> Pentium III 800...
> Pentium II 233 :P
> 3 o 4 Pentium I 150/200...
>
- Servers:
> Pentium II a 400, 6Gb HD, 64 RAM, Debian r2... próximamente conectado 24h a una conexión de 1mbps/300kbps subida ;) a algunos os daré cuenta shell por si quiereis hacer pruebas cliente-servidor.
> Pentium I a 100 de router ;)
> Ya veremos
* Comunicaciones:
- Jabber: mensajería instanánea... ideal para hablar con tranquilidad ¡¡¡¡Nada de MS Messenger!!!!
- IRC: por si todo falla
o simplemente, para hablar a dos manos
Digo todo esto, por si algún día alguien pasa por barcelona (o ya esta aquí
) nos podríamos reunir en vivo y en directo y hacer algo. O simplemente hablar.
b) Librerías y recursos externos:
- SDL: Gestión de entorno (ventanas, eventos...)
- SDL_image: carga de gráficos (png, bmp, tga...)
- SDL_mixer: audio (ogg, mp3, wav...)
- SDL_net: redes en general
- OpenGL: Mediante la implementación en SDL y/o Mesa3D
- Cal3D: Animación 3D por huesos
c) Algoritmos básicos y áreas lógicas:
Ya hablaremos... pero os haré una pequeña explicación de (por ejemplo) porqué el QuickSort puede ser muy importante aunque no lo creais
- IA
- Multiplayer
- Matemáticas, física, colisiones, geometría...
d) Cosas a tener en cuenta:
- Serialización de procesos: o como se dice en este mundillo "Run & Render" (primero las ejecuciones y luego los resultados, no todo mezclado)
- Textos del juego en UNICODE: Siempre, o de lo contrario podemos tener muchos problemas a la hora de traducir.
- Como identar y comentar el código (ver documento que hizo creo que eraser... ya lo colgaré, tranquis)
- Usar lo que podamos/sepamos la STL
- Encapsulamiento de los recursos externos, es decir... no usar directamente cuando podamos, muchas funciones, sino a través de funciones propias: con esto evitaremos depender de una librería y tener que cambiar todo el código.
Hay gente actualmente trabajando en el proyecto, como Ashitaka que ha hecho una nueva sintonia para el juego. No os desanimeis!!!!
3.- Licencias
No solo existe la GPL. También hemos de pensar en el trabajo paralelo: gráficos, audio, argumentos...
3.1.- Copyright
Sin copyright, no tienes derecho sobre tu propia obra. Para ello, cada cierto tiempo me acercaré al registro intelectual para actualizar los registros de código fuente, imágenes, personajes, historia, concepto, música... registrandolo todo bajo el nombre del grupo "psEol", pero a su vez dando la postestad a cada uno de los creadores. Es decir, es del grupo, pero la última palabra la tiene el creador, y no se podrá hacer nada sin su consentimiento. En españa, es necesario un registro, ya que de otra manera, no hay forma de demostrar (legalmente) quien es el autor. De esta forma evitaremos robos y plagios. No es lo mismo compartir, que dejarse robar.
3.2.- Licencia para el código fuente
El código fuente (source) será licenciado completamente bajo los terminos de la
GPL. De esta manera, aseguramos que todos podamos aprender de lo que haga el otro, y que nadie se apropiará del código. Es libre, y será libre para siempre.
Quiero recordar que esto implica un "Copyright" previo. El copyright son los denominados "Derechos de autor", que dan al autor de hacer lo que quiera con su trabajo. En este caso, la GPL es una aplicación del copyright, en la que permite que cualquiera haga lo que quiera con el código fuente, siempre y cuando devuelva los cambios a la comunidad.
3.3.- Licencia para música e imágenes y arte en general
En este caso seremos algo más restrictivos. El material "audiovisual" no será "libre" en todos los sentidos. Pertenecerá a cada autor y al grupo, y estos último serán los que se reservaran el derecho de explotación. ¿Por qué? Pues, porque de esta forma posteriormente podremos intentar sacar partido a todo el trabajo invertido. Posiblemente algunos trabajos se puebliquen bajo licencias de la
CC, y otras solo con el copyright, en en todos casos el juego será de libre distribución. Es decir, mientras no se modifiquen/vendan las imágenes o canciones a parte o se utilicen en otros "ambientes", puede regalarse, meterse en distros (dios, me encantaría verlo metido en una mandrake por defecto) o lo que sea, pero si se va hacer un uso comercial de TODO el juego (no solo utilizar el motor). Deberá ponerse en contacto con nosotros para hablar del tema.
Alistaros en el grupo:
http://pseol.pseudocodigo.org
Vistad la web del proyecto y registraros en los foros:
http://bombergum.sourceforge.net
En estos momentos los desarrolladores "activos" (cof cof) son:
ashitaka, escufi, eraser, Mano Negra, oki, R5TURBO, Rurouni, sergiox, Zeenek.
Agradecimientos a:
Alekseyev, Arcturus, Aruku K. Fuosu, BaByMaRiO, BdM, billyberjas, Chui, Crashburn, dangers, denver, Denymetanol, Dr.Alce, Drazhaz, fostiator, Fumeta, Gn., Grimnir, hiuston, Jorge, josemrm, kavex, KeiTH, kroatonthejoker, Kurt, Len Tao, McKlain, Nekete, ni, RaUleX, vicman, Waninkoko, WueSo, xerallo, zic.