brauche hilfe für browser-game

falerian
hallo,

ich habe vor ein onlinegame zu programieren. leicht gesagt nur leider nicht ganz so einfach wie ich festgestellt habe. deshalb hoffe ich jemanden zu finden der mir dabei helfen kann.

das spiel soll wie o-gamme oder inselkampf werden, allerdings mit einer weit geringerer userzahl (ich denke da an so max. 500).


zu mir:

ich programiere erst einige zeit lang und würde mich nicht gerade als profi zählen,
allerdings habe ich schon damit angefangen das spiel zu progen und folgende fetures funktionieren schon:

-anmeldung
-neuen Planeten suchen und erstellen
-gebäude bauen
-forschen
-resurchen vermehren sich (abhängig von den resurchenproduzierenden gebäuden)

in bearbeitung sind zurzeit

-bau von kampfschiffen
-visuelle darstellung
Chris Hunter
öhhhmm und weiter? genauerer frage bitte.
schiffe kannste ganauso bauen wie die rohstoffe vermehrst nur da du einen zähler hast der dabei noch rückwärts zählt... nur so als tip..

is wie

-5000 ressourcen sind noch da
-200 wurden seit letzten aufruf gebaut
-zeitpunkt setzen
-5000-200 rechnen
-4800 schreiben
-200 schreiben

so oder anders...

nächste konkrete frage...
..mmhh wichtig währe auch zu wissen wie deine struktur zur zeit ist...
ist online? kann man ansehen das ganze?
falerian
hm... ja gute idee hatte eigentlich vor:

10 schiffe bauen => 100min
nochmal 10 bauen =>100min + 100min

und dann wenn der block fertich ist die schiffe ausgeben blöckeweise ausgeben oder so ähnlich.

ein großes problem ist finde ich:

wenn eine flotte eines spielers zurückkehrt, dieser allerdings nicht online ist und ihn ein anderer angreift registriert der planet nicht das da eigentlich was sein müsste (die fotte die zureückkommt mein ich)
Chris Hunter
function upgrade_planet($id)
{
rohstoffupdates($id);
gebäudeupdates($id);
einheitenupdates($id);
}

diese funktion vor dem angriff einfach aufrufen...

nächste konkrete frage.

PS: du gewinnst wenn ich ins bett gehe oder keine antwort weiß
PPS: geh gleich ins bett *g*

wennu bock hast bin noch bis 23:30 in #htw.game @ quakenet
daHooligan
du solltest vielleicht im titel was mit "browsergame" schreiben, weil o-game ist auch ein Browsergame und da klicken dann rel. wenig leutz drauf
falerian
hmm das mit der funktion kapier ich net so ganz sorry^^

wer soll denn die funktion aufrufen wenn keiner online ist?


ist es nicht vielleicht auch möglich das der angreifer in seiner AKTIONSDATEI den ausgehenden angriff stehen hatt und der verteidiger den einkommenden angriff.

und je nachdem wer zuerst online geht verarbeitet dann die daten?
aber wie hoch ist denn die warscheinlichkeit das alle zwei spieler gleichzeitig die daten verarbeiten? nicht das da was durcheinander kommt.
Chris Hunter
wer zuerst kommt malt zuerst.
sobald die daten des planeten abgerufen werden oder einer der beiden spieler online geht rufst du die funktion auf, fertig...
Prophet
Du solltest objekt orientiert arbeiten das hätte glaube ich viele vorteile bei solch komplexen strukturen. Ich hoffe das machst.

Aber was willst du nu eigentlich von uns? Das sagen oder sollen wir dir helfen?
ThiefMaster
Zitat:
aber wie hoch ist denn die warscheinlichkeit das alle zwei spieler gleichzeitig die daten verarbeiten? nicht das da was durcheinander kommt.
Bereits die theoretische Möglichkeit eine Race Condition ist schon zuviel.
Am besten macht man bei Browsergames einen Eventhandler als separaten Prozess, der alle kritischen Aktionen sequentiell abarbeitet (Ereignisse, Flotten verschicken, Schiffsbau, etc.).
Chris Hunter
du meinst n externer eventhandler der als php script läuft oder besser als compiliertes programm, das alle minute die kritischen funktionien aufruft...

sollte aber dann eher zusätzlich zum script laufen. denke nicht das du n eventhandler schreiben kannst der die ganzen dinge so aktuell hält das du im script immer 100% die richtigen werte hast...
Prophet
Sowas zu realisieren ist ziemlich schwer. Es reicht ja vll schon bei aufruf eines beliebigen scripts durch den user zu prüfen ob eine bestimmte zeit vergangen ist und dann dieses script zwsichendurch aufzurufen. Das wäre in der realisation nicht alzu schwer und das script würde den server nicht belasten wenn keine spieler on sind. es wird halt nur ein spieler der das script zum richtigen zeitpunkt öffnet gestört. Natürlich müsste das script dann auch weit zurück liegende ereignisse richtig verarbeiten aber das ist ja nur eine frage der zeitrechnung.

Jede möglichkeit einen fehler hervorzurufen egal wie gering sie ist sollte immer im keim erstickt werden!
falerian
einen eventmaneger kann ich nicht programieren, wobei sowas nicht schlecht währe.

@Prophet naja eigentlich such ich jemanden der mit mir zusammen das spiel programmiern will / kann. Nur glaub ich das ich da keinen finden werde der sowas freiwillig machen will ohne bezahlung.

gibts nicht vielleicht eine einstellung oder einen befehl der zulässt das nur 1 user die datei öffnet?
daHooligan
ja klar, nur nicht direkt.
du musst nur in ner DB/Datei vermerken dass die Datei ausgeführt wird und das am Ende wieder austragen Augenzwinkern
Chris Hunter
Zitat:
Original von falerian
@Prophet naja eigentlich such ich jemanden der mit mir zusammen das spiel programmiern will / kann. Nur glaub ich das ich da keinen finden werde der sowas freiwillig machen will ohne bezahlung.


ja den such ich auch. aber der muss gut sein und teamfähig...