2009-01-31 21 views
14

Siempre me he preguntado cómo los programadores de juegos relacionan personajes creados en un software de modelado 3D externo como maya o 3d max y la lógica real del juego hecha en su lenguaje de programación favorito, por ejemplo, c o C++.¿Cómo se escribe un juego en 3D?

¿Cómo se combinan estas dos cosas juntas, y cuál es el proceso real de construir un juego desde el modelado de personajes hasta la programación?

Algunas de las cosas que me preguntan son como, ¿programa movimientos de personajes desde el código o desde el modelo 3D?

Ejemplos serían realmente agradables de ver.

+1

así es como lo hacen: http://www.unrealengine.com/ o http://unity3d.com/ – Saturnix

+0

Estoy de acuerdo en que Unreal es muy resbaladizo. https://www.unrealengine.com/what-is-unreal-engine-4 –

Respuesta

14

La mayoría de la información, como los movimientos de los caracteres, se almacena fuera del código. Es un proceso bastante simple en realidad:

  1. Un artista hace un modelo 3D en maya o lo que sea, y luego lo guarda en un archivo. Digamos que lo llamaron 'Gollum.3D'.
  2. Ahora 'Gollum.3D' contiene una gran cantidad de números que representan los puntos del modelo, las texturas y todo lo demás.
  3. El código del programa luego lee el archivo 'Gollum.3D' - todos sus puntos modelo, texturas y todo, y luego hace un montón de cálculos para calcular cómo se verá la escena 3D dados todos los números que representan el modelo.

Resulta que todo en un juego termina siendo almacenado por separado del código, y el código simplemente lo lee y lo combina todo cuando se ejecuta el juego. Cuando digo todo, ¡me refiero a TODO! Todo el texto, las estadísticas de los puntos de vida y los montos de daño al arma, las imágenes de la pantalla del menú e incluso la inteligencia artificial se almacenan por separado del código del programa en las secuencias de comandos. El código del programa termina haciendo muy poco.

Es posible que haya oído hablar de personas que hacen modificaciones a los juegos. Los modders son personas que editan los datos que se encuentran fuera del código del programa, lo que a su vez cambia el juego a su gusto. Simplemente aprovechan el hecho de que, básicamente, todo lo relacionado con un juego (excepto algunas cosas básicas) no está escrito en el código del programa.

+4

¿Llamas a un motor de juego "haciendo muy poco"? Eso está estirando seriamente la realidad ... –

+1

Estoy de acuerdo, las matemáticas complejas, la física y la IA no son cosas que consideraría un "muy pequeño" esfuerzo. –

+13

Creo que no quiso decir que es un esfuerzo mínimo, tal vez quiere decir que es un pequeño porcentaje del contenido del juego en comparación con lo que está almacenado en los archivos de script, etc. –

3

No tengo mucha experiencia en programación de juegos pero he encontrado que el framework y los recursos de XNA son bastante esclarecedores. Puede encontrar toneladas de ejemplos y cómo, y un foro bastante útil aquí http://creators.xna.com/en-US/

1

Las animaciones se pueden hacer desde el software de modelado 3D, y luego depende del código para 'ejecutar' diferentes animaciones basadas en la lógica del juego. Los modelos pasan del software de modelado al juego a través de formatos comunes. Por ejemplo, el marco XNA puede leer de forma nativa algunos de los formatos de modelos más comunes.

0

Piense un momento en cómo hacer esto todo en 2D, es más o menos lo mismo con 3D, los algoritmos son simplemente diferentes y hay diferentes aspectos que preocuparse.

El resto de lo que pregunta es una pregunta de diseño y depende del juego y del programador. Uno puede escribir una simulación compleja para mover sus personajes, mientras que otra persona puede confiar únicamente en las animaciones esqueléticas. Alguien puede almacenar la lógica del juego en modelos 3D y otros simplemente no.

¿Ejemplos?Tal vez quake source code es una buena fuente para estudiar.

5

La creación de personajes 3D y la programación de su juego 3D son dos procesos distintos.

Normalmente esculpe su personaje 3D en un modelador 3D (Blender, Maya, 3D studio Max, etc.), lo exporta a un archivo (.obj, .md2, etc.) y ha escrito el código en su Juego 3D para manejar la importación del personaje en tu motor.

Si bien esto suena bastante difícil, 3D game engines admite todas esas cosas sin escribir millones de líneas de código y reinventar la rueda.

Tomemos como ejemplo Ogre3D, un motor de juegos de código abierto en 3D. No tiene que ser un gurú de la programación para tener un ejemplo simple hasta & ejecutándose en minutos. Le sugiero que eche un vistazo a su wiki y theirtutorials.

Por ejemplo this is un sencillo tutorial para crear y exportar sus modelos simples de 3D Studio Max y importarlos a Ogre 3D

0

