mmofacts.com

Mein BG

gepostet vor 18 Jahre, 7 Monate von Balduran
Mein Browsergame hat eigentlich immer mit ziehmlich simplen methoden gearbeitet.. also nie etwas kompliziertes eingebracht ((ausser wenn man den script sieht würd man es halt als kompliziert bezeichnen))
ich hab kein Peil von Klassen gehabt und Template systeme auch eher gemieden...

mein Seiten aufbau sieht folgender maßen aus.. ich habe eine Index.php datei die zum einen die Schablone für den Seiteninhalt hat und dann in die mittlere fläche wo text reinkommt wird ein include("game.php"); eingebunden... navigation erfolgt dadurch das man immer mit den adresszeilen variablen arbeitet ?site=gebaeude meintwegen.. dann kommten halt in der game php verschiedene abfragen

if($_GET['site'] == "bauten")
....
if($_GET['site'] == "truppen")
...

jetz hab ich angefangen das system von templates zu erlernen... nur sagt mir mal was ist bei templates der vorteil gegenüber meinem system...




und naja mein zweites problem.. ich hab nie klassen benutzt.. könnt ihr mir vielleicht mal paar beispiele nennen wofür man zum beispiel klassen gebrauchen könnt ((kann mich da nochnicht reindenken, also seh da keinen wirklichen verwendungszweck ))


also danke für jede info
gepostet vor 18 Jahre, 7 Monate von Kampfhoernchen
Klassen brauchste für Objektorientierung. Wenn du nen ausreichend dicken Server hast, kannste das ganze Spiel objektorientiert machen.

Vorteile Templatesystem:
- Trennung von Code und Design
- sehr viel übersichtlichler Code
- dadurch viel schnelleres Change-Management und Bug-Hunting
- Designer und Coder können unabnhängig voneinander arbeiten
- es können mehrere "Skins" verwendet werden

Nur die, die mir grad so einfallen. Gibt noch mehr Vorteile, dem gegenüber steht nur ein Nachteil: Performance. Aber mit nem "leichten" Template-System ist auch das kein Thema. Ich empfehle FastTemplate, von Smarty lass die Finger.
gepostet vor 18 Jahre, 7 Monate von Klaus
ist smarty denn sooo langsam?
gepostet vor 18 Jahre, 7 Monate von Balduran
ich hab smarty auf meinem laptop drauf ((local webserver zum testen))
nur hab ich nu im template ordner für jede seite ne eigene tpl datei... was is daran bitte einfacher zu editieren??
ma angenommen ich will das design ändern dann muss ich ja in jeder datei was ändern ?!
gepostet vor 18 Jahre, 7 Monate von Balduran
hoernchen => von dir aus nem andren thread:
Original von Kampfhoernchen


PS. Ich empfehle den Einsatz einer Datenbankklasse. Ist programmiertechnisch schöner als die direkten mysql_*-Funktionen von PHP.

kannste ma sone datenbankklasse hier hinschreibe, will ma sehen wie sowas aussieht :-)
gepostet vor 18 Jahre, 7 Monate von Klaus
Na in der PHP Datei ist immer noch der Code dazwischen und ständig ?> Das sieht aus wie Sau, deswegen hab ich erstmal Smarty als Templatesystem genommen, weil ich kein andere besonders gut kannte.
gepostet vor 18 Jahre, 7 Monate von friedenspanzer
Original von Balduran
hoernchen => von dir aus nem andren thread:
Original von Kampfhoernchen

PS. Ich empfehle den Einsatz einer Datenbankklasse. Ist programmiertechnisch schöner als die direkten mysql_*-Funktionen von PHP.


kannste ma sone datenbankklasse hier hinschreibe, will ma sehen wie sowas aussieht :-)

Bitteschön :wink:
gepostet vor 18 Jahre, 7 Monate von Balduran
danke
werd mir des heut abend ma in ruhe durchlesen
gepostet vor 18 Jahre, 7 Monate von Kampfhoernchen
Hier meine Version (zur freien Verwendung versteht sich):
 

/**
* Stellt eine Datenbankverbindung zu einer MySQL-Datenbank her
* @package THR_lib
* @version 2.1
* @author Michael Baumann
*/



