php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.09.2007, 18:21  
Neuer Benutzer
 
Registriert seit: 04.07.2005
Beiträge: 24
Martin13
Standard Tool um (Spiel)Klassen zu erzeugen

Hallo,

mein Ziel ist es ein Tool für mein Browsergame zu entwickeln mit dem ich neue Spielobjektklassen (Häuser, Waffen, Tiere, ...) entwickeln/hinzufügen kann. Es soll möglich sein aus einer beliebig erweiterbaren Liste von Attributen (Größe, Gewicht, Besitzer, ...) per drag and drop neue Objekte zu erstellen.

Meine Frage lautet 1.: wie ich dazu am besten meine DB designe, 2.:in wie weit ich das mit oop lösen kann und 3.:welche Tools/Frameworks ich nutzen kann.

Zunächst noch ein paar Anforderungen die das tool welches ich programmieren will leisten soll. Es soll die Möglichkeit geben neue Klassen als Kind-Klassen zu erzeugen, einfach als Komfort für den Spiele-Autor, dass Attribute vererbt werden und Änderungen an der Elternklasse auch alle Kind-Klassen verändern. Außerdem sollen simple "Funktionen" zu den Klassen erzeugt werden können für weitere Attribute die sich aus den vorhadenen ableiten lassen (z.B: aus Volumen und Gewicht-> Dichte). Solche "Funktionen" die auch über Formulare zu erstellen seine sollen, sollen sich auch vererben lassen können. Schließlich soll man noch Attribut/Funktionspakete erstellen können, die man dann auch Objekten zuordnen kann.

Zu Frage 1: Hier geht es um die Fragestellung wie man die Arbeit des Autors am besten speichert (also die Definitionen der Klassen und Funktionen) aber vor allen wie dann die Spielwelt, wenn also tausende "Instanz" der Klassen existieren, gespeichert werden soll. Eine Möglichkeit wäre es für jede Klasse eine eigene Tabelle zu erzeugen, das könnten aber äußerst viele Tabellen werden. Außerdem würde mich für den Fall die Frage interessieren ob es dann sinnvoll wäre die Attribute von Kindklassen die geerbt werden in der Elternklassen Tabelle zu speichern und nur die übrigen Attribute in der Tabelle von der Kind-Klasse, oder lieber alle Attribute eines Objekts in einer Tabelle.
Die andere Möglichkeit die ich sehe und im Moment favorisiere ist ein Modell aus 4 Tabellen. Die erste Speichert alle möglichen Attribute mit Name und ID. Die zweite Tabelle Speichert alle in der Spielwelt vorhadenen Objekte mit ID und KlassenID. Die 3. Tabelle besteht aus laufender Nummer| ObjektID | AttributID | AttributWert. Ein Objekt mit x Attributen hat hier also x Einträge. Die 4 Tabelle speichert die Hierachie der Objekte in der Spielwelt mit ObjektIDx liegt in ObjektIDy, um zu speichern dass der Rucksack im Waldstück liegt und das Schwert im Rucksack.
Was sind Vor und Nachteile der beiden Möglichkeiten?

Zu Frage 2:
Urspünglich hatte ich vor alle Klassen in der Spielwelt auch als Klassen im Sinne von oop zu programmieren. Möglicherweise ist das aber überflüssig da es ja nur Ansammlungen von Daten sind und die zugehörigen Funktionen nur sehr simpel sind. Mein jetziger Ansatz ist es nur mit einer Klasse zu arbeiten die nur die CRUD Funktionen erfüllt.

Zu Frage 3:
Die Antwort auf die Frage nach Tools und Frameworks ist natürlich verzahnt mit den antworten auf die Fragen 1 und 2.
Zum einen würde sich wohl eine Sammlung aus den PEAR Packages anbieten, zusammengefasst hier: http://opensource.21st.de/static/for...otyping-kr.pdf
Enthalten:
DB (database API abstraction layer)
DB_DataObject (object-relational mapping)
HTML_QuickForm (building and validating of HTML forms)
DB_DataObject_FormBuilder (autogenerates forms from DataObjects)

