Bienvenido a la industria del juego :)
Entonces estás haciendo una refactorización masiva. La refactorización masiva es malvada, pero ese no es el tema. Probablemente te dieron esta tarea para poner a prueba tus nervios de todos modos, así que no te rindas.
Mi respuesta es: usted tiene que descomponerlo en pequeños trozos. Será su rutina diaria en unos pocos meses, por lo que debe aprender a dividir y conquistar. Básicamente es tu trabajo. Algunas sugerencias
Asegúrese de comprender lo que se supone que debe hacer este componente . Juegue con lo que tiene que sacar y vea qué hace, pregunte a sus colegas si sus suposiciones son correctas.
Estás reescribiendo este módulo por una razón. Puede que no sea obvio para usted, pero si se le asignó esta tarea, lo más probable es que haya algo tan malo que la gente sienta que es mejor comenzar de nuevo. Pregunte: ¿cuáles son esos defectos ?
Intente encontrar la característica principal del componente que está reescribiendo, su esencia, la razón por la que existe, y comience por hacer que este funcione. Debe ser muy pequeño, tan pequeño como puedas. Pregúnteles a sus colegas qué creen que sería esta característica. Si es un sistema GFX, simplemente haga que muestre un polígono. Si se trata de un sistema de animación, simplemente coloque un hueso correctamente. Si es un sistema de IA, solo haz que reproduzca una animación. Etc. etc. Simplemente tira a la basura todo lo que se interponga y te dé todos esos errores desalentadores. No se preocupe por los detalles, solo haga que esta característica central funcione tan rápido como pueda. Su implementación será fea, llena de errores, hacks y números mágicos y no dejaría que nadie le eche un vistazo a su código, pero eso no es un problema.
Una vez que tenga esta característica principal, ya comenzará a sentirse mejor. Es esencial ver el resultado de su trabajo lo antes posible 1) para su moral 2) para poder probarlo. Entonces, pruébalo, pruébalo, tómalo . Si se bloquea o muestra algún error realmente malo, corríjalo. Es el corazón de su módulo, así que modifíquelo un poco y límpielo hasta que se sienta cómodo con él.
Luego muéstralo a tus colegas y pregúntales si eso es lo que necesita el juego. Solicite una revisión del código : sus colegas probablemente le informarán sobre muchas cosas en las que no pensó. Tendrá que refactorizar nuevamente para asegurarse de que su implementación se ajuste a lo que quiere el resto del equipo.
Luego, cuando se sienta listo para ello, elija una de las otras características que descartó anteriormente, enjuague y repita. Haga que funcione lo más rápido posible, vuelva a trabajar, solicite una revisión, vuelva a trabajar.
Tengo que poner el énfasis por última vez en esto: comunicarme . Pregúntele a sus colegas, no solo a su líder, no solo a los programadores, a todos los que usarán, probarán o evaluarán este sistema. No tema hacer preguntas estúpidas: en caso de duda, siempre es mejor obtener la información en este momento que esperar semanas para una reunión o una revisión.
La realidad de la programación de juegos es que no vas a crear nuevos sistemas brillantes todos los días, es un trabajo para mantener el enfoque y hacer las cosas de manera rápida y eficiente. ¡Ponte en forma, ponte a trabajar y buena suerte!
EDITAR
Hay información adicional que encuentro útil en el comentario de Leo y la respuesta de Dhasenan, estoy descaradamente averiguando eso para completar esta respuesta.
No escribí sobre cómo lidiar con las interdependencias . El módulo que está reescribiendo probablemente esté profundamente acoplado con el resto del juego, es por eso que obtiene tantos errores al cambiar algo. Entonces hay dos soluciones:
Si solo hay algunas dependencias, entonces tienes suerte. El módulo antiguo y el nuevo se pueden mantener en paralelo durante un tiempo, incluso puede tener un interruptor para sus usuarios para que puedan decidir cambiar entre el módulo antiguo y el nuevo cuando lo necesiten. Simplemente coloque un interruptor en algún lugar, en un archivo de configuración o en un menú de depuración, y úselo donde sea que su módulo esté conectado al resto del juego. Cuando su nuevo módulo esté listo para la producción, active el interruptor de forma predeterminada. Más adelante, cuando el módulo anterior ya no se use o cuando la producción deba continuar, retire el módulo anterior y el interruptor.
Si hay muchosdependencias, debe desconectarlas y volver a enchufarlas una por una. Intente mantener ambos módulos en segundo plano, y cada vez que tenga una nueva función para trabajar, cambie al nuevo módulo para esa función. Es decir, desenchufe y vuelva a enchufar lo que está relacionado con esta función. Le llevará algo de tiempo porque probablemente sea más trabajo que cambiar solo una llamada de función: algunas estructuras de datos pueden cambiar, el flujo del programa puede cambiar, etc. Pero aún es mejor que reescribir todo una vez y tomar semanas para matar a la bestia de compilación. Si eso es realmente imposible mantener tanto el módulo antiguo como el nuevo en paralelo porque su módulo es tan vital para el juego, puede considerar reescribirlo en su lugar. Pero tenga en cuenta que esto podría significar que si los defectos están en la interfaz del módulo anterior, terminará con los mismos defectos. De todos modos, si esto sucede,
Si hay algo específico en el desarrollo de videojuegos, es esto: no estamos haciendo ciencia espacial, o un trabajo de investigación complicado, somos parte de un proceso creativo. Al hacer algo, debes crear una primera versión lo más rápido posible para que pueda ser probada, jugada, desaprobada y modificada. No puede pasar semanas haciendo "un trabajo muy largo" sin entregar un poco.