Falc410
Vice Admiral
- Registriert
- Juni 2006
- Beiträge
- 6.902
Ich möchte in mein Webbassiertes Spiel ein Achievement System einbauen (Uni Projekt).
- Dazu gibt es mehrere Achievements von denen jeder Spieler mehrere erfüllt haben kann oder nicht (ManyToMany)
- Jedes Achievement kann ein oder mehrere Voraussetzungen (Conditions) haben die erfüllt werden müssen, eine Condition gehört zu einem Achievement (könnte hier auch ManyToMany Sinn machen?)
- Jeder Spieler soll einen Progress haben, so etwas wie einen Counter, damit ich dem Spieler anzeigen kann das er z.B. 3/4 bereits erfüllt hat und damit auch die Berechnung schneller geht. Ansonsten müsste ich ja jedesmal über die gesamte Datenbank schauen ob alle Voraussetzungen erfüllt sind.
Nun ist die Frage ob es mehr Sinn macht das jeder Spieler mehrere Progress hat, welche wiederrum genau einer Condition zu geordnet sind:

Oder ob jeder Spieler einen Progress hat, welcher dafür mehrere Conditions beinhaltet:

Oder ganz anders designen? Ich hab mit Datenbankdesign leider sehr wenig Erfahrung. Meine Idee (um es einigermassen performant zu machen) nach jeder Aktion vom Spieler über alle Conditions (die noch nicht 100% erfüllt sind) zu iterieren und diese in Progress ggf. hoch zu zählen. Sollte dabei eine Condition erfüllt sein wird geprüft ob das zugehörige Achievement erfüllt ist (falls alle anderen Conditions erfüllt sind).
Würdet ihr eine andere vorgehensweise empfehlen? Ich habe schon ein wenig gegooglet aber nichts gescheites gefunden. Alternativ kann ich ja über alle nicht erfüllten Achievements iterieren und dann für jedes Achievement die Conditions prüfen usw.
- Dazu gibt es mehrere Achievements von denen jeder Spieler mehrere erfüllt haben kann oder nicht (ManyToMany)
- Jedes Achievement kann ein oder mehrere Voraussetzungen (Conditions) haben die erfüllt werden müssen, eine Condition gehört zu einem Achievement (könnte hier auch ManyToMany Sinn machen?)
- Jeder Spieler soll einen Progress haben, so etwas wie einen Counter, damit ich dem Spieler anzeigen kann das er z.B. 3/4 bereits erfüllt hat und damit auch die Berechnung schneller geht. Ansonsten müsste ich ja jedesmal über die gesamte Datenbank schauen ob alle Voraussetzungen erfüllt sind.
Nun ist die Frage ob es mehr Sinn macht das jeder Spieler mehrere Progress hat, welche wiederrum genau einer Condition zu geordnet sind:

Oder ob jeder Spieler einen Progress hat, welcher dafür mehrere Conditions beinhaltet:

Oder ganz anders designen? Ich hab mit Datenbankdesign leider sehr wenig Erfahrung. Meine Idee (um es einigermassen performant zu machen) nach jeder Aktion vom Spieler über alle Conditions (die noch nicht 100% erfüllt sind) zu iterieren und diese in Progress ggf. hoch zu zählen. Sollte dabei eine Condition erfüllt sein wird geprüft ob das zugehörige Achievement erfüllt ist (falls alle anderen Conditions erfüllt sind).
Würdet ihr eine andere vorgehensweise empfehlen? Ich habe schon ein wenig gegooglet aber nichts gescheites gefunden. Alternativ kann ich ja über alle nicht erfüllten Achievements iterieren und dann für jedes Achievement die Conditions prüfen usw.