Este artículo está dirigido a escolares, estudiantes y mayores, que nunca lo han intentado, pero que realmente quieren comenzar a escribir juegos de computadora. ¿Quién en la infancia no jugó juegos de computadora y no quiso escribir su propio juego, que será mejor que GTA o Crysis? Y quería, y, curiosamente, todavía quiero. Y durante varios años de práctica enseñando a los mismos programadores, recibí algunas notas sobre dónde ir y qué hacer.
El artículo no pretende ser completamente exacto y confiable, está escrito por una sola persona que ha acumulado su experiencia en solo unos años. Además, considera solo el lado práctico y romántico: no cubre los problemas de monetización y la obtención de beneficios de los juegos que no sean satisfacer a la persona amada y posiblemente a otros.
1. ¿Dónde comenzar?
De la práctica. Puede comenzar con C puro y OpenGL / DirectX, esta es la forma del samurai, porque aprenderlo desde cero, sin ninguna abstracción, es bastante difícil.
Puede usar marcos como SDL o LibGDX / PyGame / LÖVE2D de nivel superior si C / C ++ parece demasiado confuso. Aquí el nivel de abstracción es un poco más alto, por lo que trabajar es un poco más fácil, pero tienes que hacer toda la organización de la estructura interna del juego tú mismo, dándote cuenta de qué es un circuito de juego y cómo organizar un sistema de eventos en él. Este enfoque proporciona un buen nivel de conocimiento y habilidades, pero, al principio, no ofrece un incentivo para adentrarse en las profundidades de los bosques de hierro.
Y finalmente, puedes tomar un motor de juego como Unity / Unreal / CryEngine / Godot y hacer un juguete con él.
Entonces, ¿cómo elegimos entre toda esta diversidad? Pero esto es solo una pequeña parte. La trampa típica en la que cae un novato aún no desarrollador es la elección de una herramienta. Marco / motor y lenguaje. Se leen muchos artículos, se miran tutoriales en video, en algún lugar se dicen cosas buenas sobre algo, en algún lugar se dicen cosas desagradables sobre el mismo ... No existe un sistema ideal y no existe; de lo contrario, el Motor de juego Ideal se habría inventado hace mucho tiempo (junto con Ideal Lenguaje de programación), y todas las corporaciones simplemente estarían buscando "programadores", no programadores en ningún ecosistema en particular. Simplemente tomamos la herramienta que mejor se adapta a nuestra tarea, o simplemente más, y una persona que no puede elegir puede permanecer en el mismo lugar que ha estado durante años, sin ningún progreso.
Entonces, ¿cómo elegir? Podemos tomar el primero y comenzar a entender. ¿No le gusta cuando lo usa por más de una semana o dos? Tomamos lo siguiente e inmediatamente escribimos algo simple como una serpiente, mientras leemos la documentación de la herramienta seleccionada y buscamos en Google todo lo demás, y escribimos el documento de diseño para nuestro Super Juego, que matará a Diablo y Doom al mismo tiempo. ¿Por qué comenzar con algo simple cuando ya tenemos la idea de un Súper Juego? Todo es muy simple, el nivel de habilidad de un desarrollador novato es siempre tan bajo que reescribirá su Superjuego veinte veces, los resultados no estarán a la altura de las expectativas, y detrás de esta frustración hay un enfriamiento total de la idea de escribir su juego y la programación en general. Al comienzo del entrenamiento, hacemos cosas simples que puedes sentir y jugar con amigos de inmediato, compitiendo en los registros. Este es nuestro incentivo, esta es nuestra alegría de la autoeducación y la actividad cerebral productiva, esto es algo que no nos permite agotarnos. Después de la serpiente, primero puede mirar esta serpiente e intentar reescribirla "de la manera normal", porque la primera serpiente, incluso una que funcione perfectamente, tendrá una estructura interna similar a un monstruo, cambiar el aspecto de la serpiente será muy difícil y agregarle una nueva bonificación será aún más difícil. . Y luego vuelva a escribirlo, o pase a otra cosa, de lo contrario, esta serpiente ya está sentada en el hígado. Ahora haremos, por ejemplo, una pelota que salta desde las paredes, que necesita entrar al ring, no importa lo que, de hecho, sería una idea.
Solo hay un par de consejos para elegir: en mi opinión, no debes tomar algo de nivel demasiado bajo, porque estamos escribiendo juegos aquí, en lugar de interrumpir las banderas de bits y caer en punteros. Con algo de muy bajo nivel, es muy fácil ir a la jungla distante y pasar unos meses casi perdido. Y no tome algo de demasiado alto nivel (como motores), porque dan un nivel de abstracción demasiado alto. Mientras no sepamos cómo están dispuestos los motores, no tenemos mucho sentido utilizar los desarrollos de otras personas, tendríamos que entender cómo funciona, porque todos en el mundo de los motores tienen muchas limitaciones internas que tendremos que enfrentar en el futuro, y tenemos las manos y los pies conectados. falta de información y comprensión del proceso, además, tan pronto como se filtre algún agujero en el motor, no podemos hacer nada hasta que comprendamos completamente su estructura interna. El equilibrio de la complejidad del aprendizaje y la libertad de acción.
2. ¿Cómo estudiar?
Aquí una habilidad extremadamente útil llamada "googlear" es útil para nosotros. Internet es una gran fuente de información, que por alguna razón, en mi memoria, generalmente se subestima, y la segunda página del motor de búsqueda ya es algo inalcanzable. Por lo tanto, aprendemos a hacer tales preguntas al motor de búsqueda para que nos brinde la muestra que necesitamos. En general, al principio, los tutoriales en video bajarán. Y puedes leer libros de texto. Las lecciones en video tienen la ventaja de que inmediatamente dan un resultado tangible en poco tiempo, lo cual es muy útil para la motivación, pero tienen grandes problemas con la integridad de la información, por lo que nadie canceló los libros de texto y la documentación. Puede buscar y ver ejemplos de código en el github, esta es una lección extremadamente útil, de la que puede aprender nada menos que de los libros de texto. Observamos todo lo incomprensible en el código de otra persona y buscamos en la red lo que era aquí. Luego usamos (o no, jeje). Solo se fomenta el robo de ideas y conceptos (si el código estaba bajo una licencia libre). Si algo es bastante complicado, pero muy necesario, no está prohibido ponerse en contacto con otras personas en foros y salas de chat, pero es muy fácil comenzar a abusar de este método, por lo tanto, no es aconsejable y solo si está completamente horneado, y varias horas de búsqueda competente no tuvieron éxito. Desde las áreas de las matemáticas, le recomiendo encarecidamente que lea y entienda el álgebra vectorial, la geometría analítica, la teoría de la probabilidad y muchas palabras inteligentes, ya que estas son áreas bastante universales que son útiles no solo en los juegos. De los idiomas: inglés obvio, la mayor parte de la documentación está escrita en inglés. El uso de traductores no está prohibido. Una vez más, aquí tenemos que aprender a aprender y buscar información, será útil en todas partes y siempre, no solo en esta área. Sin embargo, el entrenamiento no debe eclipsar la práctica y viceversa. Es aconsejable mantener la proporción de tiempo entre escribir y estudiar al nivel de 20/80, y luego, solo se puede agregar práctica, los estudiantes eternos son buenos, pero poco prácticos. Balanceando el tiempo.
3. ¿Querías algo más serio?
Después de la última etapa y varios (docenas) de prototipos de juegos, ya hemos aprendido a escribir tolerablemente bien, tal vez incluso con un número no muy grande de if-elseif-elseif anidados. Encontramos y leímos varias docenas de proyectos de otras personas, e incluso si la mitad no entendía, todavía no da mucho miedo, porque ya parece que estamos listos para hacer algo serio, como el Súper Juego. Sostén los caballos. Tenemos varios prototipos, e incluso juegan muy bien, pero ni siquiera hemos tratado de terminar nuestro trabajo. Tan pronto como algo funcionó más o menos, simplemente pasamos a algo más interesante, pero todavía estamos esperando una etapa extremadamente dura, en la que muchos (incluido yo, jeje) se descomponen: crear el Proyecto terminado. ¿Cómo es diferente de nuestros prototipos? Y esto es lo siguiente: el proyecto completado es el mismo prototipo, pero se ha gastado tres veces más que la parte del prototipo, se han realizado todos los menús, configuraciones, se ha comprobado que funciona bien con diferentes resoluciones de pantalla y con diferentes teclados, al menos una docena de niveles o una opción de nivel de dificultad para que sea interesante jugar no solo con el autor y sus amigos, sino también con personas aleatorias en la escuela o la universidad. La parte más rutinaria, qué decir, pero la voluntad más útil y muy bien entrenada para ganar. Si no pasa por esta etapa, puede seguir siendo un escritor prototipo de por vida. Equilibrarse en una rutina y diversión.
4. ¿Dónde buscar bibliotecas?
Si lees cuidadosamente el segundo párrafo, la respuesta parece obvia: en línea, en repositorios y de otras personas. Y como si todo estuviera bien, ahorramos tiempo e inmediatamente hacemos algo genial. Pero mientras estudiamos y tenemos tiempo, y tenemos la oportunidad de construir bicicletas, es un pecado no aprovechar esta oportunidad. Si leer libros de texto y artículos, y ver lecciones es una extensión de nuestro conocimiento, escribir sus propias bibliotecas es una profundización, y en varios frentes a la vez: implementar API convenientes (cortar el rendimiento y la usabilidad innecesarios y equilibrados), profundizar y explorar el interior de nuestro ecosistema de lenguaje-hierro , y la creación de pequeños módulos terminados, incluso si duplican parcialmente la funcionalidad de los existentes. Pero lo principal aquí no es ir en ciclos. Todavía estamos escribiendo juegos, y un juego de herramientas para ellos, aquí también puedes convertirte en un escritor de la biblioteca, y nunca hacer un solo Proyecto Terminado. Pero también hay una gran capa de experiencia general.
5. Conclusión.
Todavía hay muchas preguntas sin respuesta, algunas de las cuales serán respondidas brevemente aquí.
¿Qué es un documento de diseño y por qué es necesario? Este es un wiki para un juego aún no creado, cuanto más completo mejor. Y esto debe hacerse antes del comienzo del juego, estimando aproximadamente el tiempo de desarrollo por la cantidad de personas disponibles y cortando las funciones.
¿Por qué cortar características? Al pasar por las etapas anteriores, puede estimar aproximadamente el tiempo durante el cual usted y su equipo se cansarán de realizar este proyecto. Si nos encontramos en una situación de desarrollo independiente en el sótano sin fondos y un cronograma de trabajo, existe una gran posibilidad de confusión y tambaleo en lugar de implementar el proyecto. Todas las cosas interesantes se implementan muy rápidamente, y queda mucha rutina, que sin embargo debe hacerse, y nuestra tarea es equilibrar la frescura y la rutina para terminar de todos modos.
¿Dónde buscar artistas / músicos / diseñadores? Para comenzar, puede hacer un Proyecto Casi Terminado, sin gráficos y sonidos, con sprites garabateados en msPaint y las mismas animaciones torpes y explosiones de recursos gratuitos que se encuentran en la red. Realmente no recomiendo cargar a otras personas con algo que aún no está terminado y que tiene muchas posibilidades de quedar sin terminar.
En realidad, iba a conseguir un trabajo en Valve, EpicGames o en cualquier otro lugar, y trabajar allí, ¿por qué necesito todo esto? La mayoría de los programadores en el mundo son autodidactas, a menudo con una amplia experiencia en el "sótano", además, los prototipos y los pequeños juguetes son una excelente cartera para su colocación en grandes empresas, y no solo para el puesto de desarrollador de juegos.
Bonificación: la mayoría de estas técnicas son adecuadas para absolutamente cualquier campo, no solo para programar juegos, sino también para programar. Además, puede obtener una educación artística o aprender a tallar, utilizando las mismas instrucciones después de pequeñas ediciones en la dirección correcta.
Gracias por leer, el artículo está sujeto a críticas y adiciones.