Foros - Stratos

Stratos => General => Mensaje iniciado por: matriax en 06 de Mayo de 2008, 08:02:33 PM

Título: Hacer el juego lo mas compatible
Publicado por: matriax en 06 de Mayo de 2008, 08:02:33 PM
Hola,

Bueno, como sabreis estamos con nuestro nuevo juego para PC.

Lo estamos haciendo con C++ usando LIBSDL, pero ahora Angel le ha dado por portarlo a OpenGL ya que puede hacer mas cosas y le resutlaria todo mas facil.

Alguien sabe los juegos casuales tipo 7wonders, Bejeweled y compañia que usan o como estan programados?

He visto por google un articulo de Colson donde comentaba que lo mejor era usar Directx7 sobre el 8 por compatibilidad, y que el OpenGL tiene problemas en un 30% o cosas asi pero el articulo es de principios del 2006 XDDD

Asi que me gustaria saber si alguien tiene alguna informacion al respecto.

Saludos!
Título: Hacer el juego lo mas compatible
Publicado por: JDHorux en 07 de Mayo de 2008, 09:39:10 AM
Mira a ver esto:

http://www.blogrcaf.com/2007/01/06/tecnologias-mas-usadas-en-los-casual-games/

Mi experiencia (con el Juice Mania) es diferente, hacemos en FLASH con una extensión que se come DLL y luego podemos portar a PC, MAC y, ahora, LINUX.

Además, desde ese Flash es MUY FÁCIL tener la versión WEB (que últimamente la piden para poner una demo online) y, si nos ponemos chulos, POCKET PC.

No obstante, nosotros nos conformaremos con la de MAC, PC Y WEB. :twisted:
Título: Hacer el juego lo mas compatible
Publicado por: Loover en 07 de Mayo de 2008, 10:10:19 AM
Lo ideal es hacer la release del juego en Directx8.1 (o inferior) en winXP/Vista, y en Opengl para Mac.

Centrate en los SO win y mac, que es donde se concentran las ventas. En linux hay muchas menos ventas, pero bueno, si te sale bien de tiempo puedes portarlo también.

Ya que tienes un programador que controla de c++, lo ideal es usar un framework. Los 3 más recomendables actualmente son:
- PTK
- Popcap framework
- Playfirst SDK

Todos ellos te permiten usar direct3d/ogl y hacer juegos para MAC / Win. De hecho el de Playfirst te permite incluso hacerlo para web.

Para el California Office usamos PTK, que está a un nivel de abstracción algo menor que los otros dos. Básicamente de deja dibujar sprites y superficies tanto en Mac como en Ogl, aunque también trae cosas para empaquetar recursos y tal.

Si hubieramos empezado el juego ahora, y seguramente lo usemos para el siguiente, usariamos Playfirst SDK. Es MUY MUY recomendable y encima es gratuito. Es más, los desarrolladores (los que hicieron el Diner Dash) da cada año 3 premios en metálicos simplemente por usar su SDK, sin ningún compromiso por tu parte asociado.

En cuanto al sonido, te recomiendo que no uses SDL_Mixer, pues da algunos problemas en la reproducción de loops. Tus mejores opciones son:
- Fmod
- OpenAl

Y luego ya tienes los "game makers". Torque Game Engine es bastante recomendable. Sin embargo Josepho no ha quedado nada contento con Blitzmax.

También puedes, como te han recomendado, usar Flash. As3 se programa muy parecido a java por lo que he visto. No sé como se comportará flash en resoluciones algo altas con muchos sprites moviéndose. Hay un una forma de que un juego hecho en flash corra en opengl, no recuerdo el programa que hacía eso.
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 07 de Mayo de 2008, 10:56:26 AM
En principio la duda es esa OpenGL o no OpenGL, el juego se programara en C++ utilizando SDL ya que luego en temas de portabilidad y tal va muy bien.

Por eso, usando C++ con SDL que opcion seria la mas compatible para el mercado casual ¿? ¿Que opciones habria? ¿Que problemas se nos podrian presentar?

Tampoco usamos nada raro en la programacion , ni pixel shader ni nada de eso sera sencillo.
Título: Hacer el juego lo mas compatible
Publicado por: Zaelsius en 07 de Mayo de 2008, 11:23:03 AM
Yo de vosotros intentaría usar alguno de los frameworks comentados más arriba. Mi experiencia me dice que hacer una librería desde cero lleva muchísimo trabajo, y más aun si se requiere el alto nivel de calidad y  compatibilidad requerido por los grandes portales.

