Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NOIS en 18 Marzo 2015, 22:25 pm



Título: C++ 3D
Publicado por: NOIS en 18 Marzo 2015, 22:25 pm
Buenas, estoy interesado en aprender programación orientada a videojuegos en 3D, con el lenguaje base C++ y algo profesional, nada tipo GMaker ni nada que implique no programar por ti mismo.

He leído por ahí que lo que se suele usar es OpenGL, pero quería preguntar antes por aquí por si tenéis alguna recomendación mejor o si también consideráis que OpenGL es la mejor opción que me facilitaseis algún link donde haya buenos tutoriales o manuales para aprender a usar esa librería.

Gracias de antemano.


Título: Re: C++ 3D
Publicado por: engel lex en 18 Marzo 2015, 22:54 pm
te recomiendo algo... la programación de videojuegos no la hagas desde 0... inventar el agua tibia no te hace más profesional...

a menos que realmente (y por realmente realmente me refiero a realmente) estés muy bien con c++ al punto que te digan "puedes hacer un sistema operativo" y respondas "si, me tomará unas semanas pero no hay problemas" entonces no intentes empezar desde 0...

por qué?

primero: diseñar el motor grafico... es decir diseñar una base que pueda mostrar todos los graficos en pantalla de forma optima, un motor de manejo de objetos 3d desde formatos de archivo y transformaciones de matrices a diestra y siniestra, ya que openGL es un menjador de graficos de pantalla y realmente es 2d(como tu pantalla), tu tienes que hacer una buena parte de las cosas para que se via 3d

segundo: diseñar los handler de captura de teclado y mouse... lo más simple, aún así no dejan de ser un par de miles de lineas de código

tercero: diseñar los handler de elementos graficos... se tienen que mover, interactuar, saber si se tocan, etc...

y de ahí no he toca aún sonido, captura de animaciones, lectura de archivos, inserciones... y apenas con eso estamos terminando el motor del juego... luego viene sobre eso el juego...


por eso los estudios gastan millones de $$ creando motores de juego para hacer sus juegos sobre ellos...

