Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





La Libreria Inexistente De Burb

Iniciado por burb, 19 de Octubre de 2005, 09:41:46 PM

« anterior - próximo »

burb

 Buenas, quiero hacer una libreria en c++ especifica para programar juegos (de momento 2D) y me gustaria que pudiera ser usada desde cualquier compilador y ordenador, al menos en windows de momento, pero tengo un monton de dudas, ¿tengo que hacer una para cada uno?, ¿en ese caso tengo que comprar todos los compiladores del mundo?, ¿tengo que hacer tambien una para cada version?, ¿y si sacan una version nueva?,  ¿es mejor estatica o dinamica?, ¿para los graficos DirectX o OpenGL?, ¿y para el sonido que uso en caso de no usar DirectX?.

Bueno la verdad es que tengo un monton de dudas, a ver si sabeis de algunas paginas o libros, o me podeis orientar los que os hayais metido en este berenjenal de querer que algo funcione en todas partes, tambien me gustaria depender lo menos posible de otras librerias aunque de momento tengo claro que usare OpenGL o Direct3D para los graficos.

Las caracteristica principal sera la facilidad para hacer juegos, con la mayor parte de problemas graficos y logicos mas habituales ya resueltos, tambien incluire fisica, colisiones, etc, y todo ello con una sintaxis proxima al lenguaje humano (de momento en castellano), sin necesidad de tener que trabajar con la memoria, clases o estructuras, punteros, etc. directamente. La libreria deberia ser capaz de trabajar con todo ello de un modo amplio, eficiente, seguro y oculto para el programador, ¿lo conseguire?, la verdad es que me daria por satisfecho con que se pudiera hacer de momento un arkanoid, pac-man, tetris, etc.., luego ya se podria ir ampliando.

Bueno, gracias al menos por leerme, estare atento a todas las sugerencias.

jazcks

 no soy el más indicado en estos temas, pero si quieres hacer un engine porque no haces tu propio juego facilito, tal como dices, arkanoid, pacman, y veras que si lo haces bien tendras una serie de funciones genericas que con poca reforma pueden estar listas más adelante para hacerte una librería o engine...

opengl o dx? dx es mas dificil al principio (dicen), y solo va para windows...
librerías/engines ya hechos, aqui gente del foro tiene varias...mirate este post


mucha suerte :), pero siendo realista, reinventar la rueda a veces no sirve.


zupervaca

 intentare responderte lo mas sencillo posible para evitar malos entendimientos ;)

Citar¿tengo que hacer una para cada uno?
debes hacer una version para windows, linux, mac, etc

Citar¿en ese caso tengo que comprar todos los compiladores del mundo?
tienes la posibilidad de crear los archivos makefile y hacerlo con el block de notas por ejemplo, aunque esto en proyectos grandes puede crearte mucha confusion, la mejor opcion es crear makefile, pero programandolo todo desde un IDE gratuito

Citar¿es mejor estatica o dinamica?
no es mejor uno u otra, la estatica es liberada e inicializada automaticamente con la aplicacion y se compila dentro de esta, la dinamica se carga en tiempo de ejecucion y normalmente esta al lado del exe con la extension dll

Citar¿para los graficos DirectX o OpenGL?
si quieres hacerlo multiplataforma 100% deberas de preparar el asunto para poder poner opengl, directx o cualquier otro que vaya a esa plataforma, si no quieres liarte mucho y solo sera para ordenadores te recomiendo opengl ya que el de por si ya es multiplataforma, respecto a velocidad solo va mas rapido DirectX en el caso de que las imagenes por segundo sean superiores a 60~100, cuando llegas al umbral de que no va en tiempo real la aplicacion se desenvuelven por igual

Citary todo ello con una sintaxis proxima al lenguaje humano (de momento en castellano)
te recomiendo poner el nombre de funciones, clases, y demas objetos en ingles ya que es el lenguaje establecido por el momento, asi llegas a mas programadores y no solo a los españoles

Citar¿lo conseguire?, la verdad es que me daria por satisfecho con que se pudiera hacer de momento un arkanoid, pac-man, tetris, etc.., luego ya se podria ir ampliando
nunca se sabe, pero mas o menos creo que te convendria mas aprender sdl o utilizar alguna libreria 2d ya creada por algun usuario de stratos, asi aprenderias la forma de organizar las clases etc, con alguna libreria podrias hacer el arkanoid sin meterte en cosas muy complicadas que luego pueden que te hechen para atras y dejes esto de lado