Es mucho curro, en serio. Y SDL solo os resuelve la papeleta parcialmente, os quedaría mucho que construir por encima y además os  quedaría el sonido (SDL_mixer no tiene buena fama, y si te falla no te puedes quejar a nadie) y añadir código dependiente del SO (XP, Vista, OS X) para adheriros a sus convenciones respectivas, como por ejemplo el uso (y creación) de los paths recomendados para guardar datos de configuración, logs, etc.

Y por último, repetir lo que ya os han dicho: renderer DirectX 7 u 8.1 por defecto en la versión Windows (y como plus, pasar a OpenGL o Software de manera silenciosa si no se consigue inicializar el device de DX) y OpenGL para Mac OS X.


Offtopic: Flash puede llegar a ser jodidamente lento fuera de Windows —la única plataforma con el Player al día y optimizado de verdad—, hay que  llevar cuidado con eso. Incluso en mi iMac Core 2 Duo me sigo topando a veces con contenidos flash que hacen que mi navegador (Safari o FF) se arrastre.
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 07 de Mayo de 2008, 11:43:26 AM
A ver si Angel ve el post y comenta algunas cosas porque no quiero meter la pata XDDD

Zaelsius, lo que es la mecanica del juego ya la tenemos funcionando, practicamente lo unico que queda son las transiciones de pantalla y hacer los niveles, si el juego no tiene mucho mas(aparte de todos los graficos claro XD). Y se esta haciendo de forma que hacer juegos similares a 3match y otros luego se cambie en 0.2 como dice Angel XDD

Pero bueno, a ver si interviene Angel y aclara el asunto que el programador es el  :wink:
Título: Hacer el juego lo mas compatible
Publicado por: Loover en 07 de Mayo de 2008, 12:18:48 PM
100% de acuerdo con Zaelsius.

Y repito, y va para todos, Playfirst SDK dan dinero SOLO por usar su SDK (si les gusta el juego). Y dan el dinero sin compromiso alguno por tu parte. Avisados estais :)
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 07 de Mayo de 2008, 12:26:09 PM
Cita de: "Loover"100% de acuerdo con Zaelsius.

Y repito, y va para todos, Playfirst SDK dan dinero SOLO por usar su SDK (si les gusta el juego). Y dan el dinero sin compromiso alguno por tu parte. Avisados estais :)

Y de cuanto dinero estamos hablando? XD ¿informacion sobre el tema? lo unic que he podido encontrar es tipo concurso que hay un bote de 100.000 que seria repartido entre los juegos que mas les gusten, y no es necesario hacer el juego con su framework pero me parece a mi que no es lo mismo a lo que tu te refieres.
Título: Hacer el juego lo mas compatible
Publicado por: SiPoX en 07 de Mayo de 2008, 01:00:13 PM
Cita de: "Loover"
Ya que tienes un programador que controla de c++, lo ideal es usar un framework. Los 3 más recomendables actualmente son:
- PTK
- Popcap framework
- Playfirst SDK

Hum... me los apunto yo también, pintan los 3 muy interesantes... y las primas del playfirst.. también habrá que verlas xD! :P
Título: Hacer el juego lo mas compatible
Publicado por: AK47 en 07 de Mayo de 2008, 01:37:24 PM
Por lo que veo, el playfirst SDK es totalmente gratis, no? O sino no encuentro el link de "purchase" o "buy". Y que es eso de que playfirst te da pasta? ¿?
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 07 de Mayo de 2008, 02:01:03 PM
Cita de: "AK47"Por lo que veo, el playfirst SDK es totalmente gratis, no? O sino no encuentro el link de "purchase" o "buy". Y que es eso de que playfirst te da pasta? ¿?

Supongo que por la publicidad de que el juego use su FrameWork , para que como dicen en su web se expanda se expanda y lo utilizen mas personas y tal, supongo que asi ganaran publicidad y esas cosas digo yo, no crean que den el dinero por amor al arte, al igual que poner en los creditos algo tipo "Use Framework PayFirst" o algo asi.
Título: Hacer el juego lo mas compatible
Publicado por: Loover en 07 de Mayo de 2008, 03:49:27 PM
CitarY de cuanto dinero estamos hablando? XD ¿informacion sobre el tema? lo unic que he podido encontrar es tipo concurso que hay un bote de 100.000 que seria repartido entre los juegos que mas les gusten, y no es necesario hacer el juego con su framework pero me parece a mi que no es lo mismo a lo que tu te refieres.

https://developer.playfirst.com/developerdash

Si miras bien el primer punto a cumplir es que esté en Playfirst SDK.

