como dijo Josh Petrie :
" Síndrome no construido aquí ";
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.