suerte en tu decision

editado: ahora mismo en otro hilo del foro acabo de ver un link a un motor 2d http://www.codeproject.com/csharp/Endogine.asp

[EX3]

 Un consejo de otro programador de librerias, primero elige lenguaje y API a usar, ten soltura en dicho lenguaje y tragate todos los tutoriales y ejemplos que encuentres para ese API, luego ve profundizando poco a poco, cuando lo basico lo tengas dominado al 100%. No pretendas desde un principio y sin tener mucha idea hacer una torre sin tener hechos los cimientos, que luego la caida duele ;)

Yo he tardado cerca de 5 años en tener mi primera version funcional de mi libreria (en marzo o abril del año pasado). Mientras tanto me tuve que patear bien los tutoriales de una pagina sobre DirectX en VB6 y realizar experimentos sobre dichos ejemplos con ayuda de la documentacion de DirectX y Google, y no sin olvidar las veces que me han ayudado en estos foros (como cuando el tema del z-buffer o el reseteo del device por poner unos ejemplos)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

burb

 
QUOTE (jazcks)

no soy el más indicado en estos temas, pero si quieres hacer un engine porque no haces tu propio juego facilito, tal como dices, arkanoid, pacman, y veras que si lo haces bien tendras una serie de funciones genericas que con poca reforma pueden estar listas más adelante para hacerte una librería o engine...
[/quote]

Si, ya hice juegos tipo arkanoid, columns, matamarcianos, tambien he hecho muchas demos y pijadillas, y tambien cosas en 3D tanto en GL como en DX, la verdad es que he resuelto ya muchos problemas y funciones que se dan siempre en programacion de juegos y ahora me gustaria poder agruparlas (reescribiendolas mejor) bajo una fina capa de llamadas o comandos legibles para que cualquier mortal lo entienda, y en el peor de los casos para usarlas yo para mi

QUOTE (jazcks)

mucha suerte smile.gif, pero siendo realista, reinventar la rueda a veces no sirve.
[/quote]

Seguramente tengas razon, pero de momento me sigo resistiendo a usar librerias que no sean absolutamente imprescindibles. Prefiero inventar la rueda aunque muchas cosas ya las "invente" hace tiempo. La idea es tener el mayor control posible sobre el codigo de la libreria, y es cierto que ya hay muchas cosas escritas y optimizadas  en forma de librerias, pero tambien las hay en forma de codigo fuente, tutoriales, ejemplos, etc.  Intentare aguantar lo que pueda aunque este mas limitado, pero de momento quiero hacer cosas "sencillas" y el arkanoid recuerdo que lo hice casi a pelo en c, programando la vga y el midi en modo ms-dos, por lo que de momento creo que puedo hacer muchas cosas por mi mismo, ya veremos, quizas en el futuro no me quede mas remedio que usar el SDL o alguna otra libreria, gracias por los comentarios y por el animo.

//-----------------------------------------------------------------------------------------------------------------------------//

QUOTE (zupervaca)

tienes la posibilidad de crear los archivos makefile y hacerlo con el block de notas por ejemplo, aunque esto en proyectos grandes puede crearte mucha confusion, la mejor opcion es crear makefile, pero programandolo todo desde un IDE gratuito
[/quote]

¿Como se crean los makefiles?, ¿es mucho follon o hay alguna herramienta para crearlos?, bueno, de momento no lo necesito pero en algun momento tendre que hacerlo, al menos ya se que no tendre que comprarme todos los compiladores existentes en el mercado, y si, me interesa hacerlo desde un IDE gratuito aunque no se cual, quiero que se pueda usar el archivo lib y el de cabecera en cualquier parte, ¿pero debo crear libs separados para cada compilador o con el dll vale?. con el borland recuerdo que tenia que usar el implib.exe para crearlo a veces. La verdad es que estoy bastante perdido en el tema de las librerias.

QUOTE (zupervaca)

no es mejor uno u otra, la estatica es liberada e inicializada automaticamente con la aplicacion y se compila dentro de esta, la dinamica se carga en tiempo de ejecucion y normalmente esta al lado del exe con la extension dll
[/quote]

