Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Elegir Un Buen Engine?..

Iniciado por Bast, 14 de Julio de 2005, 01:26:20 PM

« anterior - próximo »

Bast

 Hola a todos.

Antes de nada deciros que soy nuevo en esta web y me ha sorprendido mucho la cantidad de gente aficionada a este tipo de programación tan original que hay aquí.
Siempre es un alivio saber que uno no está sólo en estos temas.

Hace tiempo empecé una aplicación en visual c++ utilizando el API Directx9.
He conseguido implementar el sonido, gráficos en 2D, texturas sobre sprites, control sobre el teclado y el ratón, pero he llegado a la parte más compleja y dura: "Los gráficos en 3D".

Aquí se me plantea un dilema interesante: Continuo la aplicación sólo con el API DirectX, (No estoy muy seguro de que eso sea realmente factible), ó elijo un engine gráfico que me permita crear escenarios 3D.

Hasta ahora siempre he preferido utilizar el código puro y duro con ánimo de aprender lo básico.. Pero se me está escapando de las manos.. y el tiempo no abunda como a mi me gustaría.

Por otra parte tengo 3 engines muy buenos que podría utilizar:
Torque game engine, Irrlicht y True vision 3D.
¿Cual me aconsejais?

¿Opinais que sería mejor utilizar uno de estos engines en lugar de continuar sólo con el API DirectX?.. y si es así, ¿Cual me aconsejais?

Aunque parezca un reto imposible, me gustaría desarrollar un juego con una calidad gráfica elevada.. Aunque esté mal decirlo, creo haber logrado hacer un trabajo bastante profesional hasta ahora y me gustaría mantener la calidad de mi aplicación.

Agradezco cualquier consejo que podais facilitarme. Un saludo.

Bast.

ajmendoza

 Depende de para qué tipo de aplicacion (juego) lo quieras mirate el nel de nevrax (nevrax.com). Es bueno, muy bruto graficamente y relativamente intuitivo.
Ryzom se hizo con ese motor.

Saludos.

CoLSoN2

 Primero un apunte: Lo que dices al final de "una calidad gráfica elevada" realmente tiene más que ver con los gráficos, aunque suene obvio, que con el motor. Hoy en día hay pocos motores que hagan que unos buenos modelos y texturas queden mal, la verdad. En cambio, aunque uses el motor del Doom3, si no tienes unos buenos gráficos, no te sirve de nada.

Ahora voy al tema del thread. Usar un engine o crearte el tuyo depende de muuuchas cosas, entre ellas:

P - ¿Qué quieres conseguir con tu proyecto?
R - Si es aprender, haciendo un engine aprenderás mucho, la verdad. No sólo de "cómo hacer engines", sino también de conceptos básicos de programación gráfica 3D, que es lo realmente útil.

P - ¿Cuánto tiempo piensas invertir?
R - Para qué engañarnos, hacer un motor no es fácil ni rápido, y seguramente aprender a usar uno de terceros será mucho menos doloroso y lento que hacerte el tuyo.

P - ¿Hay algún engine que cumpla tus requisitos?
R - Para según qué tipo de juego quieras hacer, quizá no haya ningún motor que te vaya bien bien, pero lo dudo. Si, por ejemplo, quieres hacer un FPS con exteriores, interiores, multiplayer.. no busques más: Torque y para adelante.

P - ¿Tienes presupuesto para un engine bueno?
R - Supongo que la pregunta sobra dado el contexto de estos foros (desarrollo amateur y tal), pero si te puedes permitir la licencia de un engine como Lithtech (o como se llame) o algo así, que no son extremadamente caros, y (obviamente) buscas hacer algo profesional, es una opción a considerar.

P - ¿Qué conocimientos tienes?
R - Como ya he dicho, hacer un engine es difícil. Pero si eres un inexperto, usar según qué motores de terceros (y sobretodo entender porqué las cosas son así o asá) te puede llevar también mucho tiempo.

Mi consejo:
- Si no tienes experiencia, haz un pequeño juego y hazte tu el motor, con lo básico. Aprenderás mucho, no gastarás mucho tiempo y podrás pasar al siguiente punto:
- Si tienes experiencia programando cosas en 3D, usa alguno de terceros para el juego que quieres hacer.


