Index: /code/branches/Asteroid_HS17/data/levels/Asteroids2D.oxw
===================================================================
--- /code/branches/Asteroid_HS17/data/levels/Asteroids2D.oxw	(revision 11607)
+++ /code/branches/Asteroid_HS17/data/levels/Asteroids2D.oxw	(revision 11608)
@@ -6,6 +6,4 @@
 />
 
-
-<!--wird immer gebraucht-->
 <?lua
   include("stats.oxo")
@@ -13,14 +11,14 @@
 ?>
 
-
 <?lua
-  include ("overlays/HUDTemplates3.oxo")
+  include("templates/spaceshipAssff2.oxt")
+  include("templates/spaceshipPirate.oxt")
   include("templates/spaceshipAsteroids2D.oxt")
+  include("templates/enemyInvader.oxt")
+  include("overlays/Asteroids2DHUD.oxo")
 ?>
 
-<!--Templates schreiben oder von spaceship kopieren-->
-
 <Level
-  plugin = asteroids2D
+  plugins = asteroids2D
   gametype = Asteroids2D
 >
@@ -30,24 +28,25 @@
   <?lua include("includes/notifications.oxi") ?>
 
-    <!-- ambientlight = "0.8, 0.8, 0.8"
-    skybox       = "Orxonox/Starbox" 
-    WorldRange lieber im src einschraenken-->
   <Scene
-    ambientlight = "0.8, 0.7, 0.4"
-    skybox     = "Orxonox/skyBoxBasic"
+    ambientlight = "1.0, 1.0, 1.0"
+    skybox       = "Orxonox/Starbox"
+    negativeWorldRange = "-100000, -100000, -100000"
+    positiveWorldRange = " 100000,  100000,  100000"
   >
+
+  <WorldAmbientSound
+    source="Earth.ogg"
+    looping="true"
+    playOnLoad="true"
+  />
+
+    <!-- <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/> -->
+    <Light type=directional position="-100, 10000, -700" lookat="0.2, -1, 0" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
+    <SpawnPoint team=0 position="0,0,0" lookat="0,0,0" spawnclass= Asteroids2DShip pawndesign=spaceshipasteroids2d />
+
+    <Model mesh="axes.mesh" scale=10 position="0,0,0" />
+    <Asteroids2DCenterPoint name=asteroids2Dcenter />
   
-    <!-- <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/> -->
-    <Light type=directional position="1100, 11000, -7000" lookat="0, 0, 0" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
-
-    <SpawnPoint team=0 position="0,0,0" lookat="0,0,0" spawnclass=Asteroids2DShip pawndesign=spaceshipasteroids2D/>
-  
-    <Asteroids2DCenterPoint name=asteroids2Dcenter />
-
-    <Model mesh="axes.mesh" scale=10 position="0,0,-100" />
-    
     
   </Scene>
 </Level>
-
-
Index: /code/branches/Asteroid_HS17/data/levels/MiniGameTest.oxw
===================================================================
--- /code/branches/Asteroid_HS17/data/levels/MiniGameTest.oxw	(revision 11607)
+++ /code/branches/Asteroid_HS17/data/levels/MiniGameTest.oxw	(revision 11608)
@@ -15,6 +15,5 @@
   include("templates/spaceshipMiniGameTest.oxt")
   include("templates/enemyInvader.oxt")
-  include("templates/DodgeRacePattern.oxt")
-  include("overlays/DodgeRaceHUD.oxo")
+  include("overlays/MiniGameTestHUD.oxo")
 ?>
 
@@ -30,5 +29,5 @@
   <Scene
     ambientlight = "1.0, 1.0, 1.0"
-    skybox       = "Orxonox/skyBoxClouds"
+    skybox       = "Orxonox/Starbox"
     negativeWorldRange = "-100000, -100000, -100000"
     positiveWorldRange = " 100000,  100000,  100000"
@@ -43,5 +42,7 @@
     <!-- <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/> -->
     <Light type=directional position="-100, 10000, -700" lookat="0.2, -1, 0" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
-    <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass= MiniGameTestShip pawndesign=spaceshipdodgerace />
+    <SpawnPoint team=0 position="0,0,0" lookat="0,0,0" spawnclass= MiniGameTestShip pawndesign=spaceshipminigametest />
+
+    <Model mesh="axes.mesh" scale=10 position="0,0,0" />
 
     <DistanceTrigger name="start" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=0 />
@@ -50,14 +51,5 @@
     <MiniGameTestCenterPoint name=invadercenter />
   
