Necesito Ayuda sobre Interfaces Graficas en C++ y Desarrollo de Videojuegos

Iniciado por ruben3344, 22 Junio 2018, 01:47 AM

0 Miembros y 2 Visitantes están viendo este tema.

ruben3344

Tengo un nivel intermedio en C++(he empezado hace unos 5-6 meses) y me ha surgido la duda sobre como hacer interfaces graficas. Me he puesto a buscar y cada persona dice una cosa distinta, me he liado y he llegado a la conclusion de que no se ni que quiero hacer aprendiendo este lenguaje, ¿podriais decirme para que puedo usar C++ a parte de por ejemplo juegos? Porque basicamente todo lo que estoy porgramando se basa en programas de consola y claro, me parece algo aburrido ya que quiero aprender a programar cosas que no tengan que ver con las aplicaciones de consola. Volviendo al tema, lo que mas me ha convencido es Qt pero no tengo ni idea si al programar ahi se cambia un poco el lenguaje, no encuentro libros que expliquen desde 0 el Qt, he visto que uno dice que en Visual Studio al hacer interfaces el lenguaje cambia (C++/Cli creo que es).

Gracias de antemano.


Mod: Otra pregunta es: ¿Deberia aprender de guias que tienen ya un tiempo (Ejemplo: 5-6 años) . Es que tengo un libro de C++6 y claro, en el "Hola mundo" en vez de un int main() pone un void main()(en code::blocks pongo eso y vamos, dice que me olvide) o no se usa el using namespace std; y todo lo que he aprendido tendra como 2-3 años como mucho.

srWhiteSkull

#1
Después de leer tú consulta pienso que no tienes un nivel de C++ medio, sino un nivel bajo de C++, incluso principiante.

Cita de: ruben3344 en 22 Junio 2018, 01:47 AM¿podriais decirme para que puedo usar C++ a parte de por ejemplo juegos? Porque basicamente todo lo que estoy porgramando se basa en programas de consola y claro, me parece algo aburrido ya que quiero aprender a programar cosas que no tengan que ver con las aplicaciones de consola.

Puedes hacer todo, aparte de juegos. El límite lo pone tú imaginación, tú conocimiento del lenguaje, librerías y el ámbito del programa (si haces un programa de contabilidad necesitas saber contabilidad). Se puede hacer de todo, desde sistemas operativos, lenguajes de programación, navegadores, servidores HTTP, base de datos, herramientas de red, cualquier tipo de aplicación o programa, no hay nada que no puedas hacer en C++.

Logicamente, como no vas a programarte tu propia API ya existen montón de librerías que te facilitarán el desarrollo.

Cita de: ruben3344 en 22 Junio 2018, 01:47 AM
Volviendo al tema, lo que mas me ha convencido es Qt pero no tengo ni idea si al programar ahi se cambia un poco el lenguaje, no encuentro libros que expliquen desde 0 el Qt, he visto que uno dice que en Visual Studio al hacer interfaces el lenguaje cambia (C++/Cli creo que es).

Si programas en Windows deberías usar su propio API el cual está super bien documentado.

https://msdn.microsoft.com/es-es/library/bb384843.aspx

También puedes recurrir si estás en Windows a DirectX, que es una librería gráfica para trabajar a medio/bajo nivel con alto rendimiento y con aceleración por hardware (en caso de estar disponible).

https://docs.microsoft.com/en-us/previous-versions/windows/apps/hh465137(v=win.10)

Luego también tienes alternativas a DirectX, como OpenGL, que se maneja de una forma similar.

QT está pensado para la creación y gestión de interfaces en un ámbito multiplataforma. Esto significa que simplemente con el mismo código podrías portarlo a otros sistemas operativos y usando las librerías para la plataforma que quieras portar. Algunas veces esto suele pintarse muy bonito pero lo cierto es que puede dar muchos dolores de cabeza.

C++/CLI es C++ enfocado al entorno dotnet. Normalmente el Visual Studio permite elegir entre una aplicación pura de C++ (Win32) y CLR.