lo más cercano que he visto a un motor de bajo nivel para c++ es Angel Engine (http://angel2d.com/) y ellos mismos aclaranque aunque es posible crear un juego, no lo recomiendan más que para practicar...

para hacer un buen juego profesional, tienes unity, cryengine, udk, entre otros... son motores de juego bien diseñados, corregidos y completos, que hacen todo lo que indiqué arriba y más... y ya habrás visto tu los juegos creados solo en ellos 3...


Título: Re: Re: Re: C++ 3D
Publicado por: ivancea96 en 18 Marzo 2015, 23:18 pm
segundo: diseñar los handler de captura de teclado y mouse... lo más simple, aún así no dejan de ser un par de miles de lineas

Que bruto xD


OpenGL está muy bien. A parte, puedes simplificarlo con una librería, como GLFW, que te trae simplificados los procedimientos más tediosos.

Pero igualmente, pese a que OpenGL renderice todo por ti, un juego 3D necesita modelos, que hay que cargar (salvo que quieras mostrar objetos simples 'hardcodeados'); en caso de haber mapas grandes, necesitarás un método para cargar el mapa por partes; y muchos etc más.

Si quieres hacer pruebas, hazlas. Pero si quieres hacer un juego de cara a su comercialización, o un juego de «grandes medidas», te diría que te lo pienses dos veces. Y si finalmente estás seguro de ello... estructuralo bien antes de comenzar :p


Título: Re: C++ 3D
Publicado por: NOIS en 19 Marzo 2015, 00:26 am
De momento no pretendo hacer ningún juego a gran escala, no estoy tan loco xD, primero quiero aprender a programar bién con algo que en un futuro me pudiera servir para algo de grandes dimensiones, sobre todo algo que me permita hacer cosas con calidad gráfica, es decir, como comentaba he leído por algunos foros que OpenGL está muy bien pero por los vídeos que he visto de juegos hechos con eso, la calidad de los gráficos es bastante baja.

Pretendo poder hacer algo como mínimo con una calidad de gráficos como la del Wow con posibilidades de poder hacer algo de altísima calidad, como ya digo, pretendo aprender para que me sea útil en el futuro, y tal como avanzan las cosas hoy en día se podría decir que mañana lo mínimo que se va a utilizar van a ser resoluciones de 8K con gráficos más reales que la vida misma.

Por eso quería información sobre alguna librería y motor gráfico potentes, sin importar lo complicado que pueda ser aprender a programar con ello, se me da bastante bien asimilar conceptos y formas de programación.

Gracias por vuestros aportes :D

Saludos!


Título: Re: C++ 3D
Publicado por: engel lex en 19 Marzo 2015, 01:00 am
la calidad no depende del OpenGL (hasta donde se todos los juegos en consolas deben ir por opengl, creo que la única excepción es windows con directx, fuera de esas 2 librerías básicamente no hay más nada), en tal caso dependiendo de la version de opengl puedes explotar más características... la calidad viene dada por tus modelos, sus texturas, capa de normales, capa especular, capa de bumps, capa de colores, etc... y claro... como los maneje tu motor...



Título: Re: C++ 3D
Publicado por: NOIS en 19 Marzo 2015, 08:05 am
Entonces, en base a eso que motor y herramientas de trabajo me recomendaríais?

PD: Quiero que sea algo con lo que mis proyectos sean o puedan ser multiplataforma.


Título: Re: C++ 3D
Publicado por: engel lex en 19 Marzo 2015, 09:28 am
arriba mencioné un motor, está en c++, codigo libre (comentan los creadores que sacrifica eficiencia en pro de legibilidad, ya que es para estudio) y multiplataforma


Título: Re: C++ 3D
Publicado por: NOIS en 19 Marzo 2015, 09:43 am
Vale, le echaré un ojo ahora y me pondré después en serio con ello.

Muchas gracias por la ayuda, llevaba tiempo buscando por Internet y la verdad es que nadie deja nada claro respecto a la programación 3D por ahí.

Saludos!


Título: Re: C++ 3D
Publicado por: Miseryk en 20 Marzo 2015, 15:36 pm
Opengl es un asco, murió al igual que Linux, DirectX9 lo hizo ******, y ni hablar de DX10 -> + +, aunque uno sea el más capo con C++ mega hacker o lo que quieras, programar juegos es algo totalmente distinto y mucho más complejo.

Edit: te recomiendo que uses el motor gratis de Unreal que es el engine más groso que existe, bueno, sin mencionar crysis (pero no es free).


Título: Re: C++ 3D
Publicado por: NOIS en 20 Marzo 2015, 15:55 pm
El caso es que había oído algo del Unreal engine pero pensaba que solo era para modelado y animación, por los vídeos que visto de animaciones con el Unreal engine 4 tiene muy buena pinta, así que gracias, lo miraré.


Título: Re: C++ 3D
Publicado por: engel lex en 20 Marzo 2015, 17:22 pm
Opengl es un asco, murió al igual que Linux, DirectX9 lo hizo ******, y ni hablar de DX10 -> + +, aunque uno sea el más capo con C++ mega hacker o lo que quieras, programar juegos es algo totalmente distinto y mucho más complejo.

Edit: te recomiendo que uses el motor gratis de Unreal que es el engine más groso que existe, bueno, sin mencionar crysis (pero no es free).

creo que debes investigar más sobre este campo, ya que veo que no conoces nada solo por decir "Opengl es un asco" y luego continuar con "te recomiendo que uses el motor gratis de Unreal"

cito de la wikipedia sobre UDK (http://en.wikipedia.org/wiki/Unreal_Engine#Unreal_Development_Kit)
Citar
The current release is Unreal Engine 4, designed for Microsoft's DirectX 10-12[3] (for Microsoft Windows, Xbox One, Windows RT); OpenGL (for OS X, Linux, PlayStation 4, iOS, Android, Ouya[4] and Windows XP[5]); and javascript/WebGL (for HTML5 Web browsers).[6][7][8]

y si recordamos PS4 tiene mejores graficos que XboxOne
(buscar en google más referencias (http://www.techradar.com/news/gaming/consoles/ps4-vs-xbox-720-which-is-better-1127315/3))

más bien la esperanza es de microsoft con el Directx12 que no quede fuera del mercado frente a openGL, ya que aunque opengl entrega un fps un poco más bajo(a cambio de un mejor acabado de shaders), es mucho más compatible con todos los equipos sin contar que el mercado de opengl se va a engrosar mucho con los juegos en linux

aquí se ve un poco la diferencia (https://www.youtube.com/watch?v=-vk__hyOM2M) (ver por lo menos en 720)

y dirán wow! pero mira! 57fps vs 30fps... solo voy preguntar... cual es la taza de framerate standard de una pantalla? que pasa cuando el video no es un multiplo de eso?


lo siento por desviar el tema, pero quería dar objetividad sobre openGL y directx, por cierto, aún juegos nuevos, para las calidades media y baja usan directx9 porque es bastante ligero...

sobre los motores ya lo había dicho, solo que creo que escribo mucho y no me leen...

Citar
para hacer un buen juego profesional, tienes unity, cryengine, udk, entre otros... son motores de juego bien diseñados, corregidos y completos, que hacen todo lo que indiqué arriba y más... y ya habrás visto tu los juegos creados solo en ellos 3...

unity es excelente, realmente el que más me ha gustado
cryengine (el motor de crysis) da una salida grafica muy buena... así como en peso para el sistema...
udk (el motor unreal) tiene mucha documentación... pero cuidado con los terminos de licencia... y al final el resultado es bastante pesado aunque una calidad decente

el unity y el udk tienen para compilar en multiples sistemas operativos (no estoy seguro del cryEng) como windows, mac, linux, android, ios, en estos ultimos 2, udk solo soporta equipos del utltima gama (para android, de s4 para arriba), en cambio unity soporta incluso android 2.3