No dan sumas descomunales de dinero, lo normal son unos 5000$, que oye, es más de lo que han costado algunos juegos casuales de los que estamos haciendo por el foro.

De hecho estuvimos pensando [over] y yo, una ver terminado el CO, en portarlo al PlayFirst SDK, para tener el juego en web y además embolsarnos una pasta gratis.

Está claro que lo hacen con vistas a "enganchar" desarrolladores, y luego conseguir algún tipo de contrato exclusivo temporal o lo que sea contigo; pero si tu te embolsas la pasta y luego firmas con otros, nadie te lo impide.

Yo no me lo pensaba, además puedes programar en él usando scripts con Lua, toda una gozada. Y no solo es gratis, te dan pasta por usarlo.
Título: Hacer el juego lo mas compatible
Publicado por: JDHorux en 07 de Mayo de 2008, 05:02:55 PM
Joer, a ver si me lo voy a tener que pensar yo para el próximo, que menuda pinta tiene  :twisted:
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 07 de Mayo de 2008, 05:15:12 PM
Bueno 5000$ que son 3000e XDDD

Y lo que he visto es que para calificarse para el premio no hace falta que sea con su Framework que es lo que te decia que suponia que no era lo mismo que me decias tu.

En cualquier caso para la proxima es bueno tenerlo en cuenta, aunque la ultima palabra la tiene el programador ya que es el que se tiene que meter en el fregao pero vamos si es C++ etc.. supongo que tampoco habria mucho problemas y para hacer 3match y similares no creo que haga falta profundizar mucho.
Título: Hacer el juego lo mas compatible
Publicado por: Loover en 07 de Mayo de 2008, 05:33:29 PM
CitarY lo que he visto es que para calificarse para el premio no hace falta que sea con su Framework que es lo que te decia que suponia que no era lo mismo que me decias tu.

Repito lo mismo de antes tio, mirate el primer punto:

CitarPrototype submissions will be considered for award if the prototype meets the following criteria*:
   * Built in Playground SDK

¿Dónde has visto lo contrario?

5000k es lo que sé que le dieron a uno, según ellos pueden dar más o menos. Hasta 100k (je, eso no se lo dan a nadie). Hay que ver la de pasta que ganó esta gente con el diner dash.
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 07 de Mayo de 2008, 05:41:29 PM
Yo es que me liado por que veo tambien esto:

