diff --git a/src/level/robotmain.cpp b/src/level/robotmain.cpp
index a92b10b2..d55cd174 100644
--- a/src/level/robotmain.cpp
+++ b/src/level/robotmain.cpp
@@ -3689,7 +3689,7 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
         // TODO: m_engine->TimeInit(); ??
         m_input->ResetKeyStates();
         m_time = 0.0f;
-        m_gameTime = 0.0f;
+        if (m_sceneReadPath.empty()) m_gameTime = 0.0f;
         m_gameTimeAbsolute = 0.0f;
         m_autosaveLast = 0.0f;
         m_infoUsed = 0;
@@ -4542,6 +4542,7 @@ bool CRobotMain::IOWriteScene(std::string filename, std::string filecbot, std::s
     else
         line->AddParam("chap", MakeUnique<CLevelParserParam>(m_levelChap));
     line->AddParam("rank", MakeUnique<CLevelParserParam>(m_levelRank));
+    line->AddParam("gametime", MakeUnique<CLevelParserParam>(GetGameTime()));
     levelParser.AddLine(std::move(line));
 
     line = MakeUnique<CLevelParserLine>("Map");
@@ -4722,6 +4723,9 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot)
     int objCounter = 0;
     for (auto& line : levelParser.GetLines())
     {
+        if (line->GetCommand() == "Mission")
+            m_gameTime = line->GetParam("gametime")->AsFloat(0.0f);
+
         if (line->GetCommand() == "Map")
             m_map->ZoomMap(line->GetParam("zoom")->AsFloat());
 
diff --git a/src/object/old_object.cpp b/src/object/old_object.cpp
index dbe92b32..247b5a17 100644
--- a/src/object/old_object.cpp
+++ b/src/object/old_object.cpp
@@ -1010,6 +1010,8 @@ void COldObject::Write(CLevelParserLine* line)
     if ( m_virusTime != 0.0f )
         line->AddParam("virusTime", MakeUnique<CLevelParserParam>(m_virusTime));
 
+    line->AddParam("lifetime", MakeUnique<CLevelParserParam>(m_aTime));
+
     // Sets the parameters of the command line.
     CLevelParserParamVec cmdline;
     for(float value : GetCmdLine())
@@ -1144,6 +1146,8 @@ void COldObject::Read(CLevelParserLine* line)
     m_bVirusMode = line->GetParam("virusMode")->AsBool(false);
     m_virusTime = line->GetParam("virusTime")->AsFloat(0.0f);
 
+    m_aTime = line->GetParam("lifetime")->AsFloat(0.0f);
+
     if ( m_motion != nullptr )
     {
         m_motion->Read(line);