Core War

Ich weiß eigentlich gar nichtmal ob das das richtige Forum ist aber es ist diesem wohl am ehesten zuzuordnen. Sollte ein Mod/Admin es besser wissen entschuldige ich den Threadschiebaufwand.

Vielleicht (aber wahrscheinlich eher nicht) knnt hier jemand "Core War" Das ist beileibe alles andere als ein gewöhnliches Spiel da es auf assamblerartigen Programmen beruht und gegen einen fähigen Gegner sehr spannend ist. Auf Wikipedia gibt es wie nahezu immer die wichtigsten Informationen. Hier ! ist der Link dazu.

Bei Core War wird nahezu immer mit der Programmiersprache Redcode gearbeitet, wobei diese eigenltich nichts weiter als eine simple Assemblerartige Mini-Sprache ist mit nicht mehr als 19 Befehlen. Das Spiel fängt damit an das beide Kontrahenten ein Programm damit schreiben dessen Ziel es ist den gesamten Speicher zu füllen, den "Kern". Das Programm das über das andere dominiert und es schafft alleine im Speicher zu bleiben hat gewonnen. Klingt einfach, ist es auch, die Herausforderung liegt darin ein Programm zu schreiben das erstens diese Aufgabe schnell erfüllt und zweitens so wenig anfällig wie möglich auf gegnerische Angriffe oder "Fehler" ist. Fehler sind hierbei wenn sich Programmteile vermischen was ohne weiters passieren kann. Das Pogramm darf natürlich auch nicht zulang sein da es ansonsten sehr fehleranfällig ist.
Das so ziemlich simpelste Programm besteht aus nur einer Zeile und heißt "Imp":

MOV 0, 1

Zweck dieses Programms ist es ganz einfach sich immer wieder in den nächsten Slot des Kerns zu kopieren. Dann wird der nächste Slot ausgeführt und somit schreibt sich das Programm weiter und weiter ... Simpel und ziemlich effektiv. Aber es hat auch Nachteile, naja, ich will jetzt nicht zu sehr ausschweifen.

Was haltet ihr von dem Spiel ?

Nebenbei könnt ihr Hier ! näheres zu Redcode erfahren und Hier ! noch mehr zu Core Wars, unter anderem eine Art "Emulator" des Ur-Mars-Rechners der früher für Core Wars verwendet wurde.

cya.gif
 
Ich kannte das spiel noch gar nicht. Aber ich muss sagen ich bin schon süchtig 8o

Hier mein erster Warrior. CoreSentry :D
Naja ist zwar ziemlich einfach zu besiegen. (Der Hauptcode bleibt an einer Stelle und erzerstört sich elber nach einiger zeit)), aber er durchsetzt den Kern doch ganz schön mit DATs.

Code:
;redcode

;name		CoreSentry
;version	0.1
;author		+++ATH0
;date		2005-Nov-09
		
;strategy	kill_the_opponent

JMP +2
DAT #1000
MOV -1, @-1
SUB +5, -2
JMN -2, -3
SUB #1, -4
SUB #3, +2
JMP -5
DAT #10

Ich benutze als Simulator:

http://harald.ist.org/ares/


Bei 10 Battles : (Man beachte Punktevergabe)
CoreSentry vs. IMP = 18 : 6 :D
CoreSentry vs. littleFighter = 12 : 18 :(
CoreSentry vs. Dwarf = 18 : 12 :)
CoreSentry vs. Seeds Of Terror = 19 :10 :D
CoreSentry vs. LittleSeeder2 = 17:11

Schreibt mal euers. Ich lass es battlen :)

EDIT:

Neuer Warrior :)

Er heisst CloneBeholder :)

Code:
;redcode

;name		CloneBeholder
;version	0.2
;author		+++ATH0
;date		2005-Nov-10
;strategy	Clone And Overwhelm

ORG Start


	JMP    -2                  
Data	DAT    #1000                
	ADD    #-1, 	+1  
     Start               
	MOV    #1337,    -5        
	MOV    -2,       @-3       
	ADD    #1,       Data        
	MOV    -3,       @-5       
	ADD    #1,       Data        
	MOV    -8,       @-7       
	SPL    @Data
	ADD    #100,     Data      
	JMP    -7

30:0 gegen CoreSentry bei 10 Läufen. :D
 
Schön das das Spiel dir gefällt ;)

Dann lass deinen Warrior mal hiergegen antreten :

Code:
;redcode-b
;name Crazy Engine
;author Orniflyer

inc	DAT	<-2936,<-2936
loop1	MOV	splb,*2
	MOV	jmpb,@1
	MOV	-2938,*-2936
	ADD.F	inc,-1
	DJN	loop1,#999
splb	SPL	0,<-3
	MOV	inc,<1
jmpb	JMP	-1,<-3

        END     loop1

Bin gespannt wer gewinnt :)

cya.gif
 
Ergebnisse:

1. Crazy Engine : 36
2. Clone Avenger : 30 //Schade. Aber er wird noch verbessert :D
3. Core Sentry : 24

Starker Warrior. :)
 
Bomber/Core Cleaner sind immer ziemlich stark :)

Aber deiner ist auch verdammt gut, hat mich echt überrascht, meine ersten Warriors waren ziemlich bedürftig. Hat ne ziemliche Weile gedauert bis ich mich vom Imp Muster gelöst hab Momentan will ich nen effizienten Core Cleaner bauen aber so richtig will's mir nicht gelingen.

Hier ist der Code für nen Warrior von nem Freund, ich bin völlig unterlegen, wie zur Hölle besiegt man den ?!? Dumme Replikatoren :D

Code:
;redcode-94
;name Chillie
;author Yoshi
;strategy replicator

start   spl     1,      <300    
        spl     1,      <150    
        mov     -1,     0       
silk    spl     3620,   #0      
        mov.i   >-1,    }-1     

        mov.i   bomb,   >2005  
        mov.i   bomb,   }2042  

        add.a   #50,     silk   
        jmp     silk,   <silk  
bomb    dat.f   >2667,  >5334

kannst den ja mal auch in Testläufe einbeziehen, ich bin von dem bisher bei meinen meißten warriors besiegt worden.

cya.gif



/edit:

Hier noch ein anderer Warrior, extrem schnell und einfach aufgebaut, ein rückwärtslaufender Stone Imp. Man kann nur immer wieder staunen wie diese Imps auch die komplexesten Warrior zu Grunde richten:

Code:
;redcode
;name Stonefinger
;author Orniflyer+Yoshi
;strategy fast stone imp

m0       mov    mm   ,{mm
         djn.a  -1   ,mm
         spl    #0   ,<-5
mm       mov    -7   ,1
 
Heftiges Ding 8o

Ranking /Score :

1. Chillie : 85
2. Crazy Engine: 65
3. Clone Beholder: 49
4. Stome Finger: 37
5. Core Sentry: 33

Aber echt geiles Spiel. Gibts schon so lange und noch nie wat von gehört. Danke für den Hinweis btw. :)

EDIT: Detaillierte Ranking Tabelle. Im Anhang.

Welchen MARS nimmst du eigentlich? pMarsV ?
 
was ganz einfaches von mir ;) (muss mal am WE die Doku lesen - bin nur bis zu den Anfängen gekommen):
Code:
;redcode
;redcode

;name		<NEW_WARRIOR>
;version	1
;author		cdw
;date		2005-Nov-11
		
;strategy	kill_the_opponent

add #6,5
sub #7,5
mov 3,@3
mov 3,@3
jmp -4
one dat #0,#1600
two dat #0,#-2600
liegt in etwa gleich mit CoreSentry, schlägt dafür aber die CrazyEngine :D

NEW_Warrios: Wins 7, losts 3,kills 7, Score 21

EDIT:
Das kriegt zwar Chillie nicht tot ;) aber sonst sollte es besser laufen.
Code:
;redcode

;name		<NEW_WARRIOR>
;version	1
;author		anonymous
;date		2005-Nov-11
		
;strategy	kill_the_opponent

add #3,5
sub #3,5
mov 3,@3
mov 3,@3
jmp -4
one dat #0,#1600
two dat #0,#-2600
 
Also ich glaube ja die Suche nach einem Warrior, der die Crazy Engine UND Chillie besiegt, ist wie die Suche nach dem heiligen Gral. :D
(Jetz weiss ich warum, SG1 aus StarGate immer soviele Probs mit den Replikatoren hatten :D)

Also ich krieg die Reps ums verrecken nicht tot. Sowas ist ja echt mal dreist. ;(

Naja, ich hab alle Warriors (ausser diesen IMP) mal durchn Tournament geschickt:
 
@ATH0: aber was für ein Unterschied schon durch das bloße anpassen der Zahl da ist (zumindest bei mir ersichtlich ;) ). Ich muss mir aber eine bessere Dokuseite suchen - alle Möglichkeiten kennenlernen und dann den Ultimativen Warrior schreiben :D
 
Klingt ziemlich interessant, auch wenn ich Assembler sonst nicht gerade mag.
Das gelinkte Redcode-Tutorial hab ich mir durchgelesen. Gibt es irgendwo vielleicht noch allgemeinen Kram zu Strategien usw. in Core War?

Als Simulator verwende ich einen SDL-Port von pMARS (Gentoo hat das Ding im Paketmanager, wie's bei anderen Linux-Distros aussieht, weiß ich nicht).
 
Hab mir das ganze mal angeschaut. Hab zwar von Assembler nicht richtig viel Ahnung, hab aber trotzdem mal versucht den Replikator zu schlagen.... und ich sage nur scheiss Replikatoren, die killen alles was ich zusammen gebastel hab :D
würde mich auch mal interresiern obs eine Seite mit Strategien für Core War gibt.
Oder gibts irgendwo eine ausführliche Anleitung auf Deutsch?
 
So, ich hab auch mal was gecodet. Das ganze ist ein (relativ einfacher, großer, langsamer, schlechter) Replikator.
Code:
;redcode-94
;author lumax
;name testbot01
;strategy replicator

org start

count  dat    #0,     #200
start  djn    2,      #13
       jmp    3,      <-3
       mov    }count, >count
       jmp    -3,     <-5
       sub.ab #11,    count
       add.ab #2,     @count
       mov.a  #0,     count
       spl    @count, <-9
       add.ab #99,    count
       mov.ab #13,    start
       jmp    start,  <-12
Bei meinen Tests lag der etwa gleichauf mit Clone Beholder.

Oh, und dem Ding sterben nach einer Weile ein ganzer Haufen Prozesse weg, weil ich die "Schrittweite" etwas ungeschickt gewählt habe, das Teil überschreibt oft seine eigenen Kopien.

Edit:
Zur "Schrittweite": ich hab mal testweise die von Chillie in meinen Warrior übernommen, das macht auch keinen wirklichen Unterschied.
 
hiho!
Kann vielleicht jemand mal auf deutsch etwas ausführlicher erklären wie das funktioniert und was man dafür benötigt(hab Ubuntu5.10),denn ich kann zwar Englisch aber halt nur das was man in der schule lernt und unsere Lehrerin ist naja einwenig inkompetent...
Würde mich sehr über eine Erläuterung freuen...
Hab mir den Wikipedia-Artikel schon durchgelesen, und weiß grob worum es geht,aber worum genau hab ich nicht verstanden...
Thx

MfG
Cube
 
Harhar, erzittert vor mir einfache sterbliche, ich habe den Nanohill geentert ^^

Code:
;redcode-nano
;name SuperSentryV
;author J.J. 'Imrahil' Wingert
; Thanks to S.Fernandes who gave me good advice during the creation
;strategy Scans for any value not 0,0 and bombs it
;assert (CORESIZE==80) && (MAXPROCESSES==80)
;assert (MAXCYCLES==800) && (MAXLENGTH==5)
;assert (MINDISTANCE==5)

           org      scanner                  ; setzt den startpunkt auf scanner
somewhere  equ      43                       ; definiert somewhere als 43
scanstep   equ      -5                       ; definiert scanstep als -5
scanstart  equ      -11                      ; definiert scanstart als -11
scanstep   add.ab   #scanstep,1              ; Schritt 2: erhöht den b-value um scanstep (# beachten das ist der Identifier der scanstep als Zahl behandelt) zurück zu schritt 1
scanner    jmz.f    scanstep, scanstart      ; Schritt 1: Jump if scanstart = $0,$0 zur Position scanstep
           mov      bomb,>scanner            ; Schritt 3: Wenn an scanstart etwas anderes als $0,$0 (standardwert, auf jeden Fall ein uninteressanter Fleck!) ist kopiere den string bei bomb an die Position des Werts des B-Felds von scanner und erhöhe dieses Feld gleichzeitig um 1
           jmp      scanner, <somewhere      ; springt nach erfolreichem Bomben zurück zu scanner und platziert an der Stelle somewhere (hier 43) einen decrease
bomb       dat      0,0                      ; die Bombe
           end                               ; Der Endpunkt

Platz 5 und mit dem Konzept hab ich gestern sogar zeitweise den zweiten Platz gehabt ;)
Und zum Konzept von dem Spiel, naja, es gibt auch ein paar weniger qualitative Anleitungen auf Deutsch...
Ich benutze aber auf anraten eines Corewar spielers das sehr gute Programm Corewin (Windows). http://www.geocities.com/corewin2/
Ich kann dir nur sagen lies dir einfach diese Anleitungen durch, auch wenn du nicht alles verstehst.
Es reicht meistens ein grobes verständnis von dem was du da hast und dann kannst schon loslegen.
Meine Empfehlung: irc://irc.koth.org/corewars
#corewars auf irc.koth.org
Sind auch einige Deutsche Corewarler drauf.
Imrahil

*EDIT*
Machen wir den 10. Edit draus, ist alles kommentiert.
Mit etwas veränderten werten (siehe ganz unten) bin ich damit immo Platz 5 auf dem Nanohill von SAL (http://sal.math.ualberta.ca/warrior.php?key=nano)
Ist eine recht leistungsfähige und besonders kleine scannengine mit nem einfachen bomber.
Ich arbeite grad an einer etwas verbesserten bombing version.
Code:
somewhere  equ    40
scanstep   equ    -5
scanstart  equ    -11
Imrahil
 
Hi,

hier ist meine Idee. Sollte eigentlich ganz gut punkten.

Code:
;redcode-94nop
;name BiShot
;author Christian Schmidt
;strategy Scanner
;assert 1

sOff    equ     (20*sStep-1)
sStep   equ     10
sDelet  equ     205
sSt     equ     3

sOne    add.f   sAdd,        sPtr
        sne.i   *sPtr,       @sPtr
        jmp     sOne,        0
        jmp     sBomb,       0
for sSt
        dat     0,           0
rof
        dat     0,           0
sAdd    dat.f   sStep,       sStep
sPtr    spl     {sOff,       >4000+sOff-sDelet
        dat     0,           0
        dat     0,           0
        dat     {10,         >4010-sDelet
sBomb   spl     #20,         <-100
sLoop   mov     sBomb,       >sPtr
        mov     sBomb,       }sPtr
sBack   djn.a   sLoop,       <sBomb

end sOne
 
Irgendwie werd ich das Gefühl nicht los, dass du dich hier nur angemeldet hast um uns fertig zu machen. :D
Ich schreibe gerade erst an meinem 3. Warrior. Erst wenn er alle in diesem Thread schlägt soll er veröffentlicht werden. Das kann noch dauern .... *g*
 
Naja, so war das nicht geplant, ;) ihr könnt den Krieger ja außer Konkurrenz einfach als 'Benchmark' nehmen. Aber ich gebe zu, dass ich Core War schon lange spiele. :) Wenn ihr irgendwelche Fragen zum Spiel haben solltet würde ich mich freuen diese zu beantworten.

Hier sind zwei deutschsprachige Anleitungen zum Corewar, die wirklich gelungen sind:

http://www.mynetcologne.de/~nc-zapfsa/files/Handbuch.pdf
http://mwilhelm.hs-harz.de/scripte/pwoche/CoreWars.pdf

Wenn ihr mehr über Replikatoren (sogenannte Papers) wissen wollt gibt es hier umfangreiche Informationen, ist aber etwas schwerer verdaulich und in Englisch:

http://www.corewar.info/lexicon/paper.htm
 
+++ATHO
Ehy_key und ich sind auch dabei das spiel zu verstehen und es zu erlernen und sind halt auf dem irc-channel von corewars unterwegs...und dort wurden wir halt gefragt wie wir auf dieses spiel gekommen sind und haben ihm den thread gegeben...und dann hat er halt ma nen warrior von sich gepostet...
kann man ja viell auch teile für sich nutzen..
 
Zurück
Oben