https://msdn.microsoft.com/es-es/library/z6ad605x.aspx

Aparte Microsoft no respeta el estándar de C++, y existen ligeros cambios que pueden tender a la confusión.

https://es.wikipedia.org/wiki/Visual_C%2B%2B

Cita de: ruben3344 en 22 Junio 2018, 01:47 AM
Mod: Otra pregunta es: ¿Deberia aprender de guias que tienen ya un tiempo (Ejemplo: 5-6 años) . Es que tengo un libro de C++6 y claro, en el "Hola mundo" en vez de un int main() pone un void main()(en code::blocks pongo eso y vamos, dice que me olvide) o no se usa el using namespace std; y todo lo que he aprendido tendra como 2-3 años como mucho.

El C++ está constantemente evolucionando y cada vez más rápido, es bueno que estés actualizado y sepas los cambios existentes en las versiones pero dependerá del compilador que uses.

La versión estable más reciente es la C++17.

https://es.wikipedia.org/wiki/C%2B%2B17

Pero normalmente se programa para la C++11.

https://es.wikipedia.org/wiki/C%2B%2B11

ruben3344

#2
Muchas gracias por responder, me has aclarado las cosas. En el tema de la API de Windows he encontrado un enlace donde explican a hacer lo mismo pero este es algo mas reciente y mas completo, ¿me recomiendas leerme el enlace que te voy a dejar abajo o el que me has pasado tu? Te agradeceria a que si tienes tiempo me pudieses pasar alguna guia, libro sobre como programar en la API (en la pagina de microsoft explican bastante pero no creo que sea toda la informacion a aprender). Tambien me vendria bien que me pudieses recomendar algun libro para aprender un buen nivel de C++.

Enlace Aplicacion de Escritorio mas reciente: https://docs.microsoft.com/es-es/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp

ruben3344

#3
Viendo mas he visto que en el desarrollo de videojuegos no se utiliza WinApi y viendo lo que me has dicho voy a aprender WinApi para el tema de desarrollar aplicaciones de escritorio en Windows y DirectX para videojuegos. Lo que no sé es si DirectX es todo lo que voy a tener que saber para programar juegos, ¿alguna recomendacion para programar juegos aparte de DirectX? ¿Hay mucha diferencia de programar para juegos en PC y juegos para consolas?
Por cierto, he visto un libro que parece muy bueno "C++ Deitel" ademas enseña en C++11 podrian decirme si es realmente bueno(os dejo el pdf aunque mi idea seria comprarmelo en fisico).
https://docs.google.com/file/d/0B_eXfddvHj9wekJmamR1QjNrMzQ/preview

SrMcLister

Muy interesante tu pregunta, estoy a la espera de más info!!
Yo también tengo un nivel intermedio de C++ y me gustaría aumentarlo en dirección a interfaces graficas, videojuegos etc...
;-) ;-) ;-)
Código (cpp) [Seleccionar]

return((u.areHappy() && u.knowIt()) ? u.clapYourHands() : u.goFuckYourself());

srWhiteSkull

Cita de: ruben3344 en 22 Junio 2018, 13:37 PM
Viendo mas he visto que en el desarrollo de videojuegos no se utiliza WinApi y viendo lo que me has dicho voy a aprender WinApi para el tema de desarrollar aplicaciones de escritorio en Windows y DirectX para videojuegos. Lo que no sé es si DirectX es todo lo que voy a tener que saber para programar juegos, ¿alguna recomendacion para programar juegos aparte de DirectX? ¿Hay mucha diferencia de programar para juegos en PC y juegos para consolas?
Por cierto, he visto un libro que parece muy bueno "C++ Deitel" ademas enseña en C++11 podrian decirme si es realmente bueno(os dejo el pdf aunque mi idea seria comprarmelo en fisico).
https://docs.google.com/file/d/0B_eXfddvHj9wekJmamR1QjNrMzQ/preview

