Index: code/branches/gui/src/orxonox/Main.cc
===================================================================
--- code/branches/gui/src/orxonox/Main.cc	(revision 1691)
+++ code/branches/gui/src/orxonox/Main.cc	(revision 1694)
@@ -47,4 +47,5 @@
 #include "gamestates/GSServer.h"
 #include "gamestates/GSClient.h"
+#include "gamestates/GSDedicated.h"
 #include "gamestates/GSGUI.h"
 #include "gamestates/GSIOConsole.h"
@@ -94,4 +95,5 @@
     GSServer server;
     GSClient client;
+    GSDedicated dedicated;
     GSGUI gui;
     GSIOConsole ioConsole;
@@ -104,4 +106,5 @@
 
     root.addChild(&ioConsole);
+    root.addChild(&dedicated);
 
     root.start(argc, argv);
Index: code/branches/gui/src/orxonox/gamestates/GSDedicated.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSDedicated.cc	(revision 1694)
+++ code/branches/gui/src/orxonox/gamestates/GSDedicated.cc	(revision 1694)
@@ -0,0 +1,117 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      Fabian 'x3n' Landau
+ *
+ */
+
+#include "OrxonoxStableHeaders.h"
+#include "GSDedicated.h"
+
+#include "core/ConsoleCommand.h"
+#include "core/CommandLine.h"
+#include "core/Loader.h"
+#include "network/Server.h"
+#include "objects/Tickable.h"
+#include "GraphicsEngine.h"
+#include "Settings.h"
+
+namespace orxonox
+{
+    GSDedicated::GSDedicated()
+        : GameState<GSRoot>("dedicated")
+        , timeFactor_(0)
+        , server_(0)
+        , sceneManager_(0)
+        , startLevel_(0)
+    {
+    }
+
+    GSDedicated::~GSDedicated()
+    {
+    }
+
+    void GSDedicated::enter()
+    {
+        // create Ogre SceneManager for the level
+        this->sceneManager_ = Ogre::Root::getSingleton().createSceneManager(Ogre::ST_GENERIC, "LevelSceneManager");
+        COUT(4) << "Created SceneManager: " << sceneManager_->getName() << std::endl;
+
+        // temporary hack
+        GraphicsEngine::getInstance().setLevelSceneManager(this->sceneManager_);
+
+        // reset game speed to normal
+        timeFactor_ = 1.0f;
+
+        int serverPort = CommandLine::getArgument<int>("port")->getValue();
+        this->server_ = network::Server::createSingleton(serverPort);
+
+        // call the loader
+        COUT(0) << "Loading level..." << std::endl;
+        startLevel_ = new Level(Settings::getDataPath() + "levels/sample.oxw");
+        Loader::open(startLevel_);
+
+        server_->open();
+
+        // add console commands
+        FunctorMember01<GSDedicated, float>* functor = createFunctor(&GSDedicated::setTimeFactor);
+        functor->setObject(this);
+        CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor"));
+    }
+
+    void GSDedicated::leave()
+    {
+        // TODO: Remove and destroy console command
+
+        Loader::unload(startLevel_);
+        delete this->startLevel_;
+
+        this->server_->close();
+        // TODO: destroy server
+
+        Ogre::Root::getSingleton().destroySceneManager(this->sceneManager_);
+    }
+
+    void GSDedicated::ticked(const Clock& time)
+    {
+        // Call those objects that need the real time
+        for (Iterator<TickableReal> it = ObjectList<TickableReal>::start(); it; ++it)
+            it->tick(time.getDeltaTime());
+        // Call the scene objects
+        for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it)
+            it->tick(time.getDeltaTime() * this->timeFactor_);
+
+        server_->tick(time.getDeltaTime());
+        this->tickChild(time);
+    }
+
+    /**
+    @brief
+        Changes the speed of Orxonox
+    */
+    void GSDedicated::setTimeFactor(float factor)
+    {
+        this->timeFactor_ = factor;
+    }
+}
Index: code/branches/gui/src/orxonox/gamestates/GSDedicated.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSDedicated.h	(revision 1694)
+++ code/branches/gui/src/orxonox/gamestates/GSDedicated.h	(revision 1694)
@@ -0,0 +1,62 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _GSDedicated_H__
+#define _GSDedicated_H__
+
+#include "OrxonoxPrereqs.h"
+#include "network/NetworkPrereqs.h"
+#include "GSRoot.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport GSDedicated : public GameState<GSRoot>
+    {
+    public:
+        GSDedicated();
+        ~GSDedicated();
+
+        void setTimeFactor(float factor);
+        float getTimeFactor() { return this->timeFactor_; }
+
+    private:
+        void enter();
+        void leave();
+        void ticked(const Clock& time);
+
+        void loadLevel();
+        void unloadLevel();
+
+        float                 timeFactor_;       //!< A factor to change the gamespeed
+        network::Server*      server_;
+        Ogre::SceneManager*   sceneManager_;
+        Level*                startLevel_;       //!< current hard coded default level
+    };
+}
+
+#endif /* _GSDedicated_H__ */
Index: code/branches/gui/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSLevel.cc	(revision 1691)
+++ code/branches/gui/src/orxonox/gamestates/GSLevel.cc	(revision 1694)
@@ -37,4 +37,5 @@
 #include "core/Loader.h"
 #include "objects/Backlight.h"
