Znalezisko
Tego się nie spodziewałem. Jeden z moich studentów znalazł grę w wersji on-line! Oto adres: https://xbattle.online/. Bardzo ciekawe, ktoś to napisał i skompilował do wersji WASM. Ale kto? Napisałem na podany na stronie email. Odpowiedź nadeszła i ku mojemu zaskoczeniu okazało się, że istnieje inny długoletni fan tej gry, który w dodatku coś zrobił! Napisana przez Niego wersja Xbattle to port oparty na oryginalnej bazie kodowej, przeniesiony na WASM, dzięki czemu można grać w oryginalnego XBattle po prostu w przeglądarce. Przyznaję, że to naprawdę niezła robota, zrobiło to na mnie wrażenie. Może gdy znajdziemy trochę czasu, to ruszymy ten projekt, mamy pomysł, aby można było podpinać pod grę różne silniki AI za pomocą API zdefiniowanego już częściowo do gier multi-player. Przyszłość pokaże co uda się zrobić. Obecnie jestem tak zawalony robotą, że niestety nie mogę temu wspaniałemu projektowi poświęcić tyle czasu, ile byłoby potrzeba, aby coś zdziałać... :(
A chciałoby się przepisać tę zacną grę na Rusta, albo chociaż na Golanga... Na pewno byłoby to prostsze w Go, ale jak znam Rusta, to będzie to ciekawsze! Ten projekt zabiorę chyba na emeryturę, bo obserwując swoje obciążenie w ostatnich latach widzę, że nadzieje na „czas” są raczej pobożnymi życzeniami, a nie czymś, co ma szansę się w miarę szybko spełnić.
Ogólne o grze
Klasyczny opis z 2006 roku: Gra strategiczna czasu rzeczywistego dla wielu graczy. XBattle to równoczesna gra wieloosobowa, która łączy elementy strategii z akcją zręcznościową, odtwarzając szeroki wachlarz scenariuszy militarnych. Przeciwnicy grają z osobnych ekranów, a polecenia są wykonywane jednocześnie – gracze nie wykonują ruchów „na zmianę”, ale raczej wszyscy wydają swoje polecenia jednocześnie. Może być dowolna liczba graczy, przy czym każdy gracz jest przypisany do określonej drużyny, oznaczonej kolorami. Plansza do gry jest matrycą komórek (kwadrat, sześciokąty, itp.), które mogą być zajmowane przez kolorowe oddziały, w celu wyeliminowania wroga z planszy poprzez atakowanie komórek zajętych przez wojska przeciwnika. Szeroka gama opcji wiersza poleceń (i wcześniej skonfigurowanych plików gry) zapewnia mnóstwo różnych scenariuszy i środowisk.
Gra XBattle to w zasadzie typowy RTS (ang. Real Time Strategy), gdzie bój toczyć się może pomiędzy wieloma graczami (w zasadzie bez ograniczeń). Niestety, od wielu lat gra ta jest porzucona. Jej początki datują się na lata '90, ale informacje możliwe do znalezienia na sieci datują początki na wczesne lata 2000-2003, co nie jest prawdą. Śladowe wspomnienie z Historii Gier Online w Wikipedii (https://en.wikipedia.org/wiki/History_of_online_games) podaje niepewną datę 1991. Poszukiwania w sieci wykazały, że gra ta umarła na tyle dawno, że została nawet przejęta jej nazwa. Był to też przez jakiś czas tak nazwany mod do Quake4, istniała domena xbattle.net z zawartością dotyczącą zupełnie innej gry. W roku 2006 pakiet xbattle został osierocony przez jego ówczesnego opiekuna Thimo Neubaera (thimo@debian.org) (źródło: ).
W pliku README w archiwum XBattle-5.4.1 można znaleźć następujące informacje:
Deweloper:
Greg Lesher (lesher@cns.bu.edu)
W oparciu o kod (za zgodą:)
Steve Lehar (slehar@cns.bu.edu) 0.0-4.0
Greg Lesher (lesher@cns.bu.edu) 1.0-5.4.1
Oczywiście serwery z adresami już nie odpowiadają, prawdopodobnie nie istnieją. Archiwa wersji XBattleAI zawierają dodatkowe nazwiska (i daty wskazujące na okolicę lat 2001-2002). Jak twierdzi sam plik CONTRIBUTIONS, nie ma tam szczególnej kolejności, są po prostu nazwiska wrzucone na listę. Dodałem w nawiasach który z nich odpowiadał za algorytmy AI, co wyczytać można z dokumentacji:
Mathias Broxvall (pierwszy algorytm AI)
Steinar Hamre
Matthew Tuck
Pierre Bureau (drugi algorytm AI)
Ross Combs
Trudno powiedzieć, czy coś jeszcze dałoby się znaleźć w sieci na temat tej gry. Niektóre strony podają nawet nie działające linki do mojej starej strony z obrazkami z ekranu, ale nie mogę ich już poprawić - nie działają nawet linki mailowe do adminów tych stron.
Zasoby
Poniżej zamieszczam kilka plików, które kiedyś mi się przydały. Samej gry nie trzeba chyba opisywać! Uwaga - można się uzależnić!
- Mój standardowy skrypt uruchomieniowy.
Chodzi o to, że wystarczy 'odpalić' po prostu ten plik, i jeżeli masz zainstalowaną odpowiednią wersję Xbattle, wszystko ruszy samo. Gra dostaje takie opcje, aby było kilku przeciwników, twój kolor to żółty - i można grać samemu!!! YEAH!
- Jeżeli chcesz zobaczyć treść tego skryptu, tutaj masz wersję źródłową.
- Przykładowa walka i skrypt, który umie ją odtworzyć.
Rozpakuj wszystko do jakiegoś katalogu i po prostu uruchom skrypt :)
- Proste środowisko, trudny przeciwnik.
Oto wyzwanie dla tych, którzy umieją grać w kulki: prosta plansza, ale trudny przeciwnik. Spróbuj pokonać go w ciągu 10 minut... Potem może ci się nie udać! :) Wysoki koszt nałożono na spadochroniarzy, kopanie i usypywanie gór, trochę tańsze jest niszczenie baz i bombardowanie. Powodzenia...
- Serwer Xbattle
do gry na niewielkiej planszy dla dwóch osób, który udało się nam zestawić po godzinnym analizowaniu podręcznika i wielu próbach. Niestety, trochę słabo działa klient, bo nie wyświetla niektórych ścieżek, i ma problemy z odświeżaniem stanu planszy. Dla desperatów.
- Klient dla serwera
którym można się podłączyć jeżeli serwer jest postawiony. Po wielu, naprawdę wielu partiach z komputerowym AI mogę powiedzieć, że walka z człowiekiem to jest to! Zupełnie inna.
Edycja własnych map
Niestety, nie udało mi się skompilować gry w taki sposób, aby to działało... Pamiętam że w latach '90 działało to, ale system to był bodaj OpenWindows na stacji Indigo Graphics, i kompilatory, narzędzia oraz cały ekosystem z tamtych lat jest już nie do odtworzenia. Może któregoś dnia siądę i poprawię błędy w kodzie, lub wpadnę na odpowiednią kombinację opcji...
Znany jest też oficjalnie co najmniej jeden bug związany z niemożnością gry (z powodu zwisu) przy ładowaniu jakiejś planszy predefiniowanej. Ale to raczej mało ważne, skoro nawet po normalnej, standardowej kompilacji gra nie zawsze chce działać... Warto by ją poprawić.
Jak wygląda gra?
Obrazki statyczne tego nie mogą oddać, ale dla całkowicie niezorientowanych zapodam parę... Co mi szkodzi... :)
Źródła do kompilacji
Niestety, projekt XBattle obecnie chyba już od dawna nie jest żywy... Strony głównej brak, sama gra istnieje w wielu pakietach linuxowych, ale ogólnie wersja z dodanym AI nie jest do nich włączona. Poniżej zebrałem kilka pakietów do różnych dystrybucji, oraz wersję źródłową, której używam. Niestety (drugie niestety już, niestety) wersja ta działa mi stabilnie tylko na Athlonie64, natomiast na innych komputerach gra po paru sekundach się wiesza. Może zależy to od sposobu kompilacji, np. po wyłączeniu optymalizacji i przestawieniu kompilatora na arch=i386 wszystko chodzi, ale nadal niestabilnie. Może u kogoś będzie lepiej. Problemy miałem na Intelu Prescott (chyba 2500MHz - nie pamiętam już) oraz celeron M (1500MHz).
Ten tekst pisałem wiele lat temu, gdy nie dysponowaliśmy jeszcze procesorami bardzo-wielo-rdzeniowymi.
- http://old-releases.ubuntu.com/ubuntu/pool/universe/x/xbattle/ - stare pakiety z lat 2004-2008 zebrane na serwerze lustrzanym Ubuntu, w różnych wersjach binarnych. Ostatnia wersja nosi numer 5.4.1-15 i jest to klasyczna wersja XBattle - bez wsparcia dla sztucznej inteligencji. Oznacza to, że możesz grać, ale tylko z ludźmi, nie z komputerem. Uploaderem tej wersji był Barry deFreese (bddebian@comcast.net). Aby taką grę uruchomić, należy używać serwera zgodnego z X11 i uruchomić ją na jednym komputerze, ale wyświetlać na różnych komputerach. Możliwe to było wtedy, gdy na różnych komputerach system X11 pozwalał na wyświetlanie okien zalogowanego użytkownika, mimo, że ten siedział na innej maszynie ze swoim ekranem. Należało na każdej maszynie ustawić zmienną DISPLAY oraz wyłączyć kontrolę hosta za pomocą xhost+, dzięki czemu połączenia do serwera X11 na różnych komputerach mogły odbywać się z dowolnej maszyny. Gra pracowała tak, jakby otwarte miała wiele okien, a że były to okna na innych komputerach, to niczemu nie przeszkadzało. Protokół X11 to protokół sieciowy, pozwalający X-serwerowi wyświetlać okna w dowolnej konfiguracji sieciowej, zdalnie również. Trochę to oczywiście zapychało naszą sieć, ale działało zupełnie poprawnie. Obecnie, gdy mamy Waylanda i inne nowoczesne rozwiązania (nawet X-Org już odchodzi w przeszłość, nie mówiąc o X11R6), nawet nie wiem, czy ten proces dałoby się jeszcze tak samo przeprowadzić.
http://source.meta.net.nz/svn/xbattle/- Źródła w SVN - wersja z poprawkami błędów i różnymi dodatkami (już niestety niedostępne - no chyba, że znasz hasło!).- A tutaj jest ich spakowana paczka pobrana z serwera SVN: xbattle-svn-1.2.2-nz.tar.gz (2.9 MiB).
- xbattleai-1.2.2.tgz - plik z mojej dystrybucji Gentoo - do kompilacji (pochodzi z roku 2004/2005 najprawdopodobniej, bo wtedy używałem Gentoo). Niestety, gra skompilowana standardowo jest niestabilna i zawiesza się po kilku sekundach.
- xbattle-ai-1.2.2a.tgz - oto wersja pakietu z nieco zmienionym Makefile (wyłączona optymalizacja), którego kompilacja prowadzi do otrzymania nieco bardziej stabilnych binariów gry. Nie jest to jakoś szczególnie dobrze poprawione, po prostu ciut inny makefile. Wywołanie skryptu configure może go całkiem zmienić - być może na lepsze...
- Mirror całej strony
http://www.lysator.liu.se/~mbrx/XBattleAI/, na wypadek gdyby znikła: mirror . No i strona faktycznie już znikła.
Pliki binarne do pobrania
Ponieważ nie jest wcale łatwo skompilować xbattle na niektórych architekturach, pomyślałem, że warto przygotować pliki binarne, które czasami uda się gdzieniegdzie odpalić (zależnie od posiadanej wersji GLIBC). Oto one:
- xbattle-ai-1.2.2-bin.tar.bz2, 1.5 MiB, zestaw po make install - wystarczy ręcznie gdzieś skopiować i już. Info kompilacji:
Host: 2.6.29-gentoo #2 SMP PREEMPT Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz ELF class: ELF64 (wersja 64-bitowa) Zlinkowane biblioteki: linux-vdso.so.1 => (0x00007fff52ffe000) libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f884aa5e000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007f884a842000) libresolv.so.2 => /lib/libresolv.so.2 (0x00007f884a62b000) libnsl.so.1 => /lib/libnsl.so.1 (0x00007f884a413000) libm.so.6 => /lib/libm.so.6 (0x00007f884a190000) libc.so.6 => /lib/libc.so.6 (0x00007f8849e35000) libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f8849c31000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f8849a2b000) libdl.so.2 => /lib/libdl.so.2 (0x00007f8849827000) /lib64/ld-linux-x86-64.so.2 (0x00007f884ad8f000)
Update: xbattle-ai-1.2.2-bin-20090712.tar.bz2 - poprawka kodu xbattle.tcl aby startował lokalnie z katalogu bin. Kampania nadal nie działa, jak i inne skrypty.
- xbattle_5.4.1.orig.tar.gz - wersja pobrana ze starych archiwów Ubuntu
I jeszcze prośba w stylu dzieci neo... wiem, że liczę na niemożliwe, ale... Jeżeli przygotujesz własną kompilację, proszę, przyślij ją do mnie, umieszczę tutaj razem z 'creditsami' :)
Oczywiście, jest rok 2024 i nikt nic nie przysłał. Wiadomo było...
Wypasy
Ostatnio odkryłem, że obrazki z tej strony pokazał serwis thelinuxgames. Oto dokładny link do ich strony:
- http://thelinuxgames.blogspot.com/2009/12/xbattle-is-multi-player-real-time.html
Ciekawe, kto jeszcze zapoda jakieś materiały stąd, nie podając źródła :) Tak czy inaczej, fajnie, że obrazki powędrowały w sieć - co wpadnie do sieci, to trwa w niej wiecznie! Niestety, obrazki na ich stronie już nie działają, dlatego, że adresy podano w starej wersji domenowej, która już nie obowiązuje. Nic z tym nie mogę zrobić, niestety. http://en.wikipedia.org/wiki/Xbattle-jestbyło łącze ze strony Wikipedii :) Opis znikł i nie wiem kiedy się to stało. Obecnie gra jest wspomniana JEDNYM słowem tutaj: https://en.wikipedia.org/wiki/Open-source_video_game jako jeden z przykładów gier o nazwach zaczynających się od X (ponieważ były pisane pod X-Window System).- Okazało się (jest już rok 2012 gdy piszę te słowa - po paru latach, jak widać) - że na Google Summer of Code pojawiła się próba napisania Xbattle w javie - efekt można zobaczyć (i wypróbować) tutaj: http://code.google.com/p/fxbattle/ - fxbattle - wersja napisana w Javie, w celu poznania nowych technologii. Mi osobiście nie przypadła do gustu, ale może jeszcze zmienię zdanie (po latach - stwierdzam, że nie zmieniłem zdania). W roku 2024 zachowałem ten plik, więc można pobrać go stąd: fxbattle-v0.1.jar.
Znalezione opisy gry
Serwis http://everything2.com/title/XBattle zamieścił dość standardowe info na temat gry, można dowiedzieć się sporo o jej historii. Zamieszczam poniżej cały tekst.
XBattle is a multi-player real-time strategy game that, according to the authors, ``captures the dynamics of a wide range of military situations through numerous options''. It is played on a (virtual) board consisting of a configurable number of hexagonal, square, triangular, or octagonal and square cells.
Each player in XBattle is represented by a colour. Each cell can be occupied by `troops'; the number of troops in a cell is indicated by the size of a coloured circle appearing in the cell. Players set up links between cells; in each time unit, a fraction of the troops in the source cell will move to the destination cell. If a cell contains troops of different colours, they fight, reducing the number of troops of each colour in the cell. The goal is to use strategy, tactics, and a little bit of luck to wipe out all your opponents' troops.
One of the best things about this game is the vast array of user-configurable options. These can greatly affect the nature of the game. For example:
- Using the build option, players can expend troops to construct bases, which produce one troop per time unit.
- With the farms option, each occupied cell slowly produces troops. This makes it advantageous to capture large territories, rather than simply setting up supply lines from bases to the front line
- The decay option simulates attrition: troops not at a base slowly disappear. This effectively means that each base can support only a limited number of troops.
- The guns option allows players to expend troops to destroy remote enemy troops.
- The dig and fill options allow players to raise and lower terrain at the cost of troops. Troop movement is slowed uphill, and accelerated downhill. This option also allows players to construct uncrossable moats, and bridges for piercing these moats.
- The horizon option provides a `fog of war': you can only see enemy troops if they are within a certain (configurable!) distance of yours. map and localmap make this apply to terrain as well.
XBattle runs on any computer with the X Window System---typically, but not necessarily, Unix. The program runs on a single machine; the program uses X's network transparency to draw a window on each player's display. Unfortunately, the inefficiencies of the X protocol make this very slow over low-speed or high-latency connections. The current developer has planned a client-server version of the game, but see below.
XBattle was developed by two Boston University graduate students: Steve Lehar and Greg Lesher. The first version was released in 1991, based on a board game designed by Lehar. Lesher continued to develop the game over the next few years, adding a number of new features. Unfortunately, it seems that development more or less stopped in late 1996, before the planned client-server version could be completed. The latest version is 5.4.1, released in February 1996. A sneak preview of the client-server version was released in April 1996, though it is clearly labelled a development version, and is quite buggy.
All is not lost, however. Mathias Broxvall has developed an unofficial continuation of XBattle, called XBattleAI. This version adds computer-controlled players using two different algorithms (one by Broxvall and another by Pierre Bureau), victory detection, and a few miscellaneous features. The latest version of XBattleAI is 1.1.8, released in late 2001. Broxvall is now working on a client-server version of the game; snapshots are available from eir web site.
- The XBattle web site is at
http://cns-web.bu.edu/pub/xpip/html/xbattle.html(pio: page is dead now).- The XBattleAI web site is at
http://www.lysator.liu.se/~mbrx/XBattleAI/(dead)
Podobnie, serwis http://www.wlug.org.nz/XBattle również umieścił kilka słów:
XBattle is an old Unix Realtime Strategy Game.
The general idea is that there is a map (usually made up of hexes or squares, but can be as weird as diamonds or octagons), with some cities (represented by circles). Cities produce troops at a fixed rate. If you click near the edge of a cell then the game will toggle on or off a spigot where troops will leave that cell and "flow" into the neighbouring cell.
This has been rather popular amongst the WAND group recently, and so we have our own fork of the code which has some bugs fixed and a few extra features added. see http://source.meta.net.nz/svn/xbattle/ for our SVN tree.
The game supports as many teams and as many people as you care to play for, it also has some rather good AI's.
For an example game against the AI use:
./xbattle -ai 0 1 2 -blue you -red me -rbases 3 -sea 2 -march 2 -bound -attack -repeat -manage -farms 2 -militia 2 -hex -boardx 20 -boardy 20
Don't use -ai x 1 y. It will deadlock the game.
To setup a multiplayer game with someone on orb:0.0
./battle -red me -blue orb:0.0 -rbases 3 -sea 2 -march 2 -bound -attack -repeat -manage -farms 2 -militia 2 -hex -boardx 20 -boardy 20 -dig -fill
Hint: Try and take and hold a corner.
A tutaj jest ich spakowana paczka pobrana z serwera SVN: xbattle-svn-1.2.2-nz.tar.gz (2.9 MiB).
Podsumowanie
Wygląda na to, że skoro od ponad 20 lat nikt nie przejął tej wspaniałej gry, to raczej się to już nie zdarzy. Szkoda. Zadziwiające, że inne pakiety z tamtego okresu dotrwały do dziś i nadal można je zainstalować (np. XGalaga), mimo ich często archaicznej konstrukcji. Pozostaje mi pamiętać o tym projekcie, i może jeszcze kiedyś uda mi się do niego wrócić. Muszę tylko mieć więcej czasu, i akurat gdy będę szukał zajęcia, przypomnieć sobie o tej grze.