DirectX puedes usarlo en combinación del WinApi, sobre todo para aplicaciones multimedia.

Diferencias programando en consola y PC? Si, que si programas a bajo nivel necesitas conocer la arquitectura de la consola para acceder a determinadas funciones de esta. Yo así la experiencia que he tenido programando juegos fue con diferentes tecnologías y dispositivos, por ejemplo para un SO Symbia trabajé con J2ME, para Xbox 360 con dotnet (usando C# + DirectX), para Nintendo DS con C (OpenGL), en Android con Java (OpenGL)... incluso usando ensamblador para un procesador MIPS (que solían usarse en las consolas).

Lo otro ya te lo dije, la alternativa a DirectX es OpenGL, porque OpenGL está soportado en la gran mayoría de dispositivos que no son productos de Microsoft. Luego existen otro tipo de librerías encaminadas exclusivamente al desarrollo de videojuegos, ya que DirectX y OpenGL no están enfocadas solo a los videojuegos y son muy básicas. Por ejemplo está Ogre3D, que trabaja en una capa superior (menos complciado).

https://www.ogre3d.org/

Conocimientos para juegos, pues dependerá de que juegos pero en la mayoría de casos será necesario tener un conocimiento bueno de la trigonometría, geometría(líneas de bezier, etc...), también sobre los shaders, algo de sonido, iluminación, imagen, algoritmia avanzada, etc... un programador de videojuegos debe ser alguien multidisciplinar, que tenga conocimientos en varios ámbitos aparte de la programación.

Te pondría una lista de enlaces pero me tomaría tiempo, lo mejor es que te centres en un trabajo en concreto, por ejemplo intenta desarrollar un pequeño juego un experimento, poco pretencioso que puedas acabar en dos meses y según te vayan saliendo dudas de como se hace esto o aquello acudes al foro (a este u otro) y se te vaya facilitando la información. Yo muchas cosas las aprendía así, haciendo experimentos, y es más todos los juegos que desarrollé nunca los acabé aunque eran funcionales, pero era simplemente para aprender y adquirir conocimiento, por eso no te hablo por hablar, te hablo por experiencia aunque nunca haya sido un programador de videojuegos profesional.

También trabajé con motores, que son "programas" diseñados para generar un ejecutable por medio de scripts y componentes personalizables.

ruben3344

Muchas gracias por lo aclarado. Por ultimo, alguna recomendacion de algun libro para el tema de desarrollo de interfaces o de videojuegos.

Lo dicho, muchas gracias

Beginner Web

Resumiendo su pregunta lo que el intento decir es que se aburrio de la programacion back end y quiere hacer el front end en/con videojuegos

C++ , Como programar, Deitel & Deitel , 6ta Edicion  ;-)
7w7

ruben3344

Cita de: Beginner Web en 22 Junio 2018, 21:44 PM
Resumiendo su pregunta lo que el intento decir es que se aburrio de la programacion back end y quiere hacer el front end en/con videojuegos

C++ , Como programar, Deitel & Deitel , 6ta Edicion  ;-)

Tengo entendido que el programador front-end es el que "se relacion con el usuario"(tipo javascript) y el back-end el que hace que lo anterior funcione, ¿es eso asi?.

Becerra

Hola

Yo creo que, para alguien que no lleva mucho tiempo, ponerse directamente con OpenGL o similar va a ser un poco duro y te va a costar más avanzar que si usas alguna librería.

Por ejemplo, para interfaces gráficas tienes librerías como wxWidgets, GTK o Qt. Personalmente uso Qt, es mucho más que una interfaz gráfica, es un frameworks completo para desarrollar todo tipo de aplicaciones móviles o de escritorio.

Para los juegos igual, hay estupendas librerías como SDL o SFML que te van a permitir avanzar mucho más rápido. Y también los motores, que ahora están "de moda", como Unreal Engine, Unity, cocos o Godot.

Un saludo
Buenas preguntas obtienen mejores respuestas