Index: trunk/src/defs/class_id.h
===================================================================
--- trunk/src/defs/class_id.h	(revision 7034)
+++ trunk/src/defs/class_id.h	(revision 7035)
@@ -142,4 +142,6 @@
   CL_MULTI_PLAYER_WORLD_DATA    =    0x00000108,
   CL_MOVIE_LOADER               =    0x00000109,
+  CL_GAME_RULES                 =    0x00000110,          ///HACK: this is no story entity, bensch: to rebuild
+  CL_MULTIPLAYER_TEAM_DEATHMATCH =   0x00000111,          ///HACK: this is no story entity: it is a CL_GAME_RULES, bensch: to rebuild
 
   /// SUPER-PNodes
Index: trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- trunk/src/lib/graphics/graphics_engine.cc	(revision 7034)
+++ trunk/src/lib/graphics/graphics_engine.cc	(revision 7035)
@@ -142,5 +142,5 @@
   LOAD_PARAM_START_CYCLE(root, element);
   {
-    PRINTF(0)("element is: %s\n", element->Value());
+    PRINTF(4)("element is: %s\n", element->Value());
     Factory::fabricate(element);
   }
Index: trunk/src/story_entities/game_world.cc
===================================================================
--- trunk/src/story_entities/game_world.cc	(revision 7034)
+++ trunk/src/story_entities/game_world.cc	(revision 7035)
@@ -64,4 +64,5 @@
 #include "shader.h"
 
+#include "game_rules.h"
 
 using namespace std;
@@ -350,4 +351,7 @@
 
     GraphicsEngine::getInstance()->tick(this->dtS);
+
+    if( likely(this->dataTank->gameRule != NULL))
+      this->dataTank->gameRule->tick(this->dtS);
   }
   this->lastFrame = currentFrame;
@@ -437,4 +441,8 @@
 
   engine->draw();
+
+  // draw the game ruls
+  if( likely(this->dataTank->gameRule != NULL))
+    this->dataTank->gameRule->draw();
 }
 
Index: trunk/src/story_entities/game_world_data.cc
===================================================================
--- trunk/src/story_entities/game_world_data.cc	(revision 7034)
+++ trunk/src/story_entities/game_world_data.cc	(revision 7035)
@@ -83,4 +83,5 @@
   this->music = NULL;
   this->objectManager = NULL;
+  this->gameRule = NULL;
 }
 
Index: trunk/src/util/game_rules.cc
===================================================================
--- trunk/src/util/game_rules.cc	(revision 7034)
+++ trunk/src/util/game_rules.cc	(revision 7035)
@@ -26,6 +26,8 @@
  * constructor
  */
-GameRules::GameRules(const TiXmlElement root)
-{}
+GameRules::GameRules(const TiXmlElement* root)
+{
+  this->setClassID(CL_GAME_RULES, "GameRules");
+}
 
 /**
@@ -38,4 +40,6 @@
 
 void GameRules::loadParams(const TiXmlElement* root)
-{}
+{
+  BaseObject::loadParams(root);
+}
 
Index: trunk/src/util/game_rules.h
===================================================================
--- trunk/src/util/game_rules.h	(revision 7034)
+++ trunk/src/util/game_rules.h	(revision 7035)
@@ -20,8 +20,8 @@
 
   public:
-    GameRules(const TiXmlElement root);
+    GameRules(const TiXmlElement* root);
     virtual ~GameRules();
 
-    virtual void loadParams(const TiXmlElement* root);
+    virtual void loadParams(const TiXmlElement* root = NULL);
 
 
Index: trunk/src/util/multiplayer_team_deathmatch.cc
===================================================================
--- trunk/src/util/multiplayer_team_deathmatch.cc	(revision 7034)
+++ trunk/src/util/multiplayer_team_deathmatch.cc	(revision 7035)
@@ -18,4 +18,5 @@
 
 #include "load_param.h"
+#include "factory.h"
 
 
@@ -23,10 +24,18 @@
 
 
+CREATE_FACTORY(MultiplayerTeamDeathmatch, CL_MULTIPLAYER_TEAM_DEATHMATCH);
+
+
 /**
  * constructor
  */
-MultiplayerTeamDeathmatch::MultiplayerTeamDeathmatch(const TiXmlElement root)
+MultiplayerTeamDeathmatch::MultiplayerTeamDeathmatch(const TiXmlElement* root)
   : GameRules(root)
-{}
+{
+  this->setClassID(CL_MULTIPLAYER_TEAM_DEATHMATCH, "MultiplayerTeamDeathmatch");
+
+  if( root != NULL)
+    this->loadParams(root);
+}
 
 /**
@@ -39,4 +48,49 @@
 
 void MultiplayerTeamDeathmatch::loadParams(const TiXmlElement* root)
+{
+  GameRules::loadParams(root);
+}
+
+
+/**
+ * called when the player enters the game
+ * @param player the spawned player
+ */
+void MultiplayerTeamDeathmatch::onPlayerSpawn(Player* player)
 {}
 
+
+/**
+ * when the player is killed
+ * @param player the killed player
+ */
+void MultiplayerTeamDeathmatch::onPlayerDeath(Player* player)
+{}
+
+
+/**
+ * time tick
+ * @param dt time
+ */
+void MultiplayerTeamDeathmatch::tick(float dt)
+{}
+
+
+/**
+ * draws the stuff
+ */
+void MultiplayerTeamDeathmatch::draw()
+{}
+
+
+/**
+ * check the game rules for consistency
+ */
+void MultiplayerTeamDeathmatch::checkGameRules()
+{}
+
+
+
+
+
+
Index: trunk/src/util/multiplayer_team_deathmatch.h
===================================================================
--- trunk/src/util/multiplayer_team_deathmatch.h	(revision 7034)
+++ trunk/src/util/multiplayer_team_deathmatch.h	(revision 7035)
@@ -1,5 +1,5 @@
 
 /*!
- * @file game_rules.h
+ * @file multiplayer_team_deathmatch.h
  * Defines game rules for this game
  */
@@ -20,5 +20,5 @@
 
   public:
-    MultiplayerTeamDeathmatch(const TiXmlElement root);
+    MultiplayerTeamDeathmatch(const TiXmlElement* root = NULL);
     virtual ~MultiplayerTeamDeathmatch();
 
@@ -35,5 +35,5 @@
 
   protected:
-    virtual void checkMultiplayerTeamDeathmatch();
+    virtual void checkGameRules();
 };
 
