[PHP & Design] OnlineBrowserspiel sucht Helfer ;)

ChristianK

Well-known member
ID: 85965
L
25 Mai 2006
92
1
Hallo,

ich bin an einem OnlineBrowserspiel am programmieren. Leider bin ich bis jetzt der einzige Entwickler. Außerdem habe ich von Design nicht viel Ahnung.

Jetzt meine Frage, gibt es welche unter euch, die mir helfen würden dieses Spiel zum Spiel zu machen? Das ganze ist freiwillig und daher keine Bezahlung.

Wenn ihr nett und hilfsbereit seid, und wenn ihr eins von den unten aufgelisteten Dingen könnt, schreibt bitte hier als Antwort(oder per ICQ 174434116) was ihr machen wollt.

-> PHP programmierung(Smarty Grundkenntnisse erforderlich)
-> PHP Cronjob (Optimiertes Programmieren)

-> Grafiker (Design entwerfen ;) )



Hoffe es melden sich ein paar Leute und es ist das Sub-Forum für die Frage :)
 
Zuletzt bearbeitet:
Mein OnlineSpiel braucht schon CronJobs, z. B. wenn die Rohstoffe vergütet werden, wenn Angriffe ausgeführt werden usw.
 
und genau dann ist der ganze Aufbau falsch und Resourcen hungrig, such dir mal Boards die sich mit dem Thema des Aufbaus von Browsergames beschäftigen und ließ mal, ein BG braucht keine Cronjobs sondern eigentlich nur timestamps

browsergames24 könnte dir vllt helfen, habe den name nur gerade im kopf^^
 
und genau dann ist der ganze Aufbau falsch und Resourcen hungrig, such dir mal Boards die sich mit dem Thema des Aufbaus von Browsergames beschäftigen und ließ mal, ein BG braucht keine Cronjobs sondern eigentlich nur timestamps

browsergames24 könnte dir vllt helfen, habe den name nur gerade im kopf^^

ich muss ice-breaker leider recht geben.

Damals habe ich auch cronjobs verwendet, heute nicht mehr und meine Browsergames entlasten die DB heute sogar um bis zu 60% :)

Also ich würde alle mit Timestamps machen, Das ist alles machbar, man muss nur ein bisschen klug ran gehen :)
 
hehe, da hat Christian ja ein Opfer gefunden, du kannst Dieto bestimmt gut löchern^^ der kann dir alles genauer erklären als ich
 
CronJobs sind doch entlastend?

Wenn z. B. ein User eingeloggt ist und ein bissel rumklickt, wird dann das Rohstoffvergütungssystem bei jeden klick aufgerufen? Oder meinst du, z. B. alle 5 Minuten das Script aufrufen? Ein weiterer Nachteil ist, wenn ein User lange nicht online ist, bekommt dieser ja auch keine Rohstoffe, und bei Angriffen sind irgentwann keine mehr da.

Und bei einen CronJob werden die Rohstoffe jede 5 Minuten an alle vergeben, dann bekommt der Angreifer immer etwas. :)

Ich hatte mir auch schon das ganze überlegt, aber ich finde keinen Ausweg.
 
Naja du könntest ja bei einem Angriff dem Angegriffenen die Rohstoffe gutschreiben, bevor er geplündert wird.
 
genrell funzt das nach der regel, dass daten NUR aktualisiert werden, wenn man sie benötigt, wofür musst du 2 monate lang rohstoffe aktualisieren wenn dieser user nicht mehr online ist und seine rohstoffe keinen bezug zu den anderen spielern haben?
wenn jetzt jemand ihn ausrauben will (Bezug hergestellt) werden die daten eben mittels der beiden Timestamps aktualisiert, das mag bei manchen Sachen schwerer zu berechnen sein (nach 2 Wochen ist eine bessere Farmplantage da aber der User ist 4 Wochen offline) ist aber deutlich entlastender als Cronjobs, denn gerade der Cronjob, wenn er die Daten ALLER user berechnet, wird sehr belastend für das System und das alle 5min :roll:
 
Hallo,

also die Programmierung eines OnlineBrowsergames ist kein Zuckerschlecken, Christian! Man braucht einiges an Kenntnissen, nicht nur über PHP selbst sondern auch, wie man sowas am optimalsten aufbaut.

Cronjobs sollte man in Browsergames nur sehr selten verwenden. Gut angebracht ist es zum Beispiel bei der Berechnung der Highscores. Einmal täglich, bestens spät nachts wenn kaum wer online ist, sollte ein Cronjob die Punkte jedes einzelnen Users berechnen und in die Datenbank schreiben. Die Highscore-Tabelle ist dann immer den ganzen Tag gleich und nur zu jedem neuen Tag geupdated. Das spart einiges an Rechenzeit. Stell dir mal vor, du machst das alles immer direkt. Von jedem User die Punkte einzeln berechnen, dann die Highscores usw... ist sehr viel Rechenaufwand.