-  <StaticEntity position="0,-50,0" direction="0,0,0"   scale="1" collisionType=static mass=1 friction=0.01 >
-      <attached>
-        <Model position="0,0,0" mesh="plane.mesh" scale3D="100000,0,100000" />
-      </attached>
 
-      <collisionShapes>
-        <BoxCollisionShape position="0,0,0" halfExtents="1,1,1" />
-      </collisionShapes>
-
-  </StaticEntity>
     
   
Index: /code/branches/Asteroid_HS17/data/levels/templates/spaceshipAsteroids2D.oxt
===================================================================
--- /code/branches/Asteroid_HS17/data/levels/templates/spaceshipAsteroids2D.oxt	(revision 11607)
+++ /code/branches/Asteroid_HS17/data/levels/templates/spaceshipAsteroids2D.oxt	(revision 11608)
@@ -1,18 +1,18 @@
-<Template name=spaceshipasteroids2D>
-  <SpaceShip
+<Template name=spaceshipasteroids2d>
+  <Asteroids2DShip
    hudtemplate            = spaceshiphud
    camerapositiontemplate = spaceshipescortcameras
    spawnparticlesource    = "Orxonox/fairytwirl"
    spawnparticleduration  = 3
-   explosionchunks        = 10
+   explosionchunks        = 4
 
-   health            = 80
-   maxhealth         = 200
-   initialhealth     = 80
+   health            = 40
+   maxhealth         = 40
+   initialhealth     = 40
 
-   shieldhealth        = 35
-   initialshieldhealth = 35
-   maxshieldhealth     = 60
-   shieldabsorption    = 0.9
+   shieldhealth        = 20
+   initialshieldhealth = 20
+   maxshieldhealth     = 20
+   shieldabsorption    = 0.1
    shieldrechargerate  = 1
    shieldrechargewaittime = 1
@@ -34,11 +34,15 @@
 
    collisionType     = "dynamic"
-   mass              = 80
-   linearDamping     = 0.7
+   mass              = 4200000
+   linearDamping     = 0.9999999
    angularDamping    = 0.9999999
+
+   collisiondamage = 100
+   enablecollisiondamage = true
+   
   >
     <engines>
-      <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipescortengine />
-      <MultiStateEngine position="-7.6, 0, 0" template=spaceshipescortengine />
+      <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipinvaderengine />
+      <MultiStateEngine position="-7.6, 0, 0" template=spaceshipinvaderengine />
     </engines>
     <attached>
@@ -56,34 +60,38 @@
       <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
     </collisionShapes>
-    <explosion>
+    <explosion >
       <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
       <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
       <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
 
-      <ExplosionPart mesh="explosionparts/escort_part_1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
-      <ExplosionPart mesh="explosionparts/escort_part_2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
-      <ExplosionPart mesh="explosionparts/escort_part_3.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
-      <ExplosionPart mesh="explosionparts/escort_part_4.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
-      <ExplosionPart mesh="explosionparts/escort_part_5.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
-      <ExplosionPart mesh="explosionparts/escort_part_6.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     </explosion>
 <?lua
-  include("../includes/weaponSettingsEscort.oxi")
+  include("../includes/invaderWeapon.oxi")
 ?>
-  </SpaceShip>
+  </Asteroids2DShip>
 </Template>
 
 <Template name=spaceshipescortcameras defaults=0>
-  <SpaceShip>
+  <Asteroids2DShip>
     <camerapositions>
-      <CameraPosition position="0,600,0" pitch=-90 absolute=true />
-      <CameraPosition position="0,50,160" drag=true mouselook=false />
-      <CameraPosition position="0,40,125" drag=true mouselook=false/>
-      <CameraPosition position="0,30, 90" drag=true mouselook=false/>
+    <!--<CameraPosition position="0,100,180" direction="0, -0.2, -1" drag=false mouselook=true />
+    <CameraPosition position="0,200,250" direction="0, -0.4, -1" drag=false mouselook=true />
+    <CameraPosition position="0,30,150" direction="0, 0, -1" drag=false mouselook=true />
+    <CameraPosition position="0,1300,-100" direction="0, -1, 0" drag=false mouselook=true />
+-->
+    <CameraPosition position="0,600,0" pitch=-90 absolute=true />
+    <CameraPosition position="0,50,160" drag=true mouselook=true />
+    <CameraPosition position="0,40,125" drag=true mouselook=true />
+    <CameraPosition position="0,30, 90" drag=true mouselook=true />
     </camerapositions>
-  </SpaceShip>
+  </Asteroids2DShip>
 </Template>
 
