XBattle

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

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... :)

Na tej planszy doszło do zajęcia całego obszaru przez wojska w kolorze żółtym, różowym, czarnym i brązowym. Im większy obszar ma dana armia, tym jest silniejsza. Walka toczy się pomiędzy różowymi a żółtymi na wąskim, dwu-polowym przesmyku.
Sytuacja z początku gry, gdy poszczególne armie nie wykonały jeszcze wielu ruchów. Można zaobserwować nieliczne przesunięcia na sąsiednie pola w celu zajęcia terenu.
Żółte prawie zginęły, gdyby nie wyspa. AI w tej grze nie umie jeszcze przejmować terenu otoczonego wodą, dlatego grając żółtymi można rozbudować sobie na wyspie bazy, wzmocnić zaplecze, a potem wysłać desant w dowolne miejsce planszy, aby siać tam grozę i zniszczenie.
Żółte w tej rozgrywce przygotowały sobie solidną podstawę w postaci baz, i powiększyły teren. Bazy będą potrzebne do gwałtownego wysyłania spadochroniarzy desantowych w dowolne miejsca; szybkość tego wysyłania może być tak wielka, że żadne wojska lądowe nie nadążą z parowaniu ciosów, i pole atakowane spadochroniarzami będzie przejęte.
Wystarczyły po cztery bazy zasilające spadochroniarzy i udało się przejąć półwysep na północy oraz teren na południu w rogu. Różowa armia ma teraz problem. Widać, jak osłabione są wojska po prawej stronie na dole - plansza „zawija się” dookoła krawędzi i widać że wojska różowych słabną.
Widać tu jakąś losową planszę z domyślną konfiguracją. Kolory pól zapełnione czerwonym, żółtym, czarnym lub jasnoniebieskim oznaczają obszary niewidoczne lub niedostępne (horyzont dla danej armii). Nie wiem jakie tutaj zostały użyte opcje, więc te kolory mogą też oznaczać coś innego.
Żółta armia ma idealną sytuację do nieskrępowanego rozwoju. Dysponuje wielkim obszarem z losowo rozsianymi bazami do zajęcia, bez przeciwników i sąsiadów. Takie idealne warunki zdarzają się bardzo rzadko. Walka toczy się na razie tylko pomiędzy zielonymi i brązowymi.

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

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:

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:

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.

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.