+#include "objects/Tickable.h"
 #include "tools/ParticleInterface.h"
 #include "Settings.h"
Index: code/branches/gui/src/orxonox/gamestates/GSLevel.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSLevel.h	(revision 1691)
+++ code/branches/gui/src/orxonox/gamestates/GSLevel.h	(revision 1694)
@@ -56,6 +56,4 @@
         void unloadLevel();
 
-    private:
-
         float timeFactor_;       //!< A factor to change the gamespeed
 
Index: code/branches/gui/src/orxonox/objects/Ambient.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/Ambient.cc	(revision 1691)
+++ code/branches/gui/src/orxonox/objects/Ambient.cc	(revision 1694)
@@ -44,4 +44,5 @@
 #include "core/XMLPort.h"
 #include "core/ConsoleCommand.h"
+#include "Settings.h"
 
 namespace orxonox
@@ -65,24 +66,30 @@
 
     bool Ambient::create(){
-      GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(ambientLight_);
-      return Synchronisable::create();
+        if (Settings::showsGraphics())
+            GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(ambientLight_);
+        return Synchronisable::create();
     }
-    
+
     void Ambient::registerAllVariables(){
-      registerVar(&ambientLight_, sizeof(ColourValue), network::DATA);
-      
+        registerVar(&ambientLight_, sizeof(ColourValue), network::DATA);
+
     }
 
     void Ambient::setAmbientLight(const ColourValue& colour)
     {
-        GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(colour);
-      ambientLight_=colour;	
+        if (Settings::showsGraphics())
+            GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(colour);
+        ambientLight_=colour;	
     }
 
     /**
-        @brief XML loading and saving.
-        @param xmlelement The XML-element
-        @param loading Loading (true) or saving (false)
-        @return The XML-element
+    @brief
+        XML loading and saving.
+    @param
+        xmlelement The XML-element
+    @param
+        loading Loading (true) or saving (false)
+    @return
+        The XML-element
     */
     void Ambient::XMLPort(Element& xmlelement, XMLPort::Mode mode)
Index: code/branches/gui/src/orxonox/objects/Skybox.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/Skybox.cc	(revision 1691)
+++ code/branches/gui/src/orxonox/objects/Skybox.cc	(revision 1694)
@@ -39,4 +39,5 @@
 #include "core/Debug.h"
 #include "core/XMLPort.h"
+#include "Settings.h"
 
 namespace orxonox
@@ -56,5 +57,6 @@
     void Skybox::setSkybox(const std::string& skyboxname)
     {
-        GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(true, skyboxname);
+        if (Settings::showsGraphics())
+            GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(true, skyboxname);
     }
 
@@ -92,5 +94,6 @@
     {
         BaseObject::changedVisibility();
-        GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(this->isVisible(), this->skyboxSrc_);
+        if (Settings::showsGraphics())
+            GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(this->isVisible(), this->skyboxSrc_);
     }
 }
Index: code/branches/gui/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/SpaceShip.cc	(revision 1691)
+++ code/branches/gui/src/orxonox/objects/SpaceShip.cc	(revision 1694)
@@ -49,4 +49,5 @@
 
 #include "GraphicsEngine.h"
+#include "Settings.h"
 #include "RotatingProjectile.h"
 #include "ParticleProjectile.h"