Wobei diese Sammlung wohl nur Sinn macht wenn man jeden Objekttyp in einer eigenen Tabelle speichert und man dann sich zu jedem eine Klasse erzeugen lässt. Mir ist dann allerdings nicht klar wie man mit den durch DB_DataObject erzeugten Klassen noch von den Funktionsvererbungen im oop profitieren kann. Die Klassen sind doch wohl nur dazu da "crud"Funktionen für die Tabellen zu liefern.

Ein anderes Tool ist der PHP Objekt Generator http://www.phpobjectgenerator.com/ Er hat den Vorteil, dass er schon ein GUI liefert mit dem man Tabellen für Objekte erzeugen kann. Die zugehörigen Klassen liefern wohl auch nur "crud" Funktionen.


Ich denke es gibt durchaus mehrere Ansätze um mein Problem zu lösen. Ich habe jetzt die Grundzüge der Gedanken die ich zu den Fragen habe geschrieben. Ich hoffe, dass das alles mehr oder weniger Sinn macht (das meiste ist Neuland für mich) und dass ein Pro und Contra Argumentation zu den Fragen entsteht. Ich kann auch gerne noch mehr zu den Fragen schreiben oder konkretere Fragen stellen, erstmal würde ich aber gerne wissen ob ich auf dem richtigen Weg bin das Problem zu lösen.

Vielen Dank für alle Antworten

Edit 1: link zum rapidprototyping richtig gestellt
Martin13 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.09.2007, 19:58  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard Re: Tool um (Spiel)Klassen zu erzeugen

Hallo, eine sehr interessante Aufgabe! Deshalb hab ich ihn mal ins Fortgeschrittenen Forum hochverschoben.


Zitat:
Zitat von Martin13
Hier geht es um die Fragestellung wie man die Arbeit des Autors am besten speichert (also die Definitionen der Klassen und Funktionen) aber vor allen wie dann die Spielwelt, wenn also tausende "Instanz" der Klassen existieren, gespeichert werden soll.
Dafür gibt es verschiedenste Ansätze:
Ad-hoc, Active Record, Mapper (und integrierte Mapper).
Ich zitiere hier aus dem Buch Professionelle PHP 5-Programmierung (Teil 3 Verteilte Anwendung, Kapitel 12 Mit Datenbanken interagieren).
Amazon
Vielleicht helfen dir diese Schlagworte bereits weiter, ein Fazit bzw. eine Empfehlung gab es zu keiner dieser Methoden (höchstens, das Ad-hoc nicht das wahre ist).


Zitat:
Zitat von Martin13
Eine Möglichkeit wäre es für jede Klasse eine eigene Tabelle zu erzeugen, das könnten aber äußerst viele Tabellen werden.
Das wäre zumindest konsequent. Viele Klassen erzeugen nunmal viele Daten. Das Problem bei dieser, ja Fließband-Klassenerstellung ist dann, dass du nichts zusammenfassen kannst, was logisch zusammengehören könnte. Diese Flexibilität wie beim manuellen Anlegen geht dir dann verloren.


Zitat:
Zitat von Martin13
Außerdem würde mich für den Fall die Frage interessieren ob es dann sinnvoll wäre die Attribute von Kindklassen die geerbt werden in der Elternklassen Tabelle zu speichern und nur die übrigen Attribute in der Tabelle von der Kind-Klasse, oder lieber alle Attribute eines Objekts in einer Tabelle.
Du kannst Vererbung beim Programmieren mit Referenzierung in einer relationalen Datenbank nachbauen.