class DB {
var $counter, $db_name, $db_host, $db_user, $db_password, $kennung, $result, $prefix, $last;

/**
* Erzeugt das Datenbankobjekt
*/
function DB(){
$this->db_host = 'localhost';
$this->db_user = 'nutzername';
$this->db_pw = 'pwd';
$this->db_name = 'dbn';
$this->counter = 0;
$this->prefix = '';

$this->kennung = @mysql_connect($this->db_host, $this->db_user ,$this->db_pw)
or die('FEHLER 113 - NO DATABASE SERVER ON THIS DATA');
mysql_select_db($this->db_name)
or die ('FEHLER 118 - DATABASE NOT FOUND');
}

/**
* Setzt eine Anfrage an die Datenbank ab
*/
function query($sql){
$sql = str_replace('{PREFIX}', $this->prefix, $sql);
$this->last = $sql;
$this->result = mysql_query($sql);
$this->counter ++;
return $this->error_report(true);

}

/**
* Baut eine einfache SELECT-Abfrage zusammen und setzt sie ab
*/
function select($table, $fields = '*'){
$sql = 'SELECT '.$fields.' FROM '.$table;
return $this->query($sql);
}

/**
* Liefert den Fehler einer Abfrage
*/
function error_report($expand = false){
if(mysql_errno() != 0){
$msg = 'FEHLER 126 - DATABASE ERROR: '.mysql_errno();
if($expand) $msg .= ' - '.mysql_error().'
Query:
'.$this->last.'
';
die($msg);
return false;
}
else return true;
}

/**
* Liefert die Anzahl der betroffenen Datensätze
*/
function anzahl(){
$anz = @mysql_affected_rows($this->kennung);
if($anz) return $anz;
else return 0;
}

/**
* Liefert den nächsten Datensatz
*/
function next_record(){
return @mysql_fetch_assoc($this->result);
}

/**
Liefert ein Element des nächsten datendatzes
*/
function next_col($col){
if($buffer = $this->next_record()){
return $buffer[$col];
}
return false;
}


/**
* Liefert alle Datensätze der letzten Abfrage, indizierung 1 - n oder $index
*/
function all_records($index = false){
$erg = array();
while($buffer = $this->next_record()){
if($index){
$erg[$buffer[$index]] = $buffer;
} else {
$erg[] = $buffer;
}
}
return $erg;
}

/**
* Gibt die ID des letzten Inserts zurück
*/
function last_insert(){
return @mysql_insert_id($this->kennung);
}


/**
* Gibt ein Array aus
*/
function dump($erg){
echo $this->last;
echo '
';

var_dump($erg);
echo '';
}

/**
* Lieft den nächsten Datensatz als numerisches Array
*/
function next_row() {
return @mysql_fetch_row($this->result);
}

}

?>
gepostet vor 18 Jahre, 7 Monate von The_Alien
Aber um nochmal auf die Template Engines zurück zu kommen. Habe schon öfters gehört das Smarty zwar "alles" kann aber dafür auch sehr langsam sein soll. Hat da evtl mal einer Vergleichswerte oder so. Weil ich momentan auch Smarty verwende aber wenn es performanter ist würde ich auch umsteigen.
gepostet vor 18 Jahre, 7 Monate von Kampfhoernchen
*alten Benchmark ausgrab*

So, da is der Vergleich (Mittel bei 1000 Requests):


PHP_Lib: 74 ms
Smarty: 48 ms
FastTemplate: 39 ms
Eigenbau: 36 ms
Ohne Template: 31 ms
gepostet vor 18 Jahre, 7 Monate von Krisch
Ich hab eine ganz einfach "Page"-Klasse die die HTML-Dateien includet oder wenn man will als String zurück gibt. Dazu gibt's je nach Projekt noch abgeleitende Klassen die den Inhalt der jeweiligen Unterseite steuern.

Ansonsten heisst mein Template System PHP, ich seh nicht ein warum ich Resourcen für irgendwelche "Template-Systeme" verschwenden sollte.
gepostet vor 18 Jahre, 7 Monate von Klaus
unterstützt Fasttemplate auch Dinge wie Schleifen und if-else Abfragen?
gepostet vor 18 Jahre, 7 Monate von Kampfhoernchen
Schleifen auf jeden Fall, bei ifs bin ich mir jetzt net ganz so sicher, glaube aber schon.
gepostet vor 18 Jahre, 7 Monate von Klaus
Original von Kampfhoernchen
*alten Benchmark ausgrab*

So, da is der Vergleich (Mittel bei 1000 Requests):


PHP_Lib: 74 ms
Smarty: 48 ms
FastTemplate: 39 ms
Eigenbau: 36 ms
Ohne Template: 31 ms


Hast du bei deinem Test auch den Cache von Smarty verwendet? Fasttemplate hat ja leider keinen.
gepostet vor 18 Jahre, 7 Monate von Kampfhoernchen
Ja. Ohne Cache war des ganze ja noch langsamer als PHP_Lib.

Meins is wohl deshalb so schnell, weil es auch vorkompiliert.
gepostet vor 18 Jahre, 6 Monate von Klaus
Ich werde jetzt wahrscheinlich auf php_templates umsteigen. Es ist extrem schnell da es als PHP-Modul agiert. Zwar sind die Möglichkeiten begrenzt, aber das hält die Templates sauber und führt nicht zur Vermischung im Template von Code und HTML, wie es bei Smarty der Fall ist.
gepostet vor 18 Jahre, 6 Monate von Mudder
Ich hab meine eigene Engine

Aber zu diesem php_templates -Modul.. Hast du da eine "gute" Seite? Weil ich hab so nicht wirklich was darüber finden können.
gepostet vor 18 Jahre, 6 Monate von Klaus
nur die sourceforge Seite und das Forum dort.

Bei windows nimmst einfach die dll, bei Linux musst aber mit php komplimieren.

Auf diese Diskussion antworten