Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Consejos para C++ multiplataforma

Iniciado por tewe76, 02 de Febrero de 2009, 08:04:37 AM

« anterior - próximo »

tewe76

Hola :)

Voy a empezar a hacer mi miniengine (TWIrr) sobre el engine IrrLicht (es decir, la estructura base sobre la que programar un futuro juego), usando como IDE el MS VC++ 2008 Express.
Soy novato en C++, soy novato en MS VC++ 2008 Express, soy novato en IrrLicht, he probado Linux un par de veces en mi vida, he usado un Mac creo que cinco minutos... pero quiero hacer un juego multiplataforma (Win-Mac-Linux) en C++ :o . Sí, bueno, suena a locura, pero no tengo dudas de que puedo conseguirlo, es cuestión de aprender lo necesario y delegar lo que no pueda aprender (sí, seguramente delegaré mucho, es un proyecto algo ambicioso y soy consciente de ello).

Bueno, teniendo en cuenta esta introducción, mi duda es: ¿qué cosas tengo que tener en cuenta a la hora de programar para que portarlo (en un futuro medio-lejano) de Win a Mac y Linux sea lo más simple posible?
IrrLicht es multiplataforma, así que el tema de inicialización de ventana, carga de modelos, render, etc, no debería ser problema.
Y el input tampoco, que también va en IrrLicht.
Para audio seguramente usaré IrrKlang, así que ídem.
Y para lectura y escritura de archivos voy a usar las funciones XML de IrrLicht también, que imagino que ya tendrá en cuenta temas de big endian y tal.
Donde tengo más dudas es en tema de variables (según tengo entendido los bits de cada tipo varían según IDE y/o SO), cosas de punteros que sean distintas según SO, o... no sé, ya digo que soy novato ::)

En definitiva, ¿consejos de los pro para un novato?

Gracias ;)
Tewe
www.TAPAZAPA.com : Funny and easy to play games for all ages! - Fairy Match - Brain Crash
www.LaRebelionDelBiberon.com : Experiencias de unos padres primerizos

shephiroth

Buenas. Lo primero suerte con tu engine ;)

Bueno, no se si soy el mas indicado para decir esto, pero si lo quieres hacer multiplataforma te aconsejo usar un ide multiplataforma. De esta forma te aseguras de que el "proyecto" lo puedas compilar tal cual en todas las plataformas. A mi me encanta el visual studio, pero puede que a la hora de compilar en linux o en mac te vuelvas loco preparando el make de cero cuando tengas 1000 clases......sin embargo haciendolo con cada nueva clase se hace mas ligero.

SUERTE!!!

H-K

#2
Pues... si estás usando un motor multiplataforma como base no creo que vayas a tener mucho problema. Mira a ver si el mismo motor te define los tipos de datos, que si es multiplataforma lo más normal es que te los defina él solito (Irrlicht te los define de hecho como un,sn,cn,fn según si son unsigned, signed, char o float de n bits) Por lo de punteros y demás, en teoría si te riges por el estándar no te vas a encontrar con nada raro, aunque eso es sólo en teoría :P. Aquí te dejo una guía de portabilidad de C++

https://developer.mozilla.org/En/C___Portability_Guide

Edito: A lo mejor esa guía es demasiado restrictiva para lo que tú quieres, así que tampoco te tomes al pie de la letra el 100% de lo que diga :)
"It's not who I am underneath, but what I do that defines me"

tewe76

CitarLo primero suerte con tu engine
Gracias :)

Citarsi lo quieres hacer multiplataforma te aconsejo usar un ide multiplataforma
Sí, ya me lo había planteado. Pero decidí usar el de MS porque tiene buena fama y, sobre todo, porque me dió la sensación de que era el  "IDE oficial" para Windows en IrrLicht, aunque ya no estoy yo muy seguro...
¿Qué IDEs multiplataforma me recomendáis?

CitarMira a ver si el mismo motor te define los tipos de datos, que si es multiplataforma lo más normal es que te los defina él solito (Irrlicht te los define de hecho como un,sn,cn,fn según si son unsigned, signed, char o float de n bits)
Sí, sí que tiene tipos definidos 8)

CitarAquí te dejo una guía de portabilidad de C++
Muy interesante, gracias. Aunque sí, hay muchas tiquismiqueces, me parece a mí ::)

¿Algún consejo más?
Tewe
www.TAPAZAPA.com : Funny and easy to play games for all ages! - Fairy Match - Brain Crash
www.LaRebelionDelBiberon.com : Experiencias de unos padres primerizos

H-K

Ay mierda :P Suerte con el engine de mi parte también, que con la prisa de responder se me ha ido. Luego me extraña que me llamen descastao...

Cita de: tewe76 en 02 de Febrero de 2009, 11:27:50 AM
¿Qué IDEs multiplataforma me recomendáis?

Pues el Eclipse+CDT tira bastante bien. El port a Linux (y seguramente Mac, aunque tendría que preguntarlo) del Penumbra está hecho ahí. El IDE es una maravilla, muy completo, aunque he de reconocer que lo he usado más bien para Java y PHP, pero te aseguro que funciona :) También está Code::Blocks, bastante más ligero, y NetBeans (con el plugin para C/C++), aunque éste último no lo he probado.

Ahora mismo no se me ocurre nada más que decirte, supongo que si algo revienta vendrás a preguntar otra vez, ¿no? :P
"It's not who I am underneath, but what I do that defines me"

Marci

Hola. Quizas este hilo pueda ayudarte algo: http://www.stratos-ad.com/forums/index.php?topic=10627.msg116377#msg116377

