36 Gedanken zu „Kontakt“

  1. Hallo Stefan,

    ich bin gerade dabei ein paar Ideen für meinen web worker umzusetzen. Dabei ist mir folgendes aufgefallen.
    – lokale web worker erhalten einen spielverzehrenden Vorteil indem sie deutlich sichtbar früher starten als ein „remote“ web worker
    – im GAMES-Bereich wird eine Auswahlliste angezeigt, welchen Zusammenhang hat diese Liste zu der Top20-Liste

    Grüße
    Mario

    1. Hallo Mario,

      das mit der Verzögerung muss ich untersuchen. Da weiß ich auch nicht mehr als Du.
      Du kannst Dir damit helfen, den Web Worker Code unter http://www.webworkercontest.net/droppedworker/webworkername.js direkt auf Deinen Rechner zu laden und dann beide Web Worker lokal spielen zu lassen.

      In der Auswahlliste des Game Bereichs finden sich die Web Worker, die schon ausgeschieden sind. Und zwar die letzten 30. An den Code dieser Web Worker kommst Du wie oben beschrieben ran. Der Code der neu eingereichten und der Top20 ist geschützt.

      Viele Grüße
      Stefan

  2. Hallo Stefan,

    zuerst mal möchte ich dich zu deinem gelungenen Wettbewerb beglückwünschen! Es macht viel Spaß, mit verschiedenen Workern zu experimentieren.
    Ich habe außerdem eine Idee / Anregung für dich: Für die Teilnehmer und auch Zuschauer wäre es bestimmt toll, wenn sie nicht nur Spiele der eigenen und ausgeschiedenen Web Worker, sondern auch welche aus den Top20 sehen könnten.
    Ich würde mich jedenfalls freuen, wenn du täglich ein paar der interessantesten Ligaspiele auswählst (heute z.B. mein crossEater4 gegen exo3 😉 ), und einfach als (Bildschirm-)Videos irgendwo veröffentlichst.

    viele Grüße,
    Piet

    PS: Übrigens scheint der Super-User Rechner gerade zu stehen, es gibt keine Veränderungen mehr. Ist da was abgestürzt?

    1. Hallo Piet,
      Du lieferst Dir ja einen tollen Zweikampf mit exo. Das mit dem Video ist eine tolle Idee!!! Einzig mein Zeitproblem spricht dagegen. Ich versuche das mal (spätenstens) für die Start-Up Sieger hinzubekommen. Kannst Du mir einen Tipp geben, wie man das am besten hinbekommt (am besten für Ubuntu; Windows geht aber auch; Browser egal).

      Ich stelle den Superuser (wie jetzt) hin ud wieder ab. Ich habe nämlich nur einen (gescheiten) Rechner und muss da hin- und wieder andere Sachen machen (der Superuser soll immmer im Vordergrung laufen).
      Bisher gab es keinen Absturz und kein Error im Log!

      Viele Grüße
      Stefan

    2. Hallo Piet,
      ich denke, dass die Strategien der Top20 Worker extra nicht angesehen werden können. Die Strategie spielt bei diesem Wettbewerb ja eine wesentliche Rolle. 🙂

      1. Hallo feri,
        ja, daran hab ich auch schon gedacht. Aber auf den zweiten Blick finde ich, dass kleine Einblicke in die Strategie der Spieler den Wettbewerb nur noch spannender machen können. Es wird den Fortschritt beflüglen, wenn jeder versuchen kann, das beste Verhalten weiter zu entwickeln oder auszutricksen. Und die umsetzenden Programmcodes bleiben ja weiterhin geheim.
        Ich für meinen Teil bin jedenfalls gerne bereit, jedem zu zeigen, wie mein Programm spielt – wenn ich dafür ein paar faszinierende Spiele zu sehen bekomme.
        Piet

  3. Ich benutze eigentlich den Firefox und wollte zur Fehlersuche mal einen anderen Browser benutzen. Beim Internet Explorer und bei Opera kann ich keinen lokalen Worker testen:

    Internet Explorer Version: 11.0.9600.17107
    Meldung in der Konsole:
    Datei: game.php
    SCRIPT5022: SecurityError
    Datei: WorkerDisposer.js, Zeile: 40, Spalte: 7

    bei Opera
    Version 12.16
    Build 1860
    Plattform Linux
    Betriebssystem
    i686, 3.2.0-61-generic-pae

    [31.05.2014 18:30:42] JavaScript – http://www.webworkercontest.net/game.php
    Event thread: load
    Uncaught exception: TypeError: Cannot convert ‚this.file0‘ to object
    Error thrown at line 63, column 8 in () in http://www.webworkercontest.net/js/game/ScheduleSelection.js:
    hash = „local:“ + this.file0.name;
    called from line 49, column 4 in (that) in http://www.webworkercontest.net/js/game/ScheduleSelection.js:
    return this.hash() === that.hash();
    called from line 30, column 4 in () in http://www.webworkercontest.net/js/game/Scheduler.js:
    if (actualScheduleSelection.isValid() && !actualScheduleSelection.equals(this.scheduleSelection))
    called from line 23, column 4 in () in http://www.webworkercontest.net/js/game/Scheduler.js:
    this.determineScheduler();
    called from line 29, column 4 in () in http://www.webworkercontest.net/js/game/GameController.js:
    this.scheduler.getWorkerNames().done((function(workerDisposer) {
    called from line 104, column 4 in () in http://www.webworkercontest.net/js/game/gameInit.js:
    gameController.initNewGame();
    called via Function.prototype.apply() from line 2, column 53629 in (l) in http://www.webworkercontest.net/js/libs/jquery.js:
    if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse)
    called from line 2, column 55202 in (a, b) in http://www.webworkercontest.net/js/libs/jquery.js:
    return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this
    called from line 2, column 58768 in (a) in http://www.webworkercontest.net/js/libs/jquery.js:
    (a===!0?–n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&–n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(„ready“),n(l).off(„ready“))))
    called from line 2, column 59133 in I() in http://www.webworkercontest.net/js/libs/jquery.js:
    l.removeEventListener(„DOMContentLoaded“,I,!1),a.removeEventListener(„load“,I,!1),n.ready()

    Jemand eine Idee?

    1. Muss ich mir anschauen. Richtig getestet habe ich den Code nur im Firefox. Explorer und Chrome habe ich nur kurz angeschmissen (aber keine lokalen Files getestet), Opera habe ich gar nicht probiert.

  4. Ich habe mich gerade gewundert dass meine Worker ziemlich schnell wieder rausflogen (z.B. nach 10:10 zu Games). Es war eine fehngartenx.js. Es war glaube ich erst die dritte oder vierte heurte- und pro Tag darf man doch 5 laden oder nicht?

    Wie kam das?

    1. Die Challenger spielen immer zuerst gegen den Letzten aus den Top 20. Gegen den Letzten machen sie genau 20 Spiele. Gewinnen sie gegen den letzten (mindestens 11:9), kommen sie in die Top 20 und spielen gegen alle anderen genau 20 Spiele. Danach fliegt der 21. aus den Top 20 raus. Bei 10:10 fliegt man also auch sofort raus.

      1. es hat mich halt gewundert weil es nur minimale Änderungen gab zu den Version in die auf Platz 6 und 7 stehen.

        Und vor dem Upload hatte ich die neue Version gegen die Alten getestet und die Neue lag bei 50 Versuchen minmal vorne. Deshalb war ich schon etwas verwundert dass sie sofort rausflog.

        Ich möchte deshalb auch vorschlagen dieses Pocedere zu ändern – 20 Spiele gengen den letzten sind einfach zu wenig. Es müssten mehr Spiele sein und vor allem auch gegen mehr Gegner.

        Begründung:

        in Testläufen hatte ich schon Spielstände von 4:12 die sich nach längerem Test auf ein 5:4 eingependelt haben.

        Was wäre wenn:
        Ein Worker hat gegen den letzten echte Probleme aber die meisten Anderen putzt er von der Platte. Deshalb denk mal über dieses Verfahren nach.

        Die Unterschiede sind teilweise so eng dass nur vermehrtes Aufeinandertreffen nachvollziehbare Ergebnisse liefert

        Mein Vorschlag:

        Mehr Battles – mehr Gegner – vor allem für neue Worker

        1. Nachtrag:

          vor allem da die ersten 20 inzwischen alle ziemlich gut sind wird der Zugang für Neue oder geänderte Worker extrem schwer da bei nur 20 Battles minimale Vorteile vom Pech ungünstiger Startpunkte ziemlich schnell verweht werden könnten.

          1. Versteh mich bitte nicht falsch, ich bin absolut begeistert von diesem Wettbewerb und der Arbeit die dahinter steckt dies zu realisieren.

  5. Hallo,

    das ist ja wie im richtigen Leben, man muss erst am Türsteher vorbei, um aufs Parkett zu dürfen. Um das Problem der unentschiedenen Durchgänge zu entschärfen, könnte man doch einfach eine ungerade Anzahl Spiele durchführen, dann tritt das nicht mehr auf.

    Gruß PHantom

  6. Hallo Werner Schäffer,

    vielen Dank für die Hinweise und Vorschläge. Mit den knappen Ergebnissen und der Rolle des Zufalls hast Du recht. Das gilt nicht nur für neue Herausforderer, sondern auch für die Top 20 als ganzes.

    Mehr Spiele für Herausforderr gegen den Tabellen-Letzten läßt sich gut machen. Das ist im Code einfach eine Konstante, die ich leicht hoch- oder runtersetzen kann. Ich hatte die erstmal so gewählt, dass ich den Ansturm am ersten Tag auch bewältigen konnte. Nun ist es aber ruhiger geworden und diese Zahl kann in der Tat höher gesetzt werden. Ich setze sie mal auf 40. Dieselbe Zahl steuert übrigends auch, wie viele Spiele neu aufgenommen Worker gegen alle anderen Top 20 Worker machen, bevor dann der 21. wieder rausgeschmissen wird.

    Herausforderer gegen mehr als einen Spieler spielen zu lassen, kann ich leider nicht umsetzen. Dazu ist mir der Aufwand zu hoch. Ich bin mir auch nicht sicher, ob dass mehr Gerechtigkeit bringt. Ich glaube, als Herausforderer sollte man nur neu aufgenommen werden, wenn man den bisherigen 20. klar hinter sich lassen kann.

  7. Ich habe eine Frage:
    Welcher Worker wird als erstes gestertet? Zufall oder irgendeine Reihenfolge?

    Zwei Vorschläge:

    erstens:
    auf der Game-Seite eine Checkbox: „nächstes Spiel nicht automatisch starten“
    Kommentar: wäre manchmal ganz gut um zu analysieren

    zweitens:
    am Ende einen Zähler anzeigen wieoft vom Master ein „send message“ abgesetzt wurde.
    Kommentar: wäre schön für Performance-Analyse

    1. Der Worker, der auf der Play – Seite links steht wird zuerst gestartet. Insgesamt sendet der Master 10.000 mal eine message. Wie sich das allerdings auf die beiden Worker verteilt, weiß man nicht. Das ist in der Tat eine interessante Info. Man könnte sich damit behelfen, das im Worker zu zählen und per log auszugeben. Das mit der Checkbox ist eine gute Idee. Aktuell könnte man sich damit behelfen, im Debugger einen Breackpoint in der Methode startNewGame() (game.js, Zeile 17) zu setzen.

      Inwieweit ich die beiden Vorschläge umsetze, muss ich noch sehen.

    2. Hallo Werner,

      ich habe zum analysieren meiner verschiedenen Strategien ein Tool entwickelt um WebWorker gegeneinander laufen zu lassen.

      Das Tool ist in Java geschrieben und kann von SourceForge heruntergeladen werden (Sourcen oder wwctool.jar):

      https://sourceforge.net/projects/webworkercontesttools

      Dabei gibt es zwei Funktionen:
      1. WebWroker über mehrere Runden gegeneinander antreten lassen
      2. Im Einzelschrittmodus die eigene Strategie analysieren.

      Die Anzahl OnMessage() Aufrufe habe ich jetzt auch mal mit ausgegeben, natürlich heisst das nicht, dass das Laufzeitverhalten im FireFox genauso ist, wie im java-Programm.

      Das Tool stelle ich anderen gerne zur Verfügung.

      Viele Grüße,

      feri

      1. Ich habe dieses Tool ausprobiert. Schön ist vor allem dieses Step by Step um zu schauen was passiert.

        Aber irgendwie scheint es ein Problem mit Javascript -Interpreter zu geben. Mein Worker schmieren gnadenlos ab, obwohl sie im Browser (Chrome, Firefox) gegen die gleichen Gegner zum Teil deutlich überlegen sind.

        1. Also bei mir sind die Ergebnis annähernd wie erwartet.
          Um realistische Ergebnisse zu erhalten muss der Parameter „NOGUI“ angegeben werden, da ansonsten die Thread-Zeiten durch die GUI Ausgabe ausgehebelt werden.

          1. Die Option nogui ändert nichts an dem Ergebnis.

            Hol dir doch mal von webworkercontest.net/droppedworkers
            die beiden Worker

            feri-wwc-step08.js
            fehngarten20.js

            und vergleich die mal im Browser und mit deinem Testtool. Im Browser sind sie etwa gleich stark, aber mit der Java-Routine ist fehngarten20 haushoch unterlegen.

          2. Ich habe jetzt mal Laufzeitmessungen mit deinem Beispiel „fehngarten20.js“ gegen „feri-wwc-step08.js“ gemacht.

            Im Browser (Firefox) komme ich auch 100:49

            Mit Exos Webseite komme ich auf 100:48

            Mit dem Java wwctool.jar komme ich auf 5:105

            Das ist natürlich eine gehörige Diskrepanz.
            Deshalb habe ich jetzt mal einen DELAY-Parameter eingeführt, der die Nebenläufigkeit reduziert. Soll heissen, je höher der DELAY Wert ist, desto eher werden die Züge abwechselnd gemacht. Im Prinzip wird die schnellere Strategie dadurch benachteiligt.

            Ich habe dann Messungen für unterschiedliche DELAY Werte gemacht, hier die Ergebnisse.

            DELAY=0 5 : 105
            DELAY=10 17 : 103
            DELAY=50 100 : 70
            DELAY=75 103 : 47
            DELAY=100 101 : 29
            DELAY=200 105 : 15

            Je eher das Spiel abwechselnd gezogen wird, desto besser wird „fehngarten20“.
            Bei DELAY=75 entspricht das Ergebnis in etwa dem Browser.

            Ob das jetzt für alle Strategien so gülitg ist weiss ich nicht. Ich habe den DELAY jetzt mal als Parameter hinzugefügt:

            „java -jar wwctool.jar NOGUI DELAY=75“

            Das könnte ein Hinweis darauf sein, dass da Messaging Konzept der Worker doch eher zu abwechselnden Zügen führt.

  8. Moin.
    Erstmal Lob an die Veranstalter, auch wenn gewisse Werbe-Intention dahinter zu stecken scheint.
    Ich bin nur ein Zuschauer und verfolge mit Interesse gelegentlich die Spiele der veröffentlichten Bots.
    Ich habe im Moment zu wenig Zeit mitzuspielen, außerdem finde ich den „Manager“ noch zu jung. Z.B. das I_AM_READY-Event oder ähnliches gehört für mich zur Grundausstattung, weiteres wäre noch schön zu wissen, wie das Ergebnis war und dass die Bots nicht nach jedem Spiel neugeladen werden müssen, denn so kann man keine lernende KIs anbieten.

    Nach einigen Versuchen ist mir noch aufgefallen, dass der erste Bot bei „wegabschneider.js vs fill_it_06.js“ immer gewinnt.

    Mein Test-Case:

    3 Runden mit jeweils 10 Spielen pro Runde

    1. Runde – fill_it_06.js vs wegabschneider.js: 6 – 4
    1. Runde – wegabschneider.js vs fill_it_06.js: 6 – 4
    2. Runde – fill_it_06.js vs wegabschneider.js: 6 – 4
    2. Runde – wegabschneider.js vs fill_it_06.js: 8 – 2
    2. Runde – fill_it_06.js vs wegabschneider.js: 6 – 4
    2. Runde – wegabschneider.js vs fill_it_06.js: 6 – 4

    Getestet auf einem Intel i5 Quadcore, Firefox 30, Ubuntu 14.04 LTS.

    Web worker ist neu aber ähnliche Ideen sind sehr alt. 2003 habe ich an einem Vier-Gewinnt-KI-Turnier (in ActionScript, Flash Browser plugin) teilgenommen.

    Ein Bremer

    1. Edit:

      3. Runde – fill_it_06.js vs wegabschneider.js: 6 – 4
      3. Runde – wegabschneider.js vs fill_it_06.js: 6 – 4

      1. Ich hab es ein paar Mal ausprobiert (auch i5/Ubuntu/Firefox) und hatte zunächst den Eindruck, dass du Recht hast, dass immer der erste gewinnt. Danach war es dann aber auch mal anders herum, vielleicht ist es doch Zufall.

        Selbst falls es da ein Ungleichgewicht geben sollte, wird das in den T20 ja dadurch kompensiert, dass es – wie Stefan oben geschrieben hat – immer genauso viele Hin- wie Rückspiele gibt-

    2. Zu der Beobachtung, dass bei fill_it_06.js vs. wegabschneider.js immer der erste Bot gewinnt kann ich auch nur sagen, dass das Zufall ist. Ich habe gerade 2 Tests gemacht und da hat jeweils der zweite Bot 4:6 gewonnen. Grundsätzlich hat der erste Bot einen kleinen Vorteil. Wie hoch der aber genau ist, kann ich nicht sagen. Bei einer einfachen Strategie (z.B. zuerst versuchen das Spielfeld in zwei Hälften zu teilen) und unter der Annahme, dass dann abwechselnd gezogen wird, könnte man das wohl ausrechenen (wer kann’s?). Und weiter gilt, dass bei ähnlich starken Spielern viel vom Zufall abhängt. Es wurde ja mal die Zahl von 200 Spielen genannt, die benötigt werden, um halbwegs sicher zu entscheiden, welcher Bot besser ist. Dem kann ich mich nur anschließen.

      Meine Frage zurück: Gibt es noch irgendwelche Spuren im Netz zu dem Vier-Gewinnt-KI-Turnier? Oder kannst Du da was genaueres sagen (hier oder per Mail). Würde mich natürlich interessieren, was es da noch so gibt.

      [Entschuldige die späte Antwort.]

      1. Ein Wettbewerb an dem ich teilgenommen hatte war von Steffen Gemkow „The Way Out“: http://thewayout.de

        Vom Prinzip her ähnlich, in einer Java Klasse musste entscheiden werden in welche Richtung ein Segelschiff geseteurt wird.

        Dort gabe es ein sehr aktives Forum in dem sich die Teilnehmer ausgetauscht haben.

        Was mir gefällt ist, dass es im Wettbewerb nicht darum geht den Code schnell zu erstellen, sondern in Ruhe eine Strategie zu entwickeln.

      2. Hi.

        Auf den 1. Zug warten und dann abwechselnd die Rollen tauschen ist schon fair genug.
        Bei Brettspielen, wie z.B. 4-Gewinnt, sind diese kleinen Unterschiede in ms vernachlässigbar, wobei auch hier ist ein Rollentausch für 100% Fairness notwendig.
        Ich kenne kein Brettspiel, bei dem die Chancen gleich sind.
        Ein weiterer Vorteil von einem Brettspiel ist natürlich wegen dem vernachlässigbaren Verzögerungsunterschied die Konnektivität.
        Man könnte ein KI-Server betreiben und nur den Websocket-Client (no brain) veröffentlichen. So lassen sich geheime Kunstwerke perfekt schützen, was aber weniger mit dem eigentlichen „Web Worker Contest“ zu tun hat, da auf dem Server alles mögliche laufen kann und ein Code-Nachweis für Fairness am Ende nötig wäre.

        Das 4-Gewinnt-Wettbewerb findest Du hier:
        http://www.flashforum.de/forum/softwarearchitektur-und-entwurfsmuster/wettbewerb-ki-fuer-4-gewinnt-62087.html

        Das Ganze lief im Single Thread ab, also keine „Pondering“. Jeder hat ca. 10 Sekunden (Desktop PC) Zeit pro Zug.
        Ich war zum Glück mit dabei und so habe ich damals das Programmieren gelernt. 😉

        Heute ist für mich Flash gestorben (ersetzt durch HTML5) und 4-Gewinnt ist eventuell auch nicht mehr zeitgemäß. Es wäre für mich keine große Überraschung mehr, wenn in einem seriösen Contest perfekt spielende 4-Gewinnt-KIs zum Vorschein kommen.

        Ein Contest mit dem Spiel 5-Gewinnt (offiziell Gomoku genannt) könnte ich im Herbst eröffnen, wenn Nachfrage da ist. Etwas an Code-Material dazu habe ich.
        Zur Zeit bin ich mit meinem Umzug beschäftigt.

        Btw. Umzug… Piet. Liest Du das? Ich brauche eventuell ein WG-Zimmer in München. 😀

        Ein „noch“ Bremer

  9. Gibt es eigentlich irgendwann eine Wiederholung dieses Wettbewerbs? Man könnte ja die Regeln variieren:

    1. man bekommt nach dem ersten Zug seine Koordinaten mitgeteilt. Könnt ich mir sehr interessant vorstellen, da man verschieden Taktiken abhängig von der Startpostion einsetzen kann.

    2. die Kontrahenten starten auf Postion 49,49 und 51,51
    und wissen oder als Variante wissen nicht ob 49 oder 51.

    3. man startet in einer Ecke, nebeneinander, gegenüber oder zufällig, mit oder ohne Information über die Konstellation.

    Sollte es zu einer Wiederholung kommen wäre es auch schön die Website noch zu erweitern und zu verbessern. Schön wäre zum Beispiel ein Forum wo man sich besser über Regeln, Taktiken, Programmiertechnik , usw. austauschen köönte als hier in diesem nennen wir es mal erweiterten Gästebuch.

    Ich wäre auch gerne bereit mein Beitrag dazu zu leisten und so wie ndere ihre Tools hier zur Verfügung gestellt haben denke ich da könnte man schon was auf die Beine stellen.

    Schön dass es Preise gibt, aber das interssiert mich nicht wirklich. Man könnte dies auch ohne Sponsoren und Preise durchführen, wenn man da natürlich auf Dauer Sponsoren findet auch schön.

    1. Das mit dem Forum ist eine gute Idee! Die verstreuten Kommentare hier im Blog sind sehr unübersichtlich. Zu einer Wiederholung (mit geänderten Regeln) wird es von meiner Seite eher nicht kommen (meine Lieblingsvariante wäre mehrere Bots gleichzeitig (vielleicht 10) auf einer Spielfläche). Wenn ich sowas nochmal machen sollte, dann mit neuem Spiel.

Kommentare sind geschlossen.

www.webworkercontest.net