Yo creo que para el programador es mejor que se incluya en el propio ejecutable que ir a cuestas con el DLL ¿no?, a mi me parece mejor estatica pero no se si tiene mas ventajas que desventajas y cuales son.

QUOTE (zupervaca)

te recomiendo poner el nombre de funciones, clases, y demas objetos en ingles ya que es el lenguaje establecido por el momento, asi llegas a mas programadores y no solo a los españoles
[/quote]

Las clases, objetos y demas historias estan en espanglish a mi manera, pero nadie las va a ver ni le interesan o al menos eso es lo que pretendo, mi idea es que solo se puedan acceder a ellas con funciones especificas que voy a escribir en castellano de momento, y llegado el caso se podria traducir a cualquier idioma del propio archivo de cabecera sin problemas, de todos modos dudo que vaya si quiera a traspasar las fronteras de mi ordenador.

QUOTE (zupervaca)

nunca se sabe, pero mas o menos creo que te convendria mas aprender sdl o utilizar alguna libreria 2d ya creada por algun usuario de stratos, asi aprenderias la forma de organizar las clases etc, con alguna libreria podrias hacer el arkanoid sin meterte en cosas muy complicadas que luego pueden que te hechen para atras y dejes esto de lado
[/quote]

Ya tengo hecho mas o menos la forma en la que estaran estructuradas las clases y la forma de acceder a ellas: por medio de una funcion, un identificador unico del objeto o grupo de objetos, y los parametros necesarios. Ya he hecho bastantes pruebas del metodo a usar por lo que en ese sentido no creo que tenga ningun problema de momento, y el arkanoid como ya respondo aqui ya lo hice, por lo que tampoco me asusta el tema de hacer cualquier juego, de hecho mi intencion es irla ampliando y mejorando a medida que voy haciendo juegos mas complejos. Otra cosa que si me preocupa son algunas funciones especiales sobre todo de carga/descompresion de archivos aunque creo que de momento me voy a limitar al bmp y al wav para no complicarme la vida.

QUOTE (EX3)

Yo he tardado cerca de 5 años en tener mi primera version funcional de mi libreria (en marzo o abril del año pasado). Mientras tanto me tuve que patear bien los tutoriales de una pagina sobre DirectX en VB6 y realizar experimentos sobre dichos ejemplos con ayuda de la documentacion de DirectX y Google, y no sin olvidar las veces que me han ayudado en estos foros (como cuando el tema del z-buffer o el reseteo del device por poner unos ejemplos)
[/quote]

Realmente no quiero hacer algo tan complejo como para tardar tanto, aparte que ya me he pateado libros y tutoriales de programacion durante algunos años, espero tener una primera version en unos meses, aunque estara muy limitada logicamente, me centrare de momento como reto asequible que se pueda hacer pequeños juegos 2D con ella. Quizas donde tengo mas dudas es en conseguir en un futuro que pueda ser usado de una manera sencilla por cualquiera, incluido el tema de la compatibilidad, distribucion, soporte tecnico, mantenimiento, etc. no se donde encontrar informacion al respecto, si hubiera algun libro seria ideal.

Conclusiones de lo que creo que debo usar para una primera version:

Lenguaje:    C++ sin ninguna duda
Compilador: Gratuito ¿Dev-cpp?,¿cuales mas hay?
Graficos:     OpenGL para no depender del DirectX
Audio:         ????
Input:          Teclado y Raton.
Recursos:    bmp y wav, (de momento mejor solo esos).

¿como lo veis?

yo creo que con esto ya puedo hacer juegos clasicos aunque para el audio tendria que tirar de alguna libreria gratuita y multiplataforma, pero a ser posible que sea especifica de audio, que no falle y no me haga la pascua en navidad, si no tendria que usar DirectSound o el Win32. ¿que hago?, no quiero depender de nadie en concreto de momento para reproducir unos simples sonidos, aunque tampoco me voy a poner a programar directamente las tarjetas, ¿hay algun "OpenGL" para audio?.

Voy a hacer una recopilacion de las dudas que tengo ahora para que sea mas facil responderlas, o por si no os apetece leer toda la charla, tambien prestare atencion a cualquier comentario, sugerencia o critica al respecto de lo que quiero hacer.


¿Como se crean los makefiles o como hago para asegurarme que se va a poder usar cualquier compilador existente?