-<Template name=spaceshipescortengine baseclass=MultiStateEngine>
+<Template name=spaceshipinvaderengine baseclass=MultiStateEngine>
   <MultiStateEngine
    boostfactor    = 2.2
@@ -105,7 +113,4 @@
     <EffectContainer condition="idle">
       <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
-       />
-      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, -2, 14" colour="0.2, 0.5, 0.65, 1.0" width=150 length=15 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=2 turnofftime=1 material="Flares/ThrusterFlare1" />
-      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, -2, 14" colour="0.2, 0.5, 0.65, 1.0" width=15 length=15 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=2 turnofftime=1 material="Flares/ThrusterFlare1" />
     </EffectContainer>
     <EffectContainer condition="not idle">
@@ -117,8 +122,7 @@
     </EffectContainer>
     <EffectContainer condition="normal or boost">
-      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, -2, 14" colour="0.2, 1.0, 0.65, 1.0" width=5 length=1500 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
-      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, -2, 14" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
     </EffectContainer>
-
     <EffectContainer condition="boost">
       <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
Index: /code/branches/Asteroid_HS17/data/levels/templates/spaceshipMiniGameTest.oxt
===================================================================
--- /code/branches/Asteroid_HS17/data/levels/templates/spaceshipMiniGameTest.oxt	(revision 11607)
+++ /code/branches/Asteroid_HS17/data/levels/templates/spaceshipMiniGameTest.oxt	(revision 11608)
@@ -1,3 +1,3 @@
-<Template name=spaceshipdodgerace>
+<Template name=spaceshipminigametest>
   <MiniGameTestShip
    hudtemplate            = spaceshiphud
@@ -80,8 +80,13 @@
   <MiniGameTestShip>
     <camerapositions>
-		<CameraPosition position="0,100,180" direction="0, -0.2, -1" drag=false mouselook=true />
-		<CameraPosition position="0,200,250" direction="0, -0.4, -1" drag=false mouselook=true />
-		<CameraPosition position="0,30,150" direction="0, 0, -1" drag=false mouselook=true />
-		<CameraPosition position="0,1300,-100" direction="0, -1, 0" drag=false mouselook=true />
+    <!--<CameraPosition position="0,100,180" direction="0, -0.2, -1" drag=false mouselook=true />
+    <CameraPosition position="0,200,250" direction="0, -0.4, -1" drag=false mouselook=true />
+    <CameraPosition position="0,30,150" direction="0, 0, -1" drag=false mouselook=true />
+    <CameraPosition position="0,1300,-100" direction="0, -1, 0" drag=false mouselook=true />
+-->
+    <CameraPosition position="0,600,0" pitch=-90 absolute=true />
+    <CameraPosition position="0,50,160" drag=true mouselook=true />
+    <CameraPosition position="0,40,125" drag=true mouselook=true />
+    <CameraPosition position="0,30, 90" drag=true mouselook=true />
     </camerapositions>
   </MiniGameTestShip>
Index: /code/branches/Asteroid_HS17/data/overlays/Asteroids2DHUD.oxo
===================================================================
--- /code/branches/Asteroid_HS17/data/overlays/Asteroids2DHUD.oxo	(revision 11608)
+++ /code/branches/Asteroid_HS17/data/overlays/Asteroids2DHUD.oxo	(revision 11608)
@@ -0,0 +1,38 @@
+<Template name="spectatorhud">
+  <OverlayGroup name = "spectatorhud" scale = "1, 1">
+  </OverlayGroup>
+</Template>
+
+<Template name="Asteroids2DHUD">
+  <OverlayGroup name="Asteroids2DHUD" scale = "1, 1">
+
+    <OverlayText
+     position  = "0.02, 0.02"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+     caption   = "Points: "
+    />
+
+    <Asteroids2DHUDinfo
+     position  = "0.14, 0.02"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+
+     showpoints     = true
+    />
+
+    
+  </OverlayGroup>
+</Template>
+
+<Template name="spaceshiphud">
+  <OverlayGroup name = "spaceshiphud" scale = "1, 1">
+    
+ </OverlayGroup>
+</Template>
Index: /code/branches/Asteroid_HS17/data/overlays/MiniGameTestHUD.oxo
===================================================================
--- /code/branches/Asteroid_HS17/data/overlays/MiniGameTestHUD.oxo	(revision 11608)
+++ /code/branches/Asteroid_HS17/data/overlays/MiniGameTestHUD.oxo	(revision 11608)
@@ -0,0 +1,38 @@
+<Template name="spectatorhud">
+  <OverlayGroup name = "spectatorhud" scale = "1, 1">
+  </OverlayGroup>
+</Template>
+
+<Template name="MiniGameTestHUD">
+  <OverlayGroup name="MiniGameTestHUD" scale = "1, 1">
+
+    <OverlayText
+     position  = "0.02, 0.02"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+     caption   = "Points: "
+    />
+
+    <MiniGameTestHUDinfo
+     position  = "0.14, 0.02"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+
+     showpoints     = true
+    />
+
+    
+  </OverlayGroup>
+</Template>
+
+<Template name="spaceshiphud">
+  <OverlayGroup name = "spaceshiphud" scale = "1, 1">
+    
+ </OverlayGroup>
+</Template>
Index: /code/branches/Asteroid_HS17/src/modules/CMakeLists.txt
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/CMakeLists.txt	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/CMakeLists.txt	(revision 11608)
@@ -47,2 +47,3 @@
 ADD_SUBDIRECTORY(superorxobros)
 ADD_SUBDIRECTORY(minigametest)
