[PL] Xbox 360, Bioshock, nieprzespane noce i multi-core ready?


Wróciłem do kraju, cierpię katuszę w związku z podwójnym przestawieniem czasu (raz, że u nas godzinę szlag trafił to jeszcze w tym okresie na parę dni musiałem polecieć nad Pacyfik).

Ciekawie jest jak człowiek się obudzi o północy i do 8 rano zastanawia co ze sobą zrobić. Ja odkurzyłem jedną z gier na Xbox'a, której nie wypakowałem wcześniej jeszcze z pudełka - czyli Bioshock.

image {tak.. to Big Daddy}

Gra jest mega-uber-fajna zarówno fabularnie jak i graficznie. W przerwie między jednym Big Daddym a drugim zajrzałem jeszcze z nudów na sieć aby sobie trochę poczytać o taktyce walki z tym bydlęciem. W między czasie zajrzałem też na wikipedię i zaintrygował mnie jeden akapit opisu gry, opatrzony nazwą Sumultaneous threading: http://en.wikipedia.org/wiki/BioShock#Simultaneous_threading

Takie rzeczy od razu wyłapuję, bo odkąd gościnnie mogłem uczestniczyć w konferencji Intela na temat programowania pod wiele-rdzeni uważnie śledzę wszelkie praktyczne wykorzystania wielo-rdzeniowości bo stronie software'owej.

Bioshock w przeciwieństwie, do niektórych tytułów kapitalnie synchronizuje wiele wątków, które tam działają. Nie widziałem tam ani żadnych przeskoków z doczytywaniem tekstur, które potem się doklejały do renderowanego obrazu gdy już były doczytane (vide Mass Effect).

Nie widziałem żadnych pojawiających się nagle obiektów gdy wątek zarządzający geometrią nagle sobie przypomniał, żę parę z nich pojawiło się w zasięgu kamery (Oblivion).

Nie ma głupich przydługawych loadingów (vide. nasz rodzimy Wiedźmin, podobno przed patchem, nie testowałem, ale zewsząd słyszę, że jest o niebo lepiej).

Wikipedia powołując się na forum znanej w branży "The Looking Glass" cytuje Chrisa Kline'a - głównego programistę Bioshock. Chris przyznał się, że Bioshock jest mocno wielowątkową aplikacją mająca odseparowane wątki na:
- aktualizację interfejsu użytkownika (1 wątek)
- aktualizację wszelkich symulacji w grze (1 wątek)
- rendering świata 3d (1 wątek)
- fizyka (3 wątki, przy okazji gra wykorzystuje rozbudowany silnik do fizyki Havoc)
- audio (2 wątki, jeden na aktualizację stanów a drugi na przetwarzanie)
- streaming tekstur (1 wątek)
- streaming plików (1 wątek)

Ohohoho.. lekką ręką 10 wątków. Ja mam Xbox'a, na którym jakby ta gra nie chodziła by w ramkę, to bym po prostu czekał na następną nową generację, aby ją zobaczyć jak należy.
Na PC jednak estymuję, że bez mocnej wielordzeniowej maszyny to nie podchodź (abstrahując od niuansów karty DX9/DX10).

Cóż takie czasy, które trzeba zaakceptować jeśli chcemy widzieć takie efekty audio wizualne jakie nam Bioshock zaserwował. Inna sprawa przy świadomości jak bardzo wielowątkowy jest Bioshock i mając świadomość jak fantastycznie działa jako program, muszę stwierdzić, że chyba jako programiści nauczyliśmy się już całkiem nieźle wykorzystywać niuanse programowania rownoległego.

W sumie sam głównie dlatego w katuszach wróciłem prywatnie do zabaw z C++ i wielowątkowością na poziomie #pragm OpenMP, dlatego aby sprawdzić co nam daje DX10 i mocne procki jakie mamy nawet w biznesowych laptopach.
W komercyjnym świecie takie tytuły jak Bioshock właśnie pokazują nie tylko, że w świecie rozrywki mogą być grą roku, ale i w świecie programistów mogą być marzeniem typu "ja też chcę zaprogramować TAAAKĄĄĄĄ wodę" 🙂

Tutaj akurat mam wiarę, że społeczność programistyczna zrzeszona wokół tzw. demosceny da radę. Najnowsze dema z party w Niemczech (Breakpoint 2008) pokazują, że zarówno czołówka świadowa (ASD), jak i rodzime ekipy (Bonzaj i Plastic) umieją kodować!

Comments (3)

  1. yarpen says:

    Te ich 10 watkow jest mocno naciagane. Zarowno Havok jak i kazda biblioteka do dzwieku (Miles itd) dadza sie bedz problemu puscic na osobnych watkach i nie trzeba sie specjalnie spinac. Ladowanie tekstur w tle to wlasciwie normalka i malo kto tego nie ma. Wrazenie robi glownie ten rendering na osobnym watku.

  2. Na mnie wrażenie robi synchronizacja.

    Czy potrzeba tam jest 10 wątków czy nie to osobna sprawa. Synchronizacja wszystkiego tak abym miał benefit z wielu rdzeni a nie glitche, co widać w wielu innych aplikacjach to wg. mnie prawdziwe wyzwanie aplikacji "multi-core ready"

    Chodzi mi właśnie głównie o te wątki gdzie zasoby są jednak krytycznie współdzielone (Rendering + streaming zasobów)

  3. No tak.. teraz się obudziłem 😉 C2C już było.A ja wtedy cały dzień słodko spałem wracając do naszej strefy

Skip to main content