¿cuales son las ventajas y desventajas de usar librerias estaticas o dinamicas? ¿tengo que hacer la lib estatica necesariamente o la crea el programador si lo desea a partir del dll?, ¿como se suele hacer esto?

¿existe algun libro o informacion detallada sobre la distribucion, liberalizacion, comercializacion, etc. de un juego o libreria?

¿que compilador gratuito o IDE me aconsejais?

¿hay algun "OpenGL" para audio?, o, ¿que puedo usar para reproducir buffers de sonido estaticos y a poder ser tambien dinamicos o canalizados?.


Gracias a todos por la ayuda.

vincent

 Respecto al sonido puedes utilizar OpenAL y poner soporte para ogg también.

Suerte!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

burb

 Gracias Vincent, ya lo estoy descargando y creo que es justo lo que necesito.

vincent

Desarrollo en .Net y metodologías http://devnettips.blogspot.com

sés

 Como entorno gratuito, y para olvidarte de los Makefiles, te recomiendo Code::Blocks. Es el que utilizo para mi librería BGL y va de maravilla.
Soy indeciso... ¿o no?

burb

 Tiene buena pinta (ole) esto empieza a tomar cuerpo (uoh)

[EX3]

 
Cita de: "burb"
Cita de: "[EX3"]Yo he tardado cerca de 5 años en tener mi primera version funcional de mi libreria (en marzo o abril del año pasado). Mientras tanto me tuve que patear bien los tutoriales de una pagina sobre DirectX en VB6 y realizar experimentos sobre dichos ejemplos con ayuda de la documentacion de DirectX y Google, y no sin olvidar las veces que me han ayudado en estos foros (como cuando el tema del z-buffer o el reseteo del device por poner unos ejemplos)
Realmente no quiero hacer algo tan complejo como para tardar tanto, aparte que ya me he pateado libros y tutoriales de programacion durante algunos años, espero tener una primera version en unos meses, aunque estara muy limitada logicamente, me centrare de momento como reto asequible que se pueda hacer pequeños juegos 2D con ella. Quizas donde tengo mas dudas es en conseguir en un futuro que pueda ser usado de una manera sencilla por cualquiera, incluido el tema de la compatibilidad, distribucion, soporte tecnico, mantenimiento, etc. no se donde encontrar informacion al respecto, si hubiera algun libro seria ideal.
Compleja la dx_lib32? Ya me gustaria a mi jeje :) El largo periodo de desarrollo fue debido a que cuando empece aun no tenia dominado el lenguaje del todo y que tuve que aprenderme por mi cuenta una buena base del entonces DirectX, generalmente DirectDraw. Poco a poco iba montando las funciones basicas y alguna pijadilla mas. Cuando me vi limitado en algunas acciones tuve que reescribir desde 0 el proyecto para DirectX8, sobre todo el modulo grafico y replaentar la estructura de la mayoria de las rutinas de la libreria. Entre una cosa y otra, entre tropezar y levantarme, paso el tiempo, y a merecido la pena ya que tanto trabajo y tantas peleas con el codigo ha dado sus frutos :) Visto asi puede que si resulte algo compleja mi libreria, pero no llega a ser tan avanzada como SDL por ejemplo, que es a lo que yo venia, asi que dicho esto, quieras o no, si quieres montarte una buena libreria, que sea multiplataforma y tal, va a ser mas compleja que la mia de seguro, y entre que solucionas y descubres bugs en el proyecto asi como cualquier otra complicacion pasaran mas de dos meses.

Para el teclado, raton y joystick podrias utilizar perfectamente SDL_Input, aunque creo que tambien habia una libreria de Open para tratar el tema del Input.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

burb

 Seguro que has aprendido mucho de programacion de juegos, independientemente del lenguaje los problemas suelen ser los mismos, aunque como ya te digo ya tengo resueltos la mayoria (al menos para juegos pequeños o en 2D), ahora..., que de hacer una libreria o algo fumable para cualquier otro programador estoy totalmente pez, por eso queria contar con vuestra ayuda.

dos meses no creo que tarde por supuesto pero espero tener algo terminado dentro de 6, o un año como mucho, tampoco pretendo hacer una libreria como tal si no una especie de lenguaje para hacer juegos lo mas sencillo, rapido y optimizado posible, centrandome en los problemas de tipo logico que se dan pero que no estan resueltos en ninguna libreria.