+ADD_SUBDIRECTORY(asteroids2D)
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2D.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2D.cc	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2D.cc	(revision 11608)
@@ -35,5 +35,5 @@
 #include "Asteroids2DShip.h" // Necessary for getPlayer function. Do NOT include this in Header!
 #include "core/CoreIncludes.h"
-
+#include "Highscore.h"
 
 namespace orxonox
@@ -44,11 +44,48 @@
     {
         RegisterObject(Asteroids2D);
-        this->bEndGame = false;
 
+        bEndGame = false;
+        lives = 1;
+        level = 1;
+        point = 0;
+        bShowLevel = false;
+        multiplier = 1;
+        b_combo = false;
+        counter = 5000;
+        pattern = 1;
+        lastPosition = 0;
+        // spawn enemy every 3.5 seconds
+        //enemySpawnTimer.setTimer(3.5f, true, createExecutor(createFunctor(&Asteroids2D::spawnEnemy, this)));
+        this->numberOfBots_ = 0; //sets number of default bots temporarly to 0
+        this->center_ = nullptr;
+        this->setHUDTemplate("Asteroids2DHUD");
+    }
+
+    void Asteroids2D::levelUp()
+    {
+        level++;
+        if (getPlayer() != nullptr)
+        {
+            for (int i = 0; i < 7; i++)
+            {
+                WeakPtr<ExplosionPart> chunk5 = new ExplosionPart(this->center_->getContext());
+                chunk5->setPosition(Vector3(600, 0, 100.f * i - 300));
+                chunk5->setVelocity(Vector3(1000, 0, 0));  //player->getVelocity()
+                chunk5->setScale(10);
+                chunk5->setEffect1("Orxonox/explosion2b");
+                chunk5->setEffect2("Orxonox/smoke6");
+                chunk5->Explode();
+
+            }
+        }
+        addPoints(multiplier * 42);
+        multiplier *= 2;
+        toggleShowLevel();
+        showLevelTimer.setTimer(1.0f, false, createExecutor(createFunctor(&Asteroids2D::toggleShowLevel, this)));
     }
 
     void Asteroids2D::tick(float dt)
     {
-
+        
         SUPER(Asteroids2D, tick, dt);
     }
@@ -66,8 +103,14 @@
     }
 
+    void Asteroids2D::costLife()
+    {
+        //endGameTimer.setTimer(8.0f, false, createExecutor(createFunctor(&Asteroids2D::end, this)));
+        lives = 0;
+    };
+
     void Asteroids2D::start()
     {
         orxout() << "start" << endl;
-        
+
         // Set variable to temporarily force the player to spawn.
         this->bForceSpawn_ = false;
@@ -83,4 +126,21 @@
     }
 
+    void Asteroids2D::playerPreSpawn(PlayerInfo* player)
+    {
+        if(lives <= 0)
+        {
+            this->end();
+        }
+    }
+
+    void Asteroids2D::addPoints(int numPoints)
+    {
+        if (!bEndGame)
+        {
+            point += numPoints * multiplier;
+            b_combo = true;
+        }
+    }
+
     void Asteroids2D::end()
     {
@@ -89,5 +149,10 @@
         // It will misteriously crash the game!
         // Instead startMainMenu, this won't crash.
-        orxout() << "Asteroids2D Game has ended" << endl;
+        if (Highscore::exists()){
+                    int score = this->getPoints();
+                    if(score > Highscore::getInstance().getHighestScoreOfGame("Dodge Race")) 
+                        Highscore::getInstance().storeHighscore("Dodge Race",score);
+
+          }
         GSLevel::startMainMenu();
     }
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2D.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2D.h	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2D.h	(revision 11608)
@@ -50,5 +50,5 @@
 #include "gamestates/GSLevel.h"
 #include "chat/ChatManager.h"
-
+#include <vector>
 
 // ! HACK
@@ -58,4 +58,5 @@
 
 #include "gametypes/Deathmatch.h"
+#include "tools/Timer.h"
 
 namespace orxonox
@@ -69,18 +70,49 @@
             virtual void start() override;
             virtual void end() override;
+
             virtual void tick(float dt) override;
+
+            virtual void playerPreSpawn(PlayerInfo* player) override;
+
+            void levelUp();
+
+            int getLives(){return this->lives;}
+            int getLevel(){return this->level;}
+            int getPoints(){return this->point;}
+            int getMultiplier(){return this->multiplier;}
 
             void setCenterpoint(Asteroids2DCenterPoint* center)
                        { this->center_ = center; }
+            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
 
-            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
+            // checks if multiplier should be reset.
+            void costLife();
+
             bool bEndGame;
+            bool bShowLevel;
+            int lives;
+            int multiplier;
+            float counter;
+            int pattern;
+            float currentPosition;
+            float lastPosition;
 
        private:
-
+            Timer endGameTimer;
 
             Asteroids2DShip* getPlayer();
             WeakPtr<Asteroids2DShip> player;
+            std::vector<Asteroids2DCube*> cubeList;
+            void toggleShowLevel(){bShowLevel = !bShowLevel;}
+            void addPoints(int numPoints);
+
             WeakPtr<Asteroids2DCenterPoint> center_;
+            int level;
+            int point;
+            bool b_combo;
+
+            Timer enemySpawnTimer;
+            Timer comboTimer;
+            Timer showLevelTimer;
 
 
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DCenterPoint.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DCenterPoint.cc	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DCenterPoint.cc	(revision 11608)
@@ -35,4 +35,5 @@
 
 #include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
 
 #include "Asteroids2D.h"
@@ -47,6 +48,17 @@
 
         this->checkGametype();
+        this->width_ = 200;
+        this->height_ = 120;
     }
+    /**
+    @brief
+        Method to create a Asteroids2DCenterpoint through XML.
+    */
+    void Asteroids2DCenterPoint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Asteroids2DCenterPoint, XMLPort, xmlelement, mode);
 
+        XMLPortParam(Asteroids2DCenterPoint, "dimension", setFieldDimension, getFieldDimension, xmlelement, mode);
+    }
     void Asteroids2DCenterPoint::checkGametype()
     {
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DCenterPoint.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DCenterPoint.h	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DCenterPoint.h	(revision 11608)
@@ -49,7 +49,21 @@
         public:
             Asteroids2DCenterPoint(Context* context); //checks whether the gametype is actually Asteroids2D.
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override; //!< Method to create a PongCenterpoint through XML.
+            /**
+            @brief Set the dimensions of the playing field.
+            @param dimension A vector with the width of the playing field as first component and the height as second.
+            */
+            void setFieldDimension(const Vector2& dimension)
+                { this->width_ = dimension.x; this->height_ = dimension.y; }
+            /**
+            @brief Get the dimensions of the playing field.
+            @return Returns a vector with the width of the playing field as first component and the height as second.
+            */
+            Vector2 getFieldDimension() const
+                { return Vector2(this->width_, this->height_); }
 
         private:
             void checkGametype();
+            float width_, height_;
 
     };
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DHUDinfo.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DHUDinfo.cc	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DHUDinfo.cc	(revision 11608)
@@ -25,39 +25,39 @@
  */
 
-#include "DodgeRaceHUDinfo.h"
+#include "Asteroids2DHUDinfo.h"
 
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 #include "util/Convert.h"
-//#include "DodgeRace.h"
+//#include "Asteroids2D.h"
 
 namespace orxonox
 {
-    RegisterClass(DodgeRaceHUDinfo);
+    RegisterClass(Asteroids2DHUDinfo);
 
-    DodgeRaceHUDinfo::DodgeRaceHUDinfo(Context* context) : OverlayText(context)
+    Asteroids2DHUDinfo::Asteroids2DHUDinfo(Context* context) : OverlayText(context)
     {
-        RegisterObject(DodgeRaceHUDinfo);
+        RegisterObject(Asteroids2DHUDinfo);
 
-        this->DodgeRaceGame = nullptr;
+        this->Asteroids2DGame = nullptr;
         this->bShowPoints_ = true;
     }
 
-    void DodgeRaceHUDinfo::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    void Asteroids2DHUDinfo::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
-        SUPER(DodgeRaceHUDinfo, XMLPort, xmlelement, mode);
+        SUPER(Asteroids2DHUDinfo, XMLPort, xmlelement, mode);
 
-        XMLPortParam(DodgeRaceHUDinfo,"showPoints", setShowPoints, getShowPoints, xmlelement, mode).defaultValues(false);
+        XMLPortParam(Asteroids2DHUDinfo,"showPoints", setShowPoints, getShowPoints, xmlelement, mode).defaultValues(false);
     }
 
-    void DodgeRaceHUDinfo::tick(float dt)
+    void Asteroids2DHUDinfo::tick(float dt)
     {
-        SUPER(DodgeRaceHUDinfo, tick, dt);
+        SUPER(Asteroids2DHUDinfo, tick, dt);
 
 
         if(this->bShowPoints_)
         {
-            const std::string& points = multi_cast<std::string>(this->DodgeRaceGame->getPoints());
-            if (this->DodgeRaceGame->lives <= 0)
+            const std::string& points = multi_cast<std::string>(this->Asteroids2DGame->getPoints());
+            if (this->Asteroids2DGame->lives <= 0)
             {
                 setTextSize(0.2);
@@ -76,15 +76,15 @@
     }
 
-    void DodgeRaceHUDinfo::changedOwner()
+    void Asteroids2DHUDinfo::changedOwner()
     {
-        SUPER(DodgeRaceHUDinfo, changedOwner);
+        SUPER(Asteroids2DHUDinfo, changedOwner);
 
         if (this->getOwner() && this->getOwner()->getGametype())
         {
-            this->DodgeRaceGame = orxonox_cast<DodgeRace*>(this->getOwner()->getGametype());
+            this->Asteroids2DGame = orxonox_cast<Asteroids2D*>(this->getOwner()->getGametype());
         }
         else
         {
-            this->DodgeRaceGame = nullptr;
+            this->Asteroids2DGame = nullptr;
         }
     }
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.cc	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.cc	(revision 11608)
@@ -55,61 +55,30 @@
     void Asteroids2DShip::tick(float dt)
     {
-        Vector3 pos = getPosition();
-
-        //Movement calculation
-        lastTimeFront += dt * damping;
-        lastTimeLeft += dt * damping;
-        lastTime += dt;
-
-        velocity.x = interpolate(clamp(lastTimeLeft, 0.0f, 1.0f), desiredVelocity.x, 0.0f);
-        velocity.y = interpolate(clamp(lastTimeFront, 0.0f, 1.0f), desiredVelocity.y, 0.0f);
-
-        //Execute movement
-        if (this->hasLocalController())
-        {
-            float dist_y = velocity.y * dt;
-            //float dist_x = velocity.x * dt;
-            if(dist_y + posforeward > -42*3 && dist_y + posforeward < 42*6)
-                posforeward += dist_y;
-            else
-            {
-                velocity.y = 0;
-                // restart if game ended
-/*
-                if (getGame())
-                    if (getGame()->bEndGame)
-                    {
-                        getGame()->start();
-                        return;
-                    }*/
-            }
-
-            pos += Vector3(1000 + velocity.y, 0, velocity.x) * dt;
-        }
-
-        // bring back on track!
-        if(pos.y != 0)
-        {
-            pos.y = 0;
-        }
-
-        setPosition(pos);
-        setOrientation(Vector3::UNIT_Y, Degree(270));
-
         SUPER(Asteroids2DShip, tick, dt);
     }
 
-    void Asteroids2DShip::moveFrontBack(const Vector2& value)
+    void Asteroids2DShip::updateLevel()
+    {
+        lastTime = 0;
+        if (getGame())
+            getGame()->levelUp();
+    }
+
+/*    void Asteroids2DShip::moveFrontBack(const Vector2& value)
     {
         //lastTimeFront = 0;
         //desiredVelocity.y = value.y * speed * 42;
-
+        orxout() << "FrontBack" << endl;
+        SUPER(Asteroids2DShip, moveFrontBack, value);
     }
 
     void Asteroids2DShip::moveRightLeft(const Vector2& value)
     {
-        lastTimeLeft = 0;
-        desiredVelocity.x = value.x * speed;
+        //lastTimeLeft = 0;
+        //desiredVelocity.x = value.x * speed;
+        orxout() << "RightLeft" << endl;
+        SUPER(Asteroids2DShip, moveFrontBack, value);       
     }
+ */
     void Asteroids2DShip::boost(bool bBoost)
     {
@@ -139,5 +108,5 @@
     void Asteroids2DShip::death()
     {
-        //getGame()->costLife();
+        getGame()->costLife();
         SpaceShip::death();
     }
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.h	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.h	(revision 11608)
@@ -55,6 +55,6 @@
 
             // overwrite for 2d movement
-            virtual void moveFrontBack(const Vector2& value) override;
-            virtual void moveRightLeft(const Vector2& value) override;
+            //virtual void moveFrontBack(const Vector2& value) override;
+            //virtual void moveRightLeft(const Vector2& value) override;
 
             // Starts or stops fireing
@@ -62,8 +62,11 @@
 
             //no rotation!
+            virtual void rotateYaw(const Vector2& value) override{};
             virtual void rotatePitch(const Vector2& value) override{};
 
             //return to main menu if game has ended.
             virtual void rotateRoll(const Vector2& value) override{if (getGame()) if (getGame()->bEndGame) getGame()->end();};
+
+            virtual void updateLevel();
 
             virtual inline bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
Index: /code/branches/Asteroid_HS17/src/modules/asteroids2D/CMakeLists.txt
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids2D/CMakeLists.txt	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids2D/CMakeLists.txt	(revision 11608)
@@ -1,6 +1,8 @@
-SET_SOURCE_FILES(Asteroids2D_SRC_FILES
+SET_SOURCE_FILES(MINIGAMESTEST_SRC_FILES
 Asteroids2D.cc
 Asteroids2DCenterPoint.cc
 Asteroids2DShip.cc
+Asteroids2DCube.cc
+Asteroids2DHUDinfo.cc
 )
 
@@ -11,4 +13,4 @@
     orxonox
     overlays
-  SOURCE_FILES ${ASTEROIDS2D_SRC_FILES}
+  SOURCE_FILES ${MINIGAMESTEST_SRC_FILES}
 )
Index: /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTest.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTest.cc	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTest.cc	(revision 11608)
@@ -34,5 +34,4 @@
 #include "MiniGameTest.h"
 #include "MiniGameTestShip.h" // Necessary for getPlayer function. Do NOT include this in Header!
-#include "MiniGameTestCube.h"
 #include "core/CoreIncludes.h"
 #include "Highscore.h"
@@ -58,8 +57,6 @@
         // spawn enemy every 3.5 seconds
         //enemySpawnTimer.setTimer(3.5f, true, createExecutor(createFunctor(&MiniGameTest::spawnEnemy, this)));
-        comboTimer.setTimer(3.0f, true, createExecutor(createFunctor(&MiniGameTest::comboControll, this)));
         this->numberOfBots_ = 0; //sets number of default bots temporarly to 0
         this->center_ = nullptr;
-
         this->setHUDTemplate("MiniGameTestHUD");
     }
@@ -90,48 +87,5 @@
     void MiniGameTest::tick(float dt)
     {
-        if (getPlayer() != nullptr)
-        {
-            currentPosition = getPlayer()->getWorldPosition().x;
-            counter = counter + (currentPosition - lastPosition);
-            lastPosition = currentPosition;
-            point = (int) currentPosition;
-            getPlayer()->speed = 830.0f - (point / 1000);
-
-            for(unsigned int i=0; i < cubeList.size();i++)
-            {
-                if(cubeList.at(i)->getPosition().x < currentPosition-3000)
-                {
-                    cubeList.at(i)->destroy();
-                    cubeList.erase(cubeList.begin()+i);
-                }
-            }
-
-            if(counter >= 3000)
-            {
-                counter = 0;
-                for(int i = 0; i<6; i++)
-                {
-                    MiniGameTestCube* cube = new MiniGameTestCube(this->center_->getContext());
-                    cubeList.push_back(cube);
-                    switch(pattern)
-                    {
-                    case 1: cube->addTemplate("MiniGameTestCube01");
-                    break;
-                    case 2: cube->addTemplate("MiniGameTestCube02");
-                    break;
-
-                    }
-
-                    cube->setPosition(getPlayer()->getWorldPosition() + Vector3(5000.0f, 0.0f, -3600.0f + (i*1200)));
-                    //stEntity->setScale3D(50,50,50);
-                }
-
-
-                pattern %= 2;
-                pattern ++;
-
-            }
-
-        }
+        
         SUPER(MiniGameTest, tick, dt);
     }
@@ -155,24 +109,8 @@
     };
 
-    void MiniGameTest::comboControll()
-    {
-        if (b_combo)
-            multiplier++;
-        // if no combo was performed before, reset multiplier
-        else
-            multiplier = 1;
-        b_combo = false;
-    }
-
     void MiniGameTest::start()
     {
         orxout() << "start" << endl;
-        for(unsigned int i=0; i< cubeList.size();i++)
-        {
-            cubeList.at(i)->destroy();
-            cubeList.erase(cubeList.begin()+i);
 
-        }
-        cubeList.clear();
         // Set variable to temporarily force the player to spawn.
         this->bForceSpawn_ = false;
@@ -194,18 +132,4 @@
             this->end();
         }
-
-        // Reset all the cubes
-        /*
-        orxout() << "prespawn" << endl;
-        for(int i=0; i< cubeList.size();i++)
-        {
-            cubeList.at(i)->destroy();
-            cubeList.erase(cubeList.begin()+i);
-        }
-        cubeList.clear();
-        lives = 1;
-        point = 0;
-        lastPosition = 0;
-        */
     }
 
Index: /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTest.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTest.h	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTest.h	(revision 11608)
@@ -87,5 +87,4 @@
 
             // checks if multiplier should be reset.
-            void comboControll();
             void costLife();
 
Index: /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTestShip.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTestShip.cc	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTestShip.cc	(revision 11608)
@@ -55,64 +55,4 @@
     void MiniGameTestShip::tick(float dt)
     {
-        Vector3 pos = getPosition();
-
-        //Movement calculation
-        lastTimeFront += dt * damping;
-        lastTimeLeft += dt * damping;
-        lastTime += dt;
-
-        velocity.x = interpolate(clamp(lastTimeLeft, 0.0f, 1.0f), desiredVelocity.x, 0.0f);
-        velocity.y = interpolate(clamp(lastTimeFront, 0.0f, 1.0f), desiredVelocity.y, 0.0f);
-
-        //Execute movement
-        if (this->hasLocalController())
-        {
-            float dist_y = velocity.y * dt;
-            //float dist_x = velocity.x * dt;
-            if(dist_y + posforeward > -42*3 && dist_y + posforeward < 42*6)
-                posforeward += dist_y;
-            else
-            {
-                velocity.y = 0;
-                // restart if game ended
-/*
-                if (getGame())
-                    if (getGame()->bEndGame)
-                    {
-                        getGame()->start();
-                        return;
-                    }*/
-            }
-
-            pos += Vector3(1000 + velocity.y, 0, velocity.x) * dt;
-        }
-
-
-        // Camera
-        Camera* camera = this->getCamera();
-        if (camera != nullptr)
-        {
-            // camera->setPosition(Vector3(-pos.z, -posforeward, 0));
-            camera->setOrientation(Vector3::UNIT_Z, Degree(0));
-        }
-
-
-
-        // bring back on track!
-        if(pos.y != 0)
-        {
-            pos.y = 0;
-        }
-
-        setPosition(pos);
-        setOrientation(Vector3::UNIT_Y, Degree(270));
-
-        // Level up!
-        if (pos.x > 42000)
-        {
-            updateLevel();
-            setPosition(Vector3(0, 0, pos.z)); // pos - Vector3(30000, 0, 0)
-        }
-
         SUPER(MiniGameTestShip, tick, dt);
     }
@@ -125,16 +65,20 @@
     }
 
-    void MiniGameTestShip::moveFrontBack(const Vector2& value)
+/*    void MiniGameTestShip::moveFrontBack(const Vector2& value)
     {
         //lastTimeFront = 0;
         //desiredVelocity.y = value.y * speed * 42;
-
+        orxout() << "FrontBack" << endl;
+        SUPER(MiniGameTestShip, moveFrontBack, value);
     }
 
     void MiniGameTestShip::moveRightLeft(const Vector2& value)
     {
-        lastTimeLeft = 0;
-        desiredVelocity.x = value.x * speed;
+        //lastTimeLeft = 0;
+        //desiredVelocity.x = value.x * speed;
+        orxout() << "RightLeft" << endl;
+        SUPER(MiniGameTestShip, moveFrontBack, value);       
     }
+ */
     void MiniGameTestShip::boost(bool bBoost)
     {
Index: /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTestShip.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTestShip.h	(revision 11607)
+++ /code/branches/Asteroid_HS17/src/modules/minigametest/MiniGameTestShip.h	(revision 11608)
@@ -55,6 +55,6 @@
 
             // overwrite for 2d movement
-            virtual void moveFrontBack(const Vector2& value) override;
-            virtual void moveRightLeft(const Vector2& value) override;
+            //virtual void moveFrontBack(const Vector2& value) override;
+            //virtual void moveRightLeft(const Vector2& value) override;
 
             // Starts or stops fireing
@@ -82,5 +82,4 @@
             WeakPtr<MiniGameTest> game;
             WeakPtr<WorldEntity> lastEntity;
-            Camera* camera;
             float lastTimeFront, lastTimeLeft, lastTime;
             struct Velocity
