› Foros › PC › Software libre
Siempre es mejor desarrollar con tecnologías libres. A la larga te das cuenta.tecnologías libres (cómo no)
Podemos desarrollar para consolas comerciales con kits amateurs creados por la scene de cada una de estas. La parte negativa es que hay que "crackear" la máquina para que acepte código no firmado, lo cual puede perder la garantía o incluso puede dar problemas a la larga (no por el software, sino por el crack). La PS3 dispondrá de una interfaz OpenGL ES, por lo que será relativamente sencillo crear una implementación libre que la utilice. XBOX360 utiliza D3D, pero no creo que cueste mucho hacer lo mismo que con la PS3, ya que en esta, si hay problemas a la hora de usar la ATI, se puede tirar del procesador de tropocientos cores PPC. La PSP ya es una realidad, pero Sony hace todo lo posible por tapar los agujeros.1. A nivel casero (uséase, sin ser una gran compañía), pueden ejecutarse juegos programados por nosotros en consolas como PS2, xbox, etc? ¿Qué hay de las de nueva generación (PS3, xbox360, PSP...)?
Puedes programar en C, C++, Pascal, Basic... todo para lo que hayan creado un compilador. GCC es el más portado (gracias a su gran poder de portabilidad y a que está divido en 2 partes). El tema de C#/Python/JAVA es algo más peliagudo: dependen de un intérprete o máquina virtual. Estos consumen recursos y no todas las máquinas lo soportan. Sin embargo las generaciones futuras de consolas no tendrán problema... C# y Python podrán ser portados (tienen Interpretes/máquinas virtuales libres). JAVA, aunque tiene implementaciones libres... la gente que se dedica a ellas no está por la labor y no la portarán a algo que no sea "empresarialmente" necesario.2. Si la pregunta anterior es correcta... ¿En qué lenguaje/s debería estar programado el juego? Supongo que con C y C++ no habrá problema, pero ¿y con otros lenguajes más nuevos ó menos comunes en estos menesteres (C#, Python, Java...)?
Sobre todo depende del motor del juego. Me explico: el motor debe saber cuando mostrar/calcular según que zonas o partes. No es lo mismo renderizar a una distancia de unas 10Km que 10m... no es lo mismo renderizar 50 personajes que 10. De la misma forma se comprueba con la práctica que no es lo mismo renderizar 5 personajes de 1000 polígonos que 10 de 500 (los números salen igual en cuanto a polígonos... pero cada uno tiene su propias funciones...). El engine ha de saber que sacrificar en cada momento: desde el número de polígonos, pasando por el número de normales de cada uno (para todo lo relacionado con efectos de mapeado y luces) a la lejanía de la cámara. Lo mismo pasa con los FPS... el juego debe reaccionar igual a 100fps que a 15. Los 60fps típicos mínimos son porque la interacción hombre-máquina se ve muy afectada si baja de esa cifra. Aunque todos hayamos jugado a 10fps a veces.3. En éste hilo se comentaba que uno de los puntos fuertes para la portabilidad era el degradado. A groso modo, el mejorar ó quitar calidad a las imágenes y mapas según la potencia de la máquina. ¿Eso depende también de la programación del motor del juego exclusivamente ó también de la forma en que se hagan los gráficos?
De esto podríamos estar hablando días... pero te lo resumo: Mono hace muy buen trabajo. Podría decirte que al final no notarías diferencia... pero no es verdad. La verdad es que con el tiempo podrás hacer muchas virguerias y te dará igual el lenguaje, ya que las máquinas suben de potencia. Con los procesadores de múltiple core los lenguajes que dependen de una MV se ven beneficiados inmediatamente (no hace falta necesariamente que pienses en hilos). Con C/C++ si no programas multihilo no notarás diferencia y no supondrá ningún avance. C# es muy bueno, pero para programar de fondo prefiero C++.4. Al desarrollar juegos con Mono vemos que ya hay disponibles versiones para Mono de SDL (SDL#) y OpenGL (OpenGL.NET). Deduzco que con éstos, la velocidad de ejecución de esas tareas concretas que dependan de ellos, se harán a una velocidad parecida a como lo hacen en sus versiones de C/C++. Pero, ¿sabe alguien qué rendimiento puede dar un juego hecho con Mono respecto a otro hecho de la forma tradicional? ¿Sería mucho más lento?
Jamás lo dudé! Soy fan de las tecnologías, formatos, y estándares abiertos, más que del propio software abierto.FuckingFreaky escribió:Siempre es mejor desarrollar con tecnologías libres. A la larga te das cuenta.
Realmente yo me quedé en la PSX.... Pero sí, realmente me jode que si te compras una máquina, no puedas hacer con ella lo que te salga de las narices... joé! la has pagado! ¿por qué no vas a poder ejecutar tranquilamente tu software? Entiendo que no te den soporte para problemas relacionados con tu software, pero no todo esto.Rurouni escribió:De todas formas RECOMIENDO encarecidamente programar para máquinas libres como la GP32 o su sucesora GP2X. Paso de dar motivos a la gente haciendo programas para una máquina de una compañía que se niega a dar recursos para programar libremente o incluso dificultarlo. Ok, tienen todo el derecho de hacer lo que quieran para que no usen copias piratas... pero a estas alturas molesta ver como las compañías se esfuerzan de dejar de lado a la scene.
Sólo como curiosidad... La máquina de Mono también corre Java, por lo que si se porta Mono a alguna plataforma, también se podrá correr Java en ella. No sé si lo sabías, pero puntualizo.C# y Python podrán ser portados (tienen Interpretes/máquinas virtuales libres). JAVA, aunque tiene implementaciones libres... la gente que se dedica a ellas no está por la labor y no la portarán a algo que no sea "empresarialmente" necesario.
Jodé, realmente suena complicadísimo, pero claro, es lo que diferencia lo bueno de lo excelente... Hasta donde más he visto yo es la técnica de crear distintas texturas a distintas resoluciones y cargar según convenga. Como parece que dices, hay técnicas mucho más eficientes.Rurouni escribió:Sobre todo depende del motor del juego. Me explico: el motor debe saber cuando mostrar/calcular según que zonas o partes. No es lo mismo renderizar a una distancia de unas 10Km que 10m... no es lo mismo renderizar 50 personajes que 10. De la misma forma se comprueba con la práctica que no es lo mismo renderizar 5 personajes de 1000 polígonos que 10 de 500 (los números salen igual en cuanto a polígonos... pero cada uno tiene su propias funciones...). El engine ha de saber que sacrificar en cada momento: desde el número de polígonos, pasando por el número de normales de cada uno (para todo lo relacionado con efectos de mapeado y luces) a la lejanía de la cámara. Lo mismo pasa con los FPS... el juego debe reaccionar igual a 100fps que a 15. Los 60fps típicos mínimos son porque la interacción hombre-máquina se ve muy afectada si baja de esa cifra. Aunque todos hayamos jugado a 10fps a veces.
De esto no ando mu puesto... ¿cómo es eso de que con las MV no se necesita programar en hilos?Rurouni escribió:Con los procesadores de múltiple core los lenguajes que dependen de una MV se ven beneficiados inmediatamente (no hace falta necesariamente que pienses en hilos). Con C/C++ si no programas multihilo no notarás diferencia y no supondrá ningún avance. C# es muy bueno, pero para programar de fondo prefiero C++.
Sabes que te leeré atentamente cuando hagas una mínima "release".Rurouni escribió:En el anterior hilo decías que querías hacer un "PCFurgo"... DarkPython es ideal para tí... o al menos el concepto que yo tengo de lo que estoy haciendo que por ahora no es nada (no hay nada chachi que ver). Pero bueno... ya abriré un hilo sobre el tema.
Con estructura te refieres al tema módulos, clases, etc... ó a la estructura gráfica del programa? Si es lo primero, ¿no es más válido UML? Es que siempre me hace gracia que en casi ningún proyecto libre hecho en C++ se utiliza UML para nada... A veces siento que he perdido el tiempo aprendiéndolo (mínimamente, de todas formas).Rurouni escribió:Lo principal es dibujarte en un papel o sobre un lienzo de Gimp/DIA la estructura de todo lo que necesitas y como lo divides... y luego empezar a implementar.
Buf! Mucho has dedicado ya, ¿qué más quieres? Aunque no sea quizá un alivio, que sepas que leo detenidamente todo para intentar pillarlo bien... jeje!Rurouni escribió:Bueno, no tengo más tiempo ahora... nos vemos más tarde!
Síp! es cierto... además eres un tío ameno, que dejas las cosas bastante claras... me parece una buena idea la de \-\adEs. Hala, que ya como te metas en el proyecto de escribir un libro no sé de dónde vas a sacar tiempo ni para dormir 4horas...Rurouni escribió: Ruro, te lo digo enserio, ¿no te has planteado escribir un libro? Fijo que te forrabas, por que entre lo que sabes y la paciencia que tienes con nosotros..
El éxito de una máquina lo decide su comunidad, no los que no a tienen. La GP32 ha sido un éxito rotundo. Se han vendido prácticamente todas las que se fabricaron. No hay nadie que se haya desilusionado, cada vez hay más gente que desarrolla juegos nuevos y originales, o portando software ya existente. Es la consola del Software Libre e Indy. Para mí la mejor portatil con diferencia, sin entrar en aspectos técnicos ni de cantidad de juegos comerciales. Si quieres scene... creo que es un poco chorra dar soporte a empresas que hacen todo lo posible por quitarte el derecho a hacer lo que quieras con un cacho de silicio que has comprado. Aunque, ellos lo han fabricado, ellos están en su derecho.Estuve mirando lo de la GP2X a través de otro de los mensajes de BomberGUM! Tiene buena pinta, pero aún así creo que todos sabemos que se va a quedar con una cuota de mercado reducidísima... . Ojalá hubiera más proyectos así.
Uhmm... puedes programar en JAVA utilizano el lenguaje, pero me parece que las librerías de estas (SWIG o AWT por ejemplo) no están disponibles. Es decir: no puedes desarrollar un applet que funcione en el JDK de sun no tiene que funcionar en Mono. O al menos eso era hasta ahora. Sobre lo de mono GCC, más bien harán la interfaz C# que falta para GCC, como se ha hecho con todos los lenguajes que soporta. C# es un gran paso, pero pierdes mucho control sobre la aplicación. Un juego lo que pide es control en muchos aspectos... no se hasta que punto estará optimizado. Se ha de comprobar. Luego te pondré enlaces de engines en .NET/Mono.La máquina de Mono también corre Java, por lo que si se porta Mono a alguna plataforma, también se podrá correr Java en ella. No sé si lo sabías, pero puntualizo.
También, en un futuro, prentenden integrarse los ocmpiladores de Mono en GCC, al menos crear una extensión, por lo que supongo que también facilitará la tarea tanto para las distribuciones como para este tipo de menesteres.
Si. Si que se necesita programar utilizando hilos o threads para sacarle partido a las MV... lo que pasa que la MV en sí está optimizada para sacarle todo el jugo a los multiprocesador/core. Si no utilizas hilos, la mejora no será espectacular (o si, no lo he probado en la práctica), pero será mejora. En C++ o cualquier lenguaje compilado, en los cuales lo que has "compilado" (vaaalgame! la redundaaancia) un codigo concreto y así se queda hasta el fin de sus días (hasta que lo borras ), si no utilizas hilos no mejora nada, ya que la gestión de hilos la has hecho tu, y si no utilizas estos... solo utilizará 1 procesador. A ver... aquí entra todo el tema del S.O., si influye o no, si gestiona así o asá... pero no me voy a meter. Hablo de los programas que hacemos nosotros.¿cómo es eso de que con las MV no se necesita programar en hilos?
Con C++ o C o cualquier lenguaje compilado de bajo nivel tienes gran control sobre lo que haces. Hablas más directamente con la máquina. No hay intermediarios. La gente odia los punteros, por ejemplo, pero yo los empiezo a adorar. Que haya un Garbage Collector en los lenguajes basados en MV está muy bien para aplicaciones de escritorio y tal, pero no creo que sea lo más óptimo para sistemas en las que el tiempo real y la optimización de los recursos sea la principal premisa. Es una opinión personal.¿a qué te refieres con "programar de fondo" y por qué prefieres C++?
Yo me refería a UML sip. Sobre lo de si los proyectos libres se utiliza UML o no es simplemente cuestión de organización. Por lo general, la gran mayoría de programas que siguen la filosofía del SL o del OpenSource siguen la filosofía UNIX: un programa que hace un trabajo, pero que lo hace bien. Generalmente, si haces un solo trabajo (o dos o tres) no necesitas mucha planificación, sólo tener las ideas claras y saber programar bien.Con estructura te refieres al tema módulos, clases, etc... ó a la estructura gráfica del programa? Si es lo primero, ¿no es más válido UML? Es que siempre me hace gracia que en casi ningún proyecto libre hecho en C++ se utiliza UML para nada... A veces siento que he perdido el tiempo aprendiéndolo (mínimamente, de todas formas).
Los desarrollos no suelen ser así... primero se ve el problema (un juego de fúrgo), se secciona en subproblemas (gráficos, IA...) y luego se decide el lenguaje. Aunque cuando se está empezando suele ser al revés: quieres aprender un lenguaje, así que piensas algo que hacerAún así, como te digo, primero tendría que decidir con qué lenguaje hacerlo y aprender un montóóóóóóóóóóón de cosas...
OpenGL es complejo... yo siempre digo: ¿realmente necesitas aprender a programar OGL o D3D? Puedes colaborar en el sistema gráfico sin necesidad de tener idea de OGL. ¿Cómo? Implementando rutinas de optimización espacial por ejemplo (BSPs, Octrees...). Obviamente, no estoy diciendo que no aprengas OGL es muy interesante y gratificante... pero quiero que entendais que los juegos no son únicamente entornos gráficos (a todos los que teneis PlayStation 2: Buscar por internet "Katamari Damacy" y sabreis de lo que hablo, im-presionante).¿Cuánto crees que podría tardar en aprender lo básico sobre OpenGL como para colaborar algo en BomberGUM!? Supongo que si pudiera colaborar en mínimas cosas, al menos podría ir cogiendo la idea de cómo programar un juego, y además teniéndote a ti de maestro...
De C++ tendría que desempolvar un poco los conocimientos, pero bueno, no creo que me llevara mucho (sería sobre todo la parte de plantillas y tal...).
Wops! Es que se me quedó en los dedos después de tanto poner citas de Ruro... ups!XD.Rurouni escribió:Esto... FF, que yo no es por joder... pero la cita es mia, no de ruro , que si, que no te discuto que me encantaria saber lo que el , pero me parece que te has pasado llamandole yo
No, en seiro, siempre lo he pensado. Estoy harto de libros coñazo que te cuesta dios y ayuda metértelos para aprender algo... Conociéndote, seguro que lo hacías ameno, creando ansias de aprender en el lector pero sin ningún esfuerzo. Lo que pasa que con todo en lo que andas metido... Suerte con el que estás haciendo ahora! Y sí, ya nos avisarás si sale. Si no te sale editorial siempre puedes hacer como Bruce Eckel. No parece que le haya ido mal publicando libre.Rurouni escribió:FF y \-\adEs, !habéis conseguido ponerme colorao! ¡Gracias por vuestros alagos!
Sobre lo del libro: estoy escribiendo uno pero sobre accesibilidad multimedia... pero la editorial me ha dicho que me espere que estan echando cuentas a ver si pueden publicarlo. Solo llevo un 15%, así que si me dicen que no se publica iré a otra... y si al final no se acaba editando, no me moriré. Crear libros sobre desarrollo de juegos está difícil ya que se deben tocar muchos muchos temas que más que un libro necesitaría ser una colección completa de Stephen King después de una noche de depresión y drogas... Pero bueno, si sale bien DP me lo plantearé muy en serio. ¡gracias por vuestro apoyo!
Creo que sé por donde vas... . De todas forams es admirable la paciencia que tienes con gente como por ejemplo... yo!Rurouni escribió:Siempre que tenga tiempo contestaré lo mejor que pueda. Además... me he decido a no entrar en "discusiones de portada" que se pierde mucho tiempo, aunque hoy se están rifando tortas y me estoy aguantando (yo ya me entiendo).
Como tú bien dices, depende de si te importa tanto la scene ó no... Porque por número de unidades vendidas no creo ni que se acerquen, aunque igual me equivoco. Aún así yo soy poco de consolas portátiles... así que es un mundo que, egoístamente, me importa menos.Rurouni escribió:El éxito de una máquina lo decide su comunidad, no los que no a tienen. La GP32 ha sido un éxito rotundo. Se han vendido prácticamente todas las que se fabricaron. No hay nadie que se haya desilusionado, cada vez hay más gente que desarrolla juegos nuevos y originales, o portando software ya existente. Es la consola del Software Libre e Indy. Para mí la mejor portatil con diferencia, sin entrar en aspectos técnicos ni de cantidad de juegos comerciales. Si quieres scene... creo que es un poco chorra dar soporte a empresas que hacen todo lo posible por quitarte el derecho a hacer lo que quieras con un cacho de silicio que has comprado. Aunque, ellos lo han fabricado, ellos están en su derecho.
Realmente... no llego a tanto. Seguramente sea así, porque implementarse todas esas librerías debe ser... puf! Sinceramente, no creo que lo hagan... Aunque ay digo que ni idea.Rurouni escribió:Uhmm... puedes programar en JAVA utilizano el lenguaje, pero me parece que las librerías de estas (SWIG o AWT por ejemplo) no están disponibles. Es decir: no puedes desarrollar un applet que funcione en el JDK de sun no tiene que funcionar en Mono. O al menos eso era hasta ahora.
Bueno, así quedará todo más integrado... .Rurouni escribió:Sobre lo de mono GCC, más bien harán la interfaz C# que falta para GCC, como se ha hecho con todos los lenguajes que soporta.
¿Podrías describir brevemente qué tipo de control necesitas en un juego que no te de C#?Rurouni escribió:C# es un gran paso, pero pierdes mucho control sobre la aplicación. Un juego lo que pide es control en muchos aspectos... no se hasta que punto estará optimizado. Se ha de comprobar. Luego te pondré enlaces de engines en .NET/Mono.
Por esa parte sería un punto a favor de C#, pero es como siempre, habrá que ver si compensa.Rurouni escribió:Si. Si que se necesita programar utilizando hilos o threads para sacarle partido a las MV... lo que pasa que la MV en sí está optimizada para sacarle todo el jugo a los multiprocesador/core. Si no utilizas hilos, la mejora no será espectacular (o si, no lo he probado en la práctica), pero será mejora. En C++ o cualquier lenguaje compilado, en los cuales lo que has "compilado" (vaaalgame! la redundaaancia) un codigo concreto y así se queda hasta el fin de sus días (hasta que lo borras ), si no utilizas hilos no mejora nada, ya que la gestión de hilos la has hecho tu, y si no utilizas estos... solo utilizará 1 procesador. A ver... aquí entra todo el tema del S.O., si influye o no, si gestiona así o asá... pero no me voy a meter. Hablo de los programas que hacemos nosotros.
Igual que antes (y que n es por ponerlo en duda sino por saber el qué), si me puedes describir brevemente cosas sobre las que no puedas tener el control con C#...Rurouni escribió:Con C++ o C o cualquier lenguaje compilado de bajo nivel tienes gran control sobre lo que haces. Hablas más directamente con la máquina. No hay intermediarios. La gente odia los punteros, por ejemplo, pero yo los empiezo a adorar. Que haya un Garbage Collector en los lenguajes basados en MV está muy bien para aplicaciones de escritorio y tal, pero no creo que sea lo más óptimo para sistemas en las que el tiempo real y la optimización de los recursos sea la principal premisa. Es una opinión personal.
Me alegra saber que lo poco de UML que aprendí, quizá sirva para algo... . Tampoco entiendo que no se utilice más si con las modernas herramientas de UML, te generan código a partir de los esquemas, que da gusto.Rurouni escribió:Yo me refería a UML sip. Sobre lo de si los proyectos libres se utiliza UML o no es simplemente cuestión de organización. Por lo general, la gran mayoría de programas que siguen la filosofía del SL o del OpenSource siguen la filosofía UNIX: un programa que hace un trabajo, pero que lo hace bien. Generalmente, si haces un solo trabajo (o dos o tres) no necesitas mucha planificación, sólo tener las ideas claras y saber programar bien.
XDXD Cuabronsete... .Rurouni escribió:(saltamos todo lo que hay dentro de gráficos, y seguimos con el siguiente punto... a esto se le llama BackTracking xD)
Llámame masoca, pero a mí, tranquilamente, me gustaría ir aprendiendo sobre "las tripas" de un juego. El tener un motor así disponible es la leche, pero con el tiempo (y me refiero a muuucho tiempo) me gustaría ir más allá.Rurouni escribió:¿Por qué he comentado anteriormente que DP podría serte muy útil? para programar juegos no tienes porqué saber programar necesariamente en OpenGL o música o red... puedes especializarte en IA o cualquier cosa. DP es un entorno y un engine... en el que se intentará que el usuario se despreocupe de si se tiene que optimizar tal o cual rutina gráfica o de audio... se darán unas implementaciones (lo más óptimas posibles) y se simplificarán procesos. Así que lo único que se tendrá que hacer es pensar en lo que quiere que haga su programa y dedicarse a eso. Da igual si estás en un SO o en otro. Da igual OpenGL o SDLSurfaces... el usuario solo programará lo que tenga que programar. Y modelará lo que tenga que modelar. Python es un lenguaje muy claro y potente, unido a un engine de fondo bien optimizado, será muy práctico para crear sin tener que "implicarse" con cosas que no interesan y hacen aburrido un desarrollo.
¿Dejas las clases en la universidad? Mierda... al final no tuve tiempo de pasarme por allí y colarme en alguna . Bueno, sea como sea, me alegro de uqe las cosas parezcan irte tan bien. Eres un tío cualificado y que llevas bastante curro a tus espaldas; sin duda un seguro de calidad (quieres contratarme de RRPP?XD). Bueno, ya sabes que desde aquí seguiremos tus proyectos libres (y los no libres si nos los quieres mostrar también, por supuesto). Suerte, que la vida de autónomo puede ser muy gratificante pero también un poco puñetera.Rurouni escribió:Por cierto, hago un anuncio aquí: voy a dejar mi trabajo para dedicarme a mis proyectos tanto comerciales como no... ya que he logrado un volumen tal que puedo vivir como autónomo. Tengo muchas esperanzas en DP como proyecto libre.
FF escribió:cita de Rurouni:
Esto... FF, que yo no es por joder... pero la cita es mia, no de ruro , que si, que no te discuto que me encantaria saber lo que el , pero me parece que te has pasado llamandole yo
Wops! Es que se me quedó en los dedos después de tanto poner citas de Ruro... ups!.
FuckingFreaky escribió:No tonto, ésta ya era coooñaaa!!!XD. Pensé que lo pillarías !
Eso te pasa... por vacilar! ja! .
Saludines!