Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[Ichi] Tecnologías

Iniciado por warwolf, 12 de Octubre de 2006, 04:08:48 PM

« anterior - próximo »

warwolf

Bueno, ya habéis visto que hemos decidido programar el juego en C++ y Lua, con la librería de SDL y el IDE Code::Blocks.

¿Qué os parecen estas decisión?
Estuvimos valorando otras IDEs como Dev-C++, pero al final nos decantamos por CodeBlocks por estar más actualizada y tener un buen soporte. Como restricciones teníamos que fuera gratuito y es aquí cuando las alternativas se reducen considerablemente.

Lo mismo con SDL. Investigando un poco (en 2D) y viendo alternativas (como Allegro), nos decantamos por SDL, los motivos no los podemos decir claramente (fue bastante arbitrario dada la similitud de las librerías), pero al programar nuestro juego en C++ hemos encontrado más acertado SDL que no Allegro que esta programada en C.
¿Opiniones? (supongo que por aquí ya habéis discutido más de una vez el tema de Allegro vs. SDL y me podéis redirigir a otro hilo)

Finalmente, ¿Qué opináis sobre la decisión de utilizar Lua para parámetros de configuración y estas cosas?

LC0

La decisión no me parece mala, pero el motivo por el que habeis elegido SDL en vez de Allegro no es correcto:

Citar
Lo mismo con SDL. Investigando un poco (en 2D) y viendo alternativas (como Allegro), nos decantamos por SDL, los motivos no los podemos decir claramente (fue bastante arbitrario dada la similitud de las librerías), pero al programar nuestro juego en C++ hemos encontrado más acertado SDL que no Allegro que esta programada en C.

Tanto una como otra están programadas en C. La verdad es que no sería una mala decisión escoger Allegro, pero tampoco lo es escoger SDL :D  Y las dos puedes usarlas perfectamente en C++ (cuidado con los constructores y destructores de las clases que creeis si usais Allegro).
Allegro es quizá más fácil de usar (otra cosa: tal vez sean bibliotecas con el mismo propósito, pero son muy diferentes en sintaxis) y su interfaz es algo a más alto nivel que SDL (tiene hasta un sistema propio de empaquetado de recursos).

Es cuestión de gustos, la verdad. Si se montara algún flame Allegro/SDL defendería a ambos a capa y espada xD.

Con respecto al IDE habeis hecho bien al no coger Dev-Cpp. Tiene muchísimos bugs. CodeBlocks es muy buen IDE, aunque no es mi favorito (Eclipse).

Y el tema de LUA, pues si solo vais a usarlo para modificar parámetros de configuración, sería matar una mosca a base de BFG10K. Allegro tiene funciones para leer y modificar estos parámetros, que serían guardados en un fichero .ini . Ahora, si vais a usar LUA para la IA y otras cosas de la lógica del juego, perfecto.

Espero que os haya servido de ayuda.

warwolf

Sobre SDL/Allegro ya comento que es bastante arbitrario y como SDL ha sido la que he pillado primero y mirado más a fondo pues hemos cogido esta. Lo que si he visto es que Allegro no se lleva muy bien con algunas bibliotecas de c++ como fstream o iostream.

Como experimento tambien puedes probar a buscar en el google:
"allegro c++ tutorial" resultados encontrados: 383.000
"sdl c++ tutorial" resultados encontrados: 755.000

Pero ya te digo que nunca he utilizado alguna de las dos y desconozco el tema por completo  :roll:


Sobre el IDE Eclipse... tienes razón esta muy bien, pero creo que el problema de Eclipse es que es un MONSTRUO de IDE y que se puede hacer de todo... por eso nos enfocamos en un IDE específico de C++
(y que conste que yo utilizo Eclipse habitualmente).

Por último sobre LUA puede que tengas razón que para solo utilizarlo con los parametros de configuración es demasiada cosa. Pero creo que tiene mucho potencial y me gustaria experimentar sus posibilidades. Una opción como bien dices es hacer la IA, otra también siguiendo la idea de WoW es poder ajustar el interface a través de LUA..... vamos, ideas y teoría tengo, pero mi práctica es nula :P

warwolf

Aqui hay una discusión SDL vs Allegro y al final el chico escoge SDL
http://gamelab.uniovi.es/foros/forum_posts.asp?TID=154&PN=2

PD. Barriendo para casa jeje :P

Snakers

Yo utilizo Allegro para programar juegos,nunca e probado SDL,y es verdad que hay muy poca información sobre Allegro y mucha de SDL.
A favor de Allegro tengo que decir(desconociendo SDL)que me parece muy intuitivo y facil de utilizar.

