CppVE / pong

Primer juego creado por la comunidad
GNU General Public License v2.0
2 stars 1 forks source link

Selección de librería y plataforma #1

Open chiguire opened 7 years ago

chiguire commented 7 years ago

Estoy viendo hacer el commit inicial del proyecto, tomando en cuenta sus comentarios en el chat de Telegram. Este issue es para que formalicen sus opiniones, y comenten las consideraciones que enunciaré a continuación.

TL;DR: español, multiplataforma, SFML, CMake, GCC, 64-bit

Como lo dije en el chat, a diferencia de mi estilo usual, estaré escribiendo el código de este proyecto en español, como una forma de atraer gente que quiera aprender C++ pero no sepa inglés (no está de más está decir que es imprescindible conocerlo para poder colaborar con otros proyectos).

Estoy considerando que el desarrollo debe ser multiplataforma con el editor de su preferencia, por lo que la escogencia del compilador y el toolchain estarán regido por ese principio. Por mi lado estaré desarrollando sobre Windows, pero probaré dentro de mis posibilidades que el código compile en Linux (usando Ubuntu).

Dicho esto, mi primera inclinación a usar es SFML, debido a lo comentado que fue en el chat, con SDL en un segundo lugar. Ambos usan CMake para producir el build, lo cual hace a CMake un buen candidato a su vez para hacer builds independientemente del sistema operativo que los colaboradores usen.

SFML provee librerías para Visual Studio y MinGW en Windows, GCC en Linux y Clang (LLVM) para Mac (con soporte hasta C++11). SFML está disponible en la mayoría de las distros de Linux. Dado esto, GCC sería el compilador soportado para este proyecto, incluyendo MinGW en Windows. No sé qué tan dificil sería soportar Visual Studio para los colaboradores que prefieran usarlo, pero sería un buen plus que estaría dispuesto a investigar.

SFML prefiere fuertemente en Linux usar 64-bit para la instalación por defecto, sugiriendo que aquellos que necesiten la versión en 32-bit deben compilarlo por sí mismos. En Windows están disponibles ambas versiones, y en Mac sólo disponible la versión en 64-bit. Esto no suele ser un problema, excepto si alguien quiere correr el juego en plataformas de 32-bit (un ejemplo que viene a la mente es una Canaimita).

Por no dejar de hablar de SDL, SDL también está disponible en varias plataformas, en Linux está desde hace mucho tiempo disponible en los repositorios de varias distros, y usa CMake. No conozco a ambos lo suficientemente bien como para dar una respuesta convincente, por lo que diré que nos vayamos con SFML y ahí vemos :-)

nmambre commented 7 years ago

Concuerdo con que sea multiplataforma. Se podría dejar instrucciones en el readme de como compilar en diferentes plataformas, para que la gente puede elegir. Como Code::Blocks es IDE cross-platform con GCC, podría ser una de las opciones. Pero quedaría a cada quien q vaya a usar uno de los editores/IDE's documentar su uso y publicar aqui.

carlosgruiz-dev commented 7 years ago

Concuerdo en general con la plataforma propuesta:

sin embargo en lo referente de llevar el proyecto en español creo que deberíamos tener un poco de cuidado de no agotar mucho tiempo tratando de traducir cosas que con un buen anglicismo o término incrustado pueda darse a entender.

Las variaciones de la plataforma (32bits, compilar con Clang, u otra cosa) se me ocurre puede ser fuente para interacciones interesantes, como portar fuentes a otros ambientes, comparar los trace de errores (gcc vs clang por ejemplo) u otras.

¿Alguna sugerencia para el esqueleto de proyecto? ¿Les parece usar algún generador como los que traen Yeoman [1] o CoockieCutter [2][3] para ese fin?

[1] https://www.npmjs.com/package/generator-cpp-suite [2] https://github.com/13coders/cookiecutter-cpp-minimal [3] https://github.com/hbristow/cookiecutter-cpp

chiguire commented 7 years ago

sin embargo en lo referente de llevar el proyecto en español creo que deberíamos tener un poco de cuidado de no agotar mucho tiempo tratando de traducir cosas que con un buen anglicismo o término incrustado pueda darse a entender.

¡Gracias! 😄 cuando comencé a escribir los documentos no sabía en el rollo que me estaba metiendo, supongo que podremos discutir un término si surge la duda, y escribir un glosario dentro del repo si hace falta.

Con respecto al generador, es una buena idea, esta semana le daré un vistazo a las alternativas. El código fuente de SFML no tiene alguna manera de crear proyectos que usen la librería, o al menos proveer un esqueleto, como lo hacen, por ejemplo, cocos2d-x o flixel.

lavz24 commented 7 years ago

Hola a todos, Este es mi primer comentario No conozco SFML, pero si he podido trabajar con SDL y/o escuchar experiencias sobre este, yo me inclinaría sobre esta. Se que hay una muy buena documentación en internet sobre SDL cosa que siempre facilita a larga el desarrollo. SDL también ya tiene soporte para iOS y Android aunque veo que SFML lo tendrá en un futuro.

asdrubalivan commented 7 years ago

Yeoman podría ser una excelente opción a mi modo de ver. @atmantree

Está escrito en un lenguaje bastante conocido (Javascript) y, además, tiene muy buen soporta. Yo, particularmente, usaría esa opción.

lavz24 commented 7 years ago

Aunque uno de los objetivo es usar C++ como lenguaje principal cierto?

asdrubalivan commented 7 years ago

Eso es correcto

2017-01-18 15:52 GMT-04:00 Luis Alejandro Vieira notifications@github.com:

Aunque uno de los objetivo es usar C++ como lenguaje principal cierto?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/CppVE/pong/issues/1#issuecomment-273582223, or mute the thread https://github.com/notifications/unsubscribe-auth/ABELds3lsKgitp-ID20nySatU3BxzsCfks5rTm2JgaJpZM4LcueH .

-- Asdrúbal Iván Suárez Rivera

carlosgruiz-dev commented 7 years ago

Venga, un par de comentarios.

Las herramientas de creación de esquemas son solo el paso cero del proyecto. Incluso googleando un poquito podemos encontrar buenos esqueletos, hacerlo con cookiecutter o yeoman es indiferente, porque después del primer PR esa herramienta desaparece del espectro de la app. Más bien el foco es revisar las plantillas propuestas, cual puede ser la que más se adapta. Allí creo que debería estar la discusión, cuál esqueleto. De todos modos echaré un vistazo al libro SFML Game Development a ver si tienen algún esqueleto básico y comento (tal vez en otro issue).

Respecto al por qué SFML, no es que sea mejor o peor que otra biblioteca, sino tal vez la más conveniente para este proyecto por su simpleza. Seguramente habrá más proyectos que hagamos donde no solamente tendremos la oportunidad de usar otras bibliotecas, sino involucrarnos en temas como la metaprogramación, programación funcional, ndk de android, desarrollo de GUI, y más. Desde mi punto de vista este proyecto es tipo una Introducción Práctica a C++.

chiguire commented 7 years ago

No se ven mal los generadores de proyectos, ya que hay esqueletos de proyectos de SFML, pero están orientados a algún toolchain en particular (Visual Studio, por ejemplo), y no con CMake. Por otro lado, veo que los generadores traen varias cosas que por el momento no son útiles (como code coverage), y creo que lo mejor sería hacer las cosas de manera más sencilla, incorporando librerías y herramientas según sea necesario, y no todo de golpe.