Ich habe gelesen, wie man Code für ein Spiel entwirft. Eine Sache, die ich nicht herausfinden konnte, ist: Wie schafft man es, einen Editor außerhalb des Spiels zu schreiben (keinen Editor innerhalb des Spiels), ohne den Code aus dem Spiel zu kopieren? Möglicherweise müssen Sie den gesamten Code für die verschiedenen Entitätstypen kopieren. Sie müssen den Spiel-Rendering-Code hinzufügen.
Ich vermute, dies kann erreicht werden, indem man eine DLL aus dem 'Engine'-Teil des Spiels macht. Teilen Sie es dann zwischen dem eigentlichen Spiel und dem Level-Editor.
Oder gibt es einen besseren / einfacheren Weg, dies zu tun?
quelle
Trennen Sie die Renderlogik so gut wie möglich von der eigentlichen Spielelogik, wenn Sie Ihre Game Engine entwerfen. Eine Möglichkeit, dies zu tun, ist zu verwenden Komponentenmusters beim Erstellen Ihrer Spiel-Engine. XNA verwendet dieses Muster beispielsweise auf Framework-Ebene, um die Flexibilität zu erhöhen. Verwenden Sie für das Rendern mit Ihrem Ebeneneditor dieselbe Codebasis. Schreiben Sie Wrapper, wenn Sie müssen.
Ähnlich ist ein anderes etwas populäres Muster könnte auch MVC (Model-View-Controller) helfen. Codieren Sie Ihren Motor wie gewohnt mit MVC. Sie können dann denselben Code für Ansicht und Modell verwenden, aber einen benutzerdefinierten Controller zum Bearbeiten des Modells für Ihren Level-Editor anstelle des Controllers der Spiel-Engine einfügen, der entsprechend der Spieleingabe aktualisiert wird. Implementieren Sie die Serialisierung für Spielmodelle, um sie aus dem Editor oder dem Spiel zu laden / zu speichern.
Wenn Komponenten in getrennten Baugruppen aufbewahrt werden, wird die Trennung natürlich gefördert ...
quelle