Hola a todos, soy un antiguo programador que he vuelto a la carga desde hace 6 meses. Después de bichear C y C++, quiero meterme con una librería gráfica. Opciones, DirectX, Opengl, Allegro y SDL. Llevo 2 semanas con Allegro y me resulta muy asequible, no quiero profundizar más en ella y quiero probar Sdl.
La pregunta es sencilla, es compatible trabajar con las API de Windows teniendo activado Sdl, en el caso de Allegro creo que es totalmente incompatible. Lo cierto es que ni lo he probado, básicamente porque aun no he realizado nada con Win32. Como Sdl dicen que es para videojuegos y aplicaciones, no se si dichas aplicaciones tienen compatibilidad con las ventanitas.
No se si lo que pregunto es una salvajada, pero para que os hagáis una idea, la ultima vez que programe fue en un Spectrum un programita en ensamblador.
Oye, muchas gracias por todo y me alegro estar de nuevo entre programadores.
Hola, currilingo :)
Yo no te sé contestar a tu pregunta, pero aprovecho para darte la bienvenida a estos foros. He estado mirando tu blog y ¡resulta que eres dibujante! Y bastante bueno. Siempre es agradable ver nuevos grafistas por aquí, que son los que más escasean ;)
Lo dicho, bienvenido :)
Gracias. Sí, soy dibujante profesional, vivo de ello desde hace uno 14 años. Es el dibujo animado el que me da de comer, pero también he hecho mis pinitos en diseño e ilustración. Lo cierto es que he vuelto a la programación para airearme un poco. Además tengo la intención de hacer un pequeño juego tipo ajedrez (Estrategia) dotándolo de animaciones y un desarrollo rápido. Es un viejo sueño que espero realizar de aquí a un par de años. Sin prisas pero sin pausas.
El tema es ver que librería gráfica cojo. DirectX es solo para Windows, y cada día que pasa odio más al "ventanas". OpenGL no me hacen falta las 3D.
Creo que Allegro y SDL son las idóneas, pero la duda era... ¿Puedo trabajar ventanas en modo gráfico? No se si SDL tiene para hacer ventanas, personalizarlas, etc.
Un saludo.
Hombre, si tienes claro que lo que quieres no es aprender programación, sino hacer un juego, probablemente te convenga usar un game maker, ya que te dan resultados mucho más rápidos. Te aconsejo o Blitzmax ( http://www.blitzmax.com , ahora mismo no va el enlace, qué cosa más rara :shock: ) o Torque Game Builder ( http://www.garagegames.com/products/torque/tgb/)
Son 2D, multiplataforma, muy testeados, relativamente fáciles de aprender y bastante baratos (~100$), así que creo que se ajustan exactamente a lo que necesitas.
Espero que te sirva :) (aunque sigo sin contestar a tu pregunta inicial :roll: )
...
OK, muchas gracias. Me meto de cabeza en SDL, ya os contaré como me va y cuando le tenga cogido el tranquillo espero ayudar en lo que pueda.
Bueno, estaré por aqui bicheando. Llevo 3 dias metido en la web y estoy enganchao con toda la información que hay en ella.
Lo dicho, gracias.
Y ya si quieres puedes probar la CRM32Pro que ha hecho TheAzzazel, esta basada en SDL y lo que hace es complementarla con algunas de las cosas que le faltan y mejorar aun mas su manejo. Deberias, como minimo, hecharle un vistazo.
De todas formas seguro que TheAzzazel te lo explica mejor. De echo me extraña que aun no haya comentado algo, estara ocupado ;).
Harko.
Con CRM32PRO se pueden escalar y rotar los sprites?? Llevo todo el día intentando instalar el SDL_gfx y nada de nada, no tengo ni papa. Copio la DLL en system, las .h dentro de las includes del dev-c++ y los archivos . a y .am dentro de lib. No sé si tengo que hacer algo más.
EL CRM32 tiene muy muy buena pinta, pero no sé yo si para los que empezamos es algo lioso. La web es muy completa y tiene toda la pinta que para personas que estén metidas en la programación tiene que ser superclara, pero los que empezamos necesitamos ejemplos. Sí, hay ejemplos, pero tampoco he conseguido arrancarlos.
La frustración me persigue a diario desde que he decidido aprender a programar, pero la satisfacción al resolver los problemas es tan grande que vale la pena estar delante de la pantalla tantas horas. Ahora pido un poco de ayuda. Gracias por todo.
...
Cita de: "Lex"y de todas formas no son operaciones gratuitas para hacer alegremente en medio de un videojuego.
Si hablamos de hacerlo por software pues no es algo recomendable, pero haciendolo por aceleracion via hardware por que no?
Salu2...
Buenas!
compilar los ejemplos de la lib lo considero algo bastante trivial, tanto en VisualStudio, como con GNU C(ya sea en linux o windows) por lo que tendras que estudiar un poco mas el tema de como compilar un proyecto, utilizar una libreria y enlazar contra ella, etc..
cierto que alguien con conocimientos lo podra utilizar mucho mejor pero te aseguro que una vez controles lo mas basico, veras que no es nada dificil hacer las cosas.
Por otro lado, Lex tiene razon, a dia de hoy, ni se rotan ni se escalan sprites, lo intente hace unos meses pero iba demasiado mal y no puedo hacer eso via hardware, luego mas impedimentos...
Que hago yo? pues el sprite tiene todas las rotaciones posibles y ya esta, asunto arreglado, ahora si quieres una rotacion perfecta de grado en grado..creo que esta solucion sera un poco tediosa.
Warwolf y Harko hicieron pequenos tutoriales, plantillas y demas, puedes encontrar links a ello en la web, tambien, en la red, hay varios documentos para newbies en SDL y una vez controles SDL, controlaras CRM32Pro :)
Elijas lo que elijas.. mucho animo y sigue con ello :)
Si usas una libreria 2D como SDL no suele ser una buena idea el rotar o escalar sprites, porque las operaciones hay que hacerlas a nivel de software y es bastante lento (al igual que el alpha blending).
Como te han dicho, una solución es preparar ya los sprites rotados de antemano y solo tener que dibujarlos. Pero si realmente te interesa escalar y rotar en tiempo real, quizas deberías mirar el pasar a OpenGL (o Direct3D) que si soportan todas estas operaciones a nivel de hardware.
Tu mismo :lol:. Un saludo
...
Otra opción sería usar una librería al estilo de glSDL, que si no me equivoco es una implementación de SDL sobre OpenGL, y debería permitir todas estas operaciones. Aunque nunca lo he probado, solo hablo de oidas.
Cita de: "Lex"En XNA si hay para rotar, escalar y hacer lo que sea con aceleración hardware, pero claro ya hablaríamos de tener que usar algún lenguaje de .NET.
Sera que no hay librerias que aprovechan OpenGL para hacer rotaciones y escalados fluidamente :P
Y weno, no, no es muy comun encontrar juegos que abusen de rotaciones y escalados, pero pudiendo aprovechar estas funcionalidades no veo por que no hacerlo, en algunos casos puede ser mas util que tener varios frames del sprite rotado, dado que tienes mas libertad, y encima al ser via hardware puedes suavizar los pixeles del sprite al rotarlo. Vamos, que depende de lo que vayas hacer y como lo quieras hacer te puede o no merecer la pena pero si es cierto que sin rotaciones tambien se pueden hacer juegos.
Salu2...
No se si lo que voy a decir es una brutalidad, pero podria crearse una funcion que rote por sofware pero no en tiempo real, sino que se almacenen los sprites en una matriz para despues utilizarlo. La funcion te pediria los grados de rotacion y el nº de sprites que deseas y ella rotaria y almacenaria para despues utilizarlo en la ejecución. Hacer 360 rotaciones en un programa externo, una a una debe ser demasiado tedioso, asi lo haria la función por tí.
Bueno, imagino que esto que acabo de decir es una chorrada, o un despilfarro de memoria y recursos, pero me he decepcionado mucho al ver que SDL no incluye ni rotaciones ni escalados(sobre todo el escalado, algun zoom en un momento concreto siempre viene bien, sobre todo en los menus).
En Allegro recuerdo haber escalado y rotado sprites (Un poco pencos pero bueno).
Quiero hacer un juego de estrategia tipo ajedrez. El tablero quiero que este en 3D prerenderizado, pero las piezas quiero que al moverse por el tablero siempre esten de perfil, pero al alejarse o acercarse escalen.
¿Que me recomendais? ¿OpenGL? ¿SDL_gfx? ¿Allegro? ¿DirectX? ¿Lo hago en plan MarioKart de la supernintendo (Osea, con escalados creados externamente)? Con este lio, me cojo una cartulina y unas temperas y me hago el tablero en plan artesano y a jugar que son dos dias.
Oye, gracias a todos por todo.
No sé si lo que voy a decir es una brutalidad, pero podría crearse una función que rote por software pero no en tiempo real, sino que se almacenen los sprites en una matriz para después utilizarlo. La función te pediría los grados de rotación y el nº de sprites que deseas y ella rotaria y almacenaría para después utilizarlo en la ejecución. Hacer 360 rotaciones en un programa externo, una a una debe ser demasiado tedioso, así lo haría la función por ti.
Bueno, imagino que esto que acabo de decir es una chorrada, o un despilfarro de memoria y recursos, pero me he decepcionado mucho al ver que SDL no incluye ni rotaciones ni escalados (sobre todo el escalado, algún zoom en un momento concreto siempre viene bien, sobre todo en los menús).
En Allegro recuerdo haber escalado y rotado sprites (Un poco pencos pero bueno).
Quiero hacer un juego de estrategia tipo ajedrez. El tablero quiero que este en 3D prerenderizado, pero las piezas quiero que al moverse por el tablero siempre estén de perfil, pero al alejarse o acercarse escalen.
¿Qué me recomendáis? ¿OpenGL? ¿SDL_gfx? ¿Allegro? ¿DirectX? ¿Lo hago en plan MarioKart de la supernintendo (O sea, con escalados creados externamente)? Con este lio, me cojo una cartulina y unas temperas y me hago el tablero en plan artesano y a jugar que son dos días.
Oye, gracias a todos por todo.
Cita de: "currilingo"No sé si lo que voy a decir es una brutalidad, pero podría crearse una función que rote por software pero no en tiempo real, sino que se almacenen los sprites en una matriz para después utilizarlo. La función te pediría los grados de rotación y el nº de sprites que deseas y ella rotaria y almacenaría para después utilizarlo en la ejecución. Hacer 360 rotaciones en un programa externo, una a una debe ser demasiado tedioso, así lo haría la función por ti.
No es una brutalidad, para nada. De hecho el rotozoom con smooth está pensado para usarse así. Pero, ya que vas a crear una manera automática de generar los sprites, ¿por que no lo haces como programa externo?
Es decir, tu haces un sprite a mano, y luego lo pasas por este programa que te lo va rotando y te genera todos los demás. Y también los mete automáticamente todos juntos en la misma imagen, que es la que cargaría el juego.
Es lo mismo que propones, solo que ya lo haces tú una sola vez, y reduces el tiempo de carga del juego. Aqui es cuestión de si prefieres alargar el tiempo de carga y hacerlo al arrancar, o gastar mas espacio en tus archivos de imágenes y arrancar mas rápido.
Cita de: "currilingo"
Quiero hacer un juego de estrategia tipo ajedrez. El tablero quiero que este en 3D prerenderizado, pero las piezas quiero que al moverse por el tablero siempre estén de perfil, pero al alejarse o acercarse escalen.
¿Qué me recomendáis? ¿OpenGL? ¿SDL_gfx? ¿Allegro? ¿DirectX? ¿Lo hago en plan MarioKart de la supernintendo (O sea, con escalados creados externamente)? Con este lio, me cojo una cartulina y unas temperas y me hago el tablero en plan artesano y a jugar que son dos días.
En este caso, el truco está en aprovechar que en el ajedrez todas las piezas están quietas menos una. Es decir, solo tendrías que escalar una imagen a tiempo real (suponiendo que no quieras pregenerarla). El resto de la pantalla no cambia, y lo dibujas como una sola superficie uniforme.
No sé como es de lento la escalacion por software, pero estoy asumiendo que hacer una sola llamada por fotograma sería algo aceptable. Eso si, desactiva el smooth y usa superficies de 32 o 8 bits de profundidad, nada intermedio. Crealas tambien en memoria software.
Si no da la velocidad, solo te quedaría pregenerar. Asi que haz la prueba y a ver que tal. Suerte!
Bueno, si hay algo que odio son los post que no terminan, así que vamos a intentar darle punto y final a este.
La pregunta era si SDL es compatible con Win32. Supuestamente sí, pero aunque SDL trabaja con ventanas, aun no sé si una vez iniciado es posible utilizar eventos de Win32 (Me imagino que no, bueno, no lo sé, es por eso el post leñe).
Por otra parte, en medio de muchas muchas pruebas con SDL descubro que no rota ni escala. Me gusta la idea de generar las rotaciones y escalados pero me parece una limitación a medio-largo plazo. Con SDL_gfx se pueden hacer rotaciones, OK, asunto solucionado (Aunque aun no he visto el resultado que dá).
Ahora bien, ya he probado Allegro, ya he probado SDL, las dos librerías las he visto muy por encima (De eso se trataba, de una toma de contacto) Si bien las dos son muy sencillas de manejar-comprender-documentarse, tengo la sensación de que Allegro está más orientada al videojuego y SDL es multifunción. Cual elegir?? Pues ahora viene el dilema. Bueno, por una temporadita me pondré a diseñar el juego e iré haciendo pruebas con ambas librerías, pues ahora no sabría por cual decantarme. Allegro me ha gustado mucho y más compacta que SDL. A su vez, SDL me da un aspecto más profesional, aunque no sé porque. Aun no he podido ver las rotaciones de SDL, pero las de Allegro son una pena. Bueno, lo dicho, que me retiro a diseñar que es lo mío, al fin y al cabo soy dibujante, eso sí, me lo paso de muerte delante del compilador dándome errores uno detrás de otro (Me acuesto todos los días a las tantas de la madrugada, esto de programar no es bueno).
Lo dicho, gracias por todo y un saludo.
PD: Iré poniendo los diseños del videojuego en mi blog a medida que los vaya haciendo, por si os animáis y queréis echarle un vistazo www.currobot.blogspot.com
...