Überlegungen zum Turnier/Wettkampf-Sim
Überlegungen zum Turnier/Wettkampf-Sim
Hallo,
wir hatten uns ja schon mal vor einiger Zeit Gedanken über eine mögliche c't-Bot Wettkampfumgebung gemacht. Die c't hat die Idee ja auch in ihrem Vortrag auf der CeBit aufgegriffen und laut der aktuellen Roadmap wird jetzt mit Hochdruck an einer Umsetzung gearbeitet.
Der geplante Ansatz der c't, zwei Bots (oder besser zwei Bot-Programme) im c't-Sim gegeneinander antreten zu lassen ist zwar ganz reizvoll, ich hatte mir aber etwas ganz Anderes vorgestellt und möchte daher meine Überlegungen mal zu "Papier" bringen:
Die Grundidee:
Damit jeder mit machen kann, findet der Wettkampf im c't-Sim statt.
Ein Bot erfüllt eine gestellte Aufgabe, die "Zeit" die er dazu braucht wird gemessen und an den Server übermittelt. Der Server verwaltet eine Bestenliste je Aufgabe.
Die Aufgaben:
An Hand der aktuellen technischen Fähigkeiten des c't-Bot könnte ich mir folgende Aufagben vorstellen:
Der Bot fährt von a nach b, die Zeit wird gemessen
Der Bot fährt von a nach b und muss dabei n andere Punkte in einer gegebenen Reihenfolge kreuzen
Der Bot bringt einen, oder mehrere Genstände von a nach b, oder von a nach b über n andere Punkte. Da der Bot bisher Gegenstände nur schieben kann, spielt er dabei Sokoban.
Die Liga (Ligen):
Hat der c't-Bot seine Aufgabe erfüllt, übermittelt der c't-Sim die dafür benötigte "Zeit" an den Server. Damit man die Ergebnisse zuordnen kann, können nur registrierte User Ihr Ergebniss übermitteln.
Je Aufgabe gibt es eine Bestenliste, evtl. könnte man das auch nach Regionen aufteilen. Hier lassen sich später dann auch Ergebnisse von realen Wettbewerben (bei den regional Treffen?) verwalten.
Voraussetzungen im c't-Sim:
Der c't-Sim braucht neue Elemente:
Einen Startpunkt, beim Überfahren des Punktes beginnt die eigentliche Aufgabenstellung (also die "Zeitmesung").
Einen Endpunkt, beim Überfahren des Punktes endet die "Zeitmesung", sofern der Bot seine Aufgabe erfüllt hat.
Kreuzungspunkte, die registrieren, das sie überfahren wurden und das sie in der Richtigen Reihenfolge überfahren wurden.
"Gegenstände", die der c't -Bot "transportieren" kann. Die zuvor aufgeführten Punkte müssen dann auch registrieren können, ob der Bot den Gegenstand mit sich führt oder nicht.
Technische Einzelheiten:
Der c't-Sim bringt eine feste Aufgabenumgebung mit. Damit Manipulationen etwas erschwert werden, sollte es für diese Turnier-Sims keinen Sourcecode geben. Für jeden Aufgabe gibt es einen eigenen vorkompilierten c't-Sim.
Damit das Ergebniss an den Server übermittelt werden kann, muss es eine Möglichkeit geben, den Usernamen, sowie das Passwort und evtl. auch die Region zu speichern.
Die "Zeitmessung" muss Rechner unabhängig sein. D.h. egal, ob die Aufgabe auf einem 468'er oder einem Pentium 4 gelöst wird, muss die ermittelte "Zeit" die gleiche sein.
Damit die Ergebnisse auch überprüft werden können wäre es evtl. auch ganz Interessant eine Möglichkeit zu haben seinen c't-Bot Code zusammen mit dem Ergbniss an den Server zu übermitteln.
melwood
PS: Die Umsetzung der Serverseite könnte ich übernehmen...
wir hatten uns ja schon mal vor einiger Zeit Gedanken über eine mögliche c't-Bot Wettkampfumgebung gemacht. Die c't hat die Idee ja auch in ihrem Vortrag auf der CeBit aufgegriffen und laut der aktuellen Roadmap wird jetzt mit Hochdruck an einer Umsetzung gearbeitet.
Der geplante Ansatz der c't, zwei Bots (oder besser zwei Bot-Programme) im c't-Sim gegeneinander antreten zu lassen ist zwar ganz reizvoll, ich hatte mir aber etwas ganz Anderes vorgestellt und möchte daher meine Überlegungen mal zu "Papier" bringen:
Die Grundidee:
Damit jeder mit machen kann, findet der Wettkampf im c't-Sim statt.
Ein Bot erfüllt eine gestellte Aufgabe, die "Zeit" die er dazu braucht wird gemessen und an den Server übermittelt. Der Server verwaltet eine Bestenliste je Aufgabe.
Die Aufgaben:
An Hand der aktuellen technischen Fähigkeiten des c't-Bot könnte ich mir folgende Aufagben vorstellen:
Der Bot fährt von a nach b, die Zeit wird gemessen
Der Bot fährt von a nach b und muss dabei n andere Punkte in einer gegebenen Reihenfolge kreuzen
Der Bot bringt einen, oder mehrere Genstände von a nach b, oder von a nach b über n andere Punkte. Da der Bot bisher Gegenstände nur schieben kann, spielt er dabei Sokoban.
Die Liga (Ligen):
Hat der c't-Bot seine Aufgabe erfüllt, übermittelt der c't-Sim die dafür benötigte "Zeit" an den Server. Damit man die Ergebnisse zuordnen kann, können nur registrierte User Ihr Ergebniss übermitteln.
Je Aufgabe gibt es eine Bestenliste, evtl. könnte man das auch nach Regionen aufteilen. Hier lassen sich später dann auch Ergebnisse von realen Wettbewerben (bei den regional Treffen?) verwalten.
Voraussetzungen im c't-Sim:
Der c't-Sim braucht neue Elemente:
Einen Startpunkt, beim Überfahren des Punktes beginnt die eigentliche Aufgabenstellung (also die "Zeitmesung").
Einen Endpunkt, beim Überfahren des Punktes endet die "Zeitmesung", sofern der Bot seine Aufgabe erfüllt hat.
Kreuzungspunkte, die registrieren, das sie überfahren wurden und das sie in der Richtigen Reihenfolge überfahren wurden.
"Gegenstände", die der c't -Bot "transportieren" kann. Die zuvor aufgeführten Punkte müssen dann auch registrieren können, ob der Bot den Gegenstand mit sich führt oder nicht.
Technische Einzelheiten:
Der c't-Sim bringt eine feste Aufgabenumgebung mit. Damit Manipulationen etwas erschwert werden, sollte es für diese Turnier-Sims keinen Sourcecode geben. Für jeden Aufgabe gibt es einen eigenen vorkompilierten c't-Sim.
Damit das Ergebniss an den Server übermittelt werden kann, muss es eine Möglichkeit geben, den Usernamen, sowie das Passwort und evtl. auch die Region zu speichern.
Die "Zeitmessung" muss Rechner unabhängig sein. D.h. egal, ob die Aufgabe auf einem 468'er oder einem Pentium 4 gelöst wird, muss die ermittelte "Zeit" die gleiche sein.
Damit die Ergebnisse auch überprüft werden können wäre es evtl. auch ganz Interessant eine Möglichkeit zu haben seinen c't-Bot Code zusammen mit dem Ergbniss an den Server zu übermitteln.
melwood
PS: Die Umsetzung der Serverseite könnte ich übernehmen...
Zuletzt geändert von lomdar67 am 12 Apr 2006, 10:28, insgesamt 1-mal geändert.
Re: Überlegungen zum Turnier/Wettkampf-Sim
Die Idee ist schonmal nicht schlecht und klingt ganz interessant - v.a. finde ich den Gedanken interessant, dass man später auch reale "Wettkämpfe" austragen kann - mit mehreren echten Botsmelwood hat geschrieben:Hallo,
wir hatten uns ja schon mal vor einiger Zeit Gedanken über eine mögliche c't-Bot Wettkampfumgebung gemacht. Die c't hat die Idee ja auch in ihrem Vortrag auf der CeBit aufgegriffen und laut der aktuellen Roadmap wird jetzt mit Hochdruck an einer Umsetzung gearbeitet.
Der geplante Ansatz der c't, zwei Bots (oder besser zwei Bot-Programme) im c't-Sim gegeneinander antreten zu lassen ist zwar ganz reizvoll, ich hatte mir aber etwas ganz Anderes vorgestellt und möchte daher meine Überlegungen mal zu "Papier" bringen:
Die Grundidee:
Damit jeder mit machen kann, findet der Wettkampf im c't-Sim statt.
Ein Bot erfüllt eine gestellte Aufgabe, die "Zeit" die er dazu braucht wird gemessen und an den Server übermittelt. Der Server verwaltet eine Bestenliste je Aufgabe.

Eigentlich bisher noch ein bissl lasch - leider hast du recht, und es entspricht nunmal den technischen Fähigkeiten - da der Wettkampf aber nicht morgen stattfinden wird, muss man sich ja auf die Aufgaben noch nicht einigen. Wenns dann soweit sein sollte, kann man ja das ganze noch mal besprechen.melwood hat geschrieben: Die Aufgaben:
An Hand der aktuellen technischen Fähigkeiten des c't-Bot könnte ich mir folgende Aufagben vorstellen:
Der Bot fährt von a nach b, die Zeit wird gemessen
Der Bot fährt von a nach b und muss dabei n andere Punkte in einer gegebenen Reihenfolge kreuzen
Der Bot bringt einen, oder mehrere Genstände von a nach b, oder von a nach b über n andere Punkte. Da der Bot bisher Gegenstände nur schieben kann, spielt er dabei Sokoban.
Wie bereits oben erwähnt: Sehr geile Ideemelwood hat geschrieben: Die Liga (Ligen):
Hat der c't-Bot seine Aufgabe erfüllt, übermittelt der c't-Sim die dafür benötigte "Zeit" an den Server. Damit man die Ergebnisse zuordnen kann, können nur registrierte User Ihr Ergebniss übermitteln.
Je Aufgabe gibt es eine Bestenliste, evtl. könnte man das auch nach Regionen aufteilen. Hier lassen sich später dann auch Ergebnisse von realen Wettbewerben (bei den regional Treffen?) verwalten.

Das mit den vorkompilierten Sims ist eine gute und v.a. sinnvolle Idee - die Zeitmessung kann man bestimmt irgendwie per NTP implementieren.melwood hat geschrieben: Voraussetzungen im c't-Sim:
Der c't-Sim braucht neue Elemente:
Einen Startpunkt, beim Überfahren des Punktes beginnt die eigentliche Aufgabenstellung (also die "Zeitmesung").
Einen Endpunkt, beim Überfahren des Punktes endet die "Zeitmesung", sofern der Bot seine Aufgabe erfüllt hat.
Kreuzungspunkte, die registrieren, das sie überfahren wurden und das sie in der Richtigen Reihenfolge überfahren wurden.
"Gegenstände", die der c't -Bot "transportieren" kann. Die zuvor aufgeführten Punkte müssen dann auch registrieren können, ob der Bot den Gegenstand mit sich führt oder nicht.
Technische Einzelheiten:
Der c't-Sim bringt eine feste Aufgabenumgebung mit. Damit Manipulationen etwas erschwert werden, sollte es für diese Turnier-Sims keinen Sourcecode geben. Für jeden Aufgabe gibt es einen eigenen vorkompilierten c't-Sim.
Damit das Ergebniss an den Server übermittelt werden kann, muss es eine Möglichkeit geben, den Usernamen, sowie das Passwort und evtl. auch die Region zu speichern.
Die "Zeitmessung" muss Rechner unabhängig sein. D.h. egal, ob die Aufgabe auf einem 468'er oder einem Pentium 4 gelöst wird, muss die ermittelte "Zeit" die gleiche sein.
Damit die Ergebnisse auch überprüft werden können wäre es evtl. auch ganz Interessant eine Möglichkeit zu haben seinen c't-Bot Code zusammen mit dem Ergbniss an den Server zu übermitteln.
Hier gibts zum Beispiel fertige NTP-Klassen für Java und auch nötige Information - das ist dann zumindest nicht beienflussbar! Die Start-, End- und Messpunkte kann man bestimmt mit der Java3D Api implementieren, so dass die Umsetzung der geplanten Ideen im c't-Sim "eigentlich" keine Probleme darstellen sollten!
In diesem Sinne
GALDO
Hi,
gute Idee auf jeden Fall!
Wenn man mal davon ausgeht, dass die Latenzzeit der Internetleitung nahezu konstant ist (im Zeitraum von Start bis Stopp), dann könnte man die Zeitmessung doch serverseitig machen.
Gruß Timo
gute Idee auf jeden Fall!
Wenn man mal davon ausgeht, dass die Latenzzeit der Internetleitung nahezu konstant ist (im Zeitraum von Start bis Stopp), dann könnte man die Zeitmessung doch serverseitig machen.
Gruß Timo
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben
Auch wenn man am Server ein Startpaket auswertet und am Server die Zeit speichert, dann das gleiche beim Ziel macht, müßte man trotzdem noch etwas einbauen um diese Pakete nicht zu generieren.
Etwas in der Art wie ein Wegprotokoll um die max Geschwindigkeit zu überprüfen.(Was man natürlich wieder faken kann....
)
Oder ganz anders:
Man lädt seinen Code auf den Server der simuliert die Fahrt und rechnet. Damit wäre die Plattform immer gleich und "relativ" angriffssicher (Muss man dan auf die Admins aufpassen ....
)
lg Philipp
Etwas in der Art wie ein Wegprotokoll um die max Geschwindigkeit zu überprüfen.(Was man natürlich wieder faken kann....

Oder ganz anders:
Man lädt seinen Code auf den Server der simuliert die Fahrt und rechnet. Damit wäre die Plattform immer gleich und "relativ" angriffssicher (Muss man dan auf die Admins aufpassen ....

lg Philipp
Das ist eine gute Idee, den Code auf dem Server ausführen zu lassen. Jedenfalls für den eigentlichen Wettkampf, testen kann man ja lokal und man könnte auch noch eine Zwischenstufe machen, wo man ("inoffiziell") gegen andere antreten kann 
Oder man übermittelt laufend Daten an den Server, also wie der Bot reagiert und der Server berechnet dadurch die Bot-Position etc.

Oder man übermittelt laufend Daten an den Server, also wie der Bot reagiert und der Server berechnet dadurch die Bot-Position etc.
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben
Den Gedanken hatte ich auch laufend die Botposition an den Server zu schicken. Aber da könnte man ja auch einen "Waypointeditor" basteln und diese dann vorspielen.
Noch ein Vorteil der Server Code Lösung wären die halbwegs gleichen Ergebnisse da ja der Prozessor gleich ist.(Einzig die Last durch Webserver und/oder Uploads müsste man sich anschauen)
Nachteil: Server hat dann sicher recht viel zu tun. Aber einen inoffiziellen Server für Training und Qualifying -> Berechtigung zur Prüfung am Messserver
Noch ein Vorteil der Server Code Lösung wären die halbwegs gleichen Ergebnisse da ja der Prozessor gleich ist.(Einzig die Last durch Webserver und/oder Uploads müsste man sich anschauen)
Nachteil: Server hat dann sicher recht viel zu tun. Aber einen inoffiziellen Server für Training und Qualifying -> Berechtigung zur Prüfung am Messserver

Da habt ihr natürlich schon recht - nur meint ihr, dass dieses Szenario relevant ist?philipp hat geschrieben:Hi!
Naja so sicher würd ich da nicht sein. Einen DNS Namen umbiegen ist schnell in der Hosts erledigt, einen NTP Aufruf über IP per Firewall umzuleiten auch kein Thema.
Sicher ein wenig Aufwand nur was tun manche Leute nicht alles um auf Platz 1 zu sein.![]()
lg Philipp
Gruß Galdo
Also alles was in Richtung Zeitmessung über einen (NTP) Server geht, ist meiner Meinung nach nicht realisierbar:philipp hat geschrieben:Auch wenn man am Server ein Startpaket auswertet und am Server die Zeit speichert, dann das gleiche beim Ziel macht, müßte man trotzdem noch etwas einbauen um diese Pakete nicht zu generieren.
Etwas in der Art wie ein Wegprotokoll um die max Geschwindigkeit zu überprüfen.(Was man natürlich wieder faken kann....)
Oder ganz anders:
Man lädt seinen Code auf den Server der simuliert die Fahrt und rechnet. Damit wäre die Plattform immer gleich und "relativ" angriffssicher (Muss man dan auf die Admins aufpassen ....)
lg Philipp
Auf einem langsamen Rechner läuft der c't-Sim auch langsamer, entsprechend braucht der c't-Bot dort auch länger um eine Aufgabe zu lösen. Dazu kommen dann noch unterschiedliche Internetverbindugen, die das Ergebniss zusätzlich verfälschen.
Ich würde eh von einer echten Zeitmessung absehen sondern irgend etwas heranziehen, das rechenleistungsunahängig ist.
Leider kenne ich micht mit Java zu wenig aus, um hier eine konkrete Lösung zu bieten.
Die Idee, die eigentliche "Zeitbestimmung" auf einem serverseitigen c't-Sim zu machen finde ich nicht schlecht, allerdings denke ich, ist der Programmieraufwand dafür recht hoch und man müsste dann evtl. sogar wirklich einen eigenen Server dafür abstellen.
Zusätzlich bräucht man immer noch einen clientseitigen c't-Sim, damit man seinen Code auch vorab testen kann.
Ich denke mal, manipulierbar ist alles, wenn man genügend Energie hinein steckt, daher würde ich, zumindest im ersten Schritt eine clientseitige Lösung bevorzugen. Ich denke, die läßt sich einfacher realisieren...
melwood
Mann könnte ja immer noch, wie ich in meinen Ausführung beschrieben habe, den Code mit ein schicken, damit man das Ergebniss verifizieren kann.
Ich denke das Faken von Ergebnissen und dem damit verbundenen Ranking
ist hinfällig, wenn der Siegercode einfach mit eingeschickt werden muss.
Dann kann jeder die Zeiten überprüfen. Schummler kommen dann einfach an den Pranger bzw. die Zeiten werden nicht gewertet.
Alle anderen Praktiken bringen uns beim Bot-Sport nicht wirklich weiter...
Bye
Chrimo
ist hinfällig, wenn der Siegercode einfach mit eingeschickt werden muss.
Dann kann jeder die Zeiten überprüfen. Schummler kommen dann einfach an den Pranger bzw. die Zeiten werden nicht gewertet.
Alle anderen Praktiken bringen uns beim Bot-Sport nicht wirklich weiter...
Bye
Chrimo