Y en cuanto a IDE, sin duda yo me quedo con code::blocks

tewe76

Primero me autocito:
Citarme dió la sensación de que era el  "IDE oficial" para Windows en IrrLicht
Sí, efectívamente los ejemplos vienen con MSVC++ en mente, así que creo que por ahora voy a seguir con él. No obstante, voy a echarle un vistazo a los que me recomendáis...

CitarQuizas este hilo pueda ayudarte algo
Me lo apunto también ;)
Tewe
www.TAPAZAPA.com : Funny and easy to play games for all ages! - Fairy Match - Brain Crash
www.LaRebelionDelBiberon.com : Experiencias de unos padres primerizos

shephiroth

Yo no se que mas ides hay, en general vengo trabajando (bueno, en mi tiempo libre) con el vs2005 cuando codeo en c++ y el netbeans cuando lo hago en java, y la verdad es q estoy bastante contento con ambos. Lo unico que le echo en cara el vs (y principalmente por esto te lo digo) es que ultimamente en las compilaciones de consola que hago no puedo puedo decirle que vacie carpetas y recompile todo desde cero, sino empieza a dar problemas con el manifiest y tengo que guardando los archivos de codigo crear un proyecto nuevo y añadirlos. Una guarrada.

El netbeans no lo he utilizado para c, pero en java la verdad estoy muy contento. Tiene su ventanita para ver las variables internas de la clase que estas codeando, lo cual es muy comodo....y tamboen tiene el autocomplete cuando estas escribiendo (que aunque algunas veces molesta, al final acaba gustando xDD)

Bueno, suerte de todas maneras, ya nos contarás ^_^

tewe76

Bueno, se agradece todo tipo de información, que no se me entienda mal, pero el tema del IDE lo considero secundario. Me interesa más el asunto de hacer código multiplataforma.

Por cierto:
- he probado en C::B y la primera impresión (5 minutos) no ha sido muy buena. ¿Qué fuente usa por defecto? 8o ¿F1 sobre una keyword no te abre la ayuda sobre esa palabra? Oo
- con el Eclipse+CDT no me aclaro bien: ¿tengo que descargar sólo ésto: http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/ganymedesr1 ? ¿O aparte tengo que descargar algo para el CDT? Lo he probado también un poco (la primera descarga) y, la misma duda, ¿F1 no da ayuda sobre el keyword? ???

Creo que me quedo con el MSVC++, me siento cómodo en él...
Tewe
www.TAPAZAPA.com : Funny and easy to play games for all ages! - Fairy Match - Brain Crash
www.LaRebelionDelBiberon.com : Experiencias de unos padres primerizos

Prompt

Yo hablo como poseedor de un motor multiplataforma y como programador desde hace siglos compilando para linux mis cosas.

Si es tu primer proyecto y tal... yo te recomendaría Eclipse + CDT. El plugin de C++ está muy avanzado y aunque eclipse utiliza Java y en Linux al menos en maquinas no potentes va fatal, siempre podrás llevarte el código con el IDE y compilarlo donde sea.

Lo único que tendrás que hacer será configurar los proyectos con Debug Win32 Release Win32, Debug Linux Release Linux.... etc

Ya que en las soluciones de Win32 hay que configurarlo para que use MinGW y ciertas cosas. Es más, compilando con GCC tu código siempre será standard y portable allá donde exista GCC.

Yo personalmente prefiero, de momento, utilizar VS 2008 + Vissual Assist porque se es mucho más productivo y el debugger, su interface visual del IDE es mucho mejor y se nota el €€€€ dinerito invertido. Luego ya tengo mis proyectos montados con eclipse y como con hacer "Refresh" coge todos los archivos... compilo y listos :)

Prompt

Cita de: tewe76 en 03 de Febrero de 2009, 07:49:18 AM
Creo que me quedo con el MSVC++, me siento cómodo en él...

Pues si no tienes experiencia en C++ y programar multiplataforma, prepárate para morir... cuando quieras hacerlo.


tewe76

A ver, que me estás liando ::)

CitarEclipse IDE for C/C++ Developers (68 MB)
http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-cpp-ganymede-SR1-win32.zip
Sí, ese es el que me he descargado. Tu link y el mío son distintos, pero llevan al mismo archivo.

Primero me dices:
CitarSi es tu primer proyecto y tal... yo te recomendaría Eclipse + CDT.
Citar"Creo que me quedo con el MSVC++, me siento cómodo en él..."
Pues si no tienes experiencia en C++ y programar multiplataforma, prepárate para morir... cuando quieras hacerlo.
Y luego me dices:
CitarYo personalmente prefiero, de momento, utilizar VS 2008 + Vissual Assist porque se es mucho más productivo y el debugger, su interface visual del IDE es mucho mejor y se nota el €€€€ dinerito invertido.
En qué quedamos ???
¿Por qué dices lo de "Pues si no tienes experiencia en C++ y programar multiplataforma, prepárate para morir... cuando quieras hacerlo."? ¿Qué problemas me puede dar?

Ah, y gracias :)
Tewe
www.TAPAZAPA.com : Funny and easy to play games for all ages! - Fairy Match - Brain Crash
www.LaRebelionDelBiberon.com : Experiencias de unos padres primerizos

AK47

Y si usas el motor del Prompt? Asi podreis ayudaros mutuamente  ;)

Prompt

Quedamos en que, como yo tengo experiencia, uso VC++ pq es más productivo y mantengo el proyecto con Eclipse + CDT para compilar y modificar las cosas que sean necesarias.

Para ahorrarte disgustos, te recomiendo que desde el principio uses Eclipse + CDT.






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.