@@ -193,86 +194,89 @@
     void SpaceShip::init()
     {
-        // START CREATING THRUSTERS
-        this->tt1_ = new ParticleInterface("Orxonox/thruster1", LODParticle::low);
-        this->tt1_->createNewEmitter();
-        this->tt1_->getAllEmitters()->setDirection(-this->getInitialDir());
-        this->tt1_->getEmitter(0)->setPosition(Vector3(-15, 20, -1));
-        this->tt1_->getEmitter(1)->setPosition(Vector3(-15, -20, -1));
-        this->tt1_->setSpeedFactor(3.0);
-
-        Ogre::SceneNode* node2a = this->getNode()->createChildSceneNode(this->getName() + "particle2a");
-        node2a->setInheritScale(false);
-        node2a->setScale(1, 1, 1);
-        tt1_->addToSceneNode(node2a);
-
-        this->tt2_ = new ParticleInterface("Orxonox/thruster2", LODParticle::normal);
-        this->tt2_->createNewEmitter();
-        this->tt2_->getAllEmitters()->setDirection(Vector3(-1, 0, 0));
-        this->tt2_->getEmitter(0)->setPosition(Vector3(-30, 40, -2));
-        this->tt2_->getEmitter(1)->setPosition(Vector3(-30, -40, -2));
-
-        Ogre::SceneNode* node2b = this->getNode()->createChildSceneNode(this->getName() + "particle2b");
-        node2b->setInheritScale(false);
-        node2b->setScale(0.5, 0.5, 0.5);
-        tt2_->addToSceneNode(node2b);
-
-        this->leftThrusterFlare_.setBillboardSet("Flares/ThrusterFlare1", Vector3(-7.5, -10, -0.5));
-        this->rightThrusterFlare_.setBillboardSet("Flares/ThrusterFlare1", Vector3(-7.5, 10, -0.5));
-
-        Ogre::SceneNode* node2c = this->getNode()->createChildSceneNode(this->getName() + "particle2c");
-        node2c->setInheritScale(false);
-        node2c->setScale(2, 2, 2);
-        node2c->attachObject(this->leftThrusterFlare_.getBillboardSet());
-        node2c->attachObject(this->rightThrusterFlare_.getBillboardSet());
-        // END CREATING THRUSTERS
-
-        // START CREATING BLINKING LIGHTS
-        this->redBillboard_.setBillboardSet("Examples/Flare", ColourValue(1.0, 0.0, 0.0), 1);
-        this->greenBillboard_.setBillboardSet("Examples/Flare", ColourValue(0.0, 1.0, 0.0), 1);
-
-        this->redNode_ = this->getNode()->createChildSceneNode(this->getName() + "red", Vector3(0.3, 4.0, -0.3));
-        this->redNode_->setInheritScale(false);
-        this->greenNode_ = this->getNode()->createChildSceneNode(this->getName() + "green", Vector3(0.3, -4.0, -0.3));
-        this->greenNode_->setInheritScale(false);
-
-        this->redNode_->attachObject(this->redBillboard_.getBillboardSet());
-        this->redNode_->setScale(0.3, 0.3, 0.3);
-
-        this->greenNode_->attachObject(this->greenBillboard_.getBillboardSet());
-        this->greenNode_->setScale(0.3, 0.3, 0.3);
-        // END CREATING BLINKING LIGHTS
-
-        // START CREATING ADDITIONAL EFFECTS
-        this->backlight_ = new Backlight(this->maxSpeed_, 0.8);
-        this->attachObject(this->backlight_);
-        this->backlight_->setPosition(-2.35, 0, 0.2);
-        this->backlight_->setColour(this->getProjectileColour());
-
-        this->smoke_ = new ParticleSpawner();
-        this->smoke_->setParticle("Orxonox/smoke5", LODParticle::normal, 0, 0, 3);
-        this->attachObject(this->smoke_);
-
-        this->fire_ = new ParticleSpawner();
-        this->fire_->setParticle("Orxonox/fire3", LODParticle::normal, 0, 0, 1);
-        this->attachObject(this->fire_);
-        // END CREATING ADDITIONAL EFFECTS
-
-        if (this->isExactlyA(Class(SpaceShip)))
-        {
-            // START of testing crosshair
-            this->crosshairNear_.setBillboardSet("Orxonox/Crosshair", ColourValue(1.0, 1.0, 0.0), 1);
-            this->crosshairFar_.setBillboardSet("Orxonox/Crosshair", ColourValue(1.0, 1.0, 0.0), 1);
-
-            this->chNearNode_ = this->getNode()->createChildSceneNode(this->getName() + "near", Vector3(50.0, 0.0, 0.0));
-            this->chNearNode_->setInheritScale(false);
-            this->chFarNode_ = this->getNode()->createChildSceneNode(this->getName() + "far", Vector3(200.0, 0.0, 0.0));
-            this->chFarNode_->setInheritScale(false);
-
-            this->chNearNode_->attachObject(this->crosshairNear_.getBillboardSet());
-            this->chNearNode_->setScale(0.2, 0.2, 0.2);
-
-            this->chFarNode_->attachObject(this->crosshairFar_.getBillboardSet());
-            this->chFarNode_->setScale(0.4, 0.4, 0.4);
-            // END of testing crosshair
+        if (Settings::showsGraphics())
+        {
+            // START CREATING THRUSTERS
+            this->tt1_ = new ParticleInterface("Orxonox/thruster1", LODParticle::low);
+            this->tt1_->createNewEmitter();
+            this->tt1_->getAllEmitters()->setDirection(-this->getInitialDir());
+            this->tt1_->getEmitter(0)->setPosition(Vector3(-15, 20, -1));
+            this->tt1_->getEmitter(1)->setPosition(Vector3(-15, -20, -1));
+            this->tt1_->setSpeedFactor(3.0);
+
+            Ogre::SceneNode* node2a = this->getNode()->createChildSceneNode(this->getName() + "particle2a");
+            node2a->setInheritScale(false);
+            node2a->setScale(1, 1, 1);
+            tt1_->addToSceneNode(node2a);
+
+            this->tt2_ = new ParticleInterface("Orxonox/thruster2", LODParticle::normal);
+            this->tt2_->createNewEmitter();
+            this->tt2_->getAllEmitters()->setDirection(Vector3(-1, 0, 0));
+            this->tt2_->getEmitter(0)->setPosition(Vector3(-30, 40, -2));
+            this->tt2_->getEmitter(1)->setPosition(Vector3(-30, -40, -2));
+
+            Ogre::SceneNode* node2b = this->getNode()->createChildSceneNode(this->getName() + "particle2b");
+            node2b->setInheritScale(false);
+            node2b->setScale(0.5, 0.5, 0.5);
+            tt2_->addToSceneNode(node2b);
+
+            this->leftThrusterFlare_.setBillboardSet("Flares/ThrusterFlare1", Vector3(-7.5, -10, -0.5));
+            this->rightThrusterFlare_.setBillboardSet("Flares/ThrusterFlare1", Vector3(-7.5, 10, -0.5));
+
+            Ogre::SceneNode* node2c = this->getNode()->createChildSceneNode(this->getName() + "particle2c");
+            node2c->setInheritScale(false);
+            node2c->setScale(2, 2, 2);
+            node2c->attachObject(this->leftThrusterFlare_.getBillboardSet());
+            node2c->attachObject(this->rightThrusterFlare_.getBillboardSet());
+            // END CREATING THRUSTERS
+
+            // START CREATING BLINKING LIGHTS
+            this->redBillboard_.setBillboardSet("Examples/Flare", ColourValue(1.0, 0.0, 0.0), 1);
+            this->greenBillboard_.setBillboardSet("Examples/Flare", ColourValue(0.0, 1.0, 0.0), 1);
+
+            this->redNode_ = this->getNode()->createChildSceneNode(this->getName() + "red", Vector3(0.3, 4.0, -0.3));
+            this->redNode_->setInheritScale(false);
+            this->greenNode_ = this->getNode()->createChildSceneNode(this->getName() + "green", Vector3(0.3, -4.0, -0.3));
+            this->greenNode_->setInheritScale(false);
+
+            this->redNode_->attachObject(this->redBillboard_.getBillboardSet());
+            this->redNode_->setScale(0.3, 0.3, 0.3);
+
+            this->greenNode_->attachObject(this->greenBillboard_.getBillboardSet());
+            this->greenNode_->setScale(0.3, 0.3, 0.3);
+            // END CREATING BLINKING LIGHTS
+
+            // START CREATING ADDITIONAL EFFECTS
+            this->backlight_ = new Backlight(this->maxSpeed_, 0.8);
+            this->attachObject(this->backlight_);
+            this->backlight_->setPosition(-2.35, 0, 0.2);
+            this->backlight_->setColour(this->getProjectileColour());
+
+            this->smoke_ = new ParticleSpawner();
+            this->smoke_->setParticle("Orxonox/smoke5", LODParticle::normal, 0, 0, 3);
+            this->attachObject(this->smoke_);
+
+            this->fire_ = new ParticleSpawner();
+            this->fire_->setParticle("Orxonox/fire3", LODParticle::normal, 0, 0, 1);
+            this->attachObject(this->fire_);
+            // END CREATING ADDITIONAL EFFECTS
+
+            if (this->isExactlyA(Class(SpaceShip)))
+            {
+                // START of testing crosshair
+                this->crosshairNear_.setBillboardSet("Orxonox/Crosshair", ColourValue(1.0, 1.0, 0.0), 1);
+                this->crosshairFar_.setBillboardSet("Orxonox/Crosshair", ColourValue(1.0, 1.0, 0.0), 1);
+
+                this->chNearNode_ = this->getNode()->createChildSceneNode(this->getName() + "near", Vector3(50.0, 0.0, 0.0));
+                this->chNearNode_->setInheritScale(false);
+                this->chFarNode_ = this->getNode()->createChildSceneNode(this->getName() + "far", Vector3(200.0, 0.0, 0.0));
+                this->chFarNode_->setInheritScale(false);
+
+                this->chNearNode_->attachObject(this->crosshairNear_.getBillboardSet());
+                this->chNearNode_->setScale(0.2, 0.2, 0.2);
+
+                this->chFarNode_->attachObject(this->crosshairFar_.getBillboardSet());
+                this->chFarNode_->setScale(0.4, 0.4, 0.4);
+                // END of testing crosshair
+            }
         }
 
@@ -414,24 +418,27 @@
             this->cam_->tick(dt);
 
-        if (this->smoke_)
-            this->smoke_->setVisible(this->isVisible() && this->health_ < 40);
-        if (this->fire_)
-            this->fire_->setVisible(this->isVisible() && this->health_ < 20);
-
-        if (this->backlight_)
-        {   // (there's already fire ||                 we're to slow                 ||                  we're moving backwards                  )
-            if (this->health_ < 20   || this->getVelocity().squaredLength() < 150*150 || this->getVelocity().dotProduct(this->getInitialDir()) < 0)
-                this->backlight_->setActive(false);
-            else
-                this->backlight_->setActive(true);
-        }
-
-        if (this->redNode_ && this->greenNode_)
-        {
-            this->blinkTime_ += dt;
-            float redScale = 0.15 + 0.15 * sin(this->blinkTime_ * 10.0);
-            float greenScale = 0.15 - 0.15 * sin(this->blinkTime_ * 10.0);
-            this->redNode_->setScale(redScale, redScale, redScale);
-            this->greenNode_->setScale(greenScale, greenScale, greenScale);
+        if (Settings::showsGraphics())
+        {
+            if (this->smoke_)
+                this->smoke_->setVisible(this->isVisible() && this->health_ < 40);
+            if (this->fire_)
+                this->fire_->setVisible(this->isVisible() && this->health_ < 20);
+
+            if (this->backlight_)
+            {   // (there's already fire ||                 we're to slow                 ||                  we're moving backwards                  )
+                if (this->health_ < 20   || this->getVelocity().squaredLength() < 150*150 || this->getVelocity().dotProduct(this->getInitialDir()) < 0)
+                    this->backlight_->setActive(false);
+                else
+                    this->backlight_->setActive(true);
+            }
+
+            if (this->redNode_ && this->greenNode_)
+            {
+                this->blinkTime_ += dt;
+                float redScale = 0.15 + 0.15 * sin(this->blinkTime_ * 10.0);
+                float greenScale = 0.15 - 0.15 * sin(this->blinkTime_ * 10.0);
+                this->redNode_->setScale(redScale, redScale, redScale);
+                this->greenNode_->setScale(greenScale, greenScale, greenScale);
+            }
         }
 
Index: code/branches/gui/src/orxonox/objects/SpaceShipAI.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/SpaceShipAI.cc	(revision 1691)
+++ code/branches/gui/src/orxonox/objects/SpaceShipAI.cc	(revision 1694)
@@ -39,4 +39,5 @@
 #include "core/XMLPort.h"
 #include "tools/ParticleInterface.h"
+#include "Settings.h"
 
 #define ACTION_INTERVAL 1.0f
@@ -102,7 +103,10 @@
             newenemy->XMLPort(xmlelement, XMLPort::LoadObject);
 
-            ParticleSpawner* spawneffect = new ParticleSpawner("Orxonox/fairytwirl", LODParticle::normal, 2.0, 0, 0, newenemy->getOrth());
-            spawneffect->setPosition(newenemy->getPosition() - newenemy->getOrth() * 50);
-            spawneffect->create();
+            if (Settings::showsGraphics())
+            {
+                ParticleSpawner* spawneffect = new ParticleSpawner("Orxonox/fairytwirl", LODParticle::normal, 2.0, 0, 0, newenemy->getOrth());
+                spawneffect->setPosition(newenemy->getPosition() - newenemy->getOrth() * 50);
+                spawneffect->create();
+            }
         }
     }
@@ -182,33 +186,36 @@
     void SpaceShipAI::kill()
     {
-        ParticleSpawner* explosion = new ParticleSpawner("Orxonox/BigExplosion1part1", LODParticle::low, 3.0);
-        explosion->setPosition(this->getPosition());
-        explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
-        explosion->setScale(4);
-        explosion->create();
-
-        explosion = new ParticleSpawner("Orxonox/BigExplosion1part2", LODParticle::normal, 3.0);
-        explosion->setPosition(this->getPosition());
-        explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
-        explosion->setScale(4);
-        explosion->create();
-        explosion = new ParticleSpawner("Orxonox/BigExplosion1part2", LODParticle::high, 3.0);
-        explosion->setPosition(this->getPosition());
-        explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
-        explosion->setScale(4);
-        explosion->create();
-
-        Vector3 ringdirection = Vector3(rnd(), rnd(), rnd());
-        ringdirection.normalise();
-        explosion = new ParticleSpawner("Orxonox/BigExplosion1part3", LODParticle::normal, 3.0, 0.5, 0, ringdirection);
-        explosion->setPosition(this->getPosition());
-        explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
-        explosion->setScale(4);
-        explosion->create();
-        explosion = new ParticleSpawner("Orxonox/BigExplosion1part3", LODParticle::high, 3.0, 0.5, 0, ringdirection);
-        explosion->setPosition(this->getPosition());
-        explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
-        explosion->setScale(4);
-        explosion->create();
+        if (Settings::showsGraphics())
+        {
+            ParticleSpawner* explosion = new ParticleSpawner("Orxonox/BigExplosion1part1", LODParticle::low, 3.0);
+            explosion->setPosition(this->getPosition());
+            explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
+            explosion->setScale(4);
+            explosion->create();
+
+            explosion = new ParticleSpawner("Orxonox/BigExplosion1part2", LODParticle::normal, 3.0);
+            explosion->setPosition(this->getPosition());
+            explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
+            explosion->setScale(4);
+            explosion->create();
+            explosion = new ParticleSpawner("Orxonox/BigExplosion1part2", LODParticle::high, 3.0);
+            explosion->setPosition(this->getPosition());
+            explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
+            explosion->setScale(4);
+            explosion->create();
+
+            Vector3 ringdirection = Vector3(rnd(), rnd(), rnd());
+            ringdirection.normalise();
+            explosion = new ParticleSpawner("Orxonox/BigExplosion1part3", LODParticle::normal, 3.0, 0.5, 0, ringdirection);
+            explosion->setPosition(this->getPosition());
+            explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
+            explosion->setScale(4);
+            explosion->create();
+            explosion = new ParticleSpawner("Orxonox/BigExplosion1part3", LODParticle::high, 3.0, 0.5, 0, ringdirection);
+            explosion->setPosition(this->getPosition());
+            explosion->getParticleInterface()->setKeepParticlesInLocalSpace(true);
+            explosion->setScale(4);
+            explosion->create();
+        }
 
         delete this;
Index: code/branches/gui/src/orxonox/tools/Mesh.cc
===================================================================
--- code/branches/gui/src/orxonox/tools/Mesh.cc	(revision 1691)
+++ code/branches/gui/src/orxonox/tools/Mesh.cc	(revision 1694)
@@ -31,8 +31,7 @@
 
 #include <sstream>
-
 #include <OgreSceneManager.h>
-
 #include "GraphicsEngine.h"
+#include "Settings.h"
 
 namespace orxonox
@@ -49,10 +48,11 @@
         std::ostringstream name;
         name << (Mesh::meshCounter_s++);
-        this->entity_ = GraphicsEngine::getInstance().getLevelSceneManager()->createEntity("Mesh" + name.str(), file);
+        if (Settings::showsGraphics())
+            this->entity_ = GraphicsEngine::getInstance().getLevelSceneManager()->createEntity("Mesh" + name.str(), file);
     }
 
     Mesh::~Mesh()
     {
-        if (this->entity_)
+        if (this->entity_ && Settings::showsGraphics())
             GraphicsEngine::getInstance().getLevelSceneManager()->destroyEntity(this->entity_);
     }