Zitat:
Zitat von Martin13
Die andere Möglichkeit die ich sehe und im Moment favorisiere ist ein Modell aus 4 Tabellen. Die erste Speichert alle möglichen Attribute mit Name und ID. Die zweite Tabelle Speichert alle in der Spielwelt vorhadenen Objekte mit ID und KlassenID. Die 3. Tabelle besteht aus laufender Nummer| ObjektID | AttributID | AttributWert. Ein Objekt mit x Attributen hat hier also x Einträge. Die 4 Tabelle speichert die Hierachie der Objekte in der Spielwelt mit ObjektIDx liegt in ObjektIDy, um zu speichern dass der Rucksack im Waldstück liegt und das Schwert im Rucksack.
Was sind Vor und Nachteile der beiden Möglichkeiten?
Unterschätze die Datenbank nicht. Was heißt schon viele Tabellen?
Du stellst hier viele Tabellen gegenüber vielen Verknüpfungsberechnungen.
Ich favorisiere eher die erste Ausführung, ich denke sie wird schneller sein.

Zitat:
Zitat von Martin13
Urspünglich hatte ich vor alle Klassen in der Spielwelt auch als Klassen im Sinne von oop zu programmieren. Möglicherweise ist das aber überflüssig da es ja nur Ansammlungen von Daten sind und die zugehörigen Funktionen nur sehr simpel sind. Mein jetziger Ansatz ist es nur mit einer Klasse zu arbeiten die nur die CRUD Funktionen erfüllt.
Dabei helfen dir die genannten Patterns. Dafür brauchst du dann wohl wirklich keine eigenen Klassen, vielmehr ist es ja nur eine Datenansammlung. Das kann ich jetzt aber nicht einschätzen, vielleicht wäre ein Beispiel nicht schlecht.
OOP hat ja das Ziel, die "Wirklichkeit" ersteinmal nachzubauen, mit all ihren Vor- und Nachteilen. Der Nachteil ist, das dass oft oversized ist, aber es trägt zumindest enorm zum Code-Verständnis bei.


Zum Rest kann ich wenig sagen, da muss jeder selbst wissen, ob er lieber fertige Lösungen nimmt oder sich mit PEAR o.ä. selbst etwas baut.
PEAR finde ich in Ordnung, da es für mich kein Framework ist, sondern mehr eine Klassensammlung. Da spreche ich aber nur für mich.
Zergling-new ist offline   Mit Zitat antworten
Alt 04.09.2007, 20:22  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

<< 1.: wie ich dazu am besten meine DB designe, >>
ist eigentlich ziemlich simpel, wenn man weis was ein object ist.

Tabelle Type
id | Name |beschreibung
0 ,int,....
1,float,...
...
40, Object,...
....
y,Array,....
100, Auto,....

Tabelle Attribut
id | id_type | name | type_id | sichtbarkeit('private','public','protected') | static(0,1)
0, 100, raeder_anzahl,0,private,0
...


Tabelle Method
id | id_object | name | return_type | sichtbarkeit('private','public','protected') | static(0,1)|text
110, 100, 'setRaederZahl', 0,public,null, '$this->raeder_anzahl=%i'
.....

Tabelle Method_parameter
id | method_id | position(int) | name |typ_id
2525|110|1|$raeder|0
.....
Tabelle Extends
id |id_kind|id_vater
45454| 100 | 40
....



<<2.:in wie weit ich das mit oop lösen kann und >>
ziemlich weit,
aber wofür muss man das machen, wenn es genug UML werkzeuge gibt, die nichts anderes als das machen?

<<3.:welche Tools/Frameworks ich nutzen kann. >>
wenn wir in einem PHP forum sind, dann muss ich dir natürlich was mit PHP-verbundes anbieten.
Leider kann ich mir nur vorstellen, dass PHP nur Requests bearbeitet, die von einem UML-Onlinetool, der mit Java oder einer anderer Active-X augebaut wurden.
Javasript kommt auch in frage.
__________________
Slava
http://bituniverse.com
Slava ist offline   Mit Zitat antworten
Alt 05.09.2007, 00:38  
Neuer Benutzer
 
Registriert seit: 04.07.2005
Beiträge: 24
Martin13
Standard

