diff --git a/src/ui/GameWorldView.cpp b/src/ui/GameWorldView.cpp index 8020246..0849a03 100644 --- a/src/ui/GameWorldView.cpp +++ b/src/ui/GameWorldView.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -162,13 +163,15 @@ GameWorldView::GameWorldView(Simulation* sim, const GameConfig* config, } else { - // Record every run to disk. Replays live under /replays, alongside - // the config dir that was loaded. Attaching the recorder opens the first - // file and writes the header for the initial run. - QDir replayDir(QString::fromStdString(configDir)); - replayDir.cdUp(); + // Record every run to disk, into a "replays" folder next to the executable. + // Uses the exe's real directory rather than traversing up from the config + // dir: with a symlinked build layout, relative traversal would resolve into + // the wrong tree. Attaching the recorder opens the first file and writes the + // header for the initial run. + const QString replayDir = + QDir(QCoreApplication::applicationDirPath()).filePath("replays"); m_commandManager.setRecorder(std::make_unique( - configDir, replayDir.filePath("replays").toStdString())); + configDir, replayDir.toStdString())); } }