locked
Alles rund um das Highscore Plugin

    Allgemeine Diskussion

  • UPDATE 20.11.06: Bitte ladet die neue Version runter!

    Hallo Freunde der kleinen Krabbeltierchen.

    Also ich hab mir mal ein paar Gedanken gemacht, und möchte euch nun hier mein gerade fertiggestelltes Plugin vorstellen, mit dem man seinen Punktestand auf eine Webseite laden kann.
    Mein Ameisenvolk ist zwar noch nicht ausgereift, aber wenn, wird es bestimmt einen der obersten Plätze einnehmen.

    Also wenn ihr Lust habt euch im Internet mit anderen Völkern zu messen, empfehle ich folgendes:
    Besucht diese Seite: http://mwiedemeyer.de/AntMe

    Dort findet ihr die Highscore Tabelle (ich weiß..noch nicht sonderlich hübsch) und den Download für das PlugIn, inklusive kleiner Beschreibung. Ist aber wirklich ganz einfach. Wenn trotzdem noch Fragen sind (oder ihr Anregungen, Wünsche, Bugmeldungen habt), einfach hier einstellen/fragen.

    Viel Spaß noch,
    marco

    Samstag, 4. November 2006 17:20

Alle Antworten

  • Hallo Marco

    Interessant. Kannst Du vielleicht noch kurz sagen nach was gewertet wird, bzw. wann das Spiel fertig ist. Hab meine Ameisen nun mal 2-3 Minuten rumrennen laufen und irgendwie 500 verloren und 5500 Nahrung reingeholt, aber das Spiel läuft immer noch weiter. Geht das auf Zeit oder wie läuft das?

    Danke.

    Gruss

    Marc

    Sonntag, 5. November 2006 11:44
  • Das Spiel endet derzeit nach 4500 Runden (= 300 Sekunden). Wenn du nicht so lange warten willst, kannst du auch das Häkchen "Konstante Bildwiederholrate" abhaken. Dann geht es schneller. Es endet dann aber eben trotzdem nach 4500 Runden.
    marco
    Sonntag, 5. November 2006 12:05
  • Vielen Dank. Hab soeben mein erstes High-Score raufgeladen.

    Noch eine Anmerkung. Könntest Du noch eine Spalte für die Punktzahl einbauen wenn möglich :-)

    Danke.

    Gruss

    Marc

    Sonntag, 5. November 2006 12:30
  • Ist mir auch aufgefallen, dass die fehlt... ist jetzt aber eingebaut.
    marco
    Sonntag, 5. November 2006 12:46
  • So, noch eine kleine Änderung:
    Wenn man mit dem gleichen Volk und dem gleichen Namen nochmal seine Punkte hochlädt wird der alte Eintrag aktualisiert (nur wenn man mehr Punkte erreicht hat, wenn nicht, wird weder ein neuer Eintrag erstellt, noch der alte geändert)

    Das hat den Vorteil, dass man mit ein und demselben Volk beliebig oft seine Punkte hochladen kann, und nur wenn man sich verbessert hat, erscheint das auch in der Highscore Liste. Um einen zweiten Eintrag zu erhalten muss man sein Volk also umbenennen.
    marco

    Sonntag, 5. November 2006 13:20
  • Man könnte doch auch verschiedene Ranglisten machen. Eine z.B. nach gestorbenen Ameisen.
    Ich denke das wird dann sinnvoll wenn nochmehr Völker drin sind.
    Sonntag, 5. November 2006 14:40
  • das mit der Highscore is ne super idee. So sieht man wie weit sein eigenes Volk schon entwickelt ist.
    das ganze macht aber nur dann sinn, wenn alle die gleichen vorraussetzungen haben. momentan kann man in dem spiel die ameisenzahl und die größe des Spielfeldes verändern, was wiederum die Highscore verfälschen könnte.
    Montag, 6. November 2006 20:53
  • Hi Marco,

    na wenn DAS kein cooles Plugin ist!!! Und das nach so kurzer Zeit.
    Jetzt wos fertig ist muss ich zugeben, dass das auf jeden Fall gefehlt hat. Ich werde in kürze damit beginnen mich mit meinem Volk auf Platz 1 zu simulieren ;-) ...sobald meine Ameisen keine peinlichen Punktezahlen mehr produzieren...

    Wenn du für das Design deiner Highscore-Liste noch Sachen brauchst (Logos, Bilder, sonstwas,...) lass uns das wissen.

    Viele Grüße
    Tom
    Montag, 6. November 2006 22:54
  • Danke. Ich werd mal schauen, wann ich für das Design zeit finde (mitten in der Diplomarbeitsphase) ;-)

     @corax02: Das ist richtig. Man kann sicherlich immer daran rum manipulieren. Ich werde aber so schnell wie möglich noch in das PlugIn einbauen, dass Spielfeld und Rundenzahl geprüft wird, und somit alle in der Liste die gleiche Vorraussetzung erfüllen.

    marco

    Dienstag, 7. November 2006 06:41
  • Für alle die einen Blick hinter die Kulissen des Highscore Plugins (und des zugehörigen Web Services) werfen möchten, biete ich hier den Quellcode als Download an. Ich hab auch so viel wie möglich dokumentiert... aber die Zeit, die Zeit...
    Viel Spaß damit. Fragen, Wünsche, Anregungen: Immer her damit.

    Download: Plugin Quellcode
    Download: Web Service Quellcode

    marco

    Mittwoch, 8. November 2006 17:27
  • Ich hab mit Marco mal gechattet gehabt. Es ging mir um Cheating.

    Um es kurz zu fassen, aus meiner Sicht ist die einzige Möglichkeit, Cheaten zu unterbinden, dass man zusammen mit seinen Punkten auch die Spieler dll mit hoch läd.

    Nun könnte man entweder automatisiert sporadisch auf dem Server testen, ob nicht gecheatet wurde, oder, man macht einen "Dies sieht mir nach einem Fake aus"-Link hin, und wurde der 3 mal geklickt, dann beginnt der Server zu simulieren.

    Nebenbei, würde dies den Austausch der Völker auch in der Community steigern!
    Freitag, 10. November 2006 16:39
  • also cheaten zu unterbinden ist natürlich was sehr wichtiges...
    ich aber meine das es doch total viel extra Aufwand ist, das extra auf dem Server noch simulieren zu lassen...
    Der Austausch der Völker denke ich ist jetzt noch nicht wirklich wichtig, sobald dann die direkten Kämpfe dazukommen, dann wird das wohl ganz von alleine passieren...
    Freitag, 10. November 2006 19:58
  • Moin zusammen.

    Ja, cheaten ist tatsächlich ein Problem. Aber ich würde mal sagen im Moment ist das noch nebensächlich. Wir machen das hier ja zum Spaß und ich hoffe niemand macht das durch cheaten kaputt.

    Sollten wir mal echte Wettkämpfe starten sieht das natürlich anders aus. Aber da macht auch eine Simulation auf dem Server sinn.

    Eine prinzipielle Simulation auf dem Server ist nicht so ne gute Idee da die Simulationen sehr unterscheidliche Ergenisse liefern können. Die Werte des Plugins dann anschließend mit der Serversimulation zu vergleichen ist also nicht gerade ne gute Idee.

    Ansatz zu cheatfreien Simulationen sehe ich in einem signierten Simulationsplugin mit ingetriertem Post an den Highscore-Server. Mal sehen was da noch kommt... :-)
    Montag, 13. November 2006 12:46
  • ich würde schon gerne auch ein paar andere völker sehen. ich will wissen, wie man jenseits der 10k punktegrenze kommt.

    Vielleicht könnte marco ja den völkerupload in sein highscore plugin einfügen und zunächst als freiwillig markieren ?!

    und wegen dem cheaten: wie hilft denn ein signiertes simulationsplugin? ich könnte doch immernoch ein ganz anderes programm schreiben, was den webservice aufruft?!

    die simulation auf dem server kann natürlich andere ergebnisse liefern, wenn sie wiederholt wird, aber man könnte sagen, dass sie im bereich von +- 30% o.ä. liegen sollte ?
    Montag, 13. November 2006 13:03
  • Hallo Fabse,
    ein kleines Problem sehe ich in der Aussage von dir, das die ergebnisse auf dem server in einem bereich  +-30% liegen könnten.
    das problem ist, das die platzierung der obststücke und der Zuckerhaufen und die bewegungen der käfer per zufall gesteuert werden. der zufall kann die dinge auf dem server komplett anders legen so das man entweder besser oder noch schlechter in der punkte wertung ist.
    Montag, 13. November 2006 15:08
  • dessen bin ich mir bewusst, daher schlage ich auch eine art toleranzbereich vor. das ergebnis auf dem server wird in der praxis immer schlechter ausfallen, weil marco nur bessere werte speichert. schlechtere werden ja verworfen. daraus folgt, dass das ergebnis des servers fast immer etwas schlechter sein wird.

    ich hab bei meinem volk einfach auch nur 10 mal simuliert und war damit ohne code änderung fast 2000 punkte besser :/
    Montag, 13. November 2006 15:15
  • Ja, ich weiß, dass die Schwankungen so extrem sind. Und trotzdem schaff ichs nicht über 8000 ;-) Was macht ihr da nur?
    Montag, 13. November 2006 15:45
  • siehste und genau um diese frage zu klären, gehört ein upload mit in die rangliste ;)
    Montag, 13. November 2006 16:11
  • Mist..hab den ersten Beitrag bearbeitet, und jetzt ist das Thema nicht mehr angepinnt. Vielleicht könnte einer der Administratoren das nochmal wieder einrichten!?

    Zu den Änderungen:
    Geplant ist, dass man durch ein Häkchen auch gleich sein Ameisen Volk Assembly, also die DLL mit hochladen kann und somit anderen zur Verfügung stellen kann. Das ist jedoch doch nicht so auf die schnelle machbar, da der Zugriff auf das gerade im Spiel befindliche Ameisenvolk nicht so einfach möglich ist. Muss da noch ein wenig drüber nachdenken, wie man das Problem am besten lösen kann. Bin gerade dabei das ganze über Reflection zu lösen, sollte jemand andere Vorschläge haben, immer her damit.

    marco

    Montag, 13. November 2006 16:37
  • habe mich heute und gestern mal ein wenig mehr mit dem Programmieren der kleinen Viecher beschäftigt. Und wär hätte das gedacht, nach 1,5 Tagen lustiger Arbeit mit meinen NuclearAntz gleich auf Platz 11 gekommen. Bin ja schon ein wenig stolz auf mich!

    So jetzt aber schluss mit dem prollen!

    Wollte erstmal nur meinen Respekt für die Highscore ausprechen. Gute Arbeit.
    Kleiner Änderungsvorschlag: evt eine Sortierungsmöglichkeit einbauen um z.b. nach gestorbenen Ameisen aufzulisten oder so.

    Das mit der möglichkeit die Dlls hochzuladen halte ich für ganz gut, aber sollte auf freiwilliger basis passieren.

    Irgenntwann wird es bestimmt mal einen Wettbewerb geben, bei dem man dann seine DLLs abschicken muss und alles auf einem Server abläuft, aber bis dahin reicht mir die Highscore so auch ohne cheatschutz! Wär zwar schön wenn, aber naja ....

    Gruß

    Sonntag, 19. November 2006 17:43
  • Hallo,

    Besten Dank für das Lob .

    Da ich im Moment leider auch etwas wenig Zeit habe (Diplomarbeit...), komm ich leider zu kaum was. Die nächsten Funktionen die eingebaut werden sind aber definitiv eine Sortiermöglichkeit der Tabelle, was eher schnell gehen dürfte, und desweiteren eine Möglichkeit die DLL mit hochzuladen, natürlich freiwillig. Die weitere Überlegung ist auch, die Highscore Tabelle in 2 aufzuteilen, also entweder nach "mit globalem Gedächtnis" und "ohne", oder, und das ist im moment wahrscheinlicher: Eine Tabelle für "alle" und eine nur für die, die auch ihr Assembly mit hochgeladen haben.... Für weitere Vorschläge bin ich natürlich offen!

    PS: Ich hab auch noch eine andere (schon angefangene) idee, die darauf beruht, die berechnung doch serverseitig ausführen zu lassen..dazu dann aber später mehr..hoffe ich hab bald wieder etwas mehr zeit.

    marco

    Sonntag, 19. November 2006 18:22
  • Ein paar Neuigkeiten zum Wochenstart: (hatte doch ein wenig zeit...)

    1. Es ist jetzt (auf freiwilliger Basis) möglich, zu dem Punktestand auch sein Völkchen mit hochzuladen. So bekommen andere die Chance mal zu sehen wie andere Ameisen so agieren. Der Download ist über die Highscore Tabelle möglich (Der Name verlinkt auf den Download, wenn vorhanden).
    Um das neue Feature nutzen zu können, benötigt ihr die neue Version des Plugins. Download siehe erster Post.

    2. Die Highscore Tabelle ist jetzt nach den wichtigsten Punkten sortierbar per klicks.

    Weiterhin viel erfolg,
    marco

    Montag, 20. November 2006 10:50
  • Super genial!
    Viele Dank für diese hervorragenden Erweiterungen.
    Aber lass die Diplomarbeit nicht zu doll leiden (obwohl ich aus Erfahrung weiss, dass einem plötzlich 1000 Sachen einfallen, die jetzt sofort und viel dringender als die Diplomarbeit in Angriff genommen werden müssen) ;-)

    Ich werde gleich mal meine Fiecher hochladen und hoffe, dass sich auch die anderen Teilnehmer mal ein bisschen "in die Karten schauen" lassen :-D

    Gruß,
    Holger

    Montag, 20. November 2006 11:51
  • Grüß dich Marco,

    der HAMMER! Ich kann mal wieder nur sagen: Geile Erweiterung, vielen Dank!!!
    Der Upload von KIs macht das Ding nochmal um einiges cooler. Jetzt hat jeder die Möglichkeit das Verhalten der Ameisen seiner "Mitbewerber" um Platz 1 zu analysieren.

    Damit könnte es noch etwas interessanter werden

    Viele Grüße
    vom Tom
    Montag, 20. November 2006 13:02
  • Kennt ihr das Problem wenn man sich etwas runterläd und am darauf folgenden Tag erscheint eine neue Version davon????
    So geht es mir grad!

    @Marco: Das ging jetzt aber echt schnell! Danke aber lass deine Diplomarbeit nicht drunter leiden, ich denke mal die ist wichtiger als die kleinen krabbel Viecher hier. ;-)

    Ameisen werden sichtbar sobald sie dafür bereit sind und ein bisschen koordinierter durch die Umgebung laufen.
    Montag, 20. November 2006 16:40
  • hätte noch ein Vorschlag für das Highscoreplugin, sofern dies möglich ist und Zeit gefunden wird...

    beim ausprobieren der Top-DLL's hab ich ziemliche Schwankungen bemerkt. Teilweise hab ich beim Testen zwischen 5000 und 13000 Punkten gehabt. Um jetzt ein Code objektiv bewerten zu können, wäre es besser ein Ergebnis nur als Schnitt von 10 aufeinanderfolgenden Durchläufen online zu stellen...

    Nur so ein Vorschlag, wenn das überhaupt realisierbar ist...
    Artus
    Montag, 20. November 2006 18:03
  • @corpsealive: Das tut mir natürlich leid, dass es "schon wieder" eine neue Version gibt... die vorige Version ist aber diesmal weiterhin lauffähig. Nur kannst du damit natürlich nichts hochladen. Lässt sich eben nicht verhindern, dass es für neue Funktionalitäten auch eine neue Version gibt.  Ich denke mal über einen "Auto Update" Mechanismus nach...

    @Artus: Diese Punkteschwankungen sind natürlich ein Problem und kaum vermeidbar, da es immerhin ein wenig auf "Zufall" basiert. Ein Mittelwert halte ich persönlich aber nicht für die beste Idee... Für einen guten Punktestand muss man dann eben mal ein paar Versuche durchführen, was die meisten ja auch machen.

    marco

    Montag, 20. November 2006 18:35
  • @Marco Wiedemeyer: wenn Punkte zwischen 5000 und 13000 schwanken, dann ist das bestimmt nicht nur ein "wenig" zufall... ;)

    um jetzt das Können der Ameisen richtig zu Vergleichen ist der Durchschnitt immer die beste Methode. Wenn Bei 10 Versuchen einer mit 13k und der rest zwischen 5k und 7k liegt, dann ist das kein Maß für clevere Ameisen, sondern nur Glück...

    Aber wie das zu implemetieren wäre weiß ich nicht, und Zeitaufwendig wäre es bestimmt. Ich wollt nur meine Meinung zu den Ergebnissen kundtun, die so nicht einen objektiven Blick über das "Können" der Ameisen darlegen...

    Bin mal gespannt, ob nächstes Jahr der "Multiplayer"support funktioniert....

    dann is das Thema ja sowieso gegessen...
    Montag, 20. November 2006 23:27
  • Hi,

    ich hab grad erst mit den Ameisen angefangen und muss sagen: Respekt, macht wirklich Spass und man lernt noch was dabei. Allerdings wollte ich auf ein kleines Tool aufmerksam machen, das es erlaubt, den Quellcode von .NET exe- und dll- Dateien zu betrachten. Also sollte man, wenn man seine Ameisen zum download bereitstellt, einen Obfuscator benutzen, um das zu verhindern. Oder man verlässt sich darauf, dass keiner so gemein ist, ein Disassemblierungstool zu verwenden.

    So long,

    Alexander

    Dienstag, 21. November 2006 09:46
  • Leider ist uns die extreme Schwankung der Punkte auch schon aufgefallen. Um dennoch vergleichbare Werte zu erhalten haben wir versucht das Levellayout immer gleich zu halten, aber trotzdem schwanken die Ergenisse so extrem. :-(

    Artus hat durchaus recht. Um Völker fair und realistisch miteinander vergleichen zu können müssen die Durchschnittswerte aus vielen verschiedenen Durchläufen verglichen werden. Genau das haben wir auch mit unserem GamesConvention-Wettbewerb gemacht. Nur das erfolgreiche Volk hat beständig gute Zahlen.

    Zur Umsetzung fällt mir leider auch nur wenig ein. Da jeder Spieler pro Durchlauf entscheiden kann ob die Ergenisse zum Highscore-Server geschickt werden oder nicht (und sei es durch ziehen des LAN-Steckers) kann Marco unmöglich die Durchschnittswerte der gesendeten Ergebnisse ermitteln und daraus die Liste zusammen stellen.

    Dieses Problem liese sich durch die Online-Simulation lösen, frisst halt richtig Server-Resourcen. Alternativ wäre da wieder die Möglichkeit eines Simulationsplugins das 10 Simulationen erzwingt und dann den Durchschnitt an den Highscore-Server schickt. Mal sehen was da noch kommt damits weiter spannend bleibt.
    Dienstag, 21. November 2006 11:12
  • eine weitere möglichkeit wäre, wenn das programm die ergebniss speichert und das highscoreplugin erst dann aktiviert werden kann, wenn genügend werte für einen durchschnittswert vorhanden sind. wäre vielleicht die einfachste variante?
    Dienstag, 21. November 2006 17:08
  • Ok, eigentlich wollte ich warten bis ich das fertig getestet habe, aber ich habe bereits eine Lösung.

    Die sieht so aus, dass es (wahrscheinlich schon ab morgen) eine Seite geben wird, auf der der Benutzer sein Assembly hochladen kann (was allerdings nur genau EINE ameise enthalten darf). Dann wird serverseitig ein Spiel simuliert und der Punktestand in eine zweite Highscore Tabelle eingetragen. Dort wird dann auch automatisch der Mittelwert berechnet, wenn ein Benutzer sein Assembly mehrmals hochlädt (und es damit mehrmals simuliert wird).

    Technischer Schnickschnack:
    Das hochladen geschieht über eine normale ASP.NET Anwendung, die dann das File als byte array in eine Warteschlange auf einem MSMQ System schreibt.
    Desweiteren läuft auf dem System ein Windows Service, der sich selbst Nachts von 1-2 aktiviert und aus der Queue dann jedes Assembly nimmt und einmal simuliert. Nach abschluss callt der service dann den bereits vorhandenen (aber inzwischen erweiterten) web service um die punkte in eine SQL2005 db zu schreiben.
    Für die Simulation habe ich das vorhandene Simulationssystem etwas angepasst um besser eine bestimmte Spieler Assembly laden zu können, ansonsten ist es aber das gleiche wie hier zum download.

    Es ist klar, dass etwas rechenzeit für die simulation drauf geht, aber nach ersten tests ist das ziemlich gering, bzw geht sogar recht schnell, da es ja absolut keine anzeige gibt (nich viel mehr als 30sek, wobei es auf meinem server "etwas" länger dauern wird...). Trotzdem habe ich die Berechnung in die Nacht verlegt, damit der normale Betrieb nicht zu sehr gestört wird.

    Sobald das ganze durchgetestet ist, werde ich dann hier die entsprechenden links posten. Vorbereitend könnt ihr natürlich alle eure ameisenvölker in eigene assemblies packen, also wirklich nur pro DLL genau EINMAL das "Spieler" Attribut mit namen und so.

    Es ist im prinzip nur eine weitere spielerei, aber es schützt jedenfalls definitiv vor verfälschungen durch manipulation... und es zeigt ein bisschen was alles mit .NET sehr einfach möglich ist. Quellcodes lege ich dann demnächst natürlich gerne offen, damit auch andere sehen was für tolle Sachen man mit MSMQ und einem Windows Service so machen kann ;-)

    marco

    Dienstag, 21. November 2006 20:38
  • So!
    Es ist soweit. Ihr könnt nun auch Assemblies, also eure Ameisen DLLs hochladen. Diese werden dann auf dem Server simuliert. Wenn man sein Assembly mehrmals hochlädt, wird auch mehrmals simuliert und aus allen ergebnissen der mittelwert gebildet.

    Das ganze hat den einzigen und entscheidenen Vorteil: Alle haben die gleichen Chancen! Zum Thema Datenschutz: Die Assemblies werden nach der einmaligen Simulation automatisch und sofort gelöscht. Ihr könnt also auch etwas geheimere Völker hochladen. Niemand (einschließlich mir) bekommt Zugriff auf die hochgeladenen Dateien.

    Die Simulationen dauern zwar nur ca 20sekunden, dennoch wird erst in der Nacht simuliert, also wenn man heute hochlädt, erscheint morgen das Ergebnis auf der Highscoreliste.

    So, und nun viel Spaß, hier noch die Links:

    Upload für deine Ameisen und Die "alternative" Highscoreliste

    marco

    Mittwoch, 22. November 2006 10:51
  • idee und umsetzung sind ja ganz nett, aber der ultimative schutz vor verfälschung der ergebnisse ist ja trotzdem nicht gegeben. man könnte ja zum beispiel trotzdem eine singleton-klasse im namespace mitaufnehmen und darüber zum beispiel die ziele koordinieren...oder etwa nicht??
    Mittwoch, 21. März 2007 00:30
  • Ich finde, das gearde das spiel mit dem zufall eigentlich sehr gewinnbringend für alle ist!

    Ich finde es an sich schon gecheatet, wenn man den ameisen mit statics sowas wie erinnerung und intelligenz verpasst! 
    Dadurch daß ne kolonie +-2000 punkte machen kann (so gehts mir zur zeit) denke ich hat auch ne relativ schwache kolonie auch mal gegen eine etwas stärkere erfolg. wenn immer das selbe rauskommt _könnte_ das alles witzlos werden.
    Mittwoch, 28. März 2007 14:41
  • Hallo!

     

    Wen ich eine dll Datei herunterlade und die dann ausführen will taucht folgende Meldung auf:

     

    "Plugin konnte nicht geladen werden. Es fehlen Verweise des Plugins .\JanGames-Gruppe-Jan_Meister.dll. Mindestens ein Typ in der Assembly konnte nicht geladen werden. Rufen sie die LoaderExceptions- Eigeschaft ab, wenn sie weitere Informationen benötigen."

     

    Naja. Ich bin mir nicht sicher was man da tun muss. Ich hoffe das ihr mir da weiterhelfen könnt.

    Montag, 29. Oktober 2007 09:08