Przypominam, iż staramy się przepytać Polaków aktywnie działających w środowisku wolnego oprogramowania. Tym razem tematem przewodnim będą gry, jedna z niewielu działek, w której otwate projekty bardzo rzadko mogą konkurować z komercyjnym odpowiednikami. Rozmawialiśmy z Jackiem Popławskim, programistą gier, byłym członkiem demosceny, autorem artykułów o tworzeniu gier publikowanych w PC Kurierze i LinuxPlus, członkiem teamu Angry Pixels.

Adam Byrtek /alpha: Czy otwarty model rozwoju oprogramowania sprawdza się w przypadku gier?

Jacek Popławski: Według mnie ten model sprawdził się w przypadku dużych projektów – FreeCiv, FlightGear, (x)mame. Trudno znaleźć podobne darmowe projekty z zamkniętym kodem źródlowym. Proste gry są zazwyczaj pisane przez pojedynczych ludzi i mają krótki czas rozwoju.

AB: Jaka jest twoja ulubiona otwarta gra i dlaczego?

JP: NetHack. Jest to gra roguelike – coś w rodzaju cRPG bez żadnej grafiki (istnieją wersje z grafiką, nawet 3D, ale ich nie używam) ani dźwięku – mapka rysowana jest w trybie tekstowym. Gdy pierwszy raz odpaliłem NH nie wiedziałem nawet co to jest Linux – grę znalazłem na płytce z freeware pod DOS, ponad 7 lat temu. Nie gram jednak z powodów sentymentalnych (jak to jest z Atari), lecz dlatego, że ta gra jest po prostu perfekcyjna. O ile np. Fallout ma fantastyczną atmosferę i bardzo wciąga przez kilka tygodni, to z perspektywy czasu nie ma szans z NetHackiem. Nie spędzam zbyt dużo czasu na graniu (po tylu latach nadal nie zbliżyłem się nawet do finału), ale zawsze staram się mieć NH pod ręką. Kiedyś grałem przez kilka godzin w szkole, na nudnych laborkach, pod Windows NT. Zakończyło się to zwisem systemu (gra nie wymaga 3D, nie korzysta z sieci, dźwięku, ani nie zajmuje dużo RAM) i oczywiście utratą postaci. A ludzie używają tego systemu do pracy :-)

AB: Opowiedz więcej o swoich projektach. Który zabiera ci najwięcej czasu, jakie wiążesz z nimi plany i nadzieje?

JP: Tych projektów wcale nie jest tak dużo.

Emulatorem Atari800 zająłem się dlatego, że chciałem pograć w M.U.L.E. (BTW jedna z najlepszych gier ekonomicznych wszechczasów) na dwie osoby, a wersja svgalib nie obsługiwała dwóch urządzeń wejściowych. Zajrzałem więc do kodu, dodałem obsługę drugiego joysticka, pograliśmy w M.U.L.E. a ja wysłałem patch do autorów. Potem przestało mi się podobać svgalib (chyba po zmianie karty graficznej z S3 Virge na Voodoo3) i próbowałem korzystać z wersji dla X11, ale była tak nieprzyjemna w używaniu (emulacja joysticka myszką), że postanowiłem na podstawie wersji svgalib napisać wersję dla SDL. Zajęło mi to dosłownie 3 wieczory i od tamtej pory jedynie poprawiam zgłaszane błędy lub dopisuję drobne rzeczy. Port SDL jest najprawdopodobniej najbardziej popularnym (ponieważ działa wszędzie, poza DOSem), ale trudno powiedzieć, bym wiązał z tym projektem jakieś nadzieje – emulator działa, nowe programy na Atari raczej już nie powstaną (poza demosceną), trzeba się cieszyć tym, co jest.

Gra Escape of the Unicorn to właściwie projekt mojej dziewczyny. Według większości ludzi tworzenie tego rodzaju programu to bardzo niepoważne zajęcie – w końcu steruje się tam rózowym jednorożcem (a więc gra jest dla dzieci) a w dodatku grafika nie jest 3D (a więc nie ma sensu w to grać). Ale napisanie w pełni działającej gry komputerowej jest czymś znacznie ambitniejszym od aplikacji „dla księgowej” czy serwisu WWW. Nie wystarczy postępować zgodnie z podręcznikiem – potrzebna jest kreatywność, trzeba eksperymentować i składać małe rzeczy w działającą całość. Jeśli ktoś czytał książkę Linusa (polska wersja jest fatalnie przetłumaczona), to zapewne wie, że próbował on pisać gry. Niestety wielkich sukcesów nie osiągnął, więc przerzucił się na systemy operacyjne ;-)

To co mnie najbardziej interesuje to stworzenie kompletnego engine pozwalającego na napisanie działającej gry w kilku tysiącach linii kodu. Próbowałem kiedyś stworzyć coś w rodzaju klonu gry Stunts działającego w OpenGL, wydawało się to bardzo łatwe – w końcu Stunts zajmuje 1MB i działa na komputerze z procesorem 286, a ja miałem doświadczenie z grafiką 3D (i to bez akceleracji). Szybko zorientowałem się, że nic z tego nie będzie – potrafiłem rysować gotowe sceny, ale w grze potrzebna jest pełna interaktywność – fizyka, zdarzenia, kolizje – i w miarę sensowna sztuczna inteligencja. W dodatku mimo wykorzystania OpenGL rysowanie było dosyć wolne – musiałem nauczyć się jak to zoptymalizować. To, co wydawało się zajęciem na kilka tygodni, zajęło tak naprawdę kilka lat nauki.

Obecnie wydaje mi się, że mam już wystarczającą wiedzę, by stworzyć w miarę kompletny engine dla prostych gier 3D. Powoli piszę decoptera. Gdy kiedyś będzie grywalny, to wydzielę z niego engine i spróbuję rozpocząć oparte na nim kolejne projekty – choćby symulator pojazdu, statku kosmicznego czy łodzi podwodnej. Pełnym sukcesem będzie jeśli kilku początkujących programistów będzie w stanie napisać swoje gry oparte na moim engine. Porażki sobie nie wyobrażam – nad projektem mogę spędzać tyle czasu, ile chcę (nie goni mnie żaden deadline) i nie muszę z nikim uzgadniać co w nim umieścić – to wielki komfort.

AB: Jak ma się sprawa z petycją o emisję „The Code Linux” w polskiej telewizji, której byłeś inicjatorem?

JP: Źle. Pomysł rzuciłem na grupie dyskusyjnej i – niestety – znalazła się osoba, która stworzyła stronę WWW i skrypt zbierający podpisy. Niestety, bo było to zorganizowane bardzo źle (m.in. podpisy były zbierane in blanco). Sprawą interesowałem się ok. 2 tygodni. Zostawiłem to, ponieważ bardzo trudno było znaleźć ludzi, którzy naprawdę by się tym zainteresowali. Trzeba bardzo uważać z kim się współpracuje, bo przez złą organizację może upaść cały projekt.

AB: Środowisko otwartego oprogramowania jest zdominowane przez programistów. Czy twoim zdaniem przepaść jeśli chodzi o oprawę graficzną i muzyczną pomiędzy grami komercyjnymi a Open Source kiedykolwiek zostanie zmniejszona (vide Warcraft vs FreeCraft)?

JP: Według mnie jest bardzo trudno zdefiniować co to właściwie jest „środowisko wolnego oprogramowania”. Jeśli chodzi o ludzi tworzących oprogramowanie, to nic dziwnego, że są programistami.

Zanim zainteresowałem się Linuksem bawiłem się na demoscenie – było to środowisko bardzo podobne do „społeczności Free Software”, ponieważ nie liczyły się tam produkty komercyjne, lecz pokazywanie swoich dzieł innym. Na demoscenie było mnóstwo artystów. W chwili obecnej zapytany o duży fragment społeczności FS – wskazałbym użytkowników ircowej sieci FreeNode – a tam również są ludzie zajmujący się grafiką 2D i 3D.

Jakość grafiki i obiektów w grach domowej roboty nie wynika z braku umiejętności artystów, lecz z tego, że nie chcą oni pracować za darmo. Stawiam tezę, że za jakiś czas (miesiące, do kilku lat) pojawią się ludzie, którzy zaoferują od kilkuset do kilku tysięcy dolarów za stworzenie „artu” do otwartych gier. Jak do tej pory słyszałem tylko o dwóch tego rodzaju pomysłach: jeden z amerykańskich developerów eounicorn chciał przeznaczyć $1000 na zatrudnienie artystów (zrezygnowaliśmy z tego, z powodu braku czasu na dokończenie engine), oraz LGP ma zamiar (nie wiem kiedy) zasponsorować jeden lub dwa istniejące projekty Open Source.

Jeśli natomiast chodzi o rzeczy już istniejące – proponuję obejrzeć Cube, Pingusa i projekty oparte na Crystal Space.

AB: Co możesz zdradzić o swojej pracy dla Angry Pixels? Co to za firma, jaki ma cel i plany. Czego nie możesz zdradzić? :)

JP: Angry Pixels to firma stworzona przez LGP. Programiści zostali wybrani drogą konkursu. Jeśli dobrze pamiętam 5 (obecnie 4,5) jest z USA, 2 z Wielkiej Brytanii, jeden z Portugalii, jeden z Hiszpanii no i ja jestem z Polski. Mamy napisać grę komputerową (będzie działać przynajmniej pod Linuksem, Win32 i Makiem) i zarobić dzięki niej tyle pieniędzy, by sfinansować drugi projekt (czyli wynająć studio filmowe, profesjonalnych aktorów i modelki z Europy Wschodniej ;-). 90% akcji firmy zostanie rozdzielone między nas (nie tylko koderów, ale też artystów), 10% zostanie w rękach LGP.

Projekt ten jest dosyć ryzykowny. Mamy obowiązek pracować za darmo przez 10h tygodniowo. Z różnych powodów gra może nie powstać. Nawet jeśli powstanie, to LGP może jej nie wydać. Nawet jeśli wyda, to gra może się źle sprzedawać.

Jednak z mojego punktu widzenia jest to praktycznie jedyna szansa, by w pełni wykorzystać swoje zainteresowania i umiejętności (programowanie, grafika 3D, sztuczna inteligencja…) w komercyjnej pracy. Widziałem kilka polskich gier komputerowych i nie bardzo rozumiem co kierowało ich autorami, ani ludźmi finansującymi ich projekty. Szkoda, że tak się dzieje, bo na początku lat 90 polscy programiści byli w czołówce światowej w tworzeniu gier na małe Atari.

AB: Czy na grach dla Linuksa, lub na portowaniu gier na ten system, można zarobić (nawiązując do upadku Loki Games)?

JP: Nie uważam, by sprzedawanie portów gier miało wielki sens. Programy powinne być od razu pisane pod wiele platform. W środowisku związanym z icculus.org bardzo nielubianym programem jest WineX. Ja nie widzę nic złego w korzystaniu z tego nie-emulatora (za zaprzeczenie, że WineX jest emulatorem, dostałem już ignore od paru osób :) do odpalania gier. Przy okazji warto też wspomnieć, że geneza powstania WineX jest podręcznikowym przykładem wyższości licencji GPL-like nad BSD-like – czego krytycy WineX nie chcą otwarcie przyznać.

O tym, czy na pisaniu gier pod Linuksa można zarobić prawdziwe pieniądze, dowiemy się najwcześniej za rok. Chyba, że projekt rozleci się wcześniej.

AB: Jak oceniasz otwarte biblioteki dla programistów gier? Czy są już porównywalne jakością z, dajmy na to, DirectX? Jakie są miedzy nimi różnice i jakie problemy?

JP: Moje doświadczenie programistyczne to platformy: 8-bitowe Atari, DOS i Linux. Za wyjątkiem projektów szkolnych nie napisałem nigdy żadnego poważniejszego programu działającego wyłącznie pod Windows – dlatego też nie wiem nic o DirectX.

Alternatywą dla Direct3D jest biblioteka OpenGL. Jest powiedzenie, że jedynym powodem dalszej obecności OpenGL na PC jest John Carmack. Można traktować to mniej lub bardziej poważnie, faktem jest jednak, że gdyby Carmack zniknął ze sceny, to Microsoft opanowałby w prawie 100% kolejny rynek – a wiadomo do czego prowadzi brak konkurencji (jeśli ktoś ma wątpliwości, czy MS traktuje poważnie gry komputerowe, to niech popatrzy ile pieniędzy wpompowano w konsolę Xbox).

OpenGL jest standardowo dostępne pod Linuksem – jest to biblioteka /usr/lib/libGL.so i pliki nagłówkowe w /usr/include/GL. Problemem jest implementacja. Producenci kart graficznych (m.in nVidia i ATI) dostarczają swoje własne sterowniki pod Linuksa. Są to sterowniki zamknięte, a ponieważ ich częścią jest moduł jądra, to jest to dla mnie wystarczający powód, by ich unikać. Alternatywą jest projekt Direct Rendering Infrastructure, którego sterowniki dostarczane są wraz z kolejnymi wydaniami XFree86. Między innymi z powodu niedostępności dokumentacji, sterowniki DRI są wolniejsze i nie obsługują wszystkich modeli kart (przede wszystkim nVidii i Radeonów r300).

Bibliotek do pisania gier było zawsze dużo, przetrwały najlepsze. Ja korzystam z SDL, ale popularne też są ClanLib i biblioteka Steve Bakera – plib. Poszczególne biblioteki nie spełniają dokładnie tych samych funkcji (np. czyste SDL nie potrafi ani wczytywać obrazków, ani odgrywać muzyki, ani nie zawiera żadnego języka skryptowego), dlatego trudno jest je ze sobą porównywać. Na pewno nie można narzekać na brak dostępnych funkcji – istnieje np. bardzo dobry engine fizyczny ODE, język skryptowy LUA (nie wspominając o Pythonie), czy cały engine 3D – Crystal Space.

Poza bibliotekami ważne są też programy użytkowe. O ile do stworzenia kodu wystarczy vim i gcc, to artyści potrzebują czegoś więcej. Z grafiką 2D sprawa jest prosta – Gimp ma naprawdę potężne możliwości. Jeśli chodzi o komponowanie muzyki, to zawsze interesowały mnie wyłącznie trackery (a nie np. MIDI) – pod Linuksem są dwa dobre programy tego rodzaju – SoundTracker (interfejsem przypominający FastTrackera) i CheeseTracker (z bardziej lubianym przeze mnie interfejsem Scream/ImpulseTrackera).

Najciekawszym zagadnieniem jest jednak modelowanie 3D. Gdyby zabrakło Gimpa, to nadal można byłoby rysować w jednym z kilkudziesięciu (kilkuset?) programów. Bez trackerów nadal można skomponować muzykę na domowej gitarze i zgrać mp3/ogg. Ale obiekty 3D w czymś zrobić trzeba!

O ile wiem najpopularniejszymi obecnie modelerami są 3D Studio (teraz już Max), Lightwave i Maya. Z tej trójki tylko Maya jest w wersji pod Linuksa. Kosztuje dwa tysiące dolarów.

Wiele osób po prostu korzysta z pirackich wersji, jednak w poważnych firmach (przynajmniej brytyjskich ;-), tak się nie robi. Udało mi się przekonać wszystkich do użycia Blendera, dzięki czemu zaoszczędziliśmy przynajmniej $6000 na licencjach Mayi.

Samym Blenderem interesuję sie od kilku lat, ale raczej hobbystycznie (nigdy nie zajmowałem się prawdziwym modelowaniem 3D). Dzięki wykupieniu kodu źródłowego (społeczność Free Software zapłaciła ponad 100 tysięcy Euro!) mogę wreszcie spróbować poprawić kilka błędów w funkcjach renderujących grafikę oraz brać udział w tworzeniu pythonowego API.

AB: Współpracujesz z LinuxNews. Jak oceniasz działalności polskich serwisów informacyjnych o wolnym oprogramowaniu?

JP: Nigdy w żaden sposób nie współpracowałem z LN. Znam dwa polskie serwisy informacyjne o FS – LinuxNews i 7thguard. Moim zdaniem 7thguard ma bardzo zły interfejs (nie dość, że niewygodny, to jeszcze nieczytelny), więc znacznie częściej zaglądam na LN – i tam też wysyłam newsy.

Kiedyś LinuxNews był dosyć nudny, jednak od pewnego czasu się to zmieniło – serwis czyta się bardzo przyjemnie i można dowiedzieć się ciekawych rzeczy. O ile się orientuję 7thguard przedstawia bardziej „wolnościowe” tematy (np. czytałem tam chyba o wojnie w Iraku) a w komentarzach można poczytać ciekawych ludzi (np. AS), liczę więc na to, że kiedyś zmienicie wygląd serwisu na normalny ;-)

Niewiele wiem o ludziach związanych z Wolnym Oprogramowaniem w Polsce. Nie jeżdżę na Pingwiniaria, nie jestem członkiem PLUG, wypisałem się z listy dyskusyjnej RWO, na grupach pcol* staram się jedynie pomagać [1] newbies, nie używam żadnych komunikatorów poza ircem, a na ircu rzadko wchodzę na ircnet. Od roku 1999 bardzo intensywnie współpracowałem z magazynem Linux+, w osatnim półroczu jednak to zaniedbałem (czas!). Obecnie współpracuję z jedną warszawską firmą wykorzystującą technologie Open Source.

Na codzień przeglądam raczej serwisy ogólnoświatowe (Slashdot, Linux Gametome, coraz rzadziej Freshmeat). Bardzo często wiadomości wędrują np. ze Slashdota do LN, więc trudno mówić o dużych różnicach pomiędzy tymi serwisami – komentarze też są zazwyczaj podobne (chociaż w Polsce jest ich mniej, a więc i poziom wyższy) – najwięcej komentarzy jest zazwyczaj w sprawach najmniej istotnych (Microsoft, KDE, GNOME).

[1] bez złośliwych komentarzy proszę ;-)

Archiwalny news dodany przez użytkownika: alpha.
Kliknij tutaj by zobaczyć archiwalne komentarze.

Oznaczone jako → 
Share →