No Need To Work With PlayFirst To Qualify!
There is absolutely no requirement to publish or distribute your game with PlayFirst in order to qualify for Developer Dash funds (though of course, we'd love to talk to you)


Pero vamos dejalo, mi ingles es muy malo, y si habia visto eso pero como antes ponia eso pos...

Corramos un estupido velo....
Título: Hacer el juego lo mas compatible
Publicado por: Loover en 07 de Mayo de 2008, 05:43:32 PM
Sí, eso es importante también, con eso quieren decir que dan la pasta así "a lo loco", no te hacen firmar nada en plan "ok, te damos la pasta, pero firma este contrato de exclusividad temporal pa distribuir tu juego". Pero está claro que si te dan la pasta estarán ahí detrás de ti esperando carnaza, jeje.
Título: Hacer el juego lo mas compatible
Publicado por: josepzin en 09 de Mayo de 2008, 05:19:51 PM
Que pena que no funcione para Linux
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 19 de Mayo de 2008, 11:18:54 AM
Que necesita un ordenador o que requerimientos necesita un juego hecho en OpenGL para ejecutarse en un ordenador y cual es la diferencia con Directx ¿?

¿Porque segun parece cualquier ordenador puede mover un juego con Directx y sin embargo no con OpenGL? ¿Cuestion de hardware o software?

Por lo que veo para MAC no hay problema con que sea en OpenGL como dice Zaelsius.

Si tuvierais que poner un % de los juegos que funcionarian con Directx u OpenGL en cualquier ordenador ¿Cuales serian? por tener una idea vamos.

Y otra cosa, el juego utilizara cosas simples no hay nada raro, pero simplemente por que sea en OpenGL da igual como se programe o se utilizen cosas simples si no va, no ira de ninguna manera no? .
Título: Hacer el juego lo mas compatible
Publicado por: [EX3] en 19 de Mayo de 2008, 12:25:59 PM
Cita de: "matriax"¿Porque segun parece cualquier ordenador puede mover un juego con Directx y sin embargo no con OpenGL? ¿Cuestion de hardware o software?
OpenGL tira por software? Pregunto por que no lo se seguro. Yo recuerdo en su dia cuando tenia mi Pentium II con una ATI de 4Mb (no era una grafica 3D) cualquier cosa que usara OpenGL no funcionaba (la demo del Quake3 que no pude probar en su momento) mientras que cualquier juego con DirectDraw si lo hacia (todavia recuerdo lo guarramente que se veia el Half-Life 1 por software).

Salu2...
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 19 de Mayo de 2008, 01:03:14 PM
CitarOpenGL tira por software?

No lo se, yo tambien lo pregunto, yo estoy muy verde en estas cosas XDD
Título: Hacer el juego lo mas compatible
Publicado por: LC0 en 19 de Mayo de 2008, 01:04:36 PM
Citar
OpenGL tira por software?

Sí. Depende de la implementación en el sistema operativo de turno. En Linux, por ejemplo, está el MesaGL, que es la implementación de OpenGL para software. Y funcionar funciona, oye, eso sí, no te esperes un framerate mayor de 5 para una escena medianamente cargada :lol:.
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 19 de Mayo de 2008, 01:41:03 PM
Cita de: "LC0"
Citar
OpenGL tira por software?

Sí. Depende de la implementación en el sistema operativo de turno. En Linux, por ejemplo, está el MesaGL, que es la implementación de OpenGL para software. Y funcionar funciona, oye, eso sí, no te esperes un framerate mayor de 5 para una escena medianamente cargada :lol:.

Y si se usara OpenGL por software para graficos 2D, juego tipo match3 ningun problema no?  :roll:
Título: Hacer el juego lo mas compatible
Publicado por: Tei en 19 de Mayo de 2008, 03:19:45 PM
Cita de: "[EX3"]
Cita de: "matriax"¿Porque segun parece cualquier ordenador puede mover un juego con Directx y sin embargo no con OpenGL? ¿Cuestion de hardware o software?
OpenGL tira por software? Pregunto por que no lo se seguro. Yo recuerdo en su dia cuando tenia mi Pentium II con una ATI de 4Mb (no era una grafica 3D) cualquier cosa que usara OpenGL no funcionaba (la demo del Quake3 que no pude probar en su momento) mientras que cualquier juego con DirectDraw si lo hacia (todavia recuerdo lo guarramente que se veia el Half-Life 1 por software).

No veo porque tendria que ser mas lento OpenGL que DirectX. Seguramente tiene mas que ver quien lo programa, que el dialecto grafico.

OpenGL en la mayor parte de los PC's, incluidos muchos Linux, esta acelerado por hardware. Lo que pasa es que OpenGL se lo diseño de modo que todo, o una parte, puede funcionar por software. No depende de la existencia de una tarjeta grafica aceleradora.

Naturalmente, tiene que estar instalado en el ordenador para poder usarse. Si podias correr un programa DirectDraw es porque tenias DirectX instalado, si no tenias instalado OpenGL, es normal que no te funcionara.

A partir del kernel NT, con Windows se incluia una version de OpenGL implementada por sofware.  Lo primero que hace el instalador de una tarjeta grafica, es sustituir esa implementacion por la suya, usando el hardware de la tarjeta.
Si aun asi, usabas una tarjeta muy antigua, que ni soportaba o conocia opengl, al menos podias arrancar en OpenGL.

Haber, vosotros sabeis, o debeis saber, como cuando, porque OGL sea o pueda ser mas lento/mas rapido que DX. Y sera seguramente en el uso de ciertas extensiones. Si en OGL podeis usar una extension que os permita pasar datos de la tarjeta de un modo optimo, sera mas rapido que DX si le pasais a este los vertices uno a uno en un bucle, o algo asi nada optimo. Todo cosas asi, que yo no conozco, pero que si habeis hecho un hola mundo en los dos dialectos, pues ya sabreis mas que yo.
Título: Hacer el juego lo mas compatible
Publicado por: LC0 en 19 de Mayo de 2008, 04:20:58 PM
matriax, usar OpenGL para un juego 2D sabiendo que la máquina que lo ejecute solo puede renderizar por software no tiene mucho sentido. Hombre, a lo mejor te facilita hacer efectos sobre los sprites, pero nada que no se pueda hacer modificando píxeles.
Título: Hacer el juego lo mas compatible
Publicado por: LC0 en 19 de Mayo de 2008, 04:21:31 PM
*duplicado*
Título: Hacer el juego lo mas compatible
Publicado por: Prompt en 19 de Mayo de 2008, 04:50:12 PM
OpenGL siempre está acelerado por hardware, solo en mesa3D podemos tener modo software, esto es normalmente en Linux.

