Amiga Minus 1/2001 - Niekomercyjny Magazyn U┐ytkownik≤w Komputer≤w Amiga
  Wydanie internetowe Nr 1, Marzec 2001  

 Ok│adka
 Prze│amuj▒c schematy
 Prawa autorskie
 Stopka redakcyjna

 Amiga Inc. zabija AmigΩ?
 Amiga Inc. w ocenie Polak≤w

 Jay Miner, ojciec Amigi
 Amiga w Gazecie Wyborczej
 Opinie
 Zamiast narzekaµ na piractwo

 Lato, lato...
 Amiga-fiction

 Urban Mueller
 Marcel Beck

 Pirackie oprogramowanie
 Ile za oryginalny program?
 Jakie programy do Internetu?
 Zdania o firmie Elbox

 Gw≤╝d╝ do trumny
 Dobra robota
 Najlepsi na scenie

 ZShell - z Unixa na AmigΩ

 ªwiat gier tekstowych
 Wojny rdzeniowe
 HArbiter


    Wojny Rdzeniowe (w oryginale Core Wars) opracowano w 1983 roku. Stworzy│ je ameryka±ski matematyk dr Dewdney, wyk│adaj▒cy na uniwersytecie Western Ontario. Dewdney z pomoc▒ kilku student≤w przez kilka miesiΩcy doskonali│ i testowa│ sw≤j projekt, wreszcie w 1984 roku spopularyzowa│ go na │amach magazynu "Scientific American", gdzie prowadzi│ rubrykΩ "Computer Recreations".
    Wojny Rdzeniowe s▒ specyficzn▒ gr▒ komputerow▒. Specyficzn▒, gdy┐ przeznaczon▒ dla programist≤w. Idea gry sprowadza siΩ do walki dw≤ch program≤w napisanych w specjalnym jΩzyku. Pojedynek przebiega w wydzielonym obszarze pamiΩci, a ko±czy go "╢mierµ" jednego z program≤w b▒d╝ remis.
    Wojny Rdzeniowe szybko zdoby│y popularno╢µ na ca│ym ╢wiecie. Powsta│y setki klub≤w ich fan≤w, kt≤rych jedynym celem by│o doskonalenie programowanych wojownik≤w i udzia│ w licznych turniejach, tak┐e miΩdzynarodowych.
    JΩzyk s│u┐▒cy do tworzenia walcz▒cych program≤w nazywa siΩ Redcode. Zbli┐ony jest do asemblera, ale jest od niego znacznie prostszy. Na Redcode sk│ada siΩ og≤│em dziesiΩµ rozkaz≤w (zgodnie z pierwowzorem dr Dewdneya), przy pomocy kt≤rych programy mog▒ operowaµ na kom≤rkach wydzielonego obszaru pamiΩci. JΩzyk mo┐e s│u┐yµ jako pomoc w nauce samego asemblera, gdy┐ oba jΩzyki cechuje podobny mechanizm tworzenia algorytm≤w, chocia┐ wiele os≤b jest zdania, i┐ Wojny Rdzeniowe s▒ raczej doskona│▒ │amig│≤wk▒ matematyczn▒ ni┐ zbiorem zagadnie± dla informatyk≤w.
    Walk▒ zarz▒dza tzw. arbiter gry, program o nazwie MARS (Memory Array Redcode Simulator). Rezerwuje on okre╢lonych rozmiar≤w obszar pamiΩci (w oryginalne 8000 kom≤rek), a nastΩpnie umieszcza w niej w losowych miejscach dwa przygotowane do walki programy. Ka┐da instrukcja programu (wraz z argumentami) zajmuje jedn▒ kom≤rkΩ pamiΩci. Oznacza to, ┐e jedna kom≤rka przechowuje trzy warto╢ci: kod instrukcji i jej dwa argumenty.
    Arbiter po rozpoczΩciu starcia wykonuje na przemian po jednym rozkazie ka┐dego z program≤w. Programy operuj▒c na kom≤rkach pamiΩci przemieszczaj▒ siΩ w niej, niszcz▒ wskazane kom≤rki b▒d╝ przechwytuj▒ fragmenty kodu przeciwnika. W ten spos≤b zarezerwowany obszar zamienia siΩ w prawdziwe pole walki, a jej przebieg zale┐y wy│▒cznie od inwencji programist≤w.
    Trudno znale╝µ receptΩ na dobry program. Mo┐na stworzyµ taki, kt≤ry w inteligentny spos≤b zabezpieczy siΩ przed atakiem przeciwnika i dla pewno╢ci rozbije siΩ na kilka mniejszych program≤w, kt≤re zaczn▒ dzia│aµ na w│asn▒ rΩkΩ. Wed│ug obranego schematu bΩd▒ poszukiwaµ miejsca pamiΩci, w kt≤rym znajduje siΩ przeciwnik. Gdy zostanie ju┐ znaleziony, odpowiedni fragment programu bΩdzie go m≤g│ wykasowaµ kom≤rka po kom≤rce. Rozbudowane programy maj▒ jednak t▒ wadΩ, ┐e zajmuj▒ du┐o miejsca w pamiΩci. Oznacza to, ┐e podczas wykonywania programu zbudowanego z 50 instrukcji, program sk│adaj▒cy siΩ z 10 rozkaz≤w zd▒┐y siΩ wykonaµ piΩµ razy, zwiΩkszaj▒c swoje szanse na zwyciestwo. W dodatku poka╝nych rozmiar≤w wojownik jest │atwym celem dla przeciwnika, kt≤ry stosuj▒c prosty algorytm kasowania kom≤rek na chybi│ trafi│ szybko dotrze do zajmowanego przez niego fragmentu pamiΩci i zast▒pi niedozwolon▒ warto╢ci▒ jedn▒ z jego kom≤rek. Ingerencja w kod przeciwnika zwykle oznacza jego przegran▒, chyba ┐e program zd▒┐y│ siΩ sklonowaµ b▒d╝ uda mu siΩ naprawiµ sw≤j uszkodzony fragment zanim arbiter do niego dotrze i nie mog▒c wykonaµ nieistniej▒cej instrukcji og│osi zwyciΩstwo przeciwnika.
    MARS zosta│ pierwotnie stworzony dla komputera Apple, ale poniewa┐ idea Wojen Rdzeniowych jest bardzo prosta, szybko zrealizowano wersje na inne komputery. Dzi╢ mo┐na powiedzieµ, ┐e nie ma systemu operacyjnego, na kt≤rym nie mo┐na by│oby pograµ w Wojny Rdzeniowe. Opr≤cz znanych mi wersji dla AmigaOS, MacOS i Windows s▒ wersje linuxowe oraz odpowiedniki dla komputer≤w o╢miobitowych, w tym ma│ego Atari i ZX Spectrum.
    Pocz▒tkowo pakiety Wojen Rdzeniowych pozbawione by│y funkcjonalnych kompilator≤w. R≤wnie┐ nie od pocz▒tku mo┐na by│o ╢ledziµ przebieg walki w formie graficznego odwzorowania pamiΩci. Wraz zeáwzrostem popularno╢ci gry wyposa┐ono j▒ w wiele dodatk≤w. Nale┐▒ do nich kompilatory pozwalaj▒ce na stosowanie zmiennych i etykiet oraz mo┐liwo╢µ testowania wojownik≤w w praktyce. R≤┐ne wersje arbitr≤w umo┐liwiaj▒ walkΩ wielu program≤w jednocze╢nie oraz poszerzaj▒ Redcode o nowe instrukcje; jedn▒ z nich jest PCT (protect) - instrukcja chroni▒ca wskazan▒ kom≤rkΩ przed pierwsz▒ pr≤b▒ skasowania jej zawarto╢ci, co pozwala na tworzenie bardziej zaawansowanych algorytm≤w obronnych.
    Gra zaliczana jest do grupy gier symulacyjnych. Nie zmienia to faktu, i┐ jest jedyna w swoim rodzaju. Wojny Rdzeniowe doczeka│y siΩ wielu kontynuacji i rozwiniΩµ. W wielu plac≤wkach naukowych s│u┐▒ za materia│ do bada± miΩdzy innymi nad zagadnieniami sztucznej inteligencji, a dla student≤w jako pomoc naukowa pozwalaj▒ca na poznawanie regu│ rz▒dz▒cych wieloma dziedzinami nauki. Niemalej▒ca popularno╢µ Wojen Rdzeniowych ╢wiadczy o jednym - pomys│ jest nie╢miertelny i warto go zaszczepiµ w naszym kraju. Tym bardziej, ┐e mamy na Amidze doskona│y pakiet Wojen Rdzeniowych, w dodatku polskiej produkcji.

S│awomir Wilk

 Do g≤ry