Lo pregunté anteriormente en este hilo en stackoverflow.com. Uno de los primeros comentarios me redirigió aquí a gamedev.stackexchange.com, así que estoy volviendo a publicar aquí.
Al buscar preguntas relacionadas, encontré una serie de preguntas muy específicas, pero me temo que los detalles me han resultado infructuosos y después de 4 horas en Google no estoy más cerca de lo que comencé, así que sentí que podría llegar a una comunidad. en orden.
Primero, mi objetivo: nunca antes había hecho un juego, aunque había confundido la posibilidad varias veces. Finalmente decidí sentarme y comenzar a aprender a codificar juegos, usar motores de juegos, etc. Todo para que algún día (con suerte pronto) pueda hacer juegos funcionales (aunque simples). Puedo comenzar a agregar complejidad más tarde, por ahora me alegraría tener una cámara controlada por teclado moviéndose en un mundo 3D sin interacción más allá de eso.
Mi experiencia: he trabajado en VARIOS lenguajes de programación que van desde PHP a C ++ a Java a ASM. No le temo a los desafíos que surgen al aprender la nueva sintaxis o las limitaciones inherentes a un nuevo idioma. Sin embargo, toda mi experiencia de programación pasada ha sido estrictamente no gráfica y, por lo general, con poca o extremadamente simple interacción durante la ejecución. He creado algoritmos amplios y brillantes para resolver problemas lógicos y matemáticos, así como problemas gráficos. Sin embargo, en todos los casos, la entrada se definió en un archivo, se pasó de un formulario HTML o se escribió en la consola. La interacción en tiempo real con el usuario es algo con lo que no tengo experiencia.
Mi pregunta: ¿por dónde debería comenzar tratando de hacer juegos? Mejor aún, ¿por dónde debería comenzar tratando de crear un entorno 3D navegable por teclado? Al buscar en línea, he encontrado varios recursos vinculados a motores de juegos, motores de gráficos y motores de física. Aquí hay un breve resumen de mis experiencias con algunos motores que probé:
SDK de Unreal: los videos del tutorial asumen que ya tienes un conocimiento profundo de modelado 3D, motores gráficos, animaciones, etc. La página "Getting Started" no ofrece una explicación formal del desarrollo del juego, pero salta sobre cómo Unreal puede optimizar los procesos. Ya estás familiarizado con. Después de descargar el SDK y ejecutarlo para ver si las herramientas eran tan intuitivas como afirmaban, me saludaron con unos 60 botones y un vacío en blanco para mi modelado 3D. Al hacer clic en "agregar volumen" (para intentar agregar un cubo básico) me encontré con un menú de 30 opciones. En pánico, cerré el editor.
Crystal Space: el sitio web parecía bastante informativo, explicando que Crystal Space era solo para gráficos y el software complementario, CEL, proporcionaba lógica de entidad para hacer juegos. Se proporcionó un juego de demostración, que fue construido usando "CELStart", su herramienta simple para personas sin conocimientos de programación de juegos. Lancé el juego para ver lo que podría crear. Se congeló varias veces, los menús tenían errores, había miles de fallas gráficas, los enemigos no respondían al daño y cuando cerré el juego se bloqueó. Se rindió en ese motor.
IrrLicht: El tutorial asume que tengo Visual Studio 6.0 (tengo Visual Studio 2010). Siguiendo sus instrucciones, no pude importar correctamente la biblioteca a Visual Studio y no pude llamar a ninguna de las funciones que seguían usando. Copiar manualmente archivos de encabezado, archivos de clase y archivos DLL en la carpeta de mi proyecto; el proyecto no se compiló correctamente.
Claramente, no he tenido un buen comienzo y voy en círculos. ¿Alguien me puede apuntar en la dirección correcta? ¿Debería comenzar descargando un programa como Blender y aprender el modelado 3D, o debería aprender a usar un motor gráfico? ¿Debería buscar un motor de juego con todo incluido, o es mejor intentar codificar mi propia lógica de juego? Si alguien realmente ha hecho sus propios juegos, preferiría saber cómo comenzaron.
Además, tomar clases en mi escuela no es una opción. No se ofrece nada
Respuestas:
He hecho esa pregunta cuando me uní a GD. Aquí hay algunos enlaces que pueden ser de su interés y espero que lo guíen hacia su objetivo.
En resumen, iría
XNA Game Studio
para controlar el desarrollo del juego. Luego, avanzando hacia lo que desea lograr como conocimiento / tecnología.XNA
me enseñó a trabajar con sprites y me permitió aplicar parte de mi conocimiento desde el principio de mi curva de aprendizaje, de modo que pude comprender lo suficientemente rápido como para entender cómo debería diseñar mi juego para usar las clases mientras trabajo inyección de dependencia y demás. Entonces, no te tengo esperando más.¿Por qué XNA preguntarás? Simplemente por tu experiencia en Java. XNA usa C #, que es similar a Java en varias formas, y también es un marco simple para usar que abstrae el Game Loop y otras cosas para que pueda concentrarse en lo que es importante.
Realmente espero que esto te ayude a comenzar. =)
fuente
Game1
clase se usa como un controlador de juego, que en mi opinión es la clase que controlará y les dirá a las otras clases qué hacer, etc. Explicaré un poco este aspecto en el enlace # 4 y # 5.Puedes probar Unity 3D , porque
(Descargo de responsabilidad: de ninguna manera estoy relacionado con los creadores de Unity, solo lo uso yo mismo y me pareció una gran herramienta para aprender lo básico).
Pero sí, te preparas para una tarea bastante. Ahora estoy en mi sexto semestre estudiando diseño de juegos, y todavía no siento que me rasqué más que la superficie. No es de extrañar que la industria tenga especialistas para casi todas las facetas del proceso de creación de un juego.
Editar: Ha habido un comentario acerca de que Unity es visto como un motor de juego no "apropiado", que podría ser malinterpretado cuando digo eso, lo que genera los comentarios a continuación. No era mi intención sugerir que Unity no podía usarse para hacer un diseño de juego adecuado, por el contrario. Lo uso yo mismo y me gusta. ;)
fuente
Bueno, si tuvo problemas con irrlicht, también debería probar Ogre3D; no es más fácil, pero puede funcionar mejor si le dedica algo de tiempo. Lo importante que debe comprender es qué es un oyente de marcos, cómo obtener el tiempo desde que se mostró el último marco, y eso es prácticamente lo único que debe comprender si desea hacer esta aplicación de la que está hablando.
También he tenido algunas dificultades con irrlicht, los tutoriales no están muy actualizados, ¡pero deberías haber probado las muestras!
También corrí mucho en círculos al principio, jugando con panda3d y otras cosas como pygame, etc. Intenta concentrarte en alguna idea de juego e implementar una cosa a la vez.
Y trate de recordar algunas matemáticas matemáticas, ¡tendrá algún uso en 3D!
fuente
Recientemente comencé la misma búsqueda que tú. Me encontré con un motor Java puro llamado jMonkeyEngine que me ha llevado a través de un fantástico conjunto de tutoriales. No sé si realmente explica el diseño del juego en gran medida, pero te ayuda a comenzar en el frente gráfico.
Sugiere enlaces a herramientas que podría usar para modelar y tiene ejemplos bien descritos que se pueden copiar y pegar para guiarlo a través de la colocación de un cuadro en la pantalla para configurar el motor de física.
Definitivamente vale la pena leerlo: tuve una buena idea de lo que estaba haciendo después de solo varias horas.
fuente
Realmente deberías probar Flixel http://flixel.org/ Hice mi primer juego "demo" usando flixel. Buena comunidad, buenos tutoriales.
No es 3D, pero tiene muchas características agradables que facilitan sus primeros pasos en el entorno de programación de juegos.
De modo que: Muestre miles de objetos en movimiento
Colisiones básicas entre objetos
Agrupe objetos para simplificar Genere
y emita fácilmente partículas
Cree niveles de juego usando mapas de mosaicos
Pantalla de texto, guarde juegos, se desplace
Entrada del mouse y del teclado
Matemáticas y herramientas de color
Y es gratis para uso comercial, lo cual es increíble.
fuente
Si no ha trabajado con gráficos en absoluto, antes de comenzar a aprender open gl o direct x. Programé mi primer juego de esa manera. Los motores de nuestra compañía son internos y la mayoría de los sistemas son compatibles con open gl de alguna forma. Aprendí mientras estaba en el trabajo mirando el código escrito antes de comenzar a trabajar. Es posible que desee echar un vistazo a algunos proyectos de código abierto para ver cómo se configura la estructura de un juego y comenzar a modificarlos hasta que se sienta cómodo para comenzar su propio proyecto. También sugiero "Codificación completa del juego" como una gran referencia a todos los pequeños fragmentos de programación de juegos que no se dan cuenta, como la estructura de archivos adecuada y la gestión de recursos.
fuente
Prueba Source Engine . Es fácil desarrollar juegos en él y puede obtener una plataforma de distribución (Steam) y vender su juego de forma gratuita si firma un acuerdo con Valve Corportaion.
fuente
Recomiendo comenzar con juegos flash, ya que realmente tienes todo lo que necesitas en un solo paquete para hacer juegos simples. Hay toneladas de blogs con tutoriales, por ejemplo , Emanuele Feronato . Incluso tiene un libro con 10 juegos completos más o menos.
He estado usando FlashDevelop, que es suficiente para el desarrollo.
"Creación de un juego flash de asteroides" de Chris Moeller es un excelente ejemplo, con un enfoque completo paso a paso que utiliza el desarrollo de flash.
Para los juegos basados en Tile, hay un excelente tutorial en Ironcoding .
Armado con todo eso, mi recomendación es encontrar un lugar donde haya un desafío de videojuego, con una comunidad de personas construyendo juegos. Crea un videojuego al mes, enfocándote en algo pequeño que puedas terminar, pulir y presentar antes de continuar con tu próximo proyecto. Estoy participando en un desafío mensual de videojuegos aquí .
Manténgalo pequeño para que pueda terminarlo y liberarlo.
fuente