seryu

Allegro es una libreria mas completa que SDL de cara a programar un juego, lo malo es que inicialmente da bastantes problemas a la hora de compilar y el diseño de la libreria es bastante antiguo.

SDL viene "pelado", aunque podeis encontrar muchas librerias adicionales que os facilitaran la vida. En windows es bastante lenta.

warwolf

Cita de: "Snakers"A favor de Allegro tengo que decir(desconociendo SDL)que me parece muy intuitivo y facil de utilizar.

Mmmm por lo poco que he visto de SDL también parece muy intuitiva...

Cita de: "seryu"SDL viene "pelado", aunque podeis encontrar muchas librerias adicionales que os facilitaran la vida. En windows es bastante lenta.

Esto no lo llego a entender, si viene "pelado" ¿cómo puede ser más lenta? Me parece que no te he entendido bien...

Cita de: "Vicente"Lo mismo si vais a usar SDL os interesa echarle un ojo a la CRM32Pro de Azazel

Buf... a ver, usar CRM32Pro quiere decir poner otra capa de abstracción más al tema. Estoy de acuerdo en que esto te facilita más la vida a la hora de programa, que te ahorra tiempo, etc... Pero hay que tener presente que nos estamos iniciando en el tema, y creo que es importante comenzar poco a poco y entendiendo como funcionan las cosas (incluso me gustaría no tener que utilizar SDL, pero entonces perderíamos demasiado tiempo peleandonos con el sistema operativo, drivers, hardware,...).
Mmmm creo que sería interesante desarrollarlo primero sólo con SDL y después "actualizarlo" utilizando CRM32Pro (el bomberman a priori es un juego sencillo y no creo que cueste mucho "envolverlo" con el CRM32Pro sobretodo si esta en SDL). De esta manera también podríamos observar la s repercusiones en el rendimiento.
Comentar tambien que todo esto son conjeturas, os recuerdo que no tengo experiencia en el tema y jamás he utilizado estas librerias, por eso espero consejo y ayuda ;)

TheAzazel

Muy buenas! estaba oculto en la cueva sin querer decir nada pero ya que he salido por ahi jeje, vamos a despejar un par de dudas/mitos:

- SDL y Allegro son practicamente clavadas, sus desarrollos iniciales fueron mas o menos por las mismas fechas, la diferencia mas notable es que Allegro fue creada como una lib que reuniera por defecto mucha mas funcionalidad y de mas alto nivel y SDL fue lo contrario, mantenerlo lo mas reducido posible y algo mas de bajo nivel pero HAY miles de plugin, librerias y demas que te permiten hacer cualquier cosa con ello, que quieres reproduccion de mpeg? pues toma! y asi con todo. De hecho, hay versiones de SDL para moviles, PDA, GP32X, etc..
Actualmente y bajo mi punto de vista, Allegro se esta quedando un poco olvidada y SDL sigue evolucionando mucho, de hecho, ya estamos(aunque he colaborado muy poquito jeje) con la 2.0 que como ya dije en otro post, traera backend de video muy mejorados aprovechando D3D y OpenGL.

- Si Allegro es intuitiva, SDL tambien lo es, vamos, son bastante sencillas de utilizar, pero que muy mucho! Solo necesitas tener claro un par de ideas generales y el resto es coser y cantar.

- En cuanto a la doc, ejemplos y demas... ambas estan muy bien documentadas, quizas de SDL haya mas ejemplos... pero es porque es valida para casi cualquier tipo de plataforma.

- Seryu, respecto a eso de que SDL es lento en windows... es un mito :). SDL en windows es casi tan rapido como usar solo DirectDraw. Esto lo he repetido en multitud de ocasiones y podeis consultar un programita que hice que se llama glSDLBenchmark donde podreis probarlo por vosotros mismos. Lo que me gustaria saber es...de donde ha surgido ese mito tan extendido... me recuerda a lo de hace tiempo: "No no, que los AMD son incompatibles!!" :P

- Con respecto a utilizar SDL y CRM32Pro... vereis, CRM32Pro no es un reemplazo de SDL, es mas bien una extension de algunas funciones para que sea mas rapido desarrollar juegos. Es decir, si haces el juego con SDL, pasarlo a CRM32Pro no tiene ningun sentido porque ya te habras currado tu mismo "partes"  de CRM32Pro, me refiero a tiles, sprites, fuentes, botones, etc... y por otro lado, si lo haces con CRM32Pro no significa que no aprendas SDL, todo lo contrario, lo necesitas porque seguiras usandolo. Y que sea mas lento? NO!. De hecho los blitters cuando estas en modo software seran mas rapidos ya que esta todo bastante optimizado dependiendo de la CPU que utilices y el resto de cosas que agrega CRM32Pro, SDL no se mete con ello por lo que no hay ningun compromiso en rendimiento.