Erstmal vielen Dank für diese ausführlichen Antworten. Ich habe die selbe Frage schon in einem anderen PHP-Forum gepostet (http://phpforum.de/forum/showthread.php?t=208033) aber bis zum Ende der Diskussion nicht so viele hilfreiche Anstöße bekommen wie hier schon in den ersten 2 Posts!

Um nochmal denn Sinn des ganzen deutlich zu machen, ich möchte das zunächst für mein aktuelles Browsergame nutzen, aber eigentlich zielt es darauf ab, dass dieses Tool die Grundlage für einen "Browsergamemaker" werden soll, mit dem es ohne Programmierkenntnisse möglich sein soll Browsergames zu erstellen.

@Zergling
Ich bin noch dabei nach den genannten Sichwörtern zu suchen, wenn ich so weit bin werden sicher noch Fragen folgen.

Bei der Frage ob man für die Spielklassen auch oop Klassen bauen soll frgast du nach einem Beispiel: Also es soll möglich sein "Welten" zu erzeugen. Es gibt zum Beispiel die Klasse "(Spiel)Feld" mit den Attributen Typ(Wald, Grasland, ....), Höhe (327m), Fluss(ja/nein), xKoordinate, yKoordinate. Dann gibt es Spieler mit Attributen wie Stärke, Geschick, Ausdauer, FeldAufDemSieStehn, .... Dann gibt es Tiere, Schwerter, Gebäude, usw... In einem anderm Fall soll ein Fussballmanager gemacht werden, da gibt es dann vllt Regionen, Stadion(Sitzplätze, Stehplätze, Parkplätze,...) Das nächste Spiel soll vllt ein Weltraumspiel werden.

Es geht also darum wie gespeichert wird, dass die Klasse Beispiel eben genau diese 3 BeispielAttribute hat (vllt wäre da ne XML Datei sinnvoll?) und dann muss die Spielwelt, wenn Sie auf Grundlage der Klassendefinitionen erschaffen ist, gespeichert werden.


Um die Größenordnungen abzuschätzen, ich vermute mal das Spiel an dem ich konkret gerade "bastele" wir so 200-400 Objekte haben. Das wären also genausoviele Tabellen. Alternativ - in dem 4 Tabellen Modell - wären es unendlich viele Einträge in der Tabelle in der die Werte den Klassen zugewiesen werden. So habe ich ca 64.000 Felder mit je 5 Attributen, allein das wären 320.000 Einträge in die Tabelle und würde nur einen Objekttyp von 200 abdecken, also SEHR GROB geschätzt insgesamt 64.000.000 Einträge (320.000 * 200). Ich habe keine Erfahrung ob sowas noch völlig normal ist oder schon an die Grenzen stößt.


@Slava
Du zerlegst eine PHP-Klasse in kleine Elemente die man dann in einer DB speichern kann und sich mit einem guten Script dann wieder zusammenpuzzeln lassen kann. Das Problem (und das habe ich in meinem Eingangspost nicht richtig deutlich gemacht) ist, dass das tool für Leute sein soll die keine Programmiererfahrung haben und dementsprechend wissen die nicht, wozu die etwas "public, privat, protected,..." bestimmen sollen.
Du bist aber auch für das 4 TabellenModell, ich denke Zergling hat den Konflikt mit "viele Tabellen gegenüber vielen Verknüpfungsberechnungen" sehr treffend beschrieben. Wo siehst du den Vorteil im 4 Tabellen Modell?





Ich will noch weitergehen beschrieben was ich noch vor habe: Neben diesem "Spielwelterzeugungstool" soll ich dann noch ein Tool geben um Aktionen zu erzeugen. Der Spielautor legt dazu wie eine Aktion heißt (z.B. Holzfällen), unter welchen Umständen sie möglich ich (Spieler befindet sich auf Feld mit Typ=Wald + Spieler hat Axt im Invantar), welche Parameter muss der Spieler eingeben wenn er die aktion startet (Dauer in Minuten). Schließlich muss der Autor festlegen wie die Aktion ausgewertet wird. (Holzmenge x in Inventar des Spielers einfüge und x = (Dauer * QualitätDerAxt * Stärke * Holzfällskill * Zufallszahl(zwischen 0,8 und 1,2)) außerdem Holzfällskill erhöhen, Stärke erhöhen.

Soviel als kurze Vorschau wonach ich euch in einem halben Jahr fragen werde, und vllt ist es ja auch dem jetzigen Problem dienlich wenn Ihr wisst was das ganze soll.
Martin13 ist offline   Mit Zitat antworten
Alt 05.09.2007, 01:32  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Da kommt massenhaft Arbeit auf dich zu, nimm dir bloß genug Zeit für die Konzeption.
Wie können wir dir konkret weiterhelfen?
Zergling-new ist offline   Mit Zitat antworten
Alt 05.09.2007, 01:56  
Neuer Benutzer
 
Registriert seit: 04.07.2005
Beiträge: 24
Martin13
Standard

Ok ganz konkret Fragen:

1. bleibst du bei der Empfelung für das "für jedes Objekt eine Tabelle" Modell?
2. Ist es sinnvoll für jede SpielKlasse eine oop Klasse zu erzeugen. (ich denke inzwischen: Nein)

Gerade zur ersten Frage hatte ich schon hizige Diskussionen, ein Freund hat mir unbedingt zum 4 Tabellen Modell geraten, denn er meinte Tabellen sind nicht dazu da um sie dynamisch zu generieren. Er hat auch so lange auf mich eingeredet bis er mich überzeugt hat. Aber nüchtern betrachtet ist das kein Argument und die Lösung mit dynamischen Tabellen ist sicher performanter UND Platzsparsamer. Möglicherweise ist sie schwieriger Umzusetzen.

Ansonsten bin ich schon zufrieden mit dem was geschrieben wurde, es war mir einfach ein Bedürfniss, bevor ich mich in so ein Projekt stürze, meine Gedanken dazu offenzulegen und ein bisschen Resonanz von Erfahreneren zu bekommen. Und es scheint nicht völlig abwegig zu sein was ich mir ausgedacht habe
Martin13 ist offline   Mit Zitat antworten
Alt 05.09.2007, 02:25  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Deine Rechnung habe ich nicht so ganz verstanden. Du scheinst ja bereits ein Browserspiel zu haben, dann müsstest du ja über Datenbank-Performance selbst ganz gut bescheid wissen. Ich habe noch nie mit Millionen-Datensätzen zu tun gehabt. Ich weiß nur von Problemen, als nach einer Fernsehwerbung die Datenbank zusammengebrochen ist, weil zuviele Schreibzugriffe die Datenbank gelockt haben. Die Unterteilung in PLZ-Abhängige Tabellen hat dann Abhilfe geschaffen. Naja war bestimmt auch an der Millionen-Grenze.

Sogesehen bekommst du sicherlich ähnliche Probleme zur Laufzeit, wenn du nur 4 Tabellen hast, auf denen auch noch auf jeder Spalte ein Index liegen muss und dann ein paar hundert Spieler gleichzeit schreibend darauf Zugriff nehmen.

Ich bleibe bei meiner Meinung ja. Ob 400 Tabellen für eine Datenbank allerdings gesund sind weiß ich nicht. Vielleicht kann da dr.e. noch ein Statement zu abgeben.

Zu 2.: Ein Browserspiel per Drag&Drop zusammenziehen, ich weiß nicht. Da musst du schon performieren wo es nur geht. Ich würde mich letztlich wohl doch für eigene Klassen entscheiden und OOP voll ausnutzen. Zunächst sollte die Konzeption im Vordergrund stehen, Performance ist auch sehr wichtig, darf aber das Konzept nicht gefährden.
Wenn du teilweise auf Klassen zur Kapselung verzichtest, müsste man vorher immer testen, ob ein Datencontainer (Array) oder ein souveränes Objekt vorliegt, dann kämen wieder Wrapper-Klassen ins Spiel und wir haben eine Bremse mehr im Code.

Ich glaube, ich wäre mit einem Drag&Drop-Browserspiel-Tool überfordert, da braucht man schon ziemlich helle und vor allem erfahrene Köpfe in Sachen Konzeption, sonst reitet man sich nur in die Scheisse. Möglicherweise kannst du es auch so machen, dass du dir Quellcode generieren und dabei optimieren läßt, also zwei Schritte einplanst. Einmal Konzeption und einmal Code-Generierung aus dem Konzept. Das Konzept musst du allerdings auch irgendwie persistieren, XML oder DB eben.

Knifflig. Aber machs erst mal der Reihe nach und schreib dir einen Klassengenerator, der Vererbung und Persistierung (DB oder XML) unterstützt. Favorisiere dafür eher XML, da gibts einfach mehr Möglichkeiten und du bist an keine DB sondern eine Datei gebunden. Finde ich flexibler. In C# war das teilweise ganz nett, da konnte man sich aus einer XSD Datei einfach den C# Klassenquellcode generieren, mit bereits vorhandenen Methoden etc.


Also stückchenweise angehen würde ich sagen:
Vorlangegenerator [VG] bauen:
VG mit Properties und CRUD-Funktionen erstellen
Den vom VG erzeugten Zustand persistieren, Vorschlag XML
Codegenerator [CG] bauen:
CG bekommt eine Vorlage übergeben und wandelt diese in PHP-Code um
Denn die Vorlage kann bei Änderungen manipuliert werden und muss nur dem CG übergeben werden und schon gibts den neuen Code
Andernfalls hast du eine Einbahnstraße, denn von PHP zurück in eine Vorlage wird schwierig ohne "Schablone" (Vorlage).

Der VG sollte wohl eine GUI haben, der CG kann ein CLI-Skript sein.
Zergling-new ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL Abfrage erzeugen/ string bearbeitung easy PHP Tipps 2007 20 28.03.2007 22:12
UML / MDA suche Tool Crypi PHP-Fortgeschrittene 13 21.01.2007 23:27
Bild erzeugen meisterigel PHP Tipps 2006 5 28.03.2006 14:43
Pulldown Menü dynamisch aus Datei erzeugen PHP Tipps 2005-2 14 20.10.2005 11:18
Tool zur Ermittlung von Datenbankänderungen Datenbanken 2 14.03.2005 20:09
Gesucht wird php Forum oder php Tool für eine Community Beitragsarchiv 4 10.03.2005 03:17
Kopf bzw Fußzeilen erzeugen Boennchen HTML, Usability und Barrierefreiheit 9 11.02.2005 16:35
mit PHP ein Bild erzeugen PHP Tipps 2004 2 19.10.2004 22:07
Datei mit php erzeugen Stümper PHP Tipps 2004 4 12.10.2004 12:51
DB tool ähnlich mysqlFRONT für Linux ? Server, Hosting und Workstations 4 03.09.2004 23:38
[Erledigt] Suche Tool: Text in mehreren Dateien ersetzen Off-Topic Diskussionen 8 17.08.2004 22:00
Farben umkehren :: Tool ? Off-Topic Diskussionen 10 16.08.2004 11:10
Suche Tool oder Software Beitragsarchiv 4 12.08.2004 11:54
Sucha nach einem myPhpAdmin ähnlichem Tool Datenbanken 2 02.07.2004 10:29
[Erledigt] variable Tabellen erzeugen PHP Tipps 2004 1 14.06.2004 09:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pear dataobject wrapperklassen, browsergame php klassen, php klassengenerator, php spiel inventar erstellen, als kind ein game erstellen, php klasse inventar game, tools datenbank php klassen erzeugen, php klasse browsergame, objektgenerator für spiele, php klassen modell erstellen, funktionen klassen tool programmieren, inventar php klasse spiel, klassengenerator spiel, browsergame php inventory, java persistierung vererbter klasse, pro und contra javasript, php static manipulation kindklasse, drag & drop position speichern, php klassen spieler, spiel inventar mit php erstellen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.