He estado leyendo sobre cómo diseñar código para un juego. Una cosa que no he podido entender es: ¿cómo se las arregla para escribir un editor de nivel externo (no un "editor de nivel interno") sin "copiar" el código del juego? Por ejemplo, es posible que deba copiar todo el código sobre los diferentes tipos de entidades que puede tener. Tendrás que agregar el código de representación del juego.
Supongo que esto se puede hacer haciendo una DLL fuera de la parte 'motor' del juego. Luego, compártelo entre el juego real y el editor de niveles.
¿O hay una manera mejor / más fácil de hacer esto?
fuente
Separe la lógica de renderizado lo mejor que pueda de la lógica real del juego al diseñar su motor de juego. Una forma de hacerlo es usar el patrón Componente al construir el motor del juego. Por ejemplo, XNA usa este patrón a nivel de marco para flexibilidad. Use la misma base de código para renderizar con su editor de niveles; escribe envoltorios si es necesario.
Del mismo modo, otro patrón algo popular es MVC (Modelo-Vista-Controlador) que también podría ayudar. Codifique su motor usando MVC normalmente. Luego puede usar el mismo código para Ver y Modelo, pero inyectar un Controlador personalizado para editar el Modelo para su editor de niveles en lugar del Controlador del motor del juego que se actualiza de acuerdo con la entrada del juego. Implemente la serialización de modelos de juegos para cargarlos / guardarlos desde el editor o el juego.
Por supuesto, mantener los componentes en conjuntos separados fomentará la separación ...
fuente