Lo del OpenXX para input suena interesante, personalmente prefiero no mezclar para no liar mas la madeja, y si uso todo Open pues todo Open, al igual que si usase DirectX intentaria que todo fuese DirectX, y lo mismo con el SDL.

He pensado si la G de GL es de graficos y la A de AL es de audio, el Open de Input deberia ser OpenIL, y si, si que existe, pero no es la I de input si no de imagen, jeje. http://openil.sourceforge.net/, (me podria valer para cargar los graficos)

Entonces ya tengo:

Lenguaje:   C++
IDE:            CodeBlocks
Graficos:     OpenGL
Audio:         OpenAL
Input:         Teclado y Raton. (¿algun Open Input?)
Recursos:   wav y bmp de momento (quizas OpenIL para cargar otros formatos de imagen)

A ver si me puedo apañar solo con esto de momento, aunque todavia he dejado algunas preguntas en el aire por si alguien me puede ayudar.


TheAzazel

Cita de: "burb"dos meses no creo que tarde por supuesto pero espero tener algo terminado dentro de 6, o un año como mucho, tampoco pretendo hacer una libreria como tal si no una especie de lenguaje para hacer juegos lo mas sencillo, rapido y optimizado posible, centrandome en los problemas de tipo logico que se dan pero que no estan resueltos en ninguna libreria.
No quiero desilusionar a nadie pero...

no parece que seas un experto en programacion orientada a juegos  (y aun siendo un maestro-isimo)... pretendes hacer "algo mas alla de una libreria, como un lenguaje para desarrollar juegos mas rapido y mejor.."  y eso, es algo TITANICO, mas aun para una sola persona.

Esta muy bien que intentes hacer eso, y ojala lo lleves a buen puerto... pero...
si yo fuera tu seria un poco mas realista, segun he leido vas a empezar desde abajo del todo (del todo del todo no pq usaras OpenGL, OpenAL, y demas...), luego una lib y luego tools y algun tipo de lenguaje que sea facil desarrollar juegos.... porque no utilizas "ruedas" ya inventadas, te ahorras un inmenso curro y te centras mas en crear esas herramientas y ese lenguaje? Que aun y asi sera complicado pero mas sencillo que si haces todo...

Desde luego que yo, haria eso....

De todos modos, mucha suerte y animo con tu proyecto.

Saludos

jazcks

 para input, si vas a usar opengl, tienes que ver GLUT: http://www.opengl.org/resources/libraries/glut.html

más o menos lleva:

-Multiple windows for OpenGL rendering
-Callback driven event processing
-Sophisticated input devices
-An 'idle' routine and timers
-A simple, cascading pop-up menu facility
-Utility routines to generate various solid and wire frame objects
-Support for bitmap and stroke fonts
-Miscellaneous window management functions

Pogacha

Cita de: "TheAzazel"
Cita de: "burb"dos meses no creo que tarde por supuesto pero espero tener algo terminado dentro de 6, o un año como mucho, tampoco pretendo hacer una libreria como tal si no una especie de lenguaje para hacer juegos lo mas sencillo, rapido y optimizado posible, centrandome en los problemas de tipo logico que se dan pero que no estan resueltos en ninguna libreria.
No quiero desilusionar a nadie pero...

no parece que seas un experto en programacion orientada a juegos  (y aun siendo un maestro-isimo)... pretendes hacer "algo mas alla de una libreria, como un lenguaje para desarrollar juegos mas rapido y mejor.."  y eso, es algo TITANICO, mas aun para una sola persona.

Esta muy bien que intentes hacer eso, y ojala lo lleves a buen puerto... pero...
si yo fuera tu seria un poco mas realista, segun he leido vas a empezar desde abajo del todo (del todo del todo no pq usaras OpenGL, OpenAL, y demas...), luego una lib y luego tools y algun tipo de lenguaje que sea facil desarrollar juegos.... porque no utilizas "ruedas" ya inventadas, te ahorras un inmenso curro y te centras mas en crear esas herramientas y ese lenguaje? Que aun y asi sera complicado pero mas sencillo que si haces todo...

Desde luego que yo, haria eso....

De todos modos, mucha suerte y animo con tu proyecto.

Saludos
No le pinches el globo, con este tortazo aprenderá muchisimo de seguro!  :rolleyes:






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.