Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 36

Thema: [MCW] - Der Kampf der Microchips ^^

  1. #1

    [MCW] - Der Kampf der Microchips ^^

    Gestern hab ich mir meine IRC-Logs durchgleses und dann auf ein Gespräch von DFYX und Dingsi gestoßen über mutierende Programme und als Beispiel "Core Wars". Jedenfalls hab ich mir Core Wars mal angesehen und fand es recht interessant von der Idee her. Den Quelltext allerdings in Redcode (Ein billiger Assembler Abklatsch) zu schreiben und Standards von '94 einzuhalten ist etwas öde. Also habe ich Gegoogled und noch massig andere BOT/Programm-Kampf-Simulatonen gefunden. Am Besten und aktuellsten war imo A.I. Wars. Dort wird in einer Basic ähnlichen Programmiersprache entwickelt, was ich schonmal etwas besser fand . Leider ist das Programm Shareware und auch sonst hätte man manches Besser machen können, also dachte ich mir das könnte ich mal nachprogrammieren.
    Weil ich Käfer dumm finde und Google-Bilder nix gescheites an Käer-Bildern lieferte (nur VWs und Marienkäfer) hab ich mit Paint rumgemalt und mir kam die Idee für Micro-Chips. Naja wem es net gefällt kann ja gerne die 4 Bilder im data Ordner ersetzen.
    Das Ergebnis ist schon spielbar allerdings evt. nicht 100% Bugfree und auch grafisch nicht so gut wie sein Vorbild.

    So sieht das Interface aus. Momentan kann man maximal 2 BOTs verwenden, aber das kann man bei bedarf leicht erweitern...
    Die Programmierung geschieht in einer ziemlich seltsammen Sprache, welcher ich keinen Namen gegeben habe. Um es euch zu zeigen hier einfach mal der Code eines "Standard"-BOTs:
    Code:
    shield_up
    :main
      scan_enemy en_found
      move_forward
      if_blocked block
      goto main
    
    :en_found
      shield_down
      fire_missible
      shield_up
      turn_right
      move_forward
      turn_left
      goto main
    
    :block
      random_turn
      move_forward
      if_blocked block
      goto main
    Zugegeben, die Sprache sieht billig aus und die Sprungmarken sind Assembler like, aber der Code ist selbsterklärend, d.h. wer schon ein wenig Ahnung vom Programmieren hat sollte in der Lage sein ihn zu verstehen (hoffe ich). Für eine Beschreibung der einzelnen Befehle lest die README im Archiv. dort ist auch noch der Code eines 2. einfachen BOTs untergebracht.
    Der Code (Delphi 7) steht unter GPL (http://www.fsf.org/licensing/licenses/gpl.html) [leider hatte ich gestern abend auf dem Laptop wo ich programmiert hatte kein I-Net [Nachabschaltung der FritzBox] und konnte so die GPL nicht mit ins Archiv und keine Vermerke im Source anbringen, aber ich machs beim nächsten Release] und liegt im Archiv mit drin. Außerdem hab ich mir diesmal echt Mühe gegeben und alles schon kommentiert

    Hier der Download-Link:
    http://wordsbg.uttx.net/dl/MCW.rar
    Im laufe des Tages editier ich noch ne Linux Version rein, aber die hier sollte theoretisch ganz gut unter Wine laufen, weil ich nur Win-Standard Kompos benutzt habe.

    edit: Linux Version ist auch Online!
    http://wordsbg.uttx.net/dl/MCW.tar.bz2

    Geändert von Crash-Override (19.07.2006 um 10:44 Uhr)

  2. #2
    ich habs mir ansgesehen. Sehr vielversprechend, gefällt mir. Aber es sind zu wenig funktoinen. Mit mehr funktionen ist es viel eifnacher ein komplexes script zu schreiben^^

    Außerdmem ist alleine durch das hinzufüügen eines
    shield_up
    shield_down
    feuerbefehl den ich vergessen habe
    shield_up

    Der Sieg vom Damit ausgestatteten chip fast garantiert.^^"

  3. #3
    Zitat Zitat von raian
    Außerdmem ist alleine durch das hinzufüügen eines
    shield_up
    shield_down
    feuerbefehl den ich vergessen habe
    shield_up

    Der Sieg vom Damit ausgestatteten chip fast garantiert.^^"
    Nicht ganz. Wenn der Chip getroffen wird wärend das Schild hoch ist ist er sofort zerstört (tritt besonders oft auf wenn man zwei "Standard"-Bots nimmt) und selbst wenn er trifft und das Schild des Gegners ist unten zieht er von den 3 HP des Gegner-Schildes 2 ab. d.h. er muss noch einmal treffen um zu gewinnen. Das Schild vor dem Feuern zu heben ist nicht zwingend, aber wenn man es macht trifft man stärker, wobei man sich einem Risiko aussetzt.

    Zu den funktionen: Ich werde auf jeden fall noch einen Befehl amchen um sich um 180° zu drehen und eben move_back, move_left und move_right (Auch wenn diese wohl nicht so oft gebraucht werden. Auserdem if_face_up, if_face_down, if_face_left if_face_right und noch Befehle mit genauer Richtung wo er hinschauen soll also look_right, look_left, look_up, look_down. Und evt. noch andere Waffen (z.B. Laser), da müsste ich mir eben noch andere Effekte für einfallen lassen.
    Wer noch Vorschläge oder Anregungen hat kanns mir ja sagen.

  4. #4
    Was noch gut wäre:

    if_right_blocked usw.
    Damit könnte man weitaus effizientere Bots zusammenbauan, was das Bewegen angeht. Es müsste nicht mehr das Try&Error prinzip angewandt werden usw.

    Neue Waffen hast du ja selber schon angesprochen. Wie wärs mit EMP? Man setzt das Schild des Gegners außer Kraft, kann dafür ein paar Minuten nicht schießen, oder ähnliches. Sozsuagen taktsiche Waffen. Regeneration des Schildes druch Ruhemodus.

    Wofür man dann funktionen wie:
    if_lp_low oder if_lp<1 oder ähnlcihes bräuchte.

    Dann könnte man

    Code:
    [...]
    if_lp_low low_lp      //Wenn lp kleiner vier: Gehe zu low_lp
    [...]
    
    low_lp:
    scan_enemy main   //wenn ein Gegner in der Nähe ist: Springe zu main oder danger oder ähnliches
    heal_shield             //heilt das schild
    if_low_lp low_lp      //wenn lp immernoch gering sind:springe zurück zu low_lp
    goto main               //wenn nciht wird zu main gesprungen

    Ich freu mich auf die nächste Version!

    Heal_shield macht dann zum Beispiel 4Sekunden Bewegungsunfähig und heilt dafür ein Schild. if_low_lp stellt fest ob die LP kleiner 3 sind usw.


    Das würde das System noch verbessern


    €dit: Erklärung.^^

    €dit2: Schreibst du in Delphi oder inw elcher sprache? Mich interessiert das Projekt und ih würde den source gerne mal einsehen können. :P

    Geändert von raian (19.07.2006 um 16:55 Uhr)

  5. #5
    Zitat Zitat von raian
    €dit2: Schreibst du in Delphi oder inw elcher sprache? Mich interessiert das Projekt und ih würde den source gerne mal einsehen können. :P
    Jo, Delphi. Wenn du kein Delphi hast hol dir Lazarus (-> Google) und lad dort den Code der der Linux Version beiliegt, das ist zwar imo nicht so cool wie Delphi selbst aber dafür halt free und portabel.

    Danke jedenfalls für deine Vorschläge ich bau es evt. noch heute ein

    edit. Die Windows Version ist aktalisiert
    neue Befehle:
    Code:
    if_face_up          Wenn der BOT nach oben schaut
    if_face_down        Wenn der BOT nach unten schaut
    if_face_left        Wenn der BOT nach links schaut
    if_face_right       Wenn der BOT nach rechts schaut
    look_up             Lässt den BOT nach oben schauen
    look_down           Lässt den BOT nach unten schauen
    look_left           Lässt den BOT nach links schauen
    look_right          Lässt den BOT nach rechts schauen
    if_blocked_left x   Wenn der BOT von links blockiert 
                        wird springe zu x
    if blocked_right x  Wenn der BOT von rechts blockiert
                        wird springe zu x
    if blocked_behind x Wenn der BOT von hinten blockiert
                        wird springe zu x
    repair_shield       Repariert das Schild um einen Punkt
                        (maximal 3). Dafür setzt der BOT
                        2 Runden aus (d.h. der Gegner führt
                        2 Zeilen aus.
    if_hit_shield x     Wenn das Schild nicht vollständig
                        (3 Punkte) erhalten ist springe zu x
    if_shield_is1 x     Wenn das Schild noch einen Punkt hat
                        springe zu x
    if_shield_is2 x     Wenn das Schild noch zwei Punkte hat
                        springe zu x
    if_shield_is3 x     Wenn das Schild noch drei Punkte hat
                        springe zu x
    fire_emp            Feuert mit dem EMP. Reichweite liegt
                        bei 2 Feldern vor dem BOT. Bei einem
                        Treffer verliehrt der Gegner sofort
                        2 Punkte an seinem Schild (sofern es
                        an ist, sonst stirbt er sofort),
                        dafür muss der Angreifer 2 Runden
                        pausieren.
    damit lassen sich tolle neue BOTs entwickeln. z.B. für Reperatur
    Code:
    :repair
     scan_enemy en_found
     repair_shield
     if_hit_shield repair
     goto main
    und auch ein verbessertes laufen ist sehr einfach möglich. In der Readme sind 2 neue Beispielbots zu diesen Themen.
    Für weitere Wünsche/Anregungen oder Beispielcodes meldet euch.

    edit2: btw: habs schon wieder vergessen. Rechschreibfehler: missible soll missile (=Flugkörper) heißen. Ich glaub ihm nächsten Release nenn ichs "fire_rocket" -__-

    edit3: Linux Version auf dem gleichen Stand der Windows Verion,

    edit4: Nochmal neue Version. Das Interface ist überarbeitet, eine PDF-Einführung in die BOT-Entwicklung liegt bei und den fehler mir "fire_missible" hab ich so gelöst das "fire_missile" der richtige ist, aber "fire_missible" trotzdem das selbe macht (Kompatibilitäts-Gründe).
    Hier sind ein paar neue Screens des Interfaces:


    Die Maps werden im Maps Ordner im data-Ordner abgelegt. Mithilfe des Templates und Paint könnt ihr auch eigene erstellen (weiße Flächen sind begehbar, der Rest nicht).
    Linux Version muss ich noch aktualiesieren

    Geändert von Crash-Override (20.07.2006 um 10:28 Uhr)

  6. #6
    der download link geht nicht mehr. kannst dus noch mal hochladen?

  7. #7
    Zitat Zitat von es
    der download link geht nicht mehr. kannst dus noch mal hochladen?
    kein Problem. Leider hat uttx.net im Moment mit Server-Updates und Beseitigung eines gelungenen Hack-Versuchs zu tun deswegen ist der Server bis zum 5. unten. Ich up es dir schnell.
    inc. Beispiele, Dokumentation als pdf + doc und Source für Delphi. Ist die Windows Version. Die Linux Version hab ich leider nicht mehr, aber es dauert sowieso nur ca. 1-2 Minuten das Projekt zu portieren.
    http://upload.npcfighter.de/files/27/589MCW.rar

  8. #8
    Hm, ich habe es mir eben mal angeschaut und finde es auch sehr schön. Aber als ich einen Bot schreiben wollte, bin ich gleich auf ein Problem gestoßen. Entweder ich verstehe etwas falsch oder if_blocked_right bzw. if_blocked_left arbeiten nicht so richtig.

    Nimm zum Beispiel mal deinen Bot "Intelligent Walk" als ersten Bot auf der Map "BG". Zu Beginn schaut der Chip nach oben. Er wird also von vorne, links und hinten geblockt und rechts ist frei. So, bei "if_blocked block1" springt er also zu "block1". Dort steht dann "if_blocked_right block2" gefolgt von "turn_right". Da rechts aber keine Blockade ist, dürfte er nicht zu "block2" springen, sondern müsste sich nach rechts drehen. Er dreht sich aber nach links, was erst in "block2" steht. Aber auch in "block2" müsste er durch die Anweisung "if blocked_left block3" eigentlich nach "block3" springen, da er ja von links geblockt wird. Also habe ich das Gefühl, dass if_blocked_right und if_blocked_left nicht so arbeiten, wie sie es sollten. Oder liegt der Fehler bei mir?

    edit: Hm, alles muss man selbst machen. Also:
    Code:
     if copy(S,1,17) = 'if_blocked_right ' then
     begin
      o := False;
      if (Chip.Destination = 2) AND (Chip.Y =  0) then o := True;
      if (Chip.Destination = 4) AND (Chip.Y = 12) then o := True;
      if (Chip.Destination = 3) AND (Chip.X =  0) then o := True;
      if (Chip.Destination = 1) AND (Chip.X = 12) then o := True;
      if (Chip.Destination = 2) AND (ImBG.Canvas.Pixels[Chip.X*30+1,(Chip.Y-1)*30+1] <> clWhite) then o := True;
      if (Chip.Destination = 4) AND (ImBG.Canvas.Pixels[Chip.X*30+1,(Chip.Y+1)*30+1] <> clWhite) then o := True;
      if (Chip.Destination = 3) AND (ImBG.Canvas.Pixels[(Chip.X+1)*30+1,Chip.Y*30+1] <> clWhite) then o := True;
      if (Chip.Destination = 1) AND (ImBG.Canvas.Pixels[(Chip.X-1)*30+1,Chip.Y*30+1] <> clWhite) then o := True;
      // Wenn blockiert, dann springe zur übergebenen Sprungmarke
      if o then
       Chip.CodePos := Mem.Lines.IndexOf(':'+copy(S,18,Length(S)));
     end;
     if copy(S,1,16) = 'if_blocked_left ' then
     begin
      o := False;
      if (Chip.Destination = 4) AND (Chip.Y =  0) then o := True;
      if (Chip.Destination = 2) AND (Chip.Y = 12) then o := True;
      if (Chip.Destination = 1) AND (Chip.X =  0) then o := True;
      if (Chip.Destination = 3) AND (Chip.X = 12) then o := True;
      if (Chip.Destination = 4) AND (ImBG.Canvas.Pixels[Chip.X*30+1,(Chip.Y-1)*30+1] <> clWhite) then o := True;
      if (Chip.Destination = 2) AND (ImBG.Canvas.Pixels[Chip.X*30+1,(Chip.Y+1)*30+1] <> clWhite) then o := True;
      if (Chip.Destination = 1) AND (ImBG.Canvas.Pixels[(Chip.X+1)*30+1,Chip.Y*30+1] <> clWhite) then o := True;
      if (Chip.Destination = 3) AND (ImBG.Canvas.Pixels[(Chip.X-1)*30+1,Chip.Y*30+1] <> clWhite) then o := True;
      // Wenn blockiert, dann springe zur übergebenen Sprungmarke
      if o then
       Chip.CodePos := Mem.Lines.IndexOf(':'+copy(S,17,Length(S)));
     end;
    Bei der if_blocked_right Abfrage wird, wenn der Chip nach oben schaut (Destination = 1), geprüft, ob das Feld links vom Chip (Chip.X-1) blockiert ist und wenn er nach unten schaut, wird überprüft, ob das Feld rechts vom Chip blockiert ist. Bei if_blocked_left ist die gleiche Vertauschung. Also reicht es aus, wenn man in der Destinations-Abfrage jeweils die '3' gegen die '1' tauscht (in den roten Zeilen). Der Intelligent Walk Bot ist dann gar nicht mal so übel.

    freundliche Grüße, Rolus

    Geändert von Rolus (29.07.2006 um 11:41 Uhr)

  9. #9
    oh hab dein edit nicht gesehen -__- naja ich habs durch +/- vertauchung gelöst (gestern abend).

    Der Int.-Bot enthält alleridngs auch noch einen Fehler wie ich bemerkte "if_blocked_left" nicht "if blocked_left". Naja hier ist die neue Version:
    http://upload.npcfighter.de/files/27/113MCW.rar

  10. #10
    Jo, mir gefällt es auch sehr. Aber ist das normal das die Bots sich gegenseitig überlaufen können? Intelligent Walk und der Warriors 2-Standart haben sich eben auf BG überrant und keiner hat Schaden genommen.

    Ciao
    malu

    Edit: Wenn wir daraus mal eine Forenwettbewerb machen sollte es aber aus so einstell bar sein das man den Code verschlüsseln kann und er nich angezeigt wird damit die Anderren nicht den Code klauen.
    Was auch nützlich wäre, wäre die Möglichkeit Variablen und Arrays zu speichern.
    Achso, eine Kommentarfunktion im Code wäre schön.
    Langsam wird meine Wunschlist lang...
    Eine Koordinatenabfrage für den eigenen Bot wäre cool.

    Geändert von malu (04.08.2006 um 17:41 Uhr)

  11. #11
    Zitat Zitat von malu
    Jo, mir gefällt es auch sehr. Aber ist das normal das die Bots sich gegenseitig überlaufen können? Intelligent Walk und der Warriors 2-Standart haben sich eben auf BG überrant und keiner hat Schaden genommen.

    Ciao
    malu
    Die BOTs haben eben zufällig in dem bereich keinen Scan + Angriff durchgeführt. Die Engine macht was im BOT Code steht, und auch nur das...

    Zitat Zitat von malu
    Edit: Wenn wir daraus mal eine Forenwettbewerb machen sollte es aber aus so einstell bar sein das man den Code verschlüsseln kann und er nich angezeigt wird damit die Anderren nicht den Code klauen.
    Das mit Verschlüsslung habe ich mir auch überlegt, nur das Problem wäre schon allein gegeben da ich das ganze als Open Source entwickeln will und da der Code entschlüsselt werden sollte muss dafür eben auch Code in die Engine rein. Nun wäre es aber kein Problem Copy&Paste das ganze in ein neues Projekt zu tun und locker alles entschlüsseln.
    Letztendlich gibt es also 3 Möglichkeiten (meiner Meinung nach):
    1) Webserver: Die Engine über PHP realisieren. Das macht den Code ziemlich sicher, der Aufwand ist allerdings relativ groß und außerdem wäre PHP für sowas eigentlich nicht ausgelegt)
    2) Bytecode: BOTs werden in Byte-Code umgewandelt (wie Java z.B.), dadurch werden sie unleserlich aber nicht unentschlüsslbar
    3) (imo beste, da relativ gut zu realisieren) eine modifizierte Version des Programms ohne die Anzeige der Codes an der Seite wird von einer vertrauenswürdigen Person laufen gelassen und dabei von z.B. SnagIT oder Fraps (oder einem anderen Aufnahme-Programm) gefilmt.

    Allerdings weiß ich nicht ob das wirklich soviel bringt. Wenn sich allerdings ein paar Leute melden wäre das kein Problem, obwohl die Leistungsfähigkeit der BOTs eher gering ist. Vielleicht weiß einer auch noch neue Befehle die das ganze Spannender machen würden.

    edit:
    Zitat Zitat von malu
    Was auch nützlich wäre, wäre die Möglichkeit Variablen und Arrays zu speichern.
    Achso, eine Kommentarfunktion im Code wäre schön.
    Langsam wird meine Wunschlist lang...
    Eine Koordinatenabfrage für den eigenen Bot wäre cool.
    Variablen aller Art wäre kein Problem, auch wenn ich nicht weiß wie man sie andwenden sollte.
    Kommentare gehen schon, nur z.B.

    Code:
    start:
      // Kommentar
      ...
    sollte vermieden werden, da wenn der Pointer zu start sptingt ein Tick an den Kommentar verschwendet wird, dadurch lahmt der BOT aus.

    Koordinaten wären sicher auch möglich, z.B. als Statische (unveränderbare) Variable gespeichert zum leichten Zugriff. Allerdings braucht man dann umsomehr die Koordinaten des Gegners um zu ihm zu laufen.

    Geändert von Crash-Override (04.08.2006 um 17:48 Uhr)

  12. #12
    Zitat Zitat von malu
    Edit: Wenn wir daraus mal eine Forenwettbewerb machen sollte es aber aus so einstell bar sein das man den Code verschlüsseln kann und er nich angezeigt wird damit die Anderren nicht den Code klauen.
    Solange er den Quellcode des Programmes anbietet wäre das aber recht sinnlos. Sonst kann sich ja jeder in Nullkommanix ein Entschlüsselungs-Tool schreiben. Die einzige sichere Möglichkeit, die mir einfällt, wäre eine Online verseion, bei der die Bots aus einer Datenbank gelesen werden. Allerdings müsste man dazu ein Web-Interface schreiben (also zu aufwändig).
    edit: Der vorherige Absatz ist durch C-O's Beitrag etwas obsolet geworden.

    Btw, ich poste mal meinen "More Intelligent Walk". Der "Intelligent Walk" kann sich festlaufen, da er bei Links-Und-Rechts-Frei immer nach rechts geht. Außerdem habe ich die Waffensysteme verbessert, indem in der Kampfroutine nicht immer zu main gesprungen wird, sondern - wenn der Feind noch da ist - direkt wieder zum Angriff. Das verschafft dem Bot im Nahkampf erhebliche Vorteile, sodass er den "Intelligent Walk" teilweise mit 10 zu 0 schlägt.
    Zitat Zitat von More Intelligent Walk
    shield_up
    :main
    scan_enemy feindinsicht
    move_forward
    if_blocked block
    goto main

    :feindinsicht
    fire_missile
    scan_enemy feindinsicht
    goto main

    :block
    if_blocked_right block_right
    if_blocked_left block_left
    random_turn
    goto main

    :block_right
    if_blocked_left block_both
    turn_left
    goto main

    :block_left
    if_blocked_right block_both
    turn_right
    goto main

    :block_both
    turn_right
    turn_right
    goto main
    Was ich noch für problematisch halte, sind Bots, die passiv einfach auf Feinde warten und dann kämpfen. Ich habe mir mal so einen "kleinen Feigling" geschrieben, der gemeinerweise sehr häufig gewinnt.
    Zitat Zitat von Kleiner Feigling
    shield_up
    :main
    scan_enemy feindinsicht
    if_blocked blockadevorne
    goto main

    :blockadevorne
    if_blocked_left blockadelinks
    turn_right
    goto main

    :blockadelinks
    if_blocked_right blockbeideseiten
    turn_left
    goto main

    :blockbeideseiten
    turn_right
    turn_right
    goto main

    :feindinsicht
    fire_missile
    scan_enemy feindinsicht
    goto main
    Ich finde so ein Verhalten sollte irgendwie bestraft werden. Beispielsweise könnte man bewegungslosen Chips Schild-Punkte abziehen oder die Schilde am Anfang auf 10 setzen, sodass sich für aktive Bots eine Flucht zum Reparieren lohnt. Bei 5 Schildpunkte bringt das nichts, da man zu schnell tot ist.

    freundliche Grüße, Rolus

    Geändert von Rolus (04.08.2006 um 17:59 Uhr)

  13. #13
    Zitat Zitat
    Beispielsweise könnte man bewegungslosen Chips Schild-Punkte abziehen oder die Schilde am Anfang auf 10 setzen, sodass sich für aktive Bots eine Flucht zum Reparieren lohnt. Bei 5 Schildpunkte bringt das nichts, da man zu schnell tot ist.
    Stell dir mal vor, du fliehst mit 1HP. Dann müsstest du 72 Runden waren bis du wieder 10 HP hast. Das würde das Spiel nur unnötig in die Länge ziehen.

    Ciao
    malu

  14. #14
    Zitat Zitat von malu
    Stell dir mal vor, du fliehst mit 1HP. Dann müsstest du 72 Runden waren bis du wieder 10 HP hast. Das würde das Spiel nur unnötig in die Länge ziehen.
    Wenn es standardmäßig mehr Schildpunkte gibt, muss das Reparieren natürlich auch angepasst werden. Sonst wäre die Funktion ja gar nicht mehr attraktiv.

    freundliche, Grüße Rolus

  15. #15
    Zitat Zitat von malu
    Stell dir mal vor, du fliehst mit 1HP. Dann müsstest du 72 Runden waren bis du wieder 10 HP hast. Das würde das Spiel nur unnötig in die Länge ziehen.
    Einstellbare Start-HP Zahl? Wird eingebaut ^^
    • Variabeln (Mit ifs)
    • Feste Variabeln für X Y Koordinaten des BOTs + Gegners
    • Verschiedene Einstellungen beim Start
    • Blickrichtung des Gegners abfragen

  16. #16
    Zitat Zitat
    Was ich noch für problematisch halte, sind Bots, die passiv einfach auf Feinde warten und dann kämpfen. Ich habe mir mal so einen "kleinen Feigling" geschrieben, der gemeinerweise sehr häufig gewinnt.
    Zitat:
    Zitat von Kleiner Feigling
    shield_up
    :main
    scan_enemy feindinsicht
    if_blocked blockadevorne
    goto main

    :blockadevorne
    if_blocked_left blockadelinks
    turn_right
    goto main

    :blockadelinks
    if_blocked_right blockbeideseiten
    turn_left
    goto main

    :blockbeideseiten
    turn_right
    turn_right
    goto main

    :feindinsicht
    fire_missile
    scan_enemy feindinsicht
    goto main
    Ich finde so ein Verhalten sollte irgendwie bestraft werden.
    Rolus, mein Bot gewinnt gegen deinen 10 zu 0. Der kleine Feigling is also nicht so stark wie du glaubst und Crash-Override kann bezeugen, dass mein Bot auch noch super optimiert ist.

    Ciao
    malu

    Geändert von malu (05.08.2006 um 22:23 Uhr)

  17. #17
    Zitat Zitat von malu
    Rolus Bot gewinnt gegen deinen 10 zu 0. Der kleine Feigling is also nicht so stark wie du glaubst und Crash-Override kann bezeugen, dass mein Bot auch noch super optimiert ist.
    Äh, wie meinst du das (welcher Bot gewinnt gegen welchen)? Bei meinen Tests hat der kleine Feigling recht häufig gewonnen (trotz simpler Technik). Natürlich kommt das auch auf die Map an. Aber prinzipiell sind passive/wartende Bots noch im Vorteil, da sie Operationszeit, die der Gegner noch zum Bewegen nutzt, schon zum Kämpfen nutzen können.

    freundliche Grüße, Rolus

  18. #18
    Sorry, ich meinte dein Bot verliert gegen meinen 10 zu 0. Hab meinen Post editiert.

    Ciao
    malu

    PS: Sagt mal bin ich mit Rolus der einzige der sich dafür interessiert?

  19. #19
    Zitat Zitat von Rolus
    Äh, wie meinst du das (welcher Bot gewinnt gegen welchen)? Bei meinen Tests hat der kleine Feigling recht häufig gewonnen (trotz simpler Technik). Natürlich kommt das auch auf die Map an. Aber prinzipiell sind passive/wartende Bots noch im Vorteil, da sie Operationszeit, die der Gegner noch zum Bewegen nutzt, schon zum Kämpfen nutzen können.

    freundliche Grüße, Rolus
    Malu hat in seinem BOT einige fiese obtimierungs-Tricks drin wie z.B. 2x fire_missile in der Feuerrutine hintereinander das heißt er feuert 2x (2x1Tick fürs Feuern) wärend der Kleine Feigling 1x feuert (1 Tick feuern, 1 Tick goto). Dannach muss der Malu-Bot zwar auch ein goto nutzen aber insgesammt ist er im feuern doch schneller und vor allem da die feuerutine schnell kommt. In der nächsten Version gibt es dieses Problem allerdings nicht mehr (Gotos kosten keine Ticks).

    Imo müssen passive Bots nicht bestraft werden, dürfen aber nicht an irgendwelchen Wettbewerben teilnehmen für den Fall das mal zwei dieser Art gegeneinander kämpfen müssten (das würde sich ne Weile ziehen ).

    edit:
    Zitat Zitat von malu
    PS: Sagt mal bin ich mit Rolus der einzige der sich dafür interessiert?
    Es ist geekig und es hat mit programmieren zu tun, das sollte reichen um die meisten abzuschrecken.

  20. #20
    Zitat Zitat von Crash-Override
    Malu hat in seinem BOT einige fiese obtimierungs-Tricks drin wie z.B. 2x fire_missile in der Feuerrutine hintereinander das heißt er feuert 2x (2x1Tick fürs Feuern) wärend der Kleine Feigling 1x feuert (1 Tick feuern, 1 Tick goto). Dannach muss der Malu-Bot zwar auch ein goto nutzen aber insgesammt ist er im feuern doch schneller und vor allem da die feuerutine schnell kommt. In der nächsten Version gibt es dieses Problem allerdings nicht mehr (Gotos kosten keine Ticks).
    Man kann auch gleich 5 oder 6 mal fire_missile hintereinander schreiben. In einem Gefecht haut man den Gegner so auf alle Fälle weg. Was natürlich sinnlos wird, wenn die GOTOs nichts mehr kosten. Gilt das dann eigentlich für alle bedingten Sprünge (wie if_blocked / scan_enemy)? Dann könnte man ja ordentlich viele Abfragen ohne Geschwindigkeitsverlust einbauen.

    freundliche Grüße, Rolus

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •