mmofacts.com

Spieleinstellungen - wohin damit?

gepostet vor 19 Jahre, 7 Monate von smf68
Hallo,
Ich bin gerade daran, mein Spiel ziemlich grundsätzlich zu überarbeiten, und bin an einen kleinen "Problemhügel" gestossen, denn ich nun wegschaufeln will (um das mal bildlich auszudrücken... )
Es geht um folgendes: Jeder von euch kennt das wohl. Ihr habt ein Spiel, dass sich aus vielen verschiedenen Dingen zusammensetzt, nehmen wir jetzt als Beispiel einmal Kampfeinheiten (die gibts ja fast überall). Zweifelsohne werden die Stärken und Schwächen dieser Einheiten durch irgendwelche Zahlen ausgemacht, die irgendwo gespeichert sind und abgerufen werden. Und hier sind wir auch schon beim Problem: Wo?
Bisher habe ich das ganze so gelöst: Für Kampfeinheiten (bei mir Schiffe) gab es die ships.inc.php, diese Datei erstellte eine Klasse, über die alle Werte eines Schiffes abgerufen werden konnten:
class ships

{
var $testschiff;
var $supa_pwn_schiff;
// ...etc
}

class ship
{
var $name;
var $angriffspunkte;
var $schild;
var $kosten;
// ...etc
}

$ships = @new ships;
$ships->testschiff = @new ship;
$ships->testschiff->name = "Testschiff";
$ships->testschiff->angriffspunkte = 1337;
// ... etc

In der Hauptdatei konnte ich nun, wenn ich einen Wert wollte, ihn einfach über die Klasse abrufen. Dieses System stellte mich aber vor einige Probleme:
- Was, wenn ich ein flexibles System will in das sich leicht weitere Schiffe einfügen lassen?
- Was, wenn man bestimmte Werte vom Script verändern will?
- Was, wenn ich das evige rumge-eval()-e vermeiden will?
und so weiter...

Mir kam die Idee, das ganze entweder über die Datenbank oder über ein Array zu lösen, das wieder wie bisher eingebunden wird. Aber irgendwo gibts überall Vor- und Nachteile... wie immer halt Bevor ich etwas überstürze, würde ich nun gern einmal wissen, wie IHR das löst... was habt ihr da so für Erfahrungen gemacht?
Wäre froh wenn ihr mir helfen könntet

mfg smf68
gepostet vor 19 Jahre, 7 Monate von The_Alien
Ich habe in der DB eine Tabelle für die Schiffe wo die Kosten, Laderaum etc drinne stehen, und auch welche forschungen etc diese benötigen.

NAchteil ist das dadurch recht viele DB abfragen zustande kommen, daher bin ich auch an einem anderen System am überlegen.

Ich bin mal auf die weiteren Antworten gespannt.
gepostet vor 19 Jahre, 7 Monate von smf68
Joa eigentlich wollte ich auch schon zur DB greifen... aber eben, (mindestens) ein query mehr pro Seitenaufruf macht schon was aus...
Weiss aber nicht ob eingebunde Dateien WIRKLICH eine alternative sind, weil total unflexibel :/

mfg smf68
gepostet vor 19 Jahre, 7 Monate von MannaZ
Ich verwende das Array-System.
Es ist ja nicht so, das wir alle paar Minuten eine neue Einheit anlegen, also ist es doch recht praktisch.
gepostet vor 19 Jahre, 7 Monate von brainfrost
warum nicht beides ?

nimm doch eine db zum einheiten erstellen/managen und lass aus denen per Knopfdruck die PHP mit den definitionen anlegen.
gepostet vor 19 Jahre, 7 Monate von Kallisti
Brauchst du die Daten denn ständig?

Bei mir braucht man sie eigentlich nur zum Mission starten, im Hafen, beim Torpedo und beim Systembau..., Kämpfe berechnet ein c/c++ Server, der liest die täglich um 04:00 zur Servicezeit neu in arrays ein...

Alles in mysql gespeichert, je eine table für Schiffe, torpedos und systeme (module in den Schiffen).

Ansonsten scheint die kombinierte Lösung mit aus db erzeugten php arrays ganz nett, wenn auch bischen umständlich (naja, kann man ja automatisieren ).

Das mag ich an diesem Forum, man bekommt lauter Anregungen durch die Probleme anderer
gepostet vor 19 Jahre, 7 Monate von brainfrost
aber mal als frage @ threadstarter...musst du nicht sowieso auf die DB zugreifen wenn du mit einheiten des spielers "arbeitest" ?

Also Spielerdaten und die passenden einheitenwerte zuordnen/auslesen schafft man auch mit einem query. Also zumindest behaupte ich das jetzt einmal, denn natürlich kenn ich den weiteren Aufbau deines Spieles nicht.
gepostet vor 19 Jahre, 7 Monate von Gambler
So ich muss wieder ma den Cache anwerben
Da die Datensätze sich dort ja selten ändern einfach die Abfragen Cachen. Da die dann im RAM stehen ist das sogar noch schneller als wenn ihrs aus ner Datei zieht.
gepostet vor 19 Jahre, 7 Monate von schokofreak
Original von Gambler
Da die dann im RAM stehen ist das sogar noch schneller als wenn ihrs aus ner Datei zieht.


sicher?
gepostet vor 19 Jahre, 7 Monate von The_Alien
Original von Gambler
So ich muss wieder ma den Cache anwerben
...


Doofe Frage ich weiß, aber irre ich mich oder chached SQL nicht eh ständig wiederholende abfragen?
Bzw, oder meinst du die Tabellen dann in eine Heaptabelle zu übertragen?

Nur davon mal abgesehen, mir zb geht es dabei eher genau darum die anzahl der qrys zu minimieren.

Gibt es nicht eine Art globale Variable wo man einmal was reinlädt und die scriptübergreifend ist? So wie Sessiondaten nur halt für alle. Weil dann könnte man ja dieese "globalen" Daten wie zb, Schiffsdaten usw einmal in den Speicher laden und dann die qrys weg lassen.
gepostet vor 19 Jahre, 7 Monate von brainfrost
So ich muss wieder ma den Cache anwerben
Da die Datensätze sich dort ja selten ändern einfach die Abfragen Cachen. Da die dann im RAM stehen ist das sogar noch schneller als wenn ihrs aus ner Datei zieht.



hmmm.... kann ich mir das von der teorie nicht vorstellen. Also das dies schneller sein soll, als wenn man variaben direkt in der Datei definiert.

Die skripte liegen doch genauso im (file-) cache sobald die eins - zweimal angefordert wurden.

Gibt es nicht eine Art globale Variable wo man einmal was reinlädt und die scriptübergreifend ist? So wie Sessiondaten nur halt für alle. Weil dann könnte man ja dieese "globalen" Daten wie zb, Schiffsdaten usw einmal in den Speicher laden und dann die qrys weg lassen.


Also nicht bei PHP.

Aber bist du dir sicher, das dieser Aufwand wirklich nötig ist ? Wann genau brauchst du denn diese Werte...und wofür ..Verwendest du diese Werte mit anderen Werten die du eh per SQL-Query liefern lässt ? ..wenn ja warum nicht gleich die Werte der Einheiten die du wissen möchtest im selben query abfragen ?
gepostet vor 19 Jahre, 7 Monate von Freshman
ich bevorzuge array, warum kann ich nicht genau sagen, warscheinlich,
weil es am einfachsten zu programmieren war, und weil es
am wenigsten auf dei CPU geht.

Mach es doch einfach so wie bei den gebäude, forschungen, ect...

array kann man schnell ändern, oder neue werte hinzufügen, wie du
es magst
gepostet vor 19 Jahre, 7 Monate von Gambler
Doofe Frage ich weiß, aber irre ich mich oder chached SQL nicht eh ständig wiederholende abfragen?
Bzw, oder meinst du die Tabellen dann in eine Heaptabelle zu übertragen?

exakt. Zumindest wenn mans richtig eingestellt hat
Nein meinte nicht die Heaptabellen.

Man könnte ja auch ein Zwischending machen. Man administriert den Kram bequem in der DB und lässt beim speichern das ganze in ne PHP Datei als Array schreiben.
gepostet vor 19 Jahre, 7 Monate von The_Alien
Original von Gambler

Man könnte ja auch ein Zwischending machen. Man administriert den Kram bequem in der DB und lässt beim speichern das ganze in ne PHP Datei als Array schreiben.


Da bin ich auch dranne am überlegen das es eine art Update Button gibt der die Daten wie zb die ganzen schiffswerte etc in eine Arraydatei schreibt. So hat man zum einen die verwaltung in der DB und zum anderen aber weniger abfragen. Und zur not kann man sich dann bei bedarf auch ohne SQL behelfen.

Auf diese Diskussion antworten