Nachdem Fobby meinte, ich solle das in nem extra Topic machen, wenn ich über Code reden möchte, tue ich das nun.
Ich schreibe eine Engine in PHP für Browsergames. Die Struktur wird ähnlich wie hier: http://www.galaxy-news.de/groups/2_entwickler/forums/5131_oop_klassendesign_modulverwaltung.html bereits diskutiert ausehen, mehr auch auf meinem Blog.
Die Engine habe ich schön abstrahiert, aber bei Rohstoffberechnungen oder Eventhandlern muss man stark auf Performance achten, da ist Klassen/Objektdesign auch nicht umbedingt angebracht.
Ich arbeite an einem OGame ähnlichen Spiel, aber wie es aussieht wird mein Spiel besser, schon allein der Rohstoffbug wurde bei OGame einfach nie gefixt ^^.
// Habe gerade festgestellt, dass der Code nicht so kurz ist.. ich stell meinen Text mal voran:
Das ist der Code für einen Eventhandler und eine (vollständige) Rohstoffberechnung in MySQL.
Bisher habe ich das ganze leider noch nicht richtig testen können, aber valid ist er und die Struktur der (doch recht komplexen) Rohstoffberechnung habe ich schon das zweite Mal geschrieben, beim ersten Mal war es eine (unperformante) PHP Klasse.
Der Eventhandler soll tatsächlich bei jedem Klick angekickt werden - Ja. Allerdings sind das eine bzw. mehrere Stored Procedures, die da in MySQL angeschoben werden. Ein Cursor für die abzuarbeitenden Flotten und dann ein paar kleine Queries je nach Mission der Flotte.
Die Missionen sind auch noch gar nicht ganz fertig, aber darauf kommt es gar nicht an.
Interessant dürfte die Prozedur zum auf-den-Heimweg-setzen der Flotte sein. Da habe ich mir eine Formel ausgedacht, die die Effizienz des verbrauchten Treibstoffs senkt, wenn das Schiff nicht mit optimaler Geschwindigkeit fliegt.
Dann kommt die Rohstoffberechnung. Ein System ist quasi ein Planet, nur logischer (15 Planeten in einem Sonnensystem bewohnbar... klar...). Die Rohstoffe heißen Aluminium, Silicium, Deuterium und Energie (kein richtiger Rohstoff..). Im MySQL Script ist die Anzahl der Rohstoffe festgeschrieben, aber ich werde die Installation mit PHP machen, das kann die Proceduren noch vor dem eingeben umformen für mehrere Rohstoffe und mehrere Energien.
Ich kenne das, wenn man fremden Code sieht, das Einarbeiten dauert eine ganze Weile. Ich hoffe nur, dass sich hier einige die Mühe machen werden, vor allem die mit den meisten MySQL Kenntnissen, denn ich hätte in dieser Richtung gerne noch einige Optimierungen. Was ansonsten noch ansteht weiß ich nicht, des halb schreibe ich ja diesen Topic. Ich hoffe auf ein wenig kontruktive Kritik :D
hier nun der Code:
Tabellen: http://pastebin.ch/548 (?pre = Tabellen Präfix)
Eventhandler: http://pastebin.ch/549
Rohstoffberechnung: http://pastebin.ch/542