|
|
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
|
|