Index: code/branches/gui/src/core/Core.cc
===================================================================
--- code/branches/gui/src/core/Core.cc	(revision 2806)
+++ code/branches/gui/src/core/Core.cc	(revision 2807)
@@ -94,9 +94,5 @@
     SetCommandLineArgument(limitToCPU, 0).information("0: off | #cpu");
 
-    /**
-        @brief Constructor: Registers the object and sets the config-values.
-        @param A reference to a global variable, used to avoid an infinite recursion in getSoftDebugLevel()
-    */
-    Core::Core(int argc, char** argv)
+    Core::Core()
     {
         RegisterRootObject(Core);
@@ -104,4 +100,10 @@
         assert(Core::singletonRef_s == 0);
         Core::singletonRef_s = this;
+    }
+
+    Clock* Core::initialise(int argc, char** argv)
+    {
+        // Set up a basic clock to keep time
+        this->gameClock_ = new Clock();
 
         // Parse command line arguments fist
@@ -173,4 +175,7 @@
         
         this->loaded_ = true;
+
+        // Return non const pointer to the game's clock for the main loop
+        return this->gameClock_;
     }
 
@@ -194,4 +199,6 @@
         // Also delete external console command that don't belong to an Identifier
         CommandExecutor::destroyExternalCommands();
+
+        delete this->gameClock_;
 
         assert(Core::singletonRef_s);
Index: code/branches/gui/src/core/Core.h
===================================================================
--- code/branches/gui/src/core/Core.h	(revision 2806)
+++ code/branches/gui/src/core/Core.h	(revision 2807)
@@ -61,9 +61,10 @@
     {
         public:
-            Core(int argc, char** argv);
+            Core();
             ~Core();
+
+            Clock* initialise(int argc, char** argv);
             void setConfigValues();
 
-            bool isLoaded() { return this->loaded_; }
             void update(const Clock& time);
 
@@ -74,4 +75,6 @@
             static const std::string& getLanguage();
             static void  resetLanguage();
+
+            static const Clock& getGameClock() { return *getInstance().gameClock_; }
 
             static void tsetMediaPath(const std::string& path)
@@ -120,4 +123,6 @@
             TclThreadManager*     tclThreadManager_;
 
+            Clock*                gameClock_;
+
             int softDebugLevel_;                            //!< The debug level
             int softDebugLevelConsole_;                     //!< The debug level for the console
Index: code/branches/gui/src/orxonox/Game.cc
===================================================================
--- code/branches/gui/src/orxonox/Game.cc	(revision 2806)
+++ code/branches/gui/src/orxonox/Game.cc	(revision 2807)
@@ -89,10 +89,6 @@
         this->abort_ = false;
 
-        this->core_ = new orxonox::Core(argc, argv);
-        if (!this->core_->isLoaded())
-        {
-            COUT(0) << "Core was not fully loaded, probably an exception occurred during consruction. Aborting" << std::endl;
-            abort();
-        }
+        this->core_ = new orxonox::Core();
+        this->gameClock_ = this->core_->initialise(argc, argv);
     }
 
@@ -142,8 +138,4 @@
         root.addChild(&dedicated);
 
-
-        // start global orxonox time
-        Clock clock;
-
         root.activate();
 
@@ -153,7 +145,7 @@
         while (!this->abort_)
         {
-            clock.capture();
+            this->gameClock_->capture();
 
-            root.tick(clock);
+            root.tick(*this->gameClock_);
 
             if (root.stateRequest_ != "")
Index: code/branches/gui/src/orxonox/Game.h
===================================================================
--- code/branches/gui/src/orxonox/Game.h	(revision 2806)
+++ code/branches/gui/src/orxonox/Game.h	(revision 2807)
@@ -61,4 +61,5 @@
 
         Core* core_;
+        Clock* gameClock_;
 
         bool abort_;
Index: code/branches/gui/src/orxonox/gamestates/GSClient.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSClient.cc	(revision 2806)
+++ code/branches/gui/src/orxonox/gamestates/GSClient.cc	(revision 2807)
@@ -61,6 +61,5 @@
         GSLevel::enter();
 
-        // TODO: Get Clock from Game or GameStateManager, but with 0 delta time
-        client_->update(Clock());
+        client_->update(Core::getGameClock());
     }
 