Y lo de siempre: no empieces algo que no puedas terminar ! ! !
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

CoLSoN2

 Por cierto, si es tu primer proyecto y buscas hacer algo simple con un motor básico quizá te interese hecharle un ojo a esto. Es un proyecto que hice para el instituto cuyo objetivo era exactamente ese. Además del código fuente (totalmente horripilante) y el ejecutable (casi que igual de horripilante XD), puedes descargar la memoria del proyecto en PDF y quizá te aclara algunas cosas si te estás iniciando.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Lord Trancos 2

 Te dire lo mismo que le digo a todo el que entra;

Si es tu primer juego, hazlo 2D usando DirectX (ya tienes gran parte del trabajo hecho). Asi aprenderas todo lo que conlleva un juego, cosa que normalmente subestimamos...

Si no es tu primer juego (o eres cabezota), no quieres "perder" mucho tiempo, y quieres resultados "rapidos", sin lugar a dudas elige un engine ya hecho.

No sabria cual recomendarte, pq no he usado ninguno.

pd. Dos consejos mas:
- No empiezes NUNCA un proyecto que no te APASIONE; vas a dedicarle mas tiempo del que puedas imaginar, asi que mas te vale que sea "el juego de tu vida", de lo contrario ante la primera (o segunda) dificultad lo abandonaras, o cuando lleves X tiempo y la cosa siga medio en pañales, etc...
- No te sobreestimes; si no has hecho nunca un juego, no sabes lo complicado que pueda resultar. Coger un engine y cargar un escenario con un monigote moviendose por ahi puede dar la falsa sensacion de que "hacer un juego es facil". Como decia un amigo mio; "evita mear muy alto o te mearas en la cara."
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

TheAzazel

 Jeje, los consejos de Lord Trancos son bastante buenos!!! porque piensa como la mayoria de nosotros..o como minimo de mi  :P .

Yo ademas anadiria que en lugar de usar DirectX..utilizaras alguna lib 2D que hay por ahi del tipo SDL,Allegro, etc...

de todos modos, suerte en tus proyectos  ;)  

Bast

 Gracias a todos por vuestros consejos. Estoy maravillado por la rapidez en la que me habeis contestado!.
Mi situación es la siguiente:


Lord Trancos dijo:
"Si es tu primer juego, hazlo 2D usando DirectX (ya tienes gran parte del trabajo hecho). Asi aprenderas todo lo que conlleva un juego, cosa que normalmente subestimamos..."


He trabajado con las directx y he logrado terminar ciertos proyectos pequeños, (juegos en 2D). Es decir, tengo ciertos conocimientos sobre el funcionamiento interno de un juego sencillo.
Siempre he utilizado Visual C++ y he utilizado DirectX.

Lord Trancos dijo:
"No empiezes NUNCA un proyecto que no te APASIONE"

Ahora creo tener una idea muy original sobre un juego muy completo.
Es un RPG en 3º persona. Tengo implementada una creación del personaje muy detallada (género, raza, características, habilidades y apariencia). He trabajado duro con el photoshop y creo haber logrado algunas imágenes bastante chulas.
Este proyecto me apasiona realmente. Aunque puede ser que me venga grande..

Mi problema viene ahora. Quiero generar un mundo 3D. De momento sólo el exterior, con sus montañas, algún lago. Posteriormente me gustaría introducir árboles, rocas y demás elementos decorativos.
Tengo muchísimas texturas de alta calidad (por cierto, no me importaría compartirlas si alguien las necesita).
Creo que debería seguir utilizando sólo Visual C++ y las DirectX. ¿Sabeis de algún tutorial, proyecto o código fuente que me indique como generar este mundo 3D básico?.

Hasta ahora he dibujado triángulos, cubos.. pero nada como lo que quiero.
Gracias de nuevo por todo a todos. Un saludo.
Bast

vincent

 Buenas,

el tema de los terrenos es un tema apasionante pero complicado.

Puedes empezar por hacer un mapa de alturas a lo cutre para empezar, partiendolo un poco y con algo de culling que algo te accelerará ( un quadtree sencillito). Creo que tienes tutoriales de esto en gametutorials.

Sinó ya tendrias que passar a algoritmos de nivel de detalle que hay muchísimos. En gamasutra tienes un tutorial de ROAM bastante completo para iniciarse.

Y si quieres hacer esto ya tienes para un buen rato. Los árboles los dejamos para otro dia!  :P

Buena suerte!

PD: Queremos ver esos juegos en 2D! :D
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

senior wapo

 Usa Irrlicht. Ni es bueno, ni rapido, ni tiene buena calidad de imagen, pero lo pone muy facil para conseguir resultados rapidos. Algo nada desdeñable en un primer proyecto 3D.

En cuanto a los terrenos, en general, las demos que he tenido la ocasión de ver (ROAM/geomipmaping) eran mas lentas que usando una simple malla para el mapa troceada con un quadtree. No se si es que he visto malos ejemplos, o que esos algoritmos no son cache-friendly y se pasan la vida reconstruyendo vertex buffers o lo que sea (nunca he profundizado, cuento lo que veo). Hablo de mapas finitos, no un mundo enorme virtual sin tiempos de espera para cargar.

AK47

 Yo uso un quadtree con un geomipmapping de los mas sencillo y me da buenos resultados. Eso si, nada de tocar el vertex ni el index buffer despues de rellenarlos ;)

Bast

 
Hola AK47,

Entiendo lo que es el vertex buffer y el index buffer, e imagino que no los tocas para optimizar el renderizado del mapa, pero ¿un quadtree con un geomipmapping?.. No sé que es eso. ¿Podrías explicarmelo o mostrarme un ejemplo?

De todas formas la idea de Vincent tambien me parece de lo más acertada.. Comenzar con un mapa de alturas sencillo e ir mejorándolo con el tiempo.
Por otra parte estoy buscando el tutorial de ROAM, (otra cosa que desconozco). ¿Son librerías en c++?,
¿Son potentes y fáciles de usar?

La verdad es que estoy un poco perdido.. No sabía que había tantas técnicas y tantas formas distintas de abordar un proyecto de este tipo.
Me parece que debería continuar utilizando sólo las DirectX un poco más. Buscaré los tutoriales de gametutorials que me Vincent me ha recomendado para implementar un quadtree sencillo (por lo menos para saber lo que es, je).


Gracias a todos de nuevo. Un saludo.

Bast.

vincent

 Buenas,

aqui tienes el link: http://www.gamasutra.com/features/20000403.../turner_pfv.htm con código y todo.

El ROAM es un sistema para el renderizado "optimo"  de un terreno.

También puedes encontrar mucha información en vterrain

Saludos!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

AK47

 Saludos
Lo del quadtree y geomipmapping es muy simple: genero la malla del terreno basandome en el heightmap. Divido el terreno en trozos de 17x17 vertices, que en la literatura sobre terrenos se llama patch. Cada patch es una hoja del quadtree. Asi, gracias al quadtree puedo determinar a toda leche que trozos se ven y cuales no.
Lo del geomipmapping tambien es muy simple, siendo un mecanismo analogo al mipmapping: cada patch del terreno tiene diferentes niveles de detalle, siendo el mas alto de 17x17 vertices, el siguiente 9x9, etc. Asi, segun la distancia entre la camara y el centro del patch pongo un nivel u otro. Si, ya se, en el articulo sobre geomipmapping dice que es mejor usar la proyeccion del error en pantalla para elegir el nivel de detalle, pero por ahora a mi me va bien asi :P

En cuanto al ROAM, cuando lo sacaron si que era optimo, pero con el hardware de hoy dia no es tan optimo ya que hay que toquetear dinamicamente los bufferes de vertices o indices.

Espero que este toston te haya servido de algo ;)

vincent

 AK47 lo ha explicado todo prefestamente.

Yo creo que para empezar con el quadtree tienes de sobra. El tema te irá rapidillo y empezaras a hacer culling con algo interesante. Recuerda en ir agrupando patches de 4 en 4 para generar el árbol que es el quadtree y así poder hacer un culling jerárquico. es decir, al principio tienes todo el mapa en un solo nodo, ese nodo lo partes en 4 hijos, cada hijo en 4, etc hasta llegar, por ejemplo, al patch de 17 x 17 que te comentava AK47.

Para cualquier duda, ya sabes, a postear!

Saludos,
Desarrollo en .Net y metodologías http://devnettips.blogspot.com






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.