Espero haber despejado varias dudas y si surge alguna mas, preguntar preguntar! ;)

Saludos

Vicente

Cita de: "warwolf"
Cita de: "Vicente"Lo mismo si vais a usar SDL os interesa echarle un ojo a la CRM32Pro de Azazel

Buf... a ver, usar CRM32Pro quiere decir poner otra capa de abstracción más al tema. Estoy de acuerdo en que esto te facilita más la vida a la hora de programa, que te ahorra tiempo, etc... Pero hay que tener presente que nos estamos iniciando en el tema, y creo que es importante comenzar poco a poco y entendiendo como funcionan las cosas (incluso me gustaría no tener que utilizar SDL, pero entonces perderíamos demasiado tiempo peleandonos con el sistema operativo, drivers, hardware,...).
Mmmm creo que sería interesante desarrollarlo primero sólo con SDL y después "actualizarlo" utilizando CRM32Pro (el bomberman a priori es un juego sencillo y no creo que cueste mucho "envolverlo" con el CRM32Pro sobretodo si esta en SDL). De esta manera también podríamos observar la s repercusiones en el rendimiento.
Comentar tambien que todo esto son conjeturas, os recuerdo que no tengo experiencia en el tema y jamás he utilizado estas librerias, por eso espero consejo y ayuda ;)

Mmm, hombre, aprenderéis más pegándoos con SDL a pelo, pero yo creo que para el primer juego lo importante es que lo consigáis terminar (ya de por si todo un reto) y luego poco a poco empecéis a profundizar en temas más complicados. Yo por eso creo que para un primer contacto tiraría por CRM32Pro.

Un saludo!

Vicente

TheAzazel

jejeje, como se nota que somos pkm06 members! jajaja

el tema tambien podria apuntarse de otra forma:

- Quieres saber como se puede llegar a hacer un juego y todo lo que hay debajo de el? Pilla SDL, DirectX, Allegro o lo que quieras y empieza a aprender todo.

- Quieres hacer un juego, terminarlo y poco a poco aprender los conceptos que hay debajo? Pilla algo de mas alto nivel y centrate en el juego que ya de por si tiene tela.

Si no, cualquier cosa que se salga de eso entra en el termino utilizado por lex: Sindorme de NIH jejeje

Saludos

SiPoX

Hum.. yo también creo que para comenzar es muy útil la lib de Azazel, sobre todo porque como dice él, usando tb SDL te da ya mucho curro hecho. Por ejemplo, a la hora de hacer un menú, hacerlo a pelo con SDL significa que tengas tú que implementar clases, controlar cuando alguna opción se pincha.... i con la crm32 eso se simplifica mucho ;) :) Pongo este ejemplo porque para un proyecto estoy usando la crm y para otro sdl a pelo y, lo dicho, para empezar o para ahorrar tiempo y quebraderos de cabeza varios... un lib de alto nivel como ella viene de perlas. ;) :) (imagina tb a la hora de gestionar sprites, tiles, efectos, el log, la música, el timing... realmente mucho curro que os retrasará bastante...)

Sobre allegro, no lo llegué a probar, tb circulaba la leyenda urbana que parece ser cierta de que da muchos problemillas al compilar... desde luego por parte de SDL, sus extensiones y la crm, ningún problemilla... :D

Saludeteees!
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)

Harko

Solo le falta un buen tutorial para terminar de cogerle el punto a la libreria :P :lol:

Por lo demas si que es util, te lo puedo asegurar.

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

warwolf

Bueno, por mi parte decir que me habéis convencido y encuentro muy interesante, pero sobre todo útil, utilizar la librería CRM32Pro (tengo curiosidad de dónde viene el nombre). Además, el soporte técnico seguro que será muy bueno :D

Sobre la lentitud de SDL... jeje me imaginaba que sería una especie de mito (no le encontraba el sentido) y también me hizo sospechar mucho cuando vi el programilla ese de Benchmark que tiene Azazel.

Sobre la explicación de la finalidad de la lib CRM32Pro. Gracias, me has despejado algunas dudas y por eso encuentra muy interesante utilizarla ya que mi máxima prioridad primero es terminar el juego y todo lo demás ya vendrá poco a poco.

