OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.
Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.
Desarrollo de videojuegos en Linux-Diseño II
En la anterior entrada hemos dejado planteadas una serie de cuestiones que tenemos que resolver antes de empezar a programar.
Empecemos a plantear la cuestión de los tipos de gráficos. Si vamos hacerlo en 2D en Linux hay una serie de librerías que nos van a servir de base. La más conocida y utilizada es la Simple DirectMedia Layer.
Anteriormente he hablado de DirectX y de Direct3d. Muchas veces se hace el error de comparar OpenGL con DirectX cuando realmente la comparación correcta es OpenGL vs Direct3D. DirectX es una colección de API creadas para facilitar tareas multimedia, un componente suyo, Direct3D se encarga de los gráficos en 3D y se aprovecha de la aceleración por hardware de las tarjetas gráficas haciendo de interfaz entre el programador y la tarjeta de video.
Volviendo al tema de la SDL, podemos compararla con DirectX salvo por el tema de los gráficos en 3D. De esta manera al ser una librería multimedia nos va a dar acceso a programar con ella los gráficos en 2D, pero es que además sirve para el tema del sonido, input (teclado, ratón, joystick), cdrom, video con mpeg, etc... Además han programado algunas "extensiones" como SDL_net que junto a la SDL nos permite desarrollar aplicaciones que hagan uso de conexiones de red. Además de C y C++, que son los lenguajes más comunes para usarlas, tienen bindings para otros lenguajes como puede ser Python, Perl, etc... Otra ventaja que tiene es que es multiplataforma y esta portada a gran cantidad de sistemas operativos (Windows, Linux, FreeBSD, Solaris, etc...). Tiene una buena documentación, han salido incluso libros al mercado, con tutoriales y con el API bien documentado. Además se utiliza no solo en desarrollos amateur sino también en juegos como Quake 4 (La explicación más abajo).
El inconveniente de esta estupenda librería es que es de bajo nivel por lo no vamos a tener facilidades de otras librerias de más alto nivel. Por ejemplo no tenemos colisiones cosas que otras librerias de más alto nivel si proporcionan como puede ser ClanLib.
Otra alternativa en el campo de las 2D, sobre todo para gente que tanto C, como C++, se le hace dificil, es el de utilizar un lenguaje de programación como Fenix. Lo que le hace especial es que es una alternativa libre al lenguaje DIV. Tanto Fenix como DIV son lenguajes creados especialmente para desarrollar videojuegos. Esto hace que el propio lenguaje tenga soporte para cargar imagenes, colisiones, manejo de sonido, input, sin necesidad de utilizar ninguna libreria. La pega es que tienen un rendimiento muy pobre y que al ser lenguajes creados especificamente para los videojuegos suelen ser mucho peor diseñados que otros de proposito general. Sin embargo cualquiera sin apenas conocimientos de programación puede hacer cosas interesantes y de forma muy rápida. Aquí teneís un manual de fenix algo atrasado pero que tiene utilidad fenix-ref.pdf
Ahora pasemos al tema de las 3D. Tenemos varias alternativas y de buena calidad. La primera es utilizar OpenGL para desarrollar nuestro propio engine. Como es una libreria de bajo nivel nos da primitivas para cosas muy simples como puntos,lineas, poligonos, por lo que vamos a tener que programar todo desde cero. Podemos acompañarla con la libreria SDL y asi tenemos una alternativa perfectamente valida a DirectX puesto que juntamos lo que le faltaba a SDL con lo que le falta a OpenGL.
Sin embargo como desarrollar un engine propio es lento, costoso, y dificil, no vamos a reinventar la rueda y vamos a ver engines ya hechos que nos ayuden a programar un videojuego.
CrystalSpace es muy conocido por ser el engine utilizado en el juego planeshift. Es de los más completos engines opensource. Soporta multitextura, LOD, animación de los mesh mediante libcal3d, sprites 2D, sistema de partículas, físicas con ODE, multiplataforma etc ... El inconveniente que tiene es que tiene poca documentación en forma de tutoriales por lo que tiene una curva alta de aprendizaje. De todas formas jorrit (uno de sus creadores) es consciente de ello, asi que me supongo que harán todo lo que puedan por solucionarlo. Aquí teneís un ejemplo de lo que se puede conseguir con CrystalSpace:
Ogre3D es otro engine, pero esta vez solo funciona como librería 3D, es decir, solo sirve para los gráficos, tal y como dicen en su web, ni sonido, ni IA, ni físicas. Sin embargo tiene la ventaja de ser más facil de utilizar que el anterior y de tener una buena documentación con guias de iniciación, tutoriales, etc... Además podemos utilizar en conjunción de otras librerías para tener sonido, físicas, según necesitemos. Por supuesto tiene características muy interesantes como el uso de shaders, ser multiplataforma, LOD, sistema de partículas, HDR etc.. Un ejemplo de como usa la iluminación con HDR lo podeís ver en la siguiente imagen:
Ya por último nos queda Irrlicht. Este no lo voy a comentar porque lo vamos a utilizar en los próximos artículos para programar gráficos en 3D. Aun así os dejo este video para que veaís las posibilidades que ofrece este engine.
Salu2
BOFH
# 22555 ¿No te olvidas de los motores 3D "Quake"?
Teniendo en cuenta que ID software ha sacado bajo GPL todas las versiones "no actuales" de sus motores Quake (Quake, Quake II y Quake III) y que de ellos han salido multitud de evoluciones con efectos interesantes, quizás deberían como minimo mencionarse ¿no?.
-------------------------
Sin Dioses: ateísmo, escepticismo y racionalismo.
La Biblia: el gran engaño, fraude y mentira de Occidente.
--
Yo no me llamo... siempre sale que comunico.
BOFH
# 22564 Pues si que me gustaría
El mismo Dark places engine que utiliza el juego Nexuiz es una buena muestra de ello.
Pero el problema es el espacio. Si ya me salen largos los temas y temo que aburridos, imaginate si me pongo hablar de los motores basados en los del quake, o simplemente en los mod que se pueden hacer.
Tenía pensado comentar más cosas como la librería pygame (la SDL de python), los engines como Soya3d, Panda3d, Stratagus. También quería comentar sobre el TAO framework y la importancia a la hora de utilizar un lenguaje de programación u otro en los videojuegos. Y sobre todo profundizar más en los que he descrito.
Por otra parte para hacer videojuegos desde cero es mejor engines de proposito general como los que puse. Los derivados de motores quake son muy grandes, complejos, sin documentación, no son de proposito general,no me parecen buenos para iniciarse.
De todas formas como son una serie de artículos a lo mejor cuando termine con irrlicht hablaré de estos temas. Es que tan poco me quiero alargar mucho con la introducción.
Salu2
-----------------
cloud_tdh@jabber.org
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
Usuario
# 22571 Pygame
Pues si es por problema de espacio, yo sustituiría la mención a Fenix por Pygame, que tiene mucho más futuro. La cantidad de "bindings" a distintas librerias que tiene Python, Irrlicht incluida, no creo que la tenga Fenix.
No conozco Fenix, pero no creo que ofrezca mucho más que Pygame.
--
jotarp.org
--
jotarp.org
BOFH
# 22574 Fenix ofrece menos
pero es distinto. La gente dice que Python es sencillo, pero es orientado objetos, y es un lenguaje con muchas características. Se usa profesionalmente y se nota.
Encambio Fenix es un lenguaje sencillisimo. Para que te hagas una idea el DIV studio lo vendían en los kioskos. Es del tipo Darkbasic. Son lenguajes hechos para que un persona sin conocimientos de programación aprenda hacer videojuegos. Es por eso por que he hablado de él. No es un asunto de mejor o peor, es de mostrar alternativas diferentes.
Cuando hablo de problemas de espacio no es literalmente. Quiero que los artículos sean amenos no tochos larguisimos (cosa que no he conseguido). Cuando me dí cuenta que llevaba demasiado hablando con el tema de las 2D pasé a las 3D. Cada engine, cada librería, dan para hacer un artículo entero, pero esto me llevaría mucho tiempo y alargarían la introducción.
Salu2
----------------------
El blog de cloud_tdh Nibelheim
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
Usuario
# 22578 Alternativas
Si la orientación a objetos te parece una dificultad, Python es "tan sencillo" que puedes usarlo sin utilizar ni un objeto. Y el que tenga muchas características no dificulta su aprendizaje: las que no necesitas, ni las aprendes ni las usas. Si Python se usa para enseñar a programar a quien no tiene conocimientos de programación, es por algo: Aprenda a pensar como un programador
Si el público objetivo de los artículos es alguien que no sepa nada de desarrollo de videojuegos, el no citar Pygame me parece escamotearle una de las opciones más válidas actualmente.
Creo sinceramente que el camino que va de C a Fenix, pasa, obligatoriamente, por Pygame. Quizá no sea tan sencillo como Fenix, pero si mucho más que C ó C++ pudiendo hacer practicamente lo mismo. Es decir, "casi" tiene lo mejor de ambos ("casi" tan potente como C y seguro que "casi" tan fácil como Fenix)... ¡ y tu lo obvias !.
De verdad que no me cabe en la cabeza que cites C y Fenix y no cites Pygame. Y si queda el artículo largo... pues se divide en dos. Si alguien me preguntase por una introducción al desarrollo de videojuegos en Linux, nunca le podría recomendar una en la que no se citase Pygame.
Pero, bueno, el artículo es tuyo y la elección de su contenido es tuya.
--
jotarp.org
--
jotarp.org
BOFH
# 22586 Vamos a ver...
¿Te has molestado en leer los artículos anteriores? Esto es una serie de artículos, no es único, a ti nadie te dice que haga un especial con python como lenguaje de programación y sus posibilidades (Soya3d, Panda3d, pygame, pyogre, etc...). Asi que no me vengas quejándote y diciéndome cosas como "Y si queda el artículo largo... pues se divide en dos". Eso me demuestra que antes de críticar ni te has molestado en mirarte ningúno de los anteriores para saber si quiera que es una serie de varios artículos . Si están numerados es por algo.
Python es orientado a objetos. El hecho de que se pueda programar sin pensar en la OO, no quita que todo, absolutamente todo sea un objeto. Y si quieres aprovecharlo bien va a tocar aprender a programar. A un grafista que no tenga ni idea de programar y quiere hacer un juego en 2D sencillo le basta, le sobra con Fenix, y no se va a tirar más de un día para hacer algo curioso. Fenix es el basic de los videojuegos. Una mierda como lenguaje, pero fácil y rápido para los que no saben ni quieren aprender a programar.
Mirate Fenix, programa algo en él, y luego me dices lo de casi tan facil como python. Porque podemos tirarnos años en una discusión sin sentido, cuando estas hablando sin haberlo probado.
¿Y porque hablo de C y de C++? Pues porque tres de los engines gráficos más importantes utilizan esos lenguajes como nativos, y el resto de los bindings casi nunca están tan actualizados. Porque es muy facil decir que irrlicht tiene versión para perl, pero luego hace más de 2 años que no se actualiza la librería, o como la versión de python, que ha quedado directamente muerta.
He hablado de la SDL. He comentado que tiene versiones para Python. Si se molestan en ir a la página web podrán ver que pygame es la versión de la SDL para Python asi que ahí esta mencionada.
En definitiva, el campo es muy amplio, esto no es una lista exahustiva de todo. Porque por esa regla de tres cualquiera me puede venir con su engine y su lenguaje preferido a decir porque no he hablado de él.
Salu2
----------------------
El blog de cloud_tdh Nibelheim
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
Usuario
# 22602 no me quejo
Primero: no me quejo. Doy mi opinión.
Segundo: Cuando digo "Y si queda el artículo largo... pues se divide en dos" quiero decir "Y si la tercera parte de la serie de artículos queda larga, se hacen dos de ella".
Tercero: Ciertamente, el determinar de que lenguajes y librerias hablar en unos artículos sobre desarrollo de videojuegos en Linux da para muchas controversias. Bizantinas, porque no creo que nadie haya probado todos los lenguajes y librerias. Esta es simplemente mi opinión, la cual he intentado argumentar mínimamente (quizá poco acertadamente). Si quieres la tienes en cuenta y si no, pues no.
--
jotarp.org
--
jotarp.org
BOFH
# 22605 Si que tengo en cuenta las opiniones.
Pero precisamente lo que no quiero es empezar flames sobre si hubiera sido mejor comentar la librería x y el lenguaje y en vez del z que comenté. Prefiero las críticas al estilo "deberías hacer un artículo sobre tal librería porque es interesante"a críticas "para que metes el programa x si el programa y es mucho mejor y sino es que no vale ni para recomendar leer el artículo."
Expongo unos ejemplos de engines, librerías, que me parecen que pueden ser útiles. Hay muchas más pero para empezar creo que ya es suficiente. Que crees que debería haber hablado sobre pygame. Te doy la razón y eso es lo que he expuesto al hablar con Ed_hunter, que me hubiera gustado hablar sobre todas esas cosas pero que me alargo mucho en la introducción y que quiero empezar hacer algo de código. Eso no quiere decir que no vuelva al tema y comente sobre pygame, soya3d, o el que sea.
En serio, aprecio las opiniones, y las tengo en cuenta.
Salu2
----------------------
El blog de cloud_tdh Nibelheim
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
BOFH
# 22582 Digo sólo mencionar
En capítulo mencionas varios motores 3D o librerías. Creo que podías haber mencionado que también tenemos disponibles los motores Quake como software libre y que podemos hacer con ellos lo que queramos. Ni tan siquiera haría falta capturas de pantalla y demás, que todos hemos visto al Quake en acción ;^).
-------------------------
Sin Dioses: ateísmo, escepticismo y racionalismo.
La Biblia: el gran engaño, fraude y mentira de Occidente.
--
Yo no me llamo... siempre sale que comunico.
BOFH
# 22588 En el primer capítulo
En la introducción ya comenté la importancia de que juegos comerciales como la saga Quake, UT, etc.. Tengan versión para Linux, porque gracias a eso podemos reutilizar sus engines.
No lo comento aquí porque creo dan para mucho, sobre todo por el tema de los mods, y por las razones que te puse antes.
Salu2
----------------------
El blog de cloud_tdh Nibelheim
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
Usuario
# 23712 +1
interesantes tus artículos.
como ganar dinero haciendo videojuegos