Escribir un motor de juego es una tarea compleja, mi sugerencia es utilizar uno de los motores existentes , (selección de la lista: http://www.devmaster.net/engines/).

Al recoger el motor tiene que tomar en cuenta lo siguiente:

  • de licencia (que desea publicar, ¿tiene un presupuesto, es de código abierto)
  • Lenguaje de Programación/Scripting (que el lenguaje es lo que más cómodo con)
  • plataforma de destino (Windows/Linux/Mac/consola/teléfono)
  • Pipeline (son los exportadores de su herramienta de modelado 3D y los importadores en el motor)

Su pregunta está más relacionada con el último elemento, debe elegir un motor que pueda importar los activos que produce en 3DS, Maya en el motor de una manera que no tenga que preocuparse por los formatos de archivo, porque eso hará eres más productivo ya que solo te estás enfocando en el juego.

1

Debe utilizar un motor de representación 3D. Muchos de ellos son gratuitos (Ogre3D es bueno) y generalmente tienen instalaciones para importar casi cualquier tipo de malla creada a partir del software de modelado común.

6

A diferencia de la respuesta favorita, me aventuraría y diría que esta es una tarea realmente grande si te refieres a tener un personaje que tenga animación.

El resultado final sería habilitar la mayor parte de la funcionalidad vinculada a través de archivos de scripts y configuraciones (en otras palabras, datos manejados), pero el proceso para construir un sistema de este tipo no es simple.

Normalmente comienza con un modelador externo donde hace lo siguiente: 1. construya un modelo de máscara. 2. construya un esqueleto y adhiéralo a la piel de acuerdo con los pesos, etc. 3. aplique todas las texturas y el material como desee. 4. exportar a su motor.

Ahora puede comenzar a construir su banco de animación para este esqueleto de personaje o similar si lo asocia a más de uno (generalmente ese es el caso si el esqueleto está lo suficientemente cerca o es modular). Algunas de las animaciones contendrán solo una jerarquía parcial (para poder combinar solo parte de la animación, por ejemplo, la parte inferior del cuerpo se está ejecutando mientras que la parte superior del cuerpo puede usar una animación diferente o cinemática inversa), disparar a un enemigo durante la ejecución es un buen ejemplo para eso).

Ahora, finalmente, llega a la parte del código. Necesita construir un sistema que asocie las animaciones al esqueleto y lo renderice correctamente. Este sistema también necesita poder combinar animaciones e IK (por ejemplo, cambiar de posición a correr), y combinar varias animaciones y animaciones parciales, por ejemplo, caminar (animación de cuerpo entero), mirar a alguien (IK para la parte superior del cuerpo), agitando una mano (IK con animación parcial) y respiración (animación parcial) al mismo tiempo combinaría 4 combinaciones diferentes parciales o completas.

No mencioné el hecho de que necesita construir el importador y también hay una diferencia entre la acción y la animación de la acción. La acción puede tener varias animaciones combinadas o escogidas al azar: se asociarán a través de un archivo de mapeo de datos.

Sugiero que eche un vistazo a XNA, tiene muchos ejemplos, importadores y mucho más y contiene muchas de las cosas básicas en las bibliotecas para que no tenga que empezar de cero. Como también mencionó la gente, Blender3D es una buena opción para editor + y también podría ser Torque solo por la experiencia de un motor de juego.

Una última palabra: si vas a probarlo, no va a ser un paseo por el parque, pero bueno, es muy divertido y los resultados te harán sentir orgulloso de ti mismo.

1

Visita Unity3d.com y estarás haciendo tu juego en cuestión de segundos. Las animaciones se hacen en el software de modelado Maya, etc., pero algunas se hacen en el motor. La unidad hace que la física sea fácil y estás creando más o menos tu mundo y relacionando cómo interactúan los objetos.

Ejemplo - Tiene una cámara -> Puede configurar la cámara desde la interfaz de usuario para seguir al personaje principal y la transformación XYZ del lugar donde se encuentra la cámara. También se puede hacer visualmente.

Échale un vistazo, es muy divertido y con menos código de lo que te puedas imaginar. Desde allí, puedes escribir tu propio código para hacer tu propio juego. Se explica fácilmente como escribir un script y arrastrarlo al objeto en el que desea que se ejecute el script.

Eso es lo más laico que puedo conseguir. Aclamaciones.

0

No noté demasiadas respuestas sobre qué buscar exactamente. En los últimos años se ha publicado mucha más información sobre cómo hacer esto de una manera más fácil, aún bastante compleja.

gratuito

A cargo

1

Dado que este tema está viendo una nueva vida, pensé que contribuiría. He estado usando Autodesk 3Ds Max por más de 12 años produciendo productos 3D y me he enfocado más en la animación pero sé que Autodesk ofrece una extensa biblioteca de clases con módulos de scripting avanzados y capacidades integradas que tienen todas las herramientas para escribir un 3D juego dentro de este programa. Por supuesto, debe aprender "Max Script" y cómo interactuar con dichos paquetes incorporados con nombres como "Biped", "Particle Flow", el motor de simulación de realidad "Havoc", etc., sin mencionar el renderizado motor (generalmente la línea de exploración predeterminada, Mental Ray, VRay) que necesitará una gran cantidad de parámetros.

Si no tiene un presupuesto o está en fuente abierta, ¡consulte Blender! Es sorprendente lo que este software de código abierto y la comunidad tiene para ofrecer. Incluso tienen un "motor de juego" que también se puede enganchar: http://www.blender.org/features/ Tienen recursos para ayudarlo a comenzar.

Quiero agregar que también menciono que Unreal parece bastante prometedor, ya que lo lanzaron por "gratis", solo lea la letra pequeña, aproximadamente el 5% de regalías si su juego realmente despega. https://www.unrealengine.com/what-is-unreal-engine-4

0

Me parece peculiar que haya tantos enlaces para aprender herramientas específicas. Si fuera a aprender desarrollo de juegos, me gustaría un foro/sitio general para este fin. Chupe como GameDev.net.

PD: Esto tiene la intención de ser una respuesta complementaria, no una completa.

Cuestiones relacionadas