Ressourcenvergütung solltest du über timestamps machen. Du speicherst einen bestimmten timestamp, zum Beispiel der der Vollendung des nächsten Minenausbaus. Du weißt dann, wieviel die Minen produzieren. In der Zeit vom letzten Minenausbau oder allgemein der letzten Transaktion bis "jetzt" ist dann so und so viel produziert worden.

Wie die anderen schon sagten, schau dir erstmal an, wie man das richtig macht. Nicht einfach drauf losarbeiten. Es muss ein volles Konzept bestehen.

Außerdem solltest du die Kosten berechnen. Ein Browsergame verursacht einiges an Traffic. Stell dir vor du hast da 10000 User drauf, die fast den ganzen Tag irgendwo klicken. Die Server sollten damit klarkommen und Traffic solltest du auch genug zur Verfügung haben...

-Flori-
 
Traffik usw. ist kein Problem ;)

Das einzige was mir Sorgen macht ist: Welches TemplateSystem? Ist Smarty richtig gewählt? Kommt Smarty damit klar? Falls mir ein Programmier in ICQ mal helfen könnte, meine fragen zu beantworten wäre ich sehr dankbar.
ICQ 174434116.
 
Cronjobs sollte man in Browsergames nur sehr selten verwenden.

Morgen,

meiner Meinung nach eignen sich Cronjobs für einige Dinge sehrwohl (belehrt mich, wenn es einen Grund gibt, es anders zu sehen ;)).
Gerade z.B. das Kampfsystem eignet sich dafür relativ gut. Damit wäre auch das Problem, dass es auch um Daten die nicht upgedatet werden müssen, geht schonmal nicht mehr vorhanden.
Und jedesmalm sobald eine Interaktion des betroffenen Benutzers erfolgtm den Kampf auszutragen (und erstmal überprüfen, ob es einen Kampf für diesen User gibt) ist sicherlich insgesamt performancelastiger (auch wenn sich die Last mehr verteilt); als alle x minuten ein Cronjob für alle betroffenen User.

@Dieto: Deine Meinung zu Obenstehendem würde mich aufgrund deiner Aussage ganz besonders interessieren :)
Übrigens würde ich auch alles mit Timestamps & in Fällen wie oben mit Cronjobs machen ...

Gruß
 
meiner Meinung nach eignen sich Cronjobs für einige Dinge sehrwohl (belehrt mich, wenn es einen Grund gibt, es anders zu sehen ;)).
Gerade z.B. das Kampfsystem eignet sich dafür relativ gut. Damit wäre auch das Problem, dass es auch um Daten die nicht upgedatet werden müssen, geht schonmal nicht mehr vorhanden.
Und jedesmalm sobald eine Interaktion des betroffenen Benutzers erfolgtm den Kampf auszutragen (und erstmal überprüfen, ob es einen Kampf für diesen User gibt) ist sicherlich insgesamt performancelastiger (auch wenn sich die Last mehr verteilt); als alle x minuten ein Cronjob für alle betroffenen User.

Nun es kommt natürlich immer auf die Art von Onlinespiel an, die man programmieren will. Es gibt ja Spiele, die auf Runden basieren. Alle 10 Minuten meinetwegen ist eine Runde vorbei. Dann werden bestimmte Aktionen gemacht... Rohstoffe vergeben, Angriffe durchgeführt etc...

ich dachte allerdings, er will auf Echtzeit-Spiele hin, wie zum Beispiel Ogame oder Inselkampf.
Da ist es in vielen Fällen praktischer, das ganze mit Timestamps durchzusetzen. Sobald irgendeine Transaktion mit Rohstoffen durchgeführt wird, wird das in der DB festgehalten. Es kann dann dort reingeschrieben werden, wie viele Rohstoffe noch da sind und den timestamp der Aktion.
Wenn der User nun seine Seite aufruft oder jemand den User angreift wird zum Zeitpunkt des Aufrufs oder des vollendeten Angriffs anhand der vergangenen Zeitspanne und des Minenlevels die Anzahl Rohstoffe errechnet, die seit der letzten Aktion hinzugekommen sind. Dazu addiert man dann einfach noch das, was auf Lager ist.

Damit kommt man günstiger weg als mit Cronjobs oder so. Genauso bei Angriffen. Wird ein Angriff vollendet kann man in der DB vergleichen, wo der aktuelle timestamp größer als der vollendete Angriff ist. Dann wird die Schlacht durchgeführt... so in der Art läuft das...

Cronjobs werden dabei nur selten und eig. nur zur Unterstützung benötigt...

Bei diesen Rundenspielen wäre es mit crons sicher effektiver...

-Flori-
 
Okay, hast mich überredet; Werde wohl das Rohstoffsystem bei den User einbauen, das alle 5 klicks die Rohstoffe gutschreibt. Irgentwann nachts, läuft trotzdem noch der CronJob einmalig, der allen Usern die Rohstoffe gutschreibt. Das Kampfsystem lasse ich erstmal als CronJob ;)
 
Wenn der User nun seine Seite aufruft oder jemand den User angreift wird zum Zeitpunkt des Aufrufs oder des vollendeten Angriffs anhand der vergangenen Zeitspanne und des Minenlevels die Anzahl Rohstoffe errechnet, die seit der letzten Aktion hinzugekommen sind. Dazu addiert man dann einfach noch das, was auf Lager ist.

Damit kommt man günstiger weg als mit Cronjobs oder so. Genauso bei Angriffen. Wird ein Angriff vollendet kann man in der DB vergleichen, wo der aktuelle timestamp größer als der vollendete Angriff ist. Dann wird die Schlacht durchgeführt... so in der Art läuft das...

Hi,

und wer errechnet den "vollendeten Angriff", wenn beide User offline sind ?

Folgende Situation:
Spieler 2 greift Spieler 1 um 9 uhr an.
Spieler 3 greift Spieler 1 um 11 uhr an.

Spieler 2 oder Spieler 1 sind erst um 13 uhr wieder online, Spieler 3 aber schon um 11 uhr.

Nun würde, wenn man wirklich immer nur die direkt auf den User bezogenen Angriffe durchführt (nach Timestamp) um 11 uhr Spieler 3 Spieler 1 angreifen und jetzt einfach mal gewinnen. Dann würde um 13 uhr Spieler 2 Spieler 1 an und würde Spieler 3 besiegen, obwohl dieser erst nach Spieler 2 gelandet ist.

Natürlich könnte man jetzt irgendwelche indirekten Beziehungen errechnen und dann diese Kämpfe durchführen; allerdings sind dort die Schritte
:arrow: Errechnen der indirekten Beziehungen
:arrow: Ausführen
nötig (ganz davon abgesehen, dass ich noch eine große Klasse zusätzlich laden müsste).

Bei einem Cron wäre lediglich das "Ausführen" (unter Beachtung des Timestamps etc) erforderlich.

Gruß

P.S.: Ich rede übrigens auch von _fast_ Echtzeit-Spielen und das Ganze hier war lediglich auf das Kampfsystem bezogen.
Bei Ressis gebe ich dir recht.

edit: Diese Beziehungen könnte man ja ewig fortführen ...
 
Welches Templatesystem ist denn nun am besten für mich geeignet? Soll ich bei Smarty bleiben?


Ja, die Angriffe sind besser mit einen CronJob zu erledigen.
 
Welches Templatesystem ist denn nun am besten für mich geeignet? Soll ich bei Smarty bleiben.

Smarty hat halt für die einfachen Aufgaben eine Menge Overhead...

Ich würde mir an deiner Stelle mal crafty
anschauen (Seite ist wohl gerade down).

Ansonsten kann man sich auch wieder über den Sinn und Unsinn von Templatesystemen streiten ...
 
Welches Templatesystem ist denn nun am besten für mich geeignet? Soll ich bei Smarty bleiben?


Ja, die Angriffe sind besser mit einen CronJob zu erledigen.

smarty ist schon passend, kannste ruhig nutzten, allerdings wird es auch einige funktionen geben die du nicht benötigst, such deshalb mal nach "smarty lite" das ist das smarty nochmal etwas abgespeckt, ich denke das wird optimal für dich sein und das gute ist bei smarty können dir bei probs viele helfen


Johnson, das funzt bei den großen Browsergames auch über Timestamps (außer ogame), es mag etwas schwerer sein als sessions, aber wenn man sich etwas zeit nimmst, viel papier und einen stift sich die problematik aufmalt und dann versucht dies in einem logischen schritt (ohne code) zu lösen, kommt man zum ziel, nicht einfach, aber resourcen-sparender als cronjobs
 
Johnson, das funzt bei den großen Browsergames auch über Timestamps (außer ogame), es mag etwas schwerer sein als sessions, aber wenn man sich etwas zeit nimmst, viel papier und einen stift sich die problematik aufmalt und dann versucht dies in einem logischen schritt (ohne code) zu lösen, kommt man zum ziel, nicht einfach, aber resourcen-sparender als cronjobs

Dann musst du mir mal genauer erklären, was du mit "über Timestamps funktionieren" meinst :)
Der Cronjob funktioniert auch über Timestamps - also musst du irgendwas ein bisschen anders meinen ...

Also wie sieht das in deiner Vorstellung aus (ich habe mich schon vor meinem Post mit dieser Problematik beschäftigt)?

Gruß