He observado que muchos desarrolladores de juegos grandes y conocidos a menudo desarrollan sus propios motores. Los ejemplos incluyen Valve, Crytek, Ubisoft, Epic Games y Square-Enix.
¿Podría ser simplemente porque pueden, o es probable que los motores existentes no cumplan con los requisitos suficientes, por lo que desarrollaríamos los nuestros? Apenas puedo imaginar un juego que requiera un motor específico. Los gustos de Unity o Unreal son simplemente suficientes para hacer cualquier tipo de juego; incluso si no, tienen código fuente, que puede modificarse para satisfacer incluso algunas necesidades extraordinarias.
¿Por qué un desarrollador de juegos escribiría su propio motor en lugar de utilizar los existentes?
game-industry
business
PaulD
fuente
fuente
Respuestas:
Hay varias razones por las que un estudio puede optar por "construir" en lugar de "comprar" su tecnología:
En general, tiene sentido poseer y controlar las cosas que son críticas para el éxito de su negocio, y externalizar las que no lo son.
Para algunos estudios, el aspecto de diseño o narración de sus juegos puede ser el recurso crítico que esperan capitalizar para el éxito. Para esos estudios, tiene sentido simplemente comprar tecnología que permita a sus diseñadores realizar la visión adecuada.
Para otros, la tecnología puede ser la base del éxito. Los estudios que construyen MMO, por ejemplo, generalmente necesitarán construir esa infraestructura ellos mismos porque es fundamental para su éxito (y el middleware existente es generalmente inapropiado, al menos para títulos más grandes, "AAA").
Tenga en cuenta que algunos de los estudios que enumeró (Crytek y Epic en particular) básicamente han dejado de intentar ser fuerzas dominantes en el mercado de juegos directamente, y casi con certeza hacen mucho más como vendedores de middleware que como desarrolladores de juegos.
fuente
como dijo Josh Petrie :
También estoy escribiendo mi propio motor, y supongo que la razón será diferente para cada desarrollador, pero de hecho, generalmente no me gusta trabajar en el código de otras personas. Soy compulsivo en el sentido de que si siento que podría construirlo yo mismo, entonces no tiene sentido conformarse con otra cosa .
Probé varios tipos de motores de juegos, API de renderizado y otros, en particular Ploobs, UNITY WaveEngine, XNAFinalEngine, Love, Ogre, etc. muchos más ... Quería comenzar a escribir juegos: descargué mucho buscando un buen producto y punto de entrada bien documentado ...
Sin embargo, mi problema era que en ese momento no tenía idea de lo que estaba sucediendo debajo del motor. Quería un buen control y un marco que conozco como el dorso de mi mano. Se me ocurrió la idea "¡HEY! Creo que la única forma de aprender cómo funciona y entenderlo es intentar construir mi propio motor por completo y completamente desde cero. La mayor parte de mi historial de programación fue con soluciones web y de procesamiento - Este fue un juego de pelota completamente nuevo para mí.
Que es lo que terminé haciendo.
Así que elegí configurar XNA ya que ya conocía C #, y comencé a pensar cómo o dónde debería comenzar. Necesitaba una idea
Decidí que, sin importar qué, iría directamente a 3D .
Aprender lo básico fue genial: las cosas del lote de sprites, pero a medida que avanzaba terminé descubriendo nuevas barreras y obstáculos, siendo el primero el límite de lotes . Mi objetivo era crear un juego que pudiera representar al menos 10000 entidades en el punto de vista en cualquier momento.
Me embarqué en un nuevo viaje de implementación de la Instancia basada en Shader (y aprendí HLSL mientras estaba en eso), abandoné los objetos de modelo y efecto integrados de XNA para escribir mis propios reemplazos. Al principio tuve problemas para entender las transmisiones de VBO; Rompí las cosas: me conecté en línea haciendo preguntas sobre las instancias y seguí hasta que finalmente entendí lo que estaba haciendo la GPU. Valió la pena; ahora tenía más de veinte mil entidades de prueba haciendo zoom en mi ventana gráfica después de un par de días de depuración de mi VBO con PIX (dxsdk).
Ahora tenía "alguna" idea de cómo funcionaban las canalizaciones de renderizado, pero aún no había terminado: terminé creando mi propio estado de juego, cámara, efectos posteriores y objetos de entidad, alejándome de la canalización de contenido XNA construyendo el mío. los cargadores (aversión personal hacia la cosa XNB), crearon una complicada cadena de geometría separada por estado de fusión y separada por estado de mezcla y también tuvieron instancias de sprites y texto proyectados en la escena del juego.
Seguí agregando, arreglando, cambiando y experimentando con esto continuamente durante casi un año entero. Al final, salió bastante bien. Ahora entendía lo que estaba sucediendo debajo del capó, porque lo creé: mi bebé.
Ahora mi motor estaba mayormente estable y casi terminado. No es perfecto: las secuencias de comandos son suaves y la GUI no fue excelente en absoluto. Pero aún así me encantó. Miles de líneas de código, activos y medios, encerrados en un repositorio git privado de 2GB, y todos los dolores de cabeza que tuve que pasar tratando de hacer un tipo de desarrollo que nunca antes había hecho. Cada obstáculo que superé fue una lección aprendida, y un alivio.
Saqué casi todo lo que quería en él.
Pero al final, decidí que era hora de menospreciarla. Por mucho que me convencí de escribir un gran motor de este tipo por mí mismo, con el asesoramiento de la red, y otros amigos GameDev, decidí que voy a hacer todo de nuevo - y hacerlo mejor - porque ahora esta vez sobre todo sabe Que estoy haciendo.
Ese proyecto todavía se encuentra escondido en mi repositorio GIT.
Mi segundo paso al escribir un nuevo motor (esta vez en MonoGame) está progresando bien. Cuando algo se rompe, es más fácil de arreglar. Menos desorden. Espero mostrar públicamente mi juego en algún momento de este año, porque tiendo a estar un poco "demasiado" apegado a mi código.
Al final, escribir mi propio motor es cómo aprendí 'cómo' hacerlo, al tiempo que puedo decir que sé y entiendo exactamente qué hace cada componente y cómo se supone que funcionan. De hecho, ODIO leer el código de otras personas, especialmente para grandes proyectos indocumentados. Quiero que todo lo que uso sea construido por mí.
Aunque solo soy yo. Dudo que alguna vez use un motor prefabricado, probablemente porque creo que es más divertido para mí escribir mis propios marcos que sentarme y lidiar con el código de otra persona: control total.
fuente
La razón clave absoluta para escribir su propio motor (y me sorprende que nadie lo haya llamado aún) es para la depuración .
Si ha escrito un juego grande y complicado, y tiene un error de bloqueo, y tiene el código fuente (y está íntimamente familiarizado con ese código fuente en virtud de haberlo escrito), simplemente puede adjuntar un depurador a el proceso y encuentre la causa del bloqueo. Hecho.
Si está utilizando el motor comercialmente disponible de otra persona y no tiene el código fuente de ese motor (normalmente no lo tiene), entonces se eliminará cualquier problema que surja, incluso dentro de su propio código. ser monumentalmente más difícil. Y si se encuentra con un error dentro del motor, no podrá resolverlo usted mismo. ¿Cómo le gustaría estar una semana fuera de su fecha de lanzamiento y que alguien descubra un error de bloqueo en el motor que está utilizando? Un error de bloqueo que no puede solucionar porque está dentro de un motor patentado en el que no tiene el código fuente? He visto que esto sucede: no tiene más remedio que presentar una llamada de soporte urgente con el proveedor y esperar que puedan (y estén interesados en) solucionar el problema por usted, mientras se pelea,
El desarrollo del juego es difícil, pero la depuración es mucho más difícil. En mi libro, cualquier cosa que dificulte el desarrollo del juego pero la depuración sea más fácil es una gran ganancia neta.
fuente
Aquí hay muy buenas respuestas, pero les falta un punto adicional importante.
Muchos de los motores actuales con licencia comenzaron como motores dedicados .
Tomemos Unreal como ejemplo porque es muy ubicuo.
Hoy, cuando piensas en Unreal, tiendes a pensar en un motor que autorizas y puedes usar en lugar de tener que construir el tuyo propio, pero ese no fue siempre el caso, y alguna vez el motor de Unreal ni siquiera existía como Una entidad separada.
Había una vez un juego llamado Unreal . Los desarrolladores decidieron construir su propio motor en lugar de licenciar uno existente . Avance rápido a través de varias iteraciones y ese motor se convierte en el motor Unreal que conocemos hoy.
El punto es que este es un problema de huevo y gallina. Cada bit de middleware que puede licenciar comenzó en algún lugar, y a menudo no comenzó como middleware (a veces ni siquiera fue escrito con la intención de convertirse en middleware y su estado actual es efectivamente un accidente ). La gente escribe sus propios motores porque, en última instancia, alguien tiene que escribir el motor, y el motor dedicado de hoy podría convertirse en el middleware con licencia del mañana.
fuente
Hay otras razones por las que un estudio puede optar por "construir" en lugar de "comprar" su tecnología:
También estoy de acuerdo con las solicitudes / necesidades específicas y los precios de los motores y las guerras de licencias obligan a algunos estudios a implementar algunos motores.
Los buenos motivos para "comprar" o "usar" otros motores son:
fuente
Razón histórica (principalmente).
Lo que está relacionado con los precios.
Cada juego que viste ejecutando Unreal o CryEngine en los últimos años tuvo que pagar una gran cantidad de dinero. Especialmente si desea obtener el código fuente (es decir: quería UE, no solo UDK).
Pero esto cambió. Ahora todos pueden permitirse motores aún más grandes, cuando comenzó la carrera de precios.
Lo que eso significa ...
Sin embargo, no serán juegos AAA como lo han sido.
Vea el motor Warhammer40k / COH en Relic, o el que los Generales usaron en EA.
Entonces, incluso si alguien puede permitirse los motores más grandes, no necesariamente ofrecen una mejor opción.
A la gente le encanta por su facilidad de uso, rendimiento rápido y la gran tienda de activos.
Por supuesto, Unity puede desplegarse en casi cualquier plataforma.
Así que sí. Necesidades, precios en el pasado y tal.
fuente
(ie.: you want UE, not UDK only.)
?¿Qué pasa con la organización del equipo?
Detrás de las cosas de depuración están la documentación y el soporte, no el código, porque al final no quería que mi grupo de construcción tocara el código de mi propio motor. Eso podría ser un desastre.
Entonces, necesito un grupo de apoyo para hacer eso. Pero eso eleva los costos: más personas, más lugares, más líneas telefónicas, más administración ...
Una solución a esto puede ser subcontratar ... a una empresa de middleware, liberando recursos para mi negocio de hacer juegos, es decir, para el grupo creativo y los escritores.
Para una empresa nueva no es una mala opción usar y no construir. Y, después de obtener una masa crítica de ingresos, puede ser, solo puede ser, querrás construir tu propio motor ...
fuente
bien. para la mayoría de los juegos que usan su propio motor creado por sus desarrolladores. a menudo. No pueden hacer cosas con un motor de terceros. así que hacen lo suyo para facilitar el desarrollo de su propio juego. o posible al menos.
y muchos juegos que usan su propio motor en general. trabaja mejor. porque son más personalizados y se ajustan al 100% a su tarea. y el juego en sí se siente de manera diferente. es realmente fácil jugar un juego y decir que está hecho por. motor irreal o lo que sea. motor más personalizado en general y debería dar como resultado un juego que se siente único. se ve único y funciona de manera única y debería funcionar mejor que un juego creado en un motor prefabricado.
fuente
Mi respuesta difiere de las existentes, así que la agrego aunque sea tarde:
Si toma el ejemplo de Valve de la pregunta, o la serie Witcher, el proceso fue:
Casi todos los desarrolladores financieramente razonables que desarrollan su propio motor adoptan el mismo enfoque. Al modificar un motor, acumulan conocimiento sobre cómo funciona un motor y se topan con restricciones de diseño que resultan de un motor con licencia. Al final, tienen el conocimiento interno necesario para crear un motor, el efectivo para financiar la creación de un motor y un proyecto que se beneficiará de un motor dedicado. En ese momento, la razón para construir un motor es: porque es lo más inteligente.
fuente
mi maestro de programación nos dijo, solo use las API / métodos / clases / funciones que usted sabe cómo construir
porque si no sabes cómo construirlo y estás utilizando el trabajo de otra persona, es probable que no sepas cómo funciona y cuando no sabes cómo funciona algo, entonces eres más propenso a errores y problemas y a golpear paredes de confusión
aprender cosas simples puede, cuando se combina, dar como resultado problemas extraños, y mucho menos algo complejo como un motor de juego, especialmente cuando se supone que debes usar ese motor de juego para ejecutar tu juego, lo que puede generar muchos resultados y problemas inesperados
y el motor del juego no sigue el código lógico o cualquier otra lógica cuando se construyen, seguro que hay algunas cosas que se pueden esperar, pero en realidad todo se construirá en base a la comprensión y el conocimiento de alguien de algún lenguaje de programación o cómo funciona algún sistema
por ejemplo, si elijo escribir una ecuación matemática, puedo escribirla de tantas maneras que puedo representarla con polinomios, cálculo diferencial o geometría básica o álgebra o lo que me convenga, pero a veces escribiría en cierta forma / formato porque quiero para poder manipular lo que está fácilmente disponible, como si planeara hacer una gran cantidad de manipulación de vértices, podría escribir este modelo matemático usando geometría básica, sin embargo, si quisiera cambiar la curva usando gradientes, podría centrarme en el cálculo diferencial para poder para manipular fácilmente los gradientes, etc. y lo mismo ocurre con lo que sea, planeo tener un acceso más fácil a
y, a veces, el motor del juego actual puede no darme la flexibilidad de lo que pretendo hacer o incluso tal vez te da esa opción, pero es muy difícil hacerlo porque el motor del juego se centra en las fuerzas físicas como su principal fuente de movimiento y manipulación de objetos en el juego
de todos modos espero haber dejado en claro lo que estaba tratando de señalar
fuente