Nuevas duda que me han surgido:
Veo que en el empaquetador puedes guardar archivos de .xml (útiles para la internacionalización de los juegos) así como archivos .ini (parámetros de configuración). Así pues, ¿creéis necesario/interesante utilizar LUA? Si es así para que ambitos, ¿IA? ... ahora estoy muy perdido en el tema :?

Y por acabar otra cosilla, he visto que hay una librería muy interesante llamada Boost para facilitar la portabilidad y estas cosas, pero no acabo de entender bien los beneficios que aporta utilizar esta librería y si sería interesante tenerla en cuenta o no.

PD. Azazel, donde si que me he perdido es cuando me has hablado de blitters :?:
También he visto que el próximo juego que estas haciendo es TitanBomber, si quieres (y si nuestro proyecto llega a buen puerto) no tendré ningún problema en compartir todo para que lo puedas poner en tu sección ;) siempre y cuando estés interesado claro.

PPD. Juer, si que es difícil esto de decidir que librerías utilizar y toda la pesca, no me quiero imaginar cuando intentemos alguna cosa en 3D donde la oferta es muuuucho más amplia :?

seryu

Cita de: "TheAzazel"
- Seryu, respecto a eso de que SDL es lento en windows... es un mito :). SDL en windows es casi tan rapido como usar solo DirectDraw. Esto lo he repetido en multitud de ocasiones y podeis consultar un programita que hice que se llama glSDLBenchmark donde podreis probarlo por vosotros mismos. Lo que me gustaria saber es...de donde ha surgido ese mito tan extendido... me recuerda a lo de hace tiempo: "No no, que los AMD son incompatibles!!" :P

No es ningun mito, en windows utilizan dx5 osea directdraw como tu bien dices que es mucho mas lento que utilizar 3d aplicada a 2d, aprovechando asi el hardware de la tarjeta mucho mejor.

TheAzazel

El nombre viene de una movida que hice hace muchisimos años en el Amstrad CPC 464... se llamaba CRM, despues solo hubo que añadir el 32 por los 32bits tan de moda cuando empece con ella y el Pro...pues porque yo lo valgo :P jejeje. Y en sus origenes, CRM viene por el modelo de Honda que hace tantisimos años me hizo disfrutar de lo lindo... en fin, que cosas jeje

Respecto al empaquetador, puedes empaquetar lo que tu quieras, cualquier fichero, cualquier estructura tuya, eso a gusto del usuario. Lo que tiene el EditorDPF es que si agregas un fichero y es de texto podras modificarlo directamente desde alli sin tener que extraer/modificar/volver a guardar.
Sobre LUA.. lo desconozco, pero un tal Lex(quien sera? jeje) me comento que fue una locura usarlo asi que basado en eso... te aconsejo que pases de cualquier lenguaje de scripting por ahora y hagas la IA de otro modo, todo con vistas a agilizar el desarrollo del juego.

La Boost esa... NPI, la primera vez que la veo nombrar...

Los blitters son las funciones que vuelcan las superficies a otras superficies (incluida otra que la que se mostrara en el monitor). Si son por hardware van como un tiro porque lo hara la tarjeta de video pero si son por software...tiran mucho del memcpy() y yo estuve optimizando varias rutinas en ASM(usando MMX y SSE) que dependiendo del procesador donde esta corriendo y el tamaño de la transferencia, utilizan una u otra rutina, resultado: un SDL_BlitSurface() es mas rapido usando CRM32Pro que sin utilizarlo, y tengo pruebas de ello :P

Acerca del TitanBomber... me parece genial cualquier tipo de colaboracion :) y si hay que crearte una subpagina o un enlace en la web, eso esta hecho!. El TB esta casi terminado, no sera un juego singleplayer... lo enfoque para probar el sistema de red y bueno, basicamente se pueden jugar 2-4 jugadores y 4 mapas y el que mas puntos consiga en la ronda sera el ganador. Toda la logica esta hecha, graficos warris y la red funcionando, solo me falta encontrar tiempo para terminar un menu simple para agregar mas players, un tablon de puntuaciones y luego buscar un grafista y que le de a todo un lavado de cara :). La verdad es que podria acabarlo...total, ya me queda muy poco... pero necesito tiempo!!!

No te creas que es tan dificil escoger una lib... aqui lo tienes tirao... si estas en modo 2D...hay varias opciones de gente del foro(dx_lib32, etc...) y si quieres 3D...esta clarisimo...Jad rulez!!

Ya no me enrollo mas, un saludo!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.