[PHP] Auftrag, ist mein Konzept gut? ANDERES PROBLEM
-
Hallo!
Ich habe einen Auftrag bekommen und mir dazu schon ein passendes System überlegt. Vielleicht sind einige von euch im eSportsbereich aktiv, dann kennt ihr evtl. den ESL Instant Challenger? Falls nicht, hier kurz, was ich programmieren soll:Häufig wollen Spieler am Computer ja gegen andere Spielen, dazu brauchen sie natürlich noch den passenden Gegner
Zur Zeit wird der meistens über das IRC gesucht, zB "Suche 2on2 FW Counterstrike, Highskilled, Server da"...das ganze soll ich nun ins Web übertragen. Dort gibt man an:
- Welches Spiel man spielen will (zB Counterstrike)
- Welchen Skill man hat (zB Highskilled)
- Wie viele Spieler teilnehmen (zB 2on2)
- Ob man einen Server zur Verfügung hat (zB Ja/Nein)
Dann klickt man auf suchen und wartet, bis ein passender Gegner gefunden wurde. Wenn einer gefunden wurde, werden die 2 in einen Chat übertragen. Dort können sie dann ServerIP + Passwort austauschen.
Jetzt mein Konzept:
Ich bastel mir auf dem Server eine MySQL Datenbank mit 2 Datensätzen Server und No Server. Wird nun eine Eingabe getätigt, wird zuerst überprüft, ob im anderen Datensatz (zB wenn man Server hat, im NoServer Block) ein Gegner ist, dessen Spieleranzahl/Skill/Spiel auf den im Moment passt. Wenn keiner in dem Datensatz gefunden wurde und man selbst einen Server hat sucht man noch Gegner im Datensatz mit den Spielern, die einen Server haben.
Wenn hier auch kein passender Gegner gefunden wurde, wird man in die Datenbank eingetragen. Der nächste der sucht und zu einem passt, wird dann den alten aufgreifen.Wenn jedoch ein Gegner gefunden wurde, wird zu dessen ID in einen dritten Datensatz "2passendeGegner" (zB) dessen ID eingetragen und noch ein Chatroom dazu. Dann wird in diesen Chatroom geswitcht. Am besten denke ich per Javaapplet und IRC. Der Raum lautet dann zB #ID1_ID2 (#2495_1283).
Was läuft am Rechner ab:
Wenn kein Gegner sofort in der Datenbank gefunden wurde, wird man auf eine IDLESeite weitergeleitet, diese wird alle 5 Sekunden aufgerufen. In dieser Seite steht Code, welcher überprüft ob ein Gegner gefunden wurde. Diese Überprüfung läuft so ab, dass man den Datensatz "2passendeGegner" (zB) überprüft, ob die eigene ID (am besten SID) dort eingetragen ist. Wenn ja, wird in den zugehörigen Chatroom per Javaapplett geswitcht und der eigene Eintrag in der MySQL-Datenbank wird gelöscht.Ja.....so stell ich mir das alles vor
Ich sehe keine Probleme, seht ihr welche oder habt ihr gar Verbesserungsvorschläge?Danke,
Gruß,
Kevin
-
Entschuldigung, dürfte ich den Namen der Liga haben die dir den Auftrag gegeben hat?
MfG SideWinder
-
darf ich wieso wozu? Konkurrenz kann ich nicht brauchen, gibt es schon genug von, sorry
-
Warum vorher prüfen ob schon einer da ist? Einfach jeder der sich einträgt in eine Tabelle schreiben. Ein Prozess sucht nun alle 5 Sekunden nach passenden Matches, hat er eines gefunden trägt er die IDs der beiden Teilnehmer in eine matched-Tabelle die dann jeweils alle 5 Sekunden von den Spielern der "Ich Warte"-Seite abgearbeitet wird. Wenn die ihre eigene ID findet leitet sie um auf die Chat-Seite.
MfG SideWinder
-
Surkevin schrieb:
darf ich wieso wozu? Konkurrenz kann ich nicht brauchen, gibt es schon genug von, sorry
Nein ich bin in diesem Fall von der anderen Seite, welche Liga macht uns nun mit einem eigenen InstantChallenger Konkurrenz?
MfG SideWinder
-
Was ist der Vorteil von deiner Variante? Dann müsste ich zusätzlich noch eine Linuxapplikation schreiben...wäre mein Konzept langsamer?
Du arbeitest für die ESL? Keine Sorge, ist keine Ligakonkurrenz.
-
Darf man trotzdem wissen wer die Konkurrenz sein wird?
MfG SideWinder
-
es ist keine Konkurrenz.....wenn die ESL ne Konkurrenz hat, dann die GIGA-Liga...möchte nicht zu viel dazu sagen, sorry, könntest du trotzdem meine Frage beantworten oder bist du jetzt beleidigt? :p
-
Ich bin jetzt beleidigt :p
Nein, dein Konzept ist imho okay
MfG SideWinder
-
deins klingt aber auch ganz cool
Was haben die denn für Vor-und Nachteile? Meines wohl als Vorteil, dass man keinen Prozess mehr braucht
-
Meins hat den Vorteil, dass die meiste Arbeit in einem Programm geschrieben ist das bereits compiliert ist und nicht interpretiert werden muss.
Bzgl. Geschwindigkeit kann ich dir nichts sagen, keine Ahnung wie man INSERT/SELECT am besten abstimmt um optimale Ergebnisse zu erzielen. Aber das scheint bei dir sowieso nicht nötig zu sein, da es ja keine Konkurrenz zur ESL wird und somit fast keine suchenden Spieler bedient?
MfG SideWinder
-
Ich kapier nicht warum es PHP basierend ist. Denn ein ordentlicher Client wäre dazu viel geeigneter - denn du willst doch wohl nicht, dass alle User dauernd deine Seite reloaden... Das wäre ja hölle für den armen Server...
Lieber zB ein JavaApplet (wenn es Browser basiert sein muss) aber am besten wäre ein Client, in dem das alles angezeigt wird. Würde dafür nen ordentlichen Server verlangen - hätte aber klare Vorteile.
btw: ich habe nicht kapiert warum SideWinders Variante mit nem schönen cronjob in PHP nicht gehen sollte. Ansonsten würde ich es wie SideWinder machen, nur das sich keine 5 sekunden nehmen würde, sondern mindestens 20.
Sonst geht der Server ja in die Knie
Und der Cronjob schaut natürlich auch, ob sich etwas geändert hat - lässt sich ja leicht einrichten...
-
ich wäre auch nur für Programme
Aber naja....Auftrag ist Auftrag....
-
ist es sinnvoll als ID in der DB die SessionID zu verwenden? Gibt es kostenlose OPENSOURCE Javaapplets um im IRC zu chatten, oder darf ich das selbst basteln?
-
Surkevin schrieb:
ist es sinnvoll als ID in der DB die SessionID zu verwenden?
n bisschen lange id - aber OK. wenn du nur schnell suchen willst, würde ich nen index bevorzugen.
Gibt es kostenlose OPENSOURCE Javaapplets um im IRC zu chatten, oder darf ich das selbst basteln?
Gibt es, aber frage mich nicht wo. ich hab schon einige gesehen, aber da das thema uninteressant ist für mich, habe ich alles wieder vergessen
-
Warum der Auftraggeber das so haben will? Weils beim Vorreiter genauso ist, 1:1-Kopien sind in dieser Hinsicht sehr beliebt da die Spieler das dann genauso benützen können.
Client lädt niemand runter, das Programm muss serh einfach zu bedienen sein - und schnell verfügbar sein. Wenn das mit einem Download zusammenhängt wird das niemals populär wenns bei der Konkurrenz auch ohne geht. 20 Sekunden wartet auch niemand, der durchschnittliche Gamer denkt in Millisekunden, nach 20 Sekunden glaubt der doch der IE hat sich aufgehängt und schießt ihn ab.
MfG SideWinder
-
SideWinder schrieb:
20 Sekunden wartet auch niemand, der durchschnittliche Gamer denkt in Millisekunden, nach 20 Sekunden glaubt der doch der IE hat sich aufgehängt und schießt ihn ab.
Wieso warten? Der User wird ja wohl nicht sofort mit ner antwort rechnen, oder? so schnell kann ja keiner 'OK spiele mit' sagen. Da sind 20 sekunden imho eine schöne refresh rate
Oder sind die Leute wirklich so ungeduldig? Wie will man da dann etwas tun? Schließlich warten ja nicht alle Leute darauf, dass jemand ein Spiel 'eröffnet'.
Erklär mal - das interssiert mich.
Und wenn du zB 100 user auf der seite sind und es gibt alle 5 sekunden ein reload der seite - wie verkraftet dass der server? mal abgesehen von dem verschwendeten traffic: kann die seite überhaupt alle 5 sekunden dargestellt werden? ich meine der browser muss einen request machen, die seite runterladen und dann darstellen. geht das vernünftig alle 5 sekunden? da kann man doch nicht gut klicken, oder?
-
Tja, müssen wohl Frames und Streamed-HTML her.
Aber hier wäre ein JavaApplet echt angesagt. Und die ganzen Spielekinder haben das ja auch drauf, also sollte das kein Problem sein. Geht sehr viel eleganter damit.
-
Jo ich mach dann mal alles so, wie ich es am Anfang sagte, danke euch allen!
Kevin
-
http://www.esl-europe.net - InstantChallenger
Das "ich spiele mit" kannst du dir sobald du den IC-Start-Button gedrückt hast nicht mehr aussuchen, du bekommst nur noch das Ergebnis zu sehen.
MfG SideWinder