Index: /code/branches/Presentation_HS17_merge/data/levels/Asteroids2D.oxw
===================================================================
--- /code/branches/Presentation_HS17_merge/data/levels/Asteroids2D.oxw	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/data/levels/Asteroids2D.oxw	(revision 11725)
@@ -0,0 +1,82 @@
+<LevelInfo
+ name = "Asteroids2D"
+ description = "Try to prevent asteroids from colliding into your spaceship. Be prepared to dodge all asteroids or destroy them."
+ tags = "minigame"
+ screenshot = "emptylevel.png"
+/>
+
+<?lua
+  include("stats.oxo")
+  include("templates/lodInformation.oxt")
+?>
+
+<?lua
+  include("templates/spaceshipAssff2.oxt")
+  include("templates/spaceshipPirate.oxt")
+  include("templates/spaceshipAsteroids2D.oxt")
+  include("templates/enemyInvader.oxt")
+  include("overlays/Asteroids2DHUD.oxo")
+  include("templates/asteroidsAsteroids2D.oxt")
+?>
+
+<Level
+  plugins = asteroids2D
+  gametype = Asteroids2D
+>
+  <templates>
+    <Template link=lodtemplate_default />
+  </templates>
+  <?lua include("includes/notifications.oxi") ?>
+
+  <Scene
+    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" /> -->
+
+
+    <!--<?lua
+      for i = 1, 250, 1
+      do
+      j = math.random()
+    ?>
+
+    <MovableEntity
+      position = "<?lua print(math.random()* 15000 - 1000) ?>,<?lua print(math.random() * 12000 - 4000) ?>,<?lua print(math.random() * 12000 - 4000) ?>"
+      collisionType = dynamic
+      linearDamping = 0.8
+      angularDamping = 0
+      scale = "<?lua print(j * 150)?>"
+      collisiondamage = 1
+      enablecollisiondamage = true
+    >
+      <attached>
+        <Model mass="<?lua print(j * 1000) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" />
+      </attached>
+      <collisionShapes>
+        <SphereCollisionShape radius="<?lua print(j * 350) ?>" />
+      </collisionShapes>
+    </MovableEntity>
+
+    <?lua
+      end
+    ?>-->
+
+    <Asteroids2DCenterPoint name=asteroids2Dcenter />
+  
+    
+  </Scene>
+</Level>
Index: /code/branches/Presentation_HS17_merge/data/levels/includes/asteroids2DWeapon.oxi
===================================================================
--- /code/branches/Presentation_HS17_merge/data/levels/includes/asteroids2DWeapon.oxi	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/data/levels/includes/asteroids2DWeapon.oxi	(revision 11725)
@@ -0,0 +1,30 @@
+    <weaponslots>
+      <WeaponSlot position="-9.2,2,-13" />
+      <WeaponSlot position=" 9.2,2,-13" />
+    </weaponslots>
+    <weaponsets>
+      <WeaponSet firemode=0 />
+      <WeaponSet firemode=1 />
+    </weaponsets>
+    <weaponpacks>
+      <WeaponPack>
+        <links>
+          <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+          <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+        </links>
+        <Weapon>
+          <Asteroids2DWeapon mode=0 munitionpershot=0 delay=0.125 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" projectileMesh="laserbeam.mesh" />
+        </Weapon>
+        <Weapon>
+          <Asteroids2DWeapon mode=0 munitionpershot=0 delay=0     damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" projectileMesh="laserbeam.mesh" />
+        </Weapon>
+      </WeaponPack>
+      <WeaponPack>
+        <links>
+          <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
+        </links>
+      </WeaponPack>
+    </weaponpacks>
+    <munition>
+      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=0.5/>
+    </munition>
Index: /code/branches/Presentation_HS17_merge/data/levels/templates/asteroidsAsteroids2D.oxt
===================================================================
--- /code/branches/Presentation_HS17_merge/data/levels/templates/asteroidsAsteroids2D.oxt	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/data/levels/templates/asteroidsAsteroids2D.oxt	(revision 11725)
@@ -0,0 +1,62 @@
+<Template name = stone1>
+  <Asteroids2DStone
+    collisionType = dynamic
+    linearDamping = 0
+    angularDamping = 0
+    scale= 10
+    enablecollisiondamage = true
+
+    health            = 10
+    maxhealth         = 10
+    initialhealth     = 10
+  >
+    <attached>
+      <Model mass= 4000 mesh="ast1.mesh" />
+    </attached>
+    <collisionShapes>
+      <SphereCollisionShape radius="10" />
+    </collisionShapes>
+  </Asteroids2DStone>
+</Template>
+
+<Template name = stone2>
+  <Asteroids2DStone
+    collisionType = dynamic
+    linearDamping = 0
+    angularDamping = 0
+    scale= 20
+    enablecollisiondamage = true
+
+    health            = 10
+    maxhealth         = 10
+    initialhealth     = 10
+  >
+    <attached>
+      <Model mass= 8000 mesh="ast1.mesh" />
+    </attached>
+    <collisionShapes>
+      <SphereCollisionShape radius="20" />
+    </collisionShapes>
+  </Asteroids2DStone>
+</Template>
+
+<Template name = stone3>
+  <Asteroids2DStone
+    collisionType = dynamic
+    linearDamping = 0
+    angularDamping = 0
+    scale= 30
+    enablecollisiondamage = true
+
+    health            = 10
+    maxhealth         = 10
+    initialhealth     = 10
+  >
+    <attached>
+      <Model mass= 16000 mesh="ast1.mesh" />
+    </attached>
+    <collisionShapes>
+      <SphereCollisionShape radius="30" />
+    </collisionShapes>
+  </Asteroids2DStone>
+</Template>
Index: /code/branches/Presentation_HS17_merge/data/levels/templates/spaceshipAsteroids2D.oxt
===================================================================
--- /code/branches/Presentation_HS17_merge/data/levels/templates/spaceshipAsteroids2D.oxt	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/data/levels/templates/spaceshipAsteroids2D.oxt	(revision 11725)
@@ -0,0 +1,137 @@
+<Template name=spaceshipasteroids2d>
+  <Asteroids2DShip
+   hudtemplate            = spaceshiphud
+   camerapositiontemplate = spaceshipescortcameras
+   spawnparticlesource    = "Orxonox/fairytwirl"
+   spawnparticleduration  = 3
+   explosionchunks        = 4
+
+   health            = 10
+   maxhealth         = 10
+   initialhealth     = 10
+
+   shieldhealth        = 20
+   initialshieldhealth = 20
+   maxshieldhealth     = 20
+   shieldabsorption    = 0.1
+   shieldrechargerate  = 1
+   shieldrechargewaittime = 1
+
+   primaryThrust     = 150
+   auxilaryThrust    = 30
+   rotationThrust    = 100
+
+   lift = 1;
+   stallSpeed = 220;
+
+   boostPower            = 20
+   boostPowerRate        = 1
+   boostRate             = 5
+   boostCooldownDuration = 10
+
+   shakeFrequency = 15
+   shakeAmplitude = 6
+
+   collisionType     = "dynamic"
+   mass              = 4200000
+   linearDamping     = 0.9
+   angularDamping    = 0.9999999
+
+   collisiondamage = 100
+   enablecollisiondamage = true
+   
+  >
+    <engines>
+      <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipasteroids2dengine />
+      <MultiStateEngine position="-7.6, 0, 0" template=spaceshipasteroids2dengine />
+    </engines>
+    <attached>
+      <Model position="0,0,0" yaw=90 pitch=0 roll=0 scale=4 mesh="escortShip.mesh" />
+      <Model position="0,0,0" yaw=180 pitch=90 roll=0 scale=4 mesh="escortWeapon.mesh" />
+<!--Model mesh="cube.mesh" mass=10 position="0,0,3" scale3D="10,4,8" />
+<Model mesh="cube.mesh" mass=10 position="12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="-12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="0,0,-12" scale3D="4,4,7" /-->
+    </attached>
+    <collisionShapes>
+      <BoxCollisionShape position="0    ,0 ,  3" halfExtents="10,   4,8" />
+      <BoxCollisionShape position="12.6 ,-2,  3" halfExtents="2.8,2.8,11"/>
+      <BoxCollisionShape position="-12.6,-2,  3" halfExtents="2.8,2.8,11"/>
+      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
+    </collisionShapes>
+    <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 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/asteroids2DWeapon.oxi")
+?>
+  </Asteroids2DShip>
+</Template>
+
+<Template name=spaceshipescortcameras defaults=0>
+  <Asteroids2DShip>
+    <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,600,0" pitch=-90 absolute=true drag = false mouselook=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>
+  </Asteroids2DShip>
+</Template>
+
+<Template name=spaceshipasteroids2dengine baseclass=MultiStateEngine>
+  <MultiStateEngine
+   boostfactor    = 2.2
+
+   speedfront     = 200
+   speedback      = 200
+   speedleftright =  100
+   speedupdown    =  100
+
+   defEngineSndNormal = "sounds/Engine_low.ogg"
+   defEngineSndBoost = "sounds/Engine_high.ogg"
+
+   accelerationfront     = 700
+   accelerationbrake     = 700
+   accelerationback      = 700
+   accelerationleftright =  500
+   accelerationupdown    =  500
+  >
+
+  <!-- backlight error if you fly over the edge
+    <EffectContainer condition="idle">
+      <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+    </EffectContainer>
+    <EffectContainer condition="not idle">
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="-12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+    </EffectContainer>
+    <EffectContainer condition="normal or brake">
+
+    </EffectContainer>
+    <EffectContainer condition="normal or boost">
+      <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" />
+      <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" />
+    </EffectContainer>
+
+  -->
+
+  </MultiStateEngine>
+</Template>
Index: /code/branches/Presentation_HS17_merge/data/overlays/Asteroids2DHUD.oxo
===================================================================
--- /code/branches/Presentation_HS17_merge/data/overlays/Asteroids2DHUD.oxo	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/data/overlays/Asteroids2DHUD.oxo	(revision 11725)
@@ -0,0 +1,84 @@
+<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.1"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+     caption   = "Lives:   "
+    />
+
+    <Asteroids2DHUDinfo
+     position  = "0.14, 0.1"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+
+     showlives     = true
+     showlevel     = false
+     showpoints     = false
+    />
+
+    <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
+    />
+
+    <OverlayText
+     position  = "0.02, 0.055"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+     caption   = "Level: "
+    />
+
+    <Asteroids2DHUDinfo
+     position  = "0.14, 0.055"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "left"
+
+     showlives     = false
+     showlevel     = true
+     showpoints     = false
+    />
+
+    
+  </OverlayGroup>
+</Template>
+
+<Template name="spaceshiphud">
+  <OverlayGroup name = "spaceshiphud" scale = "1, 1">
+    
+ </OverlayGroup>
+</Template>
Index: /code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt	(revision 11724)
+++ /code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt	(revision 11725)
@@ -46,2 +46,3 @@
 ADD_SUBDIRECTORY(hover)
 ADD_SUBDIRECTORY(superorxobros)
+ADD_SUBDIRECTORY(asteroids2D)
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.cc	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.cc	(revision 11725)
@@ -0,0 +1,227 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+
+/**
+    @file Asteroids2D.cc
+    @brief Implementation of the Asteroids2D class.
+
+    TODO: 
+        - Implement a counting system for the score
+        - HUD can be improved (display health, points, level etc.
+        - Problem: The asteroids spawn randomly on the playing field.
+            During spawn or level up, there is the possibility that they pawn at the position of the ship.
+            ->spawn somewhere with a safty distance/radius
+        - look over collisionshapes of the stones ->  sometimes collison with stone is not triggered for bigger stones 
+        - modify parameters in data/levels/templates/spaceshipAsteroids2D.oxt for a better playing experience -> mass, damping, rotation etc.
+
+    IDEAS:
+        - make Asteroids more beautiful! (setting, ship, explosion particles, stones)
+        - particle effect after you got hit -> during bImmune is true
+        - implement shield -> object that can be triggered
+        - Projectiles should also move over the boarders and appear on the other side
+            -> they can also hurt the player
+
+*/
+
+#include "Asteroids2D.h"
+#include "Asteroids2DShip.h" // Necessary for getPlayer function. Do NOT include this in Header!
+#include "Asteroids2DStone.h"
+#include "core/CoreIncludes.h"
+#include "Highscore.h"
+
+namespace orxonox
+{
+    RegisterUnloadableClass(Asteroids2D);
+
+    Asteroids2D::Asteroids2D(Context* context) : Deathmatch(context)
+    {
+        RegisterObject(Asteroids2D);
+
+        bEndGame = false;
+        lives = 3; 
+        level = 1;
+        point = 0;
+        bShowLevel = false;
+        multiplier = 1;
+        b_combo = false;
+        firstTick_ = true;
+        this->numberOfBots_ = 0; //sets number of default bots temporarly to 0
+        this->center_ = nullptr;
+        this->setHUDTemplate("Asteroids2DHUD");
+        levelupTimer.setTimer(30.0f, true, createExecutor(createFunctor(&Asteroids2D::levelUp, this))); //level up every 30s
+    }
+
+
+
+    void Asteroids2D::levelUp()
+    {
+        level++;
+        if (getPlayer() != nullptr)
+        {
+
+            //Do something that indicates a level up
+            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 * 20);
+        multiplier *= 2;
+        toggleShowLevel();
+        showLevelTimer.setTimer(1.0f, false, createExecutor(createFunctor(&Asteroids2D::toggleShowLevel, this)));
+
+
+        //After level up -> spawn stones. Modify for different difficulty level
+        for(int i = 0; i < level*2; i++){
+            spawnStone();
+        }
+
+    }
+
+    void Asteroids2D::tick(float dt)
+    {
+        //Do this only for the first tick, generate 5 stones in the beginning
+        if(this->firstTick_)
+        {
+            getPlayer();
+            for(int i = 0; i < 5; ++i)
+            {
+                spawnStone();
+            }
+            //after first tick, firstTick_ will remain false
+            this->firstTick_ = false;
+        }
+        
+        SUPER(Asteroids2D, tick, dt);
+    }
+
+    void Asteroids2D::spawnStone()
+    {
+
+        //stones are created with a size -> second constructor in Asteroids2DStone class
+        Asteroids2DStone* newStone = new Asteroids2DStone(this->center_->getContext());
+        newStone->setAsteroids2DPlayer(player);
+
+        //look at templates in data/levels/templates/asteroidsAsteroids2D.oxt
+        switch(newStone->getSize()){
+            case 1:
+                newStone->addTemplate("stone1");
+                break;
+            case 2: 
+                newStone->addTemplate("stone2");
+                break;
+            case 3:
+                newStone->addTemplate("stone3");
+                break;
+            default:
+                orxout(internal_error) << "Asteroids2DStone has invalid size and cannot be created" << endl;
+                break;
+
+        }
+    }
+
+    Asteroids2DShip* Asteroids2D::getPlayer()
+    {
+        if (player == nullptr)
+        {
+            for (Asteroids2DShip* ship : ObjectList<Asteroids2DShip>())
+            {
+                player = ship;
+            }
+        }
+        return player;
+    }
+
+    void Asteroids2D::costLife()
+    {
+        --lives;
+        if(lives <= 0){
+            endGameTimer.setTimer(8.0f, false, createExecutor(createFunctor(&Asteroids2D::end, this)));            
+        }
+    };
+    
+    //The first function that will be called
+    void Asteroids2D::start()
+    {
+        //orxout() << "start" << endl;
+
+        // Set variable to temporarily force the player to spawn.
+        this->bForceSpawn_ = false;
+
+        if (this->center_ == nullptr)  // abandon mission!
+        {
+            orxout(internal_error) << "Asteroids2D: No Centerpoint specified." << endl;
+            GSLevel::startMainMenu();
+            return;
+        }
+        // Call start for the parent class.
+        Deathmatch::start();
+    }
+
+    void Asteroids2D::playerPreSpawn(PlayerInfo* player)
+    {
+        if(lives <= 0)
+        {
+            this->end();
+        }
+    }
+
+    //This function will be called from the ship or the stone class (if the stone was hit)
+    void Asteroids2D::addPoints(int numPoints)
+    {
+        if (!bEndGame)
+        {
+            point += numPoints * multiplier;
+            b_combo = true;
+        }
+    }
+
+    void Asteroids2D::end()
+    {
+        // DON'T CALL THIS!
+        //      Deathmatch::end();
+        // It will misteriously crash the game!
+        // Instead startMainMenu, this won't crash.
+        if (Highscore::exists()){
+                    int score = this->getPoints();
+                    if(score > Highscore::getInstance().getHighestScoreOfGame("Asteroids2D")) 
+                        Highscore::getInstance().storeHighscore("Asteroids2D",score);
+
+          }
+        GSLevel::startMainMenu();
+    }
+}
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.h	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.h	(revision 11725)
@@ -0,0 +1,131 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+
+/**
+    @file Asteroids2D.h
+    @brief Gametype:
+     - Goal: Survive as long as you can, do not collide with stones
+     - spawns stones in every level up
+     - if you shoot and hit a stone, it will spit into two smaller stones
+    @ingroup Asteroids2D
+*/
+
+#ifndef _Asteroids2D_H__
+#define _Asteroids2D_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "Asteroids2DCenterPoint.h" // Necessary for WeakPointer??
+//#include "Asteroids2DShip.h"        DO NOT include in Header. Will cause forward declaration issues
+
+//#include "Asteroids2DHUDinfo.h"
+
+
+#include "core/EventIncludes.h"
+#include "core/command/Executor.h"
+#include "core/config/ConfigValueIncludes.h"
+
+#include "gamestates/GSLevel.h"
+#include "chat/ChatManager.h"
+
+// ! HACK
+#include "infos/PlayerInfo.h"
+
+#include "core/command/ConsoleCommand.h"
+
+#include "gametypes/Deathmatch.h"
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+
+    class _Asteroids2DExport Asteroids2D : public Deathmatch
+    {
+       public:
+            Asteroids2D(Context* context);
+
+            virtual void start() override;
+            virtual void end() override;
+
+            //updates the game every few ns
+            virtual void tick(float dt) override;
+
+            virtual void playerPreSpawn(PlayerInfo* player) override;
+
+            void levelUp();
+
+
+            //For HUD
+            int getLives(){return this->lives;}
+            int getLevel(){return this->level;}
+            int getPoints(){return this->point;}
+            int getMultiplier(){return this->multiplier;}
+
+            //Generate Stones
+            void spawnStone();
+            void setCenterpoint(Asteroids2DCenterPoint* center)
+                { this->center_ = center; }
+            void addPoints(int numPoints);
+            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
+
+            // checks if multiplier should be reset.
+            void costLife();
+
+            //Returns player (ship) of the game
+            Asteroids2DShip* getPlayer();
+
+            bool bEndGame;
+            bool bShowLevel;
+            int lives;
+            int multiplier;
+
+
+       private:
+
+
+
+            WeakPtr<Asteroids2DShip> player;
+            void toggleShowLevel(){bShowLevel = !bShowLevel;}
+
+            WeakPtr<Asteroids2DCenterPoint> center_;
+            int level;
+            int point;
+            bool b_combo, firstTick_;
+
+            Timer comboTimer;
+            Timer showLevelTimer;
+            Timer levelupTimer;
+            Timer endGameTimer;
+
+
+    };
+}
+
+#endif /* _Asteroids2D_H__ */
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.cc	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.cc	(revision 11725)
@@ -0,0 +1,76 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Asteroids2DCenterPoint.cc
+    @brief Implementation of the Asteroids2DCenterPoint class.
+*/
+
+#include "Asteroids2DCenterPoint.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+
+#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DCenterPoint);
+
+    Asteroids2DCenterPoint::Asteroids2DCenterPoint(Context* context) : StaticEntity(context)
+    {
+        RegisterObject(Asteroids2DCenterPoint);
+
+        this->checkGametype();
+        this->width_ = 1043;
+        this->height_ = 646;
+    }
+
+    
+    /**
+    @brief
+        Method to create a Asteroids2DCenterpoint through XML.
+        Set dimension of the field with "width_, height_"
+    */
+    void Asteroids2DCenterPoint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Asteroids2DCenterPoint, XMLPort, xmlelement, mode);
+
+        XMLPortParam(Asteroids2DCenterPoint, "dimension", setFieldDimension, getFieldDimension, xmlelement, mode);
+    }
+
+
+    void Asteroids2DCenterPoint::checkGametype()
+    {
+        if (this->getGametype() != nullptr && this->getGametype()->isA(Class(Asteroids2D)))
+        {
+            Asteroids2D* Asteroids2DGametype = orxonox_cast<Asteroids2D*>(this->getGametype());
+            Asteroids2DGametype->setCenterpoint(this);
+        }
+    }
+}
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.h	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.h	(revision 11725)
@@ -0,0 +1,72 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Asteroids2DCenterPoint.h
+    @brief Declaration of the Asteroids2DCenterPoint class.
+    @ingroup Asteroids2D
+*/
+
+#ifndef _Asteroids2DCenterPoint_H__
+#define _Asteroids2DCenterPoint_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+//#include "Asteroids2D.h"
+//#include "Asteroids2DHUDinfo.h"
+
+#include "worldentities/StaticEntity.h"
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DCenterPoint : public StaticEntity
+    {
+        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(); //checks whether the gametype actually is Asteroids2D
+            float width_, height_;
+
+    };
+}
+
+#endif /* _Asteroids2DCenterPoint_H__ */
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.cc	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.cc	(revision 11725)
@@ -0,0 +1,93 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *
+ */
+
+#include "Asteroids2DHUDinfo.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Convert.h"
+//#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DHUDinfo);
+
+    Asteroids2DHUDinfo::Asteroids2DHUDinfo(Context* context) : OverlayText(context)
+    {
+        RegisterObject(Asteroids2DHUDinfo);
+
+        this->Asteroids2DGame = nullptr;
+        this->bShowPoints_ = true;
+    }
+
+    void Asteroids2DHUDinfo::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Asteroids2DHUDinfo, XMLPort, xmlelement, mode);
+
+        XMLPortParam(Asteroids2DHUDinfo,"showPoints", setShowPoints, getShowPoints, xmlelement, mode).defaultValues(false);
+    }
+
+    void Asteroids2DHUDinfo::tick(float dt)
+    {
+        SUPER(Asteroids2DHUDinfo, tick, dt);
+
+
+        if(this->bShowPoints_)
+        {
+            const std::string& points = multi_cast<std::string>(this->Asteroids2DGame->getPoints());
+            if (this->Asteroids2DGame->lives <= 0)
+            {
+                setTextSize(0.2);
+                setPosition(Vector2(0.1, 0.02));
+                this->setCaption("Final score:\n" + points);
+                this->setColour(ColourValue(1, 0, 0, 1));
+            }
+            else
+            {
+                setTextSize(0.04);
+                setPosition(Vector2(0.14, 0.02));
+                this->setColour(ColourValue(1, 1, 1, 1));
+                this->setCaption(points);
+            }
+        }
+
+    }
+
+    void Asteroids2DHUDinfo::changedOwner()
+    {
+        SUPER(Asteroids2DHUDinfo, changedOwner);
+
+        if (this->getOwner() && this->getOwner()->getGametype())
+        {
+            this->Asteroids2DGame = orxonox_cast<Asteroids2D*>(this->getOwner()->getGametype());
+
+        }
+        else
+        {
+            this->Asteroids2DGame = nullptr;
+        }
+    }
+}
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.h	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.h	(revision 11725)
@@ -0,0 +1,68 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *      
+ *      TODO: - get information for lives and level from gametype
+ *            - implement it as you did for points  
+ *
+ */
+
+#ifndef _Asteroids2DHUDinfo_H__
+#define _Asteroids2DHUDinfo_H__
+
+//#include "Asteroids2DShip.h"
+#include "Asteroids2D.h"
+//#include "Asteroids2DCenterPoint.h"
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayText.h"
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DHUDinfo : public OverlayText, public Tickable
+    {
+     public:
+            Asteroids2DHUDinfo(Context* context);
+
+            virtual void tick(float dt) override;
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void changedOwner() override;
+
+            inline void setShowPoints(bool value)
+                { this->bShowPoints_ = value; }
+            inline bool getShowPoints() const
+                { return this->bShowPoints_; }
+
+
+        private:
+            Asteroids2D* Asteroids2DGame;
+            bool bShowLives_;
+            bool bShowLevel_;
+            bool bShowPoints_;
+
+
+    };
+}
+#endif /* _Asteroids2DHUDinfo_H__ */
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DPrereqs.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DPrereqs.h	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DPrereqs.h	(revision 11725)
@@ -0,0 +1,81 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+@file
+@brief
+    Shared library macros, enums, constants and forward declarations for the Asteroids2D module
+*/
+
+#ifndef _Asteroids2DPrereqs_H__
+#define _Asteroids2DPrereqs_H__
+
+#include "OrxonoxConfig.h"
+#include "OrxonoxPrereqs.h"
+
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(ASTEROIDS2D_STATIC_BUILD)
+#  ifdef ASTEROIDS2D_SHARED_BUILD
+#    define _Asteroids2DExport __declspec(dllexport)
+#  else
+#    if defined( __MINGW32__ )
+#      define _Asteroids2DExport
+#    else
+#      define _Asteroids2DExport __declspec(dllimport)
+#    endif
+#  endif
+#  define _Asteroids2DPrivate
+#elif defined (ORXONOX_GCC_VISIBILITY)
+#  define _Asteroids2DExport  __attribute__ ((visibility("default")))
+#  define _Asteroids2DPrivate __attribute__ ((visibility("hidden")))
+#else
+#  define _Asteroids2DExport
+#  define _Asteroids2DPrivate
+#endif
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+    class Asteroids2D;
+    class Asteroids2DCenterPoint;
+    class Asteroids2DShip;
+    class Asteroids2DCube;
+    //class Asteroids2DEnemy;
+    //class Asteroids2DEnemyShooter;
+    //class Asteroids2DWeapon;
+    //class Asteroids2DWeaponEnemy;
+    //class Asteroids2DHUDinfo;
+}
+
+#endif /* _Asteroids2DPrereqs_H__*/
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.cc	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.cc	(revision 11725)
@@ -0,0 +1,135 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/*  TODO: 
+
+    @file Asteroids2DShip.cc
+    @brief Implementation of the Asteroids2DShip class.
+*/
+
+#include "Asteroids2DShip.h"
+#include "Asteroids2DStone.h"
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DShip);
+
+    Asteroids2DShip::Asteroids2DShip(Context* context) : SpaceShip(context)
+    {
+        RegisterObject(Asteroids2DShip);
+
+        isFireing = false;
+        this->width = 1043;
+        this->height = 646;
+
+        //timer.setTimer(3.5f, true, createExecutor(createFunctor(&Asteroids2DShip::showorientation, this)));
+    }
+
+    //Use this function to display your position on the field -> to determine field width and height
+    void Asteroids2DShip::showposition()
+    {
+        Vector3 pos = this->getPosition();
+        orxout() << "x = "<< pos.x << " y = " << pos.y << " z = "<< pos.z << endl; 
+    }
+
+    //Same thing for orientation
+    void Asteroids2DShip::showorientation()
+    {
+        Quaternion ort = this->getOrientation();
+        orxout() << "w = " << ort.w << " x = " << ort.x << " y = " << ort.y << "z = " << ort.z << endl;
+    }
+
+    void Asteroids2DShip::tick(float dt)
+    {
+        SUPER(Asteroids2DShip, tick, dt);
+        Vector3 pos = this->getPosition();
+
+        //ensure that the ship stays in playing field
+        if(pos.x > width/2)   pos.x = -width/2;
+        if(pos.x < -width/2)  pos.x = width/2;
+        if(pos.z > height/2)  pos.z = -height/2;
+        if(pos.z < -height/2) pos.z = height/2;
+
+        //2D movement, position should always = 0 on y-axis
+        if(pos.y!=0) pos.y = 0;
+        this->setPosition(pos);
+
+
+        //if you hit an asteroid, the ship will turn -> you need to reorientate the ship 
+        Quaternion ort = this->getOrientation();
+        ort.x = 0;
+        ort.z = 0;
+        this->setOrientation(ort);
+    }
+
+    void Asteroids2DShip::boost(bool bBoost)
+    {
+        isFireing = bBoost;
+    }
+
+    void Asteroids2DShip::updateLevel()
+    {
+        if (getGame())
+            getGame()->levelUp();
+    }
+
+    inline bool Asteroids2DShip::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
+    {
+
+        Asteroids2DStone* stone = orxonox_cast<Asteroids2DStone*>(otherObject);       
+        if(stone != nullptr && !bImmune)
+        {
+            removeHealth(100); 
+            this->getGame()->addPoints(10);
+
+            //The ship will be immune for 3 seconds after it has been hit by an asteroid
+            bImmune = true;
+            isimmune.setTimer(3.0f, false, createExecutor(createFunctor(&Asteroids2DShip::toggleImmune, this)));
+        }
+        return false;
+    }
+
+    Asteroids2D* Asteroids2DShip::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids2D* race : ObjectList<Asteroids2D>())
+            {
+                game = race;
+            }
+        }
+        return game;
+    }
+
+    void Asteroids2DShip::death()
+    {
+        getGame()->costLife();
+        SpaceShip::death();
+    }
+}
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.h	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.h	(revision 11725)
@@ -0,0 +1,99 @@
+/*
+ *   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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Asteroids2DShip.h
+    @brief Declaration of the Asteroids2DShip class.
+*/
+
+#ifndef _Asteroids2DShip_H__
+#define _Asteroids2DShip_H__
+
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+
+#include "core/XMLPort.h"
+#include "worldentities/pawns/SpaceShip.h"
+#include "weapons/WeaponsPrereqs.h"
+#include "graphics/Camera.h"
+
+#include "Asteroids2D.h" // Is necessary for getGame function
+//#include "Asteroids2DCenterPoint.h"
+#include "Asteroids2DStone.h"
+
+#include "tools/Timer.h"
+
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DShip : public SpaceShip
+    {
+        public:
+            Asteroids2DShip(Context* context);
+
+            virtual void tick(float dt) override;
+
+            //no rotation in x and z direction!
+            virtual void rotatePitch(const Vector2& value) override{}; // Rotate in pitch direction.
+            virtual void rotateRoll(const Vector2& value) override{}; // Rotate in roll direction.
+            virtual void boost(bool boost) override; //Override, so that the ship does not shake
+            virtual void updateLevel();
+
+            virtual inline bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+
+            bool isFireing;
+            
+            /*Functions that can be helpful while debugging.
+                - Set a timer so that the function is called for instance every 3s to display the coordinates
+                - Open console with "~`"-key in when you start the Asteroids2D - Minigame.
+            */
+            void showposition();
+            void showorientation();
+
+
+            void toggleImmune()
+            {
+                bImmune = !bImmune;
+            }
+
+        protected:
+            virtual void death() override;
+
+        private:
+            Asteroids2D* getGame();
+
+            float width, height;
+            WeakPtr<Asteroids2D> game;
+            bool bImmune;
+            Timer timer;
+            Timer isimmune;
+    };
+}
+
+#endif /* _Asteroids2DShip_H__ */
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.cc	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.cc	(revision 11725)
@@ -0,0 +1,160 @@
+/*   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+
+/**
+    @file Asteroids2DStone.cc
+
+    @brief Implementation of the Asteroids2DStone class.
+
+    TO DO:  
+    - instead of moving over the boarders of the playing field, modify the tick function so that the stones bounce back
+    - when to split? It does not work if you override kill() function...->damage() function?
+*/ 
+
+#include "Asteroids2DStone.h"
+#include "Asteroids2D.h"
+#include "Asteroids2DShip.h"
+#include "core/CoreIncludes.h"
+#include "util/Math.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DStone);
+
+    Asteroids2DStone::Asteroids2DStone(Context* context) : Pawn(context)
+    {
+        RegisterObject(Asteroids2DStone);
+        this->size = rand()%3+1;
+        this->width = 1043;
+        this->height = 646;
+        this->setPosition(randomPosition(this->width, this->height));
+        this->setCollisionTypeStr("dynamic");
+        this->setVelocity(randomVelocity(MAX_SPEED));
+    }
+
+    Asteroids2DStone::Asteroids2DStone(Context* c, int sze, Vector3 pos) : Pawn(c)
+    {
+        RegisterObject(Asteroids2DStone);
+        this->size = sze;
+        this->width = 1043;
+        this->height = 646;
+        this->setPosition(pos);
+        this->setCollisionTypeStr("dynamic");
+        this->setVelocity(randomVelocity(MAX_SPEED));
+    }
+
+    Vector3 Asteroids2DStone::randomPosition(float maxwidth, float maxheight)
+    {
+        Vector3 pos;
+        pos.x = rnd(-maxwidth/2, maxwidth/2);
+        pos.y = 0;
+        pos.z = rnd(-maxheight/2, maxheight/2);
+        return pos;
+    }
+
+    Vector3 Asteroids2DStone::randomVelocity(float maxspeed)
+    {
+        Vector3 vel;
+        vel.x = rnd(maxspeed);
+        vel.y = 0;
+        vel.z = rnd(maxspeed);
+        return vel;
+    }
+
+
+    void Asteroids2DStone::tick(float dt)
+    {
+    	SUPER(Asteroids2DStone, tick, dt);
+        Vector3 pos = this->getPosition();
+
+
+        if(pos.x >= width/2){
+            pos.x = -width/2;
+        }else if(pos.x <= -width/2){
+            pos.x = -width/2;
+        }else if(pos.z >= height/2){
+            pos.z = -height/2;
+        }else if(pos.z <= -height/2){
+            pos.z = -width/2;
+        }
+
+        this->setPosition(pos);
+
+    }
+
+    inline bool Asteroids2DStone::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
+    {
+        if(orxonox_cast<Asteroids2DShip*>(otherObject))
+        {
+            split();
+        }
+        return false;
+    }
+
+    void Asteroids2DStone::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
+    {
+        if (getGame() && orxonox_cast<Asteroids2DShip*>(originator) != nullptr)
+            getGame()->addPoints(100);
+        split();
+        //Pawn::damage(damage, healthdamage, shielddamage, originator, cs);
+    }
+
+    Asteroids2D* Asteroids2DStone::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids2D* asteroids : ObjectList<Asteroids2D>())
+                game = asteroids;
+        }
+        return game;
+    }
+
+    void Asteroids2DStone::split()
+    {
+        //orxout() << "split" << endl;
+        if(size == 3)
+        {
+            Asteroids2DStone* newStone1 = new Asteroids2DStone(this->getContext(), 2, this->getPosition());
+            newStone1->addTemplate("stone2");
+            Asteroids2DStone* newStone2 = new Asteroids2DStone(this->getContext(), 2, this->getPosition());
+            newStone2->addTemplate("stone2");
+
+        }else if(size == 2){
+
+
+            //Templates can be found in data/levels/templates/asteroidsAsteroids2D.oxt
+            Asteroids2DStone* newStone1 = new Asteroids2DStone(this->getContext(), 1, this->getPosition());
+            newStone1->addTemplate("stone1");
+            Asteroids2DStone* newStone2 = new Asteroids2DStone(this->getContext(), 1, this->getPosition());
+            newStone2->addTemplate("stone1");
+        }   
+        this->death();
+    }
+
+}
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.h	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.h	(revision 11725)
@@ -0,0 +1,72 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *    TO DO: 
+ *
+ */
+
+/**
+    @file Asteroids2D.h
+    @brief Gametype.
+    @ingroup Asteroids2D
+*/
+
+#ifndef _Asteroids2DStone_H__
+#define _Asteroids2DStone_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "worldentities/pawns/Pawn.h"
+
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DStone : public Pawn
+    {
+       public:
+            Asteroids2DStone(Context* context);
+            Asteroids2DStone(Context* c, int sze, Vector3 pos);
+
+            virtual void tick(float dt) override;
+            Vector3 randomPosition (float maxwidth, float maxheight);
+            Vector3 randomVelocity(float maxspeed);
+            void setAsteroids2DPlayer(Asteroids2DShip* player){this->player = player;};
+            virtual int getSize(){ return this->size;}
+            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+            virtual void split();
+            virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs) override;
+
+       private:
+          Asteroids2D* getGame();
+          WeakPtr<Asteroids2D> game;
+          WeakPtr<Asteroids2DShip> player;          
+       		int size;				// three sizes, 3-> two 2s, 2-> two 1s, 1-> die
+       		float width, height;	//field
+          float MAX_SPEED = 100;
+          float delta = 5;
+    };
+}
+
+#endif /* _Asteroids2DStone_H__ */
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.cc	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.cc	(revision 11725)
@@ -0,0 +1,113 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      --
+ *
+ */
+
+/**
+    @file Asteroids2DWeapon.h
+    @brief Implementation of the Asteroids2DWeapon class.
+*/
+
+#include "Asteroids2DWeapon.h"
+
+#include "core/CoreIncludes.h"
+// #include "core/XMLPort.h"
+// #include "core/command/Executor.h"
+
+#include "graphics/Model.h"
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/WorldEntity.h"
+#include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/Projectile.h"
+#include "weapons/MuzzleFlash.h"
+
+#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DWeapon);
+
+    Asteroids2DWeapon::Asteroids2DWeapon(Context* context) : HsW01(context)
+    {
+        RegisterObject(Asteroids2DWeapon);
+
+
+    }
+
+    Asteroids2DWeapon::~Asteroids2DWeapon()
+    {
+
+    }
+
+    Asteroids2D* Asteroids2DWeapon::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids2D* race : ObjectList<Asteroids2D>())
+            {
+                game = race;
+            }
+        }
+        return game;
+    }
+
+
+    void Asteroids2DWeapon::shot()
+    {
+        assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
+
+        // Create the projectile.
+        Projectile* projectile = new Projectile(this->getContext());
+        Model* model = new Model(projectile->getContext());
+        model->setMeshSource(mesh_);
+        model->setCastShadows(false);
+        projectile->attach(model);
+        model->setScale(5);
+
+        //get position and orientation of the ship to know in which direction the projectile needs to fire off
+        Pawn* player = this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn();
+
+        projectile->setOrientation(player->getOrientation());
+        projectile->setPosition(player->getPosition());
+
+        //Velocity & position of the projectile must be y = 0 since the game takes place in the x-z plane
+        Vector3 muzzle2D = player->getOrientation()* WorldEntity::FRONT ;
+        muzzle2D.y = 0; 
+        projectile->setVelocity(muzzle2D * this->speed_);
+
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setDamage(this->getDamage());
+        projectile->setShieldDamage(this->getShieldDamage());
+        projectile->setHealthDamage(this->getHealthDamage());
+
+        // Display the muzzle flash.
+        this->HsW01::muzzleflash();
+    }
+    
+}
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.h	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.h	(revision 11725)
@@ -0,0 +1,61 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Asteroids2DWeapon.h
+    @brief Definition of the Asteroids2DWeapon class.
+*/
+
+#ifndef _Asteroids2DWeapon_H__
+#define _Asteroids2DWeapon_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weapons/weaponmodes/HsW01.h"
+
+#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DWeapon : public HsW01
+    {
+        public:
+            Asteroids2DWeapon(Context* context);
+            virtual ~Asteroids2DWeapon();
+            Asteroids2D* getGame();
+
+
+        protected:
+            virtual void shot() override; //2D movement
+            WeakPtr<Projectile> projectile;
+            WeakPtr<Asteroids2D> game;
+    };
+}
+
+#endif /* _Asteroids2DWeapon_H__ */
Index: /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/CMakeLists.txt
===================================================================
--- /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/CMakeLists.txt	(revision 11725)
+++ /code/branches/Presentation_HS17_merge/src/modules/asteroids2D/CMakeLists.txt	(revision 11725)
@@ -0,0 +1,17 @@
+SET_SOURCE_FILES(MINIGAMESTEST_SRC_FILES
+Asteroids2D.cc
+Asteroids2DCenterPoint.cc
+Asteroids2DShip.cc
+Asteroids2DStone.cc
+Asteroids2DHUDinfo.cc
+Asteroids2DWeapon.cc
+)
+
+ORXONOX_ADD_LIBRARY(asteroids2D
+  PLUGIN
+  FIND_HEADER_FILES
+  LINK_LIBRARIES
+    orxonox
+    overlays
+  SOURCE_FILES ${MINIGAMESTEST_SRC_FILES}
+)