Obviamente las caracteristicas Open Source de OpenGL hacen que todas las tarjetas, por chungas que sean tengan soporte para al menos versiones tempranas de OpenGL, 1.1 por ejemplo.

Más allá de OpenGL 1.1 en MS Windows necesitaremos de obtener los punteros a funciones de la dll de nuestro proveedor de tarjetas gráficas, vease nVidia y ATI.

Por que? pues pq MS es muy way y necesita potenciar Direct3D que para eso le da dinerito. En MS Windows Vista no hay soporte para OpenGL de base, esto quiere decir que debemos instalar un driver como con direct3d.

Teoricamente OpenGL en MS Windows es más lento que direct3d, ya que no se dispone de un driver ICD con toda la funcionalidad y necesitas pasar por un layer al hacer las llamadas.

No obstante, el rendimiento de OGL o D3D depende de su arquitectura y tu propia implementación, ambos son optimizados por nVidia y ATI para sus tarjetas graficas y no vamos a notar diferencias.

Todo este tema es muy abstracto en Windows XP y anteriores. Y por mucho que hablemos no llegaremos a una conclusión clara.
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 19 de Mayo de 2008, 04:54:13 PM
LC0, segun me comento Angel, para el es mucho mas facil hacer los efectos y programar en OpenGL ya que va mucho mas rapido programando, si no que me corrija.

Y sobre la maquina que ejecutara el juego ya te digo que habra de todo, habra quienes lo haran por hardware y visto que tambien se podria por software pues eso, aunque creo que tendre que ver como se puede ejecutar el juego hecho en OpenGL por software y esas cosas porque entonces lo tendriamos solucionado, o eso creo por las cosas que decis.

A ver si sale algun Guru o entendido y puede aclarar mejor como esta realmente el tema.

Entonces:
CitarObviamente las caracteristicas Open Source de OpenGL hacen que todas las tarjetas, por chungas que sean tengan soporte para al menos versiones tempranas de OpenGL, 1.1 por ejemplo.

Como he dicho antes, Si tuvieramos que poner un % de los juegos que funcionarian con Directx u OpenGL en cualquier ordenador ¿Cuales serian?
Título: Hacer el juego lo mas compatible
Publicado por: Tei en 19 de Mayo de 2008, 05:10:42 PM
Cita de: "matriax"
Como he dicho antes, Si tuvieramos que poner un % de los juegos que funcionarian con Directx u OpenGL en cualquier ordenador ¿Cuales serian?

Pues no se como se mira esto.  En una forja como SF sale esto:

http://sourceforge.net/search/?type_of_search=soft&type_of_search=soft&words=opengl
1463  OpenGL

http://sourceforge.net/search/?words=opengl&type_of_search=soft&pmode=0&words=directx&Search=Search
327 DirectX

(muchos no serán juegos, sino herramientas de apoyo).
Título: Hacer el juego lo mas compatible
Publicado por: matriax en 19 de Mayo de 2008, 05:39:31 PM
Seguramente me haya explicado mal.

Me referia que si en teoria un juego hecho en Directx funciona en todos los ordenadores y pongamos que funciona en el 100% de ellos, ese juego hecho en OpenGL en que % de ordenadores funcionaria actualmente ¿?
Título: Hacer el juego lo mas compatible
Publicado por: Prompt en 19 de Mayo de 2008, 08:18:28 PM
Cita de: "matriax"Seguramente me haya explicado mal.

Me referia que si en teoria un juego hecho en Directx funciona en todos los ordenadores y pongamos que funciona en el 100% de ellos, ese juego hecho en OpenGL en que % de ordenadores funcionaria actualmente ¿?

Es que esto no es cierto.

1º necesitas tener las DX instaladas, igual que OpenGL, 1º necesitas bajarte los drivers de nVidia o ATI.

A ver es que, cuando hablas de DX quieres decir D3D. Tanto en D3D como en OpenGL las tarjetas tienen una version totalmente soportada de ambas. D3D9c o OpenGL 2.0. Si usas la funcionalidad de D3D9c o OpenGL 2.0 solamente funcionará en todas las maquinas con tarjetas y soporte D3D9c y OpenGL 2.0.

Se programa siempre bajo especificaciones. D3D9c o OpenGL 2.0, Shader Model 2, 512 Memoria (minimo), CPU Core 2 duo o equivalente. Etc...


Si todos los ordenadores donde ejecutas el juego cumplen esa especificacion les funcionará tu juego. Sino es muy posible que fallen cosas y no se puede jugar.