• Domingo 22 de Diciembre de 2024, 14:11

Autor Tema:  Programación de Videojuegos 3D  (Leído 7791 veces)

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Programación de Videojuegos 3D
« en: Viernes 22 de Agosto de 2003, 20:12 »
0
Saludos Gente,

Para programar videojuegos 3D deben aprender a manejar las siguientes herramientas:

Lenguaje de programación: C++
Renderizador: OpenGL
Manejo de la escena: OpenSceneGraph
Detección de colisiones: OPCODE
Simulación física: ODE
Audio 3D: OpenAL
Scripting: LUA
Shaders: Cg
Animación de caracteres: Cal3D
Manejo de terrenos: Demeter o VTP
Inteligencia artificial: OpenAI

No pierdan el tiempo aprendiendo otras cosas.  

A propósito, estoy buscando gente de Colombia con experiencia que quiera trabajar en la programación de videojuegos.  Por favor, si hay una empresa o un grupo que se le mida avísenme.

Gracias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Programación de Videojuegos 3D
« Respuesta #1 en: Viernes 22 de Agosto de 2003, 20:44 »
0
Mi nombre e3s juan carlos... evidentemente.

Estoy desarrollando mi tesis de grado en c# y DirectX, y los ultimos seis meses me la he pasado en eso.

Con respecto a lo de no usar otras herramientas....

que andas pensando de la vida... has dado un muy mal consejo.

Librerias tan poderosas como allegro o directx nunca se podran de jar de lado,
y c++ es muy bueno y es el mas usado , pero es el unico, y en lo poco que llevo en esto puedo decir que es mucho mejor programar bajo directx en c# que en c++, no solo por la estructura del lenguaje , sino porque el managed directX ofrece una curva de aprendizaje más alta que c++ y es una libreria mucho mejor estructurada.

Me gustaria que estuvieramos en contacto, en unos 2 años espero poder montar una compañia relacionada con el tema, puede ser una com`pañia de desarrollo, una institución de enseñanza profesional o bien publicare algunos libros.


Juank:hippi:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #2 en: Viernes 22 de Agosto de 2003, 21:50 »
0
Pero DirectX y C# te limitan a Microsoft.  Con OpenSceneGraph puedo desarrollar para PlayStation2, Dreamcast, Mac OSX, Linux, Unix, IRIX y Windows usando el mismo código.  Además DirectX no realiza manejo de la escena con grafos, tampoco trabaja con clusters de PCs, mucho menos te permite conectarte con sistemas de inmersión como CAVE.  

Aparte de todo eso una vez trabajé con Visual C++ v6.0 y tuve que rehacer el programa porque las STL de microsoft estaban dañadas.  Sin hablar de lo complicado que es el código de Microsoft.
Los hilos también fallan.

Estas herramientas que propongo están basadas sobre estándares, son más profesionales y tienen mejor rendimiento que el DirectX.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Programación de Videojuegos 3D
« Respuesta #3 en: Viernes 22 de Agosto de 2003, 22:08 »
0
Si eso es lo malo de DirectX , que te limita a windows, sin embargo no conozco de muchos que disfruten jugando en sistemas linux.

Por otro lado las herramientas que mencionas son herramientas que no son de uso general y que realmente lo que han hecho es crear su propia seri de librerias a partir de lenguajes como c y c++.

El codigode c++ no es complejo, realmente es codigo muy entendible, el problema es que estas herramientas  han sido diseñadas para desarroladores "fuertes" al igual que el lenguaje c, porlo cual su complejidad no radica en la sintaxis ni en la gramatica del codigo, sino en el objeto real de la aplicacion.. para todos es evidente que programar una aplicacion standart en visual basic es 1000  veces màs rapido que c o c++ patra desarrollar ese tipo de aplicaciones, sin embargo su alcance es limitado, y si quieres hacer un juegazo te pasara lo mismo con las otras herramientas.

Por otra parte el DirectX es la libreria de más alto rendimeinto existente en el mercado, de alli se desprende que más del 80% de los juegos para pc se desarrolen bajo DirectX.

Adicionalmente C#, al iogual que el resto de la familia del .netFrameWork han sido planeados para que en mediano plazo sean ejecutados en plataformas unix o mac sin nisiquiera recompilar el codigo, al igual que como sucede con java actualmente.

En todo caso creo que puedes no estar equivocado con tu opinion, cada cual es influenciado de algun modo por su experiencia propia, y en particular siempre he sido un amante de la programacion pura, .. con decirte que no me decidi a utilizar ninguna libreria grafica, hasta que no hice la mia propia en assembler y c....

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #4 en: Viernes 22 de Agosto de 2003, 22:23 »
0
Cada quien tiene su filosofía.  Pero en este caso estaríamos comparando únicamente GNU C++ vs C#, y OpenGL vs DirectX.  

C# sería extremadamente lento para un videojuego si se ejecuta en una máquina virtual, al igual que Java.  GNU C++ te permite compilar código nativo en cada plataforma.

Cuando me refiero a lo complicado del código de Microsoft, no me refiero al C++.  El estándar C++ es una belleza, sencillo y potente, pero Microsoft se enreda hasta en las cosas más simples.  Unix tiene una mejor estructura de programación (despúes de todo tiene 40 años de experiencia).

Las herramientas de las que hablo si son de propósito general, las usan hasta en la NASA.  DirectX simplemente es para videojuegos.

DirectX no tiene mejor rendimiento de renderización que OpenGL, y está muy lejos de manejar las escenas de forma eficiente como OpenSceneGraph.

Y por último, el 80% de los videojuegos de PC están hechos con DirectX debido a acuerdos contractales entre Microsoft y el resto del planeta.  No porque Windows represente una ventaja.

Sin embargo tienes razón respecto a Linux, aún está madurando, pero no es la única alternativa.

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #5 en: Viernes 22 de Agosto de 2003, 23:10 »
0
Estas son las herramientas que yo recomendaría para los que quieren programar videojuegos y aplicaciones de realidad virtual:

Nombre - Aplicación - Dirección WWW

Cg - Shaders -    http://developer.nvidia.com/object/cg_toolkit.html
DevC++ -   IDE -    http://www.bloodshed.net/dev/devcpp.html
Lua - Scripting - http://www.lua.org/
wxWindows - GUI -    http://www.wxwindows.org/
OpenML   - Media library -    http://www.khronos.org/openml/
SDL - Media library (Joysticks) -    http://www.libsdl.org/
OpenGL - Rendering -   http://www.opengl.org/
ODE - Physics library -    http://opende.sourceforge.net/
OpenAI - Artificial intelligence -    http://openai.sourceforge.net/
OpenAL - Surround audio library -    http://www.openal.org/
OPCODE - Collision Detection -  http://www.codercorner.com/Opcode.htm
OpenSceneGraph - Scene management -    http://www.openscenegraph.org/download/
OpenProducer - Window management -    http://www.andesengineering.com/Producer/download.html
OpenThreads - Threads -    http://openthreads.sourceforge.net/
Cal3D - Character animation -    http://cal3d.sourceforge.net/
Qslim -    Level of detail -    http://graphics.cs.uiuc.edu/~garland/so ... qslim.html
vTerrain - Terrain library -    http://www.vterrain.org/

A los que están empezando les recomendaría que aprendieran inglés y C++.  Luego algo de matemática 3D (vectores, matrices, planos, etc) y OpenGL.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Programación de Videojuegos 3D
« Respuesta #6 en: Viernes 22 de Agosto de 2003, 23:13 »
0
bueno yo de contratos y eso casi ni conozoco y la veradd casi ni me interesa,
lo cierto es que no cfreo que eso sea asi:

Conoces el pj64?... es un emulador de nintendo 64 para pc, lo hicieron un tal jabo y un tal zilmar y es el emulador mas completo que existe, con niveles cercanos al 95 %.

El hecho es que ellos diseñaron dos interfaces una bajo OpenGL y otra bajo DirectX, la de DirectX se la lleva por bastante, primero porque es con direct X que lograron ese porcentaje, ya que con opengl no es nada satidfactorio lo que pudieron hacer, y por otro lado el rendimiento con directx es visiblemente superior que el de OpenGl, con todo y que el desarrollo fue mucho mas extenso.

Por otro lado c# a diferencia de java no es un lenguaje precompilado, no corre en ninguna maquina virtual como java, c# es evaluado, y esto consiste en que su codigo se termina de compilar la primera vez que se ejecuta en la maquina.

Las pruebas realizadas, no por mi, sino realmente por un grupo gringo de desarroladores, demostraron que con exepcion de  una de las prubas, c# supero en velocidad a c++, utilizando directx.
He creado ya varios juegos con c# y los veo OK.
Por otro lado inclusive las obras nuevas referentes a la programacion 3D bajo directX ya toman como lenguaje base c#, por mencionar solo una de las publicaciones esta el libro:


Introduction to 3D Game Engine Design Using DirectX 9 and C#
by Lynn Thomas Harrison


Las herramientas que mencionas no son de proposito general, y directx por supuesto que no lo es, es solo una libreria.

Conozco OpenSceneGraph y no veo nada que no tenga directx, salvo que es una libreria creada en c++ con OpenGL, mientras que direct X fue creada en c++ con nada...

Si con nada porque
DirectX es comparable con OPengL, porque ambas son librerias  independientes que cuentan con soporte para trabajar con graficos 3D, asi que OpenSceneGraph  es una herremienta que se creo con OpenGl,
Lo que tu dices es como decir que 3D studioMax es mejor que directX para crear escenarios.. obviamente el objeto de 3dmax (que utiliza APis de directx o de opengl segun el gusto del usuario)
es una herramienta diseñada para eso.. no puedes hacer un juego con 3D max pero puedes crear geometrias para incorporarlas al juego con DirectX.

De hecho puedes utilizar librerias que vienen con 3d max studio para incorporarlas a tus programas y ahorrarte algo de tiempo.

Aun en el caso de que OpenSceneGraph  no fuera una herramienta sino una libreria, esta solo lleva 2 años de desarrollo, DirectX completa casi 10 años trabajando sobre toda la API.


Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #7 en: Viernes 22 de Agosto de 2003, 23:26 »
0
Debes leer más sobre grafos de escenas (Scenegraphs), es solo un consejo.  

Igual si usas DirectX y C# vas a necesitar hacer detección de colisiones, simulación física, manejo de terrenos, descarte de geometría, animación de caracteres, etc.  

OpenGL estuvo primero que DirectX.  De hecho Direct3D fue hecho inicialmente sobre OpenGL.  Puede que Direct3D y C# funcionen mejor sobre Windows pero no funcionan en ningún otro lugar.

Ese es simplemente mi punto de vista.  Del resto de gente depende si lo toman o lo dejan.  Estoy dando simplemente un consejo basado en mi experiencia.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Programación de Videojuegos 3D
« Respuesta #8 en: Viernes 22 de Agosto de 2003, 23:39 »
0
Citar
Igual si usas DirectX y C# vas a necesitar hacer detección de colisiones, simulación física, manejo de terrenos, descarte de geometría, animación de caracteres, etc.

Pues claro, sino pues que seria lo que habria que programar.

Aunque tal vez tengas razon,
seguramente que yo no tengo ni idea de que son grafos de escenas y tambien de seguro que ayer por la tarde aprendi a programar.. y por supuesto apenas esta mañana conoci que es un videojuego.

Ni modo debo ser muy quedado en esto todavia.

Lo de la experiencia si es muy cierto, como dice el dicho popular,
"cada quien mata sus pulgas de manera distinta".


Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #9 en: Viernes 22 de Agosto de 2003, 23:43 »
0
> Pues claro, sino pues que seria lo que habria que programar?

El juego en si... y este lo harías usando scripts (con LUA) o simplemente con datos (Data driven engines). ;)

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Programación de Videojuegos 3D
« Respuesta #10 en: Viernes 22 de Agosto de 2003, 23:51 »
0
Bueno creo que no comparto muchas cosas contigo,
Creo que no te gusta programar y que basicamente serias capaz decir que prefieres a hacer una presentacion nen powerpoint porque te interesa es hacer la presentacion en si, y no hacerla con actionscript y flash, para poder controlar a tu antojo la presentacion.

De todos modos, esa es tu manera de hacer las cosas, no la mia :rain:
Tal vez si algun dia necesito hacer rapido un juego, de seguro que sera con las librerias que yo mismo haya hecho con mi grupo de desarrollo y pueda modificar, mejorar, crear extender y depurar a mi antojo, sin depender de lo que otros han hecho.. esa es mi manera personal de hacer las cosas, y me ha funcionado..

Por ahi dicen que no hay necesidad de reinventar la rueda, pero yo siempre les digo:
"y si invento una rueda mejor...?"


Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #11 en: Viernes 22 de Agosto de 2003, 23:59 »
0
Dependes de DirectX que es propiedad de Microsoft.

Yo dependo de OpenGL que es un estándar universal, código libre.

Todas esas aplicaciones que propongo son código libre para no depender de nadie.

El concepto de tecnología es apoyarse sobre lo que otros han hecho.  Nadie hoy en día crea un renderizador para hacer un juego, porque sencillamente todas las aceleradoras 3D usan OpenGL o DirectX.  Si haces tu propio renderizador correrá por software y será muy lento.  

Además la regla dorada es: divide y vencerás.  Cada quien se especializa en lo que mejor conoce.  Cuando intentes hacer un detector de colisiones en 3D te darás cuenta de la realidad. :devil:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Programación de Videojuegos 3D
« Respuesta #12 en: Sábado 23 de Agosto de 2003, 00:01 »
0
ya hice el mio, por lo menos para mi primer juego, no fue nada facil, pero si
me hizo sentir muy satisfecho.

Creo que me has subestimado, no me gusta alardear, pero ahora es cuando soy muy bueno en esto, no soy perfecto, pero hago lo posible por serlo algun dia,
me gusta la programacion, y lo hago muy bien, en muchos lenguajes, bajo win, unix y ultimamente mac, aunque en mac hasta ahora estoy comenzando.

Lo de directx, si pero por eso dije que no comence a usar nada de eso hasta que no cree el mio propio.

En fin me tengo que ir estudiar, pero espero que nos sigamos pelean... perdon hablando jajajaja

bye y suerte

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #13 en: Sábado 23 de Agosto de 2003, 00:08 »
0
Igual te lo sigo diciendo como un consejo.  

Hace un par de años hice un motor3D en C++ con detección de colisiones, octrees, simulación física y manejo de terrenos CLOD.  Me demoré un año.  

Con las herramientas que te digo me hubiera demorado un par de semanas, siendo estas muy superiores a mi motor3D.

A propósito, prefiero hacer las presentaciones en powerpoint, aunque manejo flash, con powerpoint las hago en cinco minutos y cumplo mi cometido.

Entre otras cosas... me gusta programar... C++!!!

MauricioFranco

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://mauriciofranco.8m.com
Re: Programación de Videojuegos 3D
« Respuesta #14 en: Sábado 23 de Agosto de 2003, 00:23 »
0
Me hacía falta la pelea... gracias.

Suerte.

:beer:

socrates

  • Miembro activo
  • **
  • Mensajes: 63
    • Ver Perfil
Re: Programación de Videojuegos 3D
« Respuesta #15 en: Viernes 5 de Diciembre de 2003, 00:46 »
0
Hola, a todos...
He leido su discusion y me parece muy buena.
Mauricio o juank, Para directX crees que alla programas al igual que para openGL es decir, como render, animacion, etc...
Asi como lo mensiona mauricio, todas esas herramientas que hay que usar, por cierto, que nombres de programas me recomiendas usar mauricio?
Gracias.
\":)\"