nVidia i Valve prezentują raport przenoszenia Source na Linuksa

nVidia i Valve prezentują raport przenoszenia Source na Linuksa

przez -
59 433
nVidia
nVidia i Valve opublikowały raport, w którym prezentują dotychczasowe doświadczenie w kwestii przenoszenia silnika gier Source Engine na systemy Linux. Warto dodać, że cały opis dotyczy także innych gier, których deweloperzy chcieliby mieć wersję na ten system. Jednym z głównych powodów, dla który warto portować gry na Linuksa jest otwarta specyfikacja, zarówno systemu, jak i OpenGL i niektórych sterowników.

Jako główne narzędzie jest polecana biblioteka SDL (Simple Direct Layer). Z problemów wymieniane są: kiepskie wsparcie wielu monitorów, rozróżnianie semantyki małych i wielkich liter (case sensitive), błędy w tłumaczeniach, inna obsługa wejścia myszy i klawiatury oraz różnice w obsłudze czcionek. Z narzędzi do debuggowania rekomendowane są: perf, tune, Telemetry, nVidia Nsight, PerfStudio, gDEBugger, CodeXL, i ApiTrace. Prócz tego dodano wiele przykładów dla osób, które mają pierwszy raz styczność z programowaniem pod Linuksem.

  • Roomcays

    To się nazywa podejście!
    Dzielenie się swoją wiedzą tak, jak św. Ryszard przykazał!

    • o_O

      św. Ryszard = Richard M. Stallman ? :P

    • Roomcays

      Zgadnięte!

    • pijaczek

      Akurat ryszek ma w dupie dzielenie się wiedzą, która w branży programowania grafiki jest dzielona od bardzo dawna (na stronach Nvidii masz darmowe książki, twórcy silników graficznych jak CryTek wydają papierki z dokumentacją nowych efektów dla innych itp.). Ryszek ma to głęboko, że opisują Ci jak coś zrobić – według niego oni powinni to zrobić za Ciebie i oddać Ci gotowy kod (nie chce wędki, chce rybę).

    • Pan Łukasz

      Tak ta NVIDIA dzieli się wiedzą, że jasna cholera nie wiadomo, jak działają ich gówniane karty graficzne. Tak programistów uczy wielu rzeczy ta NVIDIA, że trzeba używać renouveau, żeby pisać sterownik do ich kart. Chyba kupię sobie wazeliny, żeby zrobić dobrze NVIDII z wdzięczności. Prosimy o wybuch ku czci NVIDII !!!!!!!!!

    • Pan Łukasz

      Tak NVIDIO! Tak bardzo cię nie nienawidzę, że to nieprawda, że następna moja karta graficzna nie będzie twojej produkcji! To nieprawda, że kupię kartę Intel!

    • Rudyf

      Kup sobie najpierw jakieś dobre prochy, bo widzę że twoja sytuacja emocjonalna jest beznadziejna :/

    • Pan Łukasz

      Beznadziejna raczej staje się sytuacja producenta, gdy rośnie ilość wściekłych na niego klientów.

    • pijaczek

      Jeśli Ci klienci kupują GPU nie dla wydajności, dobrego działania, a dla tego, żeby były otwarte sterowniki to zupełnie ta sytuacja nie obchodzi producenta, który celuje w inny target niż w osoby "dajcie mi kod sterownika".

    • Roomcays

      W moich oczach nVidia to najlepszy wybór spośród dostępnych. Miałem Radeona do niedawna i wymieniłem, gdy dowiedziałem się, że ludzie z Valve i nVidia współpracują, żeby umożliwić uruchamianie zacnych tytułów na Linuksie.
      A intel spoko… do serwera.

  • jusko

    " Z problemów wymieniane są: kiepskie wsparcie wielu monitorów, rozróżnianie semantyki małych i wielkich liter (case sensitive), błędy w tłumaczeniach, inna obsługa wejścia myszy i klawiatury oraz różnice w obsłudze czcionek."

    Nie znam się na tej kwestii jakoś szczególnie, ale jak dla mnie na chłopski rozum, to czuję tu coś w stylu "problemem jest to, że musimy robić to inaczej jak pod Windows".

    • No akurat monitory to faktycznie są gorzej wspierane pod Linuksem, aniżeli w Windows. Tak samo SLI o czym pisaliśmy w naszym artykule. Co do wejścia klawiatury, to w niektórych grach nie działa Alt+Tab i jest to problematyczne :/ Do tego u mnie się zdarza, że sygnał z klawiatury ginie przy ciągłym naciskaniu jednego klawisza.

    • jusko

      Z monitorami się zgodzę, ostatnio w pracy siadł w systemie programiście drugi monitor, ale może to Ubuntu :-)

      Z Alt+Tab się zgodę – strasznie czasem wkurza brak. Da się żyć bez tego, ale czasem miłoby po prostu grę zminimalizować. Sprzęt pod Linuksem to temat rzeka – da się żyć tak jak jest, lec zgodzę się, że mogłoby być lepiej.

      Semantyka, inna obsługa wejść i czcionki – tu właśnie dopatrywałbym się wspomnianego "eeeech…czemu tu nie ma jak na Windows".

    • Damian

      Programista i Ubuntu, dobre :D

    • jusko

      A to nie da się uruchomić na Ubuntu żadnego IDE? Idziesz do pracy, dostajesz na roboczej maszynie Windows. Mam się śmiać, jak to będzie Vista zamiast 7? Nie, system to system. Ubuntu to Ubuntu – dystrybucja i tyle. Osobiście piszę z laptopa z Fedorą i Fedory tylko używam, odpaloną mam właśnie Aptanę – czy to już jest śmieszne, czy jeszcze nie, bo może Fedora to "poważne" distro w porównaniu z Ubuntu?

    • Damian

      Programista kojarzy mi się z osobą zaradną a nie z taką która używa największego kombajnu wczytującego się 10 minut :-)

      Wydaje mi się, taka osoba powinna umieć postawić Fedorę albo Debiana na tyle solidnie aby ten system służył na lata :-)

    • jusko

      Praca w firmie to nie demokracja – dostajesz narzędzia pracy i musisz z nich korzystać, czy Ci się to podoba czy nie. W poprzedniej firmie dostałem służbowego laptopa z Vistą, która muliła koszmarnie, no ale była Vista i koniec. Podobnie jest tutaj – zasada jest prosta, albo komuś to pasuje, albo…

      Znam programistów, którzy ni w ząb nie znają Linuksa – niektórzy pisali całe życie na Windows i tyle, nic w tym złego. I najlepiej takiemu właśnie dać Ubuntu LTS.

    • 123qwe

      Jest tylko jeden problem, w wiekszosci korporacji nikt ci nie pozwoli zainstalowac nic innego poza firmowym softwarem.. jest to naruszenie "zasad bezpieczenstwa". Sam klne obecnie na windowsa 7 ale musze na nim pracowac bo jesli bym zainstalowal cokolwiek innego to wylatuje z roboty. Takze to nie kwestia zaradnosci.. poprostu odgornie masz narzucone narzedzia z jakich masz korzystac.

    • MikołajS

      "Programista kojarzy mi się z osobą zaradną a nie z taką która używa największego kombajnu wczytującego się 10 minut :-)"
      Jak masz słaby sprzęt to wczytuje się 10 minut. Weź dysk SDD to będzie kilkanaście sekund. Z dobrym IDE programista jest bardziej produktywny, nie traci czasu na poszukiwanie nazwy funkcji, a refaktoring zajmuje mu chwilę.

      "Wydaje mi się, taka osoba powinna umieć postawić Fedorę albo Debiana na tyle solidnie aby ten system służył na lata :-) "
      Programista to w ogóle powinien ciągle programować w kodzie maszynowym, bez użycia jakiegokolwiek edytora. System operacyjny jest mu do niczego nie potrzebny, sam sobie pisze w miarę potrzeby :)
      A już na pewno Fedora to nie jest system, który będzie służył na lata. Pomyśl jaki jest sens aby programista marnował czas na stawianie i konfigurowanie systemu. Ona ma pisać kod i za to mu płacą. W tych firmach gdzie używa się Linuksa na desktopach programistów najczęściej stawia się Ubuntu.

    • Draqun

      Aż na usta samo ciśnie się "Amen"

    • pijaczek

      Dlatego właśnie Fedora ma w sobie największy kombajn Eclipse (a dokładniej to "Fedora Eclipse") w którym bardzo dużo dla rozwoju robi RedHat.

      Ot Damian ma trochę spaczone spojrzenie na temat – uważa, że programista to osoba zaszyta w garażu, która nie wychodzi z Vi. A w praktyce im lepszy programista tym większych kombajnów używa, bo po prostu pisze się szybciej – dokumentacje sam Ci zrobi z kodu, zarządzanie projektem, błędami itp jest szybsze ze zintegrowanego narzędzia, refractoring jest dużo przyjemniejszy, debuggowanie (nie tylko działania programu, ale też pamięci (Valgrind) czy GPU). Ofc każdy nawet początkujący programista (o ile wie co to za narzędzia i wie że ich bardzo potrzebuje, bo w sieci jest wiele uberprogramistów którzy nie wiedzą co to debugger albo wiedzą i uważają, że im niepotrzebny (jak się pisze Hello world to może i faktycznie)) może zastąpić zintegrowane środowisko programistyczne, środowiskiem rozproszonym (15 programów do różnych zadań, zamiast jednego zintegrowanego), ale jest to po prostu niewygodne i czasochłonne – a na to poważny programista się nie zgadza

    • Damian

      Osobiście nie lubię zintegrowanego IDE i rzadziej używam. Najczęściej piszę na własnym frameworku z wbudowanym debuggerem i automatyczną kompilacją języków gettext ;-)

      Framework w PHP łapie błędy i wyjątki, wyświetla mi maksimum informacji zarówno na stronie jak i w debuggerze napisanym w Pythonie.

      Tłumaczenia gettekstowe też się ładnie kompilują same zaraz po kliknięciu "Zapisz" w poedit albo jakimś innym edytorze tekstowym używanym do edycji tłumaczenia :>

    • pijaczek

      Dobrze rozumiem, że piszesz małe projekciki samodzielnie, bez większego planowania, dokumentacji kodu/błędów… – spoko, ale pamiętaj, że nie korzystając z narzędzi ułatwiających życie nie robi Cię lepszym programistą (tak każdy potrafi), a jedynie programistą mniej wydajnym, który marnuje swój czas.

    • Damian

      Jeśli większy website można nazwać projekcikiem to dobrze.

      Możesz mieć rację bo w zasadzie hobbystycznie zawsze programowałem, a dopiero od niedawna staram się robić karierę :>

      Ale co jak co to planowanie i dokumentacja to podstawa! :)

      "ale pamiętaj, że nie korzystając z narzędzi ułatwiających życie nie robi Cię lepszym programistą (tak każdy potrafi)"

      Albo mi się wydaje albo troszkę sobie przeczysz :)

    • pijaczek

      Nie przeczę sobie – utrudniać sobie życie czy zajmować się wszystkim tylko nie tym czym powinieneś każdy potrafi – mniej osób potrafi użyć gotowych narzędzi i skupić się na tym co się robić powinno czyli programować wydajnie i skutecznie.

    • No case sensitive to akurat powinna być zaleta, a nie wada, ale niech się lepiej wypowiedzą osoby, które miały okazję pisać wieloplatformowe aplikacje. Warto się zagłębić w cały artykuł, bo naprawdę jest sporo ciekawych rzeczy :D

    • Damian

      Case Sensitive to akurat zaleta, precyzyjność. Tym się cechuje kod OpenSource'owy – jest najczęściej prosty i elegancki :)

      Jak się pisze wieloplatformowe aplikacje to Case Sensitive wcale nie jest problemem jeśli pisze się porządnej jakości kod.

    • MikołajS

      "Jak się pisze wieloplatformowe aplikacje to Case Sensitive wcale nie jest problemem jeśli pisze się porządnej jakości kod. "
      Problemy powinny być przy przenoszeniu kodu z Linuksa na Windows :)

    • pijaczek

      Nie do końca – jeśli plik masz z dużymi literami, a odwołujesz się do niego z kodu z małych liter to pod Windowsem działa, a pod Linuksem musisz wszystko sprawdzać – OFC jeśli pod Linuksem masz "Plik" i "plik" i odwołujesz się do nich z kodu, to Windows znowu oszaleje i trzeba być wyczulonym. Zawsze portując z jednego systemu na drugi są różnice, które sprawić mogą problemy – to jeden z nich (w jedną i drugą stronę może być to problem).

    • Damian

      Jeśli chodzi o Case Sensitive to przenosić aplikacje jest najlepiej z Linuksa bo w Windowsie no wiadomo na logikę każdy pisze sobie nazwy plików jak chce a pod Uniksowymi systemami musi być precyzyjnie określona nazwa przez co powinna działać wszędzie.

    • pijaczek

      Tak, bo mało kto pod linuksem nazywa pliki tak samo tylko z różnymi wielkościami znaków więc jest bezpieczniej… ale to w jaką stronę jest bezpieczniej nie ma tu zastosowania, bo mowa o przenoszeniu gier które już są na Windowsie na Linuksa i problem się pojawia (nie jako wada Linuksa, ale jako różnica, która powoduje problem).

    • o_O

      To ciekawe. Jakoś mi zawsze wiele monitorów działało i ito w różnych konfiguracjach. No ale sterownik nVidii ma od tego wyklikiwalny konfigurator, a ty pewnie używałeś gównianych kart ATI/AMD i się dziwisz, że nie działa.

      Co do klawiatury to jest dokładnie odwrotnie niż piszesz. Windows dławi się od kilku przycisków jednocześnie, przestaje w ogóle czytać klawiaturę i popiskuje z głośniczka. Na Linuksie nie dość, że bez problemu obsługuje z 10 klawiszy na raz, to jeszcze przy naciśnięciu zbyt wielu jedynie ignoruje kolejne, cały czas pamiętając poprzednio naciśnięte. Takie zachowanie jest oczywiście niezbędne w grach i pokazuje, jak bardzo windows nie nadaje się jako platforma do gier.

    • veramird

      Nie wiem jak wygląda na ATI/AMD, ale przy nVdi gdy chce wyciągnąć kabel i zabrać laptopa:
      – windows przerzuca wszystko na monitor od laptopa i tyle.
      – Linuks. nic. wtykam kabel by coś widzieć, zmieniam ustawienia by był tylko mały monitor, zastosuj, odłącz kabel.
      Potem wyłączam laptopa i włączam go później:
      – windows. po prostu odpala
      – Linuks. ehh, zapominałem, że trzeba było odpalić konfigurator z prawami roota i zapisać zmienioną konfigurację…
      Możliwe że to tylko u mnie tak się działo.
      Dużo lepiej to działało na otwartych sterach, ale kosztem wydajności.

    • o_O

      Linux nie zajmuje się oknami. Od tego jest menadżer okien. Polecam KWin z KDE, tam takie rzeczy działają out of the box.

    • Draqun

      Ja na swoim eMachines e720 nigdy nie miałem z tym problemu czy to środowisko GNOME/Unity czy KDE.

    • D3xt3r

      A ten znowu swoje wywody a ea konkurencji. Człowieczk mały skończ pomidorzyć!!!! A pszczy to ci mózgu.

    • wladca_kodu

      Sterwonik nVidii może ładnie działa z *jednym* dodatkowym monitorem, ale już przy *dwóch* zewnętrznych monitorach (poza laptopowym) gubi się kompletnie. I najlepsze jest to, że nie wiedzieć czemu, zawsze wykrywa mały monitor podpięty na VGA jako główny (zgadza się – jest out-of-the-box), a główny 30'' na DisplayPorcie pozostawia w stanie "disabled" i ręcznie trzeba przestawiać kofig. Straciłem parę godzin na skonfigurowanie tego a i tak nadal nie działa jak trzeba.

    • Kuba

      W niektórych? W prawie wszystkich nie działa Alt+Tab gdy jest gra w fullscreenie, nie wiem czego to jest przyczyną. Możliwe, że przestarzałego Xorga. Jak na razie działa tylko w produkcjach Valve.

    • o_O

      Powodem jest łapanie (grab) klawiatury i myszki przez takie gry. Więc tylko one mogą reagować na naciskane klawisze. Gry Valve zapewne to robią i się minimalizują.
      Ale akurat takie grabowanie klawiatury jest dobre. Kliknij sobie na windowsie przez przypadek klawisz Meta (ten z logo windows na klawiaturze) – system (!) minimalizuje grę i otwiera menu Start… kolejne nieporozumienie w windows jako platformie do gier.

    • Draqun

      Meta? Fani Windowsa nazywają go jako klawisz "Windows". Do tej pory był mi znany jako klawisz "Super" ale klawisz Meta to pierwsze słyszę.

    • o_O

      http://en.wikipedia.org/wiki/Space-cadet_keyboard
      Ale fakt, poprawniejszą nazwą jest Super. Meta to zaszłość z klawiatur Suna i teraz po prostu jest bindowana jako Super, ale, słusznie, nie jest nim.

  • Kaleson

    "Z problemów wymieniane są: […] case sensitive, inna obsługa wejścia myszy i klawiatury oraz różnice w obsłudze czcionek"

    Czyli jednym słowem jeśli coś jest inne od Windowsa to jest wadą. No kurde tego case sensitive im nie wybaczę. Jeśli chcą portować coś na inną platformę to muszą się liczyć z odmiennością i nie traktować jej jak wady :/ Większość gier piszą w C++. A tam case sensitive to normalka pod każdym systemem, więc jeśli dostają to samo w systemie plików to powinni się cieszyć, bo zyskują na spójności.

    • kwahoo

      Problem nie jest synonimem wady. tym samym Twój wywód jest bezcelowy.

    • Damian

      Punkt widzenia zależy od miejsca siedzenia. Dla gości z nVidii czy Valve problem może być synonimem wady.

    • pijaczek

      Przy portowaniu gier z Windowsa, to jest wada. Nie obiektywnie wada systemu, a wada w tym sensie, że wcześniej jakiś grafik nazwał teksturę plik.JPG i jak program zarządał plik.jpg to działało, a teraz trzeba wszystko sprawdzać i naprawiać. Więc podsumowując portując z 1 platform only (jakiejkolwiek – z Linuksa na Windowsa też znajdziesz podobne problemy) na inne platformy musisz pamiętać o występujących różnicach i problemach które stwarzają, aby wszystko działało. To nie jest powiedziane – linux jest zły bo rozróżnia duże od małych liter… jest powiedziane, że może być to potencjalnym problemem przy przepisywaniu z Windowsa, który działa tu inaczej – i tak jest nie ma co się obrażać – to tak jak przepisując programy napisane na procki BigEndian na LittleEndian czy odwrotnie problemem jest to, że trzeba zmieniać kolejność bitów, ale nie jest to w żadnym wypadku wada jednego, albo drugiego rozwiązania – jest to po prostu różnica, które sprawa problemy przy przepisywaniu z jednego rozwiązania na drugie.

    • o_O

      To oznacza, że ktoś skopał kod, jeśli używał różnych wielkości liter.
      Program uzależniony od systemu plików? Toż to świętokradztwo i głupota, a przede wszystkim po prostu amatorszczyzna.
      Windziani webmasterzy od IIS już nauczyli się, że poprawnie jest zwracać uwagę na wielkość liter w URL (a ci co się nie nauczyli to wymarli). Teraz czas na resztę amatorskich programistów od klikania w Visual Studio.

    • pijaczek

      Nie kod – kod jest zazwyczaj dobry, podobnie jak i bazy danych z zapisanymi adresami zasobów (zazwyczaj po prostu używają do wszystkiego małych liter i takie też są wymogi w nazwach plików). Problemem są zazwyczaj inne programy – wystarczy, że grafik zrobił edycję tekstury i ją nadpisał (niektóre programy graficzne mają w zwyczaju zapisywać rozszerzenia z dużych liter – dlatego przykład taki, a nie inny). Nikt z programistów nie wie, że plik zmienił nazwę, a grafik który może to zobaczyć jest niczego nieświadomy… w Windowsie wszystko dalej działa, więc nic się nie stało.

    • Kaleson

      Co do tego, szczególnego przypadku – mało prawdopodobne, a nawet niemożliwe. Przy tak dużych projektach, korzysta się z systemów kontroli wersji. Nawet jeśli artwork i kod miały by niezależne repozytoria, ktoś z zespołu przeglądając commity na pewno by to zauważył. A jeśli u nich w zespole nikt tego nie przegląda to mają zautomatyzowany skrypt który zapobiega takim przypadkom.

    • pijaczek

      Nikt nie przegląda repozytorium Artwork jeśli nie trzeba wrócić do poprzedniej wersji lub jeśli coś nie działa – nikt nie robi takich skryptów, bo nie ma to najmniejszego sensu pod Windowsem – działa w czasie tworzenia, a odpowiednie nazwy (małe litery) nadaje się dopiero automatycznie przy pakowaniu w VFS przy wydawaniu.

  • Anonymous

    Taka drobne pytanie:
    nie znam się za bardzo na programowaniu grafiki, ale jak rozumiem z tego raportu, render graficzny Source na Linuksa dalej jest napisany w D3D, tylko dodano wrapper na OGL? (strona 22)

    • Kaleson

      To ma jakieś większe znacznie, skoro nie znasz się na programowaniu grafiki?

    • Draqun

      @Kaleson
      Oczywiście, że ma. Pytanie jest po to aby rozwiązań niejasność, czy uzupełnić niewiedzę.

    • sprae

      Tak właśnie jest, bo taniej zrobić translator i go dobrze sprofilować, niż przepisać renderer i pewnie 3/4 silnika :-)

    • o_O

      A jak z wydajnością? Bo nie byłoby fajnie, gdyby przewagę Linuksa w FPSach jaką już na tym etapie z łatwością wypracowała nVidia, zjadł teraz translator DX->OpenGL i na koniec okazałoby się, że Linux jest "gorszy".

    • pijaczek

      Ta przewaga w FPS jest właśnie przez tą implementacje Dx9 w OpenGL. Narzut na tą translację jest niewielki (OpenGL ma dużo mniejszy narzut niż Dx9, przez co implementacja funkcji Dx9 w OpenGL mimo narzutu niewielkiego tej implementacji jest sumarycznie mniejsza niż Dx9 na Windowsie).

    • pijaczek

      Dokładniej stali przed wyborem – potrujemy jedną grę X czasu, portujemy 2gą grę Y czasu itp. lub robimy implementacje Dx9 w OpenGL i szybko portujemy N gier i dajemy innym narzędzie do portowania ich gier nawet jeśli nie używają naszego silnika. Koszt pierwszego to dużo pracy i może 2 gry przeportowane na rok, koszt drugiego to minimalny narzut (co jednak ma niewielkie znaczenie, bo narzut na DX9 w Windowsie jest większy, niż w linuksie w ich implementacji przez OpenGL, a dodatkowo można wykorzystać z możliwości nowoczesnych kart i jeszcze przyspieszyć względem Dx9 (podbijając wymagania, bo wymaga się dosyć nowoczesnych kart (nie przez wydajność, a przez możliwości (a te są konieczne, aby gry działały jak najszybciej na nowych kartach) – starsze nie mają wiele istotnych nowinek z nowych OpenGL))).

      Wybrali to co było możliwe do realizacji, czyli portowanie gier hurtowo.

    • Anonymous

      Czyli jak rozumiem, to co zrobiło Valve to użycie takiego Winelib ale tylko w odniesieniu do Direct3D?

    • pijaczek

      Tak – nie jest to nic nowego w oprogramowaniu – wykorzystując przykładowo Qt czy SDL_ttf korzystasz z ich API do czcionek, a one są tylko pośrednikiem pomiędzy programistą, a freetype2 – tak jest ze wszystkim i tu po prostu do Api dx9 zrobili backend do OpenGL – tak jak w Windowsie Firefox czy Chrome robią z WebGL tylko odwrotnie (OpenGL ES 2 przepuszczają przez ANGLE i wywołania się zmieniają na Dx9). Różnica z tym co robi Winelib (bo ten też ma implementacje dx9) to to, że robi to dobrze – czytaj głównym celem jest wydajność, a nie działanie ze starymi i złymi sterownikami (jak to jest przy wine i jego wydajność kuleje).

    • sprae

      Dodatkowo w Qt5 pod Windows działa Googlowe ANGLE, bo twórcy Qt wybrali sobie za standard OpenGL ES.