•  

    pokaż komentarz

    Pozostaje tylko podziwiać ludzi, którzy są biegli w najniższym poziomie programowania i bezpośredniej pracy na bitach ;) Ciężko jest to zrozumieć, a co dopiero wpaść na takie rozwiązanie.

    •  
      p..z

      +73

      pokaż komentarz

      @Mave: To jest oldschool... Ludzie w dzisiejszych czasach tego już nie umieją. Nasze komputery mają ogromną moc obliczeniową w porównaniu do tamtych no i praktycznie nieograniczone miejsce na dysku. To wszystko sprawia, że kod wcale nie musi być zoptymalizowany do granic możliwości - co mnie oczywiście bardzo martwi...

      Do dopełnienia tej wypowiedzi można by od razu wysunąć argument typu 'koszt'... "Przecież dzięki temu możemy cieszyć się znacznie bardziej rozbudowaną fabułą no i gra się dłużej a gry są tańsze." a tu nagle przychodzi argument "oh, wait..."

    •  

      pokaż komentarz

      @puaz: Umieją, umieją, komputery to nie tylko PCty służące do grania w najnowsze CoDy, są jeszcze specjalistyczne zastosowania oraz nietypowe jednostki, które też ktoś musi obsługiwać :) Myślę, że programista ogarniający assemblera i tym podobne oldschoolowe sprawy jest bardzo, bardzo ceniony na rynku.

    •  
      p..z

      +17

      pokaż komentarz

      @Mave: Masz rację, zbytnio się zapędziłem z tym "nie umieją", ale bardziej mi chodziło o manierę przy dzisiejszej produkcji gier... Poza tym muszą umieć bo latają w kosmos na układach o ograniczonej mocy obliczeniowej.

    •  

      pokaż komentarz

      @puaz: Oczywiście że umieją, ale optymalizacja to większe koszty produkcji i czasu. Kolejny element układanki to producenci sprzętu, którzy też chcą zarobić na coraz to nowszych prockach i kartach grafiki. Nikomu oprócz gracza, optymalizacja się nie opłaca.

    •  
      p..z

      0

      pokaż komentarz

      Oczywiście że umieją, ale optymalizacja to większe koszty produkcji i czasu.

      @saycool: No ja to rozumiem. Tylko czemu cena gier jest praktycznie niezmienna?

    •  
      M.....o

      +1

      pokaż komentarz

      @puaz: Gry cały czas w zastraszającym tempie (używam świadomie określenia), się rozwijają - nie ma co się martwić. Ja się martwię o ludzi, którzy z wyjściem każdej,kolejnej części jakiejś gry, zarzucają jej że jest za łatwa, za mało klimatyczna itp.

    •  

      pokaż komentarz

      @puaz: Skoro ktoś jest skłonny tyle płacić to po co obniżać sobie zysk?

    •  
      p..z

      0

      pokaż komentarz

      @Mosillo: Uważasz, że nie są? To by się kłóciło znowu z możliwością zarobienia na nich.

    •  
      n......n

      -1

      pokaż komentarz

      @saycool: chyba, że robisz MMO lub grę którą docelowo mają kupić miliony.

    •  
      p..z

      +2

      pokaż komentarz

      @saycool: No ta, i w tym momencie jesteśmy w ślepym zaułku... Przecież piractwo jest na wysokim poziomie to powinni obniżyć, ale nie obniżą bo piractwo... i tak to zaj$%$nia.

    •  

      pokaż komentarz

      @nevarion: Nie samym MMO człowiek żyje :)

    •  
      M.....o

      +4

      pokaż komentarz

      @puaz: Uważam, że gdyby zabrać ludziom gry dzisiejszej generacji i dać te starsze, to byłoby wielkie oburzenie. Nagle ci krzykacze wrzeszczący jakie to dzisiejsze gry są paskudne, łatwe i bez klimatu umilkliby. To tak samo jak z WorldOfWarcraft. Wszyscy się pluli po wejściu Lightking'a że jest do kitu i zepsuł grę, a potem jak Blizzard zaproponował powrót do Vanilli (oczywiście tak żartując), to wszystkim się nagle Lightking podobał. To samo tyczy się dodatku Cataclysm.

    •  

      pokaż komentarz

      Ludzie w dzisiejszych czasach tego już nie umieją.

      @puaz:
      Ja ogólnie jestem przerażony, tym co się dzieje. Nie robię w grach, ale czasem w firmie trzeba coś obliczyć nietypowo, wpaść na pomysł i to obliczyć.
      Praktycznie nikt z młodych pracowników po różnych uczelniach technicznych w kraju (raczej renomowane, państwowe) tego nie potrafi.
      Tzn. może by i potrafili .... gdyby to było jakies zadanie i ktoś by im powiedział zrób tak a tak.
      Ale wpaść na metody czy obliczyć swoim sposobem, byle by poznac wynik, to prawie nikt nie potrafi.
      I najlepsze jest to, że ja żadnym wielkim matematykiem nie jestem, nie lubiłem nigdy wzorów, po prostu wolałem swoje sposoby dochodzenia do wyników. Bywało tak, że nauczyciel czy wykładowca dyktował zadanie a ja po 20 sek podawałem wynik, gdy reszta zabierała się dopiero do liczenia. Potem proszony, bym zapisał metodę jak to zrobiłem, byłem odsyłany, że nie tak się to robi :D ale wynik dobry.

    •  
      b.....l

      +6

      pokaż komentarz

      nie tak się to robi :D ale wynik dobry.
      @text: To samo usłyszałem jak oblałem fizykę na pierwszym semestrze.

    •  

      pokaż komentarz

      @puaz: Że co? Niektóre problemy są tak złożone, że dzisiejsze najlepsze superkomputery, a nawet te z przyszłości bez optymalnego kodu nie są w stanie podołać obliczeniowo. Gdyby nie odpowiednie algorytmy to szybkość komputerów nie miałaby właściwie znaczenia. W końcu dla użytkownika to bez znaczenia czy coś się będzie liczyć zamiast 100 mln lat tylko 1 rok.

    •  
      m.........1

      -1

      pokaż komentarz

      @puaz: wraz z upływem czasu programiści stanowią coraz mniejszą część zespołów produkcyjnych. Teraz znacznie ważniejszą rolę odgrywa CzyDe Artists i kolesie od animacji ruchu.

    •  

      pokaż komentarz

      @text: miałem z tym problem w LO, bo wiele obliczeń wykonywałem w pamięci, nie zapisywałem tego na rozwianiu, tylko pisałem odpowiedzi, nauczycielka nie wierzyła, twierdziła, że ściągałem i, że oszukuję...

    •  
      m.........1

      +6

      pokaż komentarz

      @text: Wstyd się przyznać ale... Kilka lat temu pracowaliśmy nad grą strategiczną w przeglądarce, coś w ten deseń: http://www.gry-online.pl/S016.asp?ID=13752
      Po krótkim cwaniakowaniu z pokorą sięgnąłem po książki do algebry i analizy matematycznej z pierwszego roku studiów na polibudzie...

    •  

      pokaż komentarz

      @text:
      sorry, ale gorzkie żale...
      to że nikt z młodych pracowników po różnych uczelniach technicznych tego nie potrafi, to dlatego że pewnie pracujesz w jednej z wielu firm w których pierwszym kryterium zatrudniania jest pensja ubiegającego się o stanowisko, zawsze tak było i zawsze tak będzie, że jaka płaca taka praca, ci którym się chce, sobie mogą wybierać i to niekoniecznie te "może i nisko płatne, ale za to z dobrą atmosferą".... ;)

    •  

      pokaż komentarz

      @saycool: Wczoraj oglądałem jakiś program o marketingu, gdzie mówiono min. o tym, że dzisiaj inżynier musi pogodzić się z tym, że na rynek ma być wprowadzony nie produkt nie najlepszy technologicznie, lae taki który klient kupi (czyli taki który klientowi się najbardziej spodoba). Sam niestety spotakłem się z tym na samym początku pracy w branży bnudowlanej, gdzie od razu mówiono mi, że mam dać zamawiającemu nie to co będzie najlepszym rozwiązaniem tylko to co sobie zapisał w zamówieniu, a jak tego nie zapisał to ma to być najtanśze rozwiązanie. Czyli ma to być rozwiązanie zoptymalizowane pod względem kosztowym a nie technologicznym - całkowicie czego innego mnie uczono na studiach.

    •  

      pokaż komentarz

      @donek: czyli gry (branża rozrywkowa - przypominam) mają być tworzone charytatywnie lub po kosztach?

    •  

      pokaż komentarz

      Ups. W mojej wypowiedzi jest błąd i nie mogę go edytować. Oczywiście powinno być: "...na rynek ma być wprowadzony nie produkt najlepszy technologicznie..."

      @prusi: Nie znam się na branży związanej z grami. Mówię tutaj o tym jak jest w branży stricte inżynierskiej a tutaj niestety w dzisiejszych czasach liczą się głównie koszty a nie technologia - a potem jeździ się po dziurawych drogach oddanych przedwczoraj.

    •  

      pokaż komentarz

      @donek: ale to jest odpowiedzialność klienta, że nie wie czego chce. choć przyznam, że jeśli chodzi o budowlankę to troszkę inaczej wygląda. ale da się to zrobić: widzisz Kadafi, tyran, ale z głową na karku po przetargu dawał firmom, które go przegrały możliwość kontroli wykonującego i drogi ma bez dziur.
      w przypadku oprogramowania jest już całkiem inaczej: tylko 10% lub 20% (zależnie od danych) projektów informatycznych jest kończonych w terminie - reszta z opóźnieniami lub wcale, a wszystko dlatego, że w przypadku oprogramowania nie da się dobrze oszacować kosztów i potrzebnych zasobów - często problemy wychodzą w późnej fazie projektu, trzeba zatrudniać nowych ludzi itp. itd. stąd ryzyko nieukończenia projektu jest duże, dlatego nacisk kładzie się na pisanie przejrzyste, zgodne z paradygmatami, łatwe do wykrywania błędów, robienia modyfikacji czy rozwoju. optymalizacja jest priorytetem tylko w wąskim gronie oprogramowania specjalistycznego (jak np. silniki baz danych, gdzie zapytanie musi być szybko wykonane) lub gry właśnie (choć mniej). już pomijam fakt, że kod vq3 (z którym to wszystko porównujemy) jest do ogarnięcia (choć i tak z trudem) dla jednego człowieka - powodzenia jeśli ktoś chce sam ogarnąć choćby taki (już i tak mający parę lat) Source Engine.

  •  

    pokaż komentarz

    Puk, puk.
    -Kto tam?
    -Matematyka
    -Nie rozumiem...

  •  

    pokaż komentarz

    Około roku 2000 podobną, własną metodę iteracyjną opracowaliśmy (moja znikoma rola :) na potrzeby szybkiego obliczania pierwiastka na Amidze, użytego m.in. w tej scenie: https://www.youtube.com/watch?v=XoiHaZoV3XM#t=5m57s Intro działało na procesorze 68020 taktowanym 14Mhz, więc liczył się niemal każdy takt procesora w stosowanym algorytmie! Uświadomię tylko laikom, że renderując w czasie rzeczywistym taką grafikę trzeba rzutować z przestrzeni 3D na ekran 2D każdy element widocznego obiektu i tam się używa pierwiastka jak do obliczania długości przeciwprostokątnej z tw. Pitagorasa, znając pozostałe dwa krótsze boki przy kącie prostym. Jeśli robisz to dla każdego punktu, to zastosowanie przesunięcia bitowego w 2 taktach procka, zamiast operacji dzielenia (przez dwa) w kilkunastu, to już masz działanie kilka razy szybciej (niż konkurencja, która tego nie stosuje). Jeśli zamiast stosować z biblioteki funkcję pierwiastka liczonego w kilkudziesięciu taktach, zrobisz to własnym algorytmem jako trzy iteracje przesunięcia bitowego i dodawania/odejmowania, to masz w konsekwencji skok jakościowy ze slideshow 1-2 klatek na sekundę, do płynnej animacji co najmniej kilkunastu fps, więc było o co walczyć. W tamtych czasach robiło się inne tricki, jak np. zamiast liczyć w czasie rzeczywistym jakieś trudne, powtarzające się operacje, to przed rozpoczęciem dema/intra widz miał na ekranie pasek postępu "loading" a tak na prawdę już przeliczały się całe tablice dla zakresu możliwych wartości sinusów, czy innych pierwiastków i trzymane były w RAM-ie, a potem "na żywo" był tylko odczyt wyniku, zamiast powolnych obliczeń dla każdego piksela. Tak samo przed uruchomieniem generowane były sample użyte w muzyce. Całe demko zajmowało ostatecznie jako plik (.exe) 64kB, a sama muzyka w nim grająca ważyła by kilkanaście MB, lub więcej. Ku pokrzepieniu serc programistów powiem jeszcze, że koder przytoczonego tu intra jest dziś dyrektorem technicznym w prężnej firmie robiącej gry.

    •  

      pokaż komentarz

      @olin: I to jest prawdziwe cool story :-)

    •  

      pokaż komentarz

      @salad_fingers: Algorytm na obliczenie pierwiastka z liczby X wybranej z przykładowego przedziału od 10 do 100 wyglądałby tak:
      1. Pomnóż swoją liczbę X przez magiczne 0.135
      2. Do tego dodaj 7.4
      3. Podziel przez 2 i zapamiętaj wynik (to jest pierwsze przybliżenie)
      4. Podziel pierwiastkowany X przez liczbę uzyskaną w p.3
      5. Dodaj do tego liczbę z p.3
      6. Podziel przez 2 (to jest drugie przybliżenie)
      Tak obliczony pierwiastek wystarczył by do określenia współrzędnej piksela, a użyto do tego 1 mnożenie, 1 dzielenie, 2 dodawania i 2 przesunięcia bitowe (dzielenie przez dwa). Jeśli potrzeba dokładniej, to dochodzi kolejne powtórzenie, jeśli dla szerszego zakresu, to inne magiczna liczby w punkcie 1 i 2 :)

  •  

    pokaż komentarz

    Nie wiem o co biega ale rozumiem że kiedyś zatrudniało się arcymistrzów kodu którzy maksymalnie go optymalizowali. Teraz zatrudnia się kogokolwiek kto ma jakieś pojęcie, a mało zoptymalizowane obliczenia przerzuca się na sprzęt. I dlatego trzeba wymieniać procesory i karty graficzne co 2-3 lata.

    •  

      pokaż komentarz

      @piterek: Z punktu widzenia developera to działa w drugą stronę. Nie możesz marnować czasu na zbyt dokładną optymalizację, bo zanim skończysz to i tak średni sprzęt "z przyszłości" udźwignie wersję pierwotną. Zauważ że dziś tego kodu jest dużo więcej niż 10 lat temu.

    •  
      t...l

      +14

      pokaż komentarz

      @piterek: Zarówno kiedyś jak i dziś zatrudnia się ludzi, którzy potrafią wykonać dane zadanie najlepiej w danych warunkach ;)

    •  

      pokaż komentarz

      @dran2: dokładnie - to tak jak narzekanie na krótkość dzisiejszych gier, ale każdy chce by grafika była szczegółowa co do najmniejszego krzaczka, a wszystko najlepiej taniej niż 10 lat temu - czyt. "zatrudnijcie 3 razy więcej grafików, 2 razy więcej level designerów i jeszcze paru programistów, którzy podrasują silnik graficzny, ale sprzedajcie mi grę 2 razy taniej".

    •  

      pokaż komentarz

      @piterek:
      Wyjaśnienie jest takie - kiedyś sprzęt był droższy od czasu pracy programisty, dzisiaj odwrotnie :)

      Większość programistów/koderów pracuje w językach wysokiego poziomu C#, Java, interpretowanych itd.
      - i to jest daleko od fizycznie wykonującego obliczenia sprzętu (2-3 warstwy? interpreter, maszyna wirtualna, dochodzą jeszcze biblioteki.. ludzie na Stackoverflow pytają o podstawowe rzeczy, które się wykonuje w czystym Javascripcie a chcą to zrobić z jQuery..).

      Ale do końca tak nie jest, guru optymalizacji pracują dla największych - Google, Facebook, Micr.. oh,,, wait.,
      Było AMA z programistą pracującym w Niemczech
      - high frequency trading - pisał zdaje się, że wydali kilka mln na inwestycje i walczyli o kilka milisekund przebiegu transakcji (bo im się to opłacało...).
      Finanse.. gdzie indziej? Na pewno wojsko / aparatura medyczna / środowisko akademickie :) ...

    •  

      pokaż komentarz

      @piterek: be-zed-dura ;p

      Optymalizuje się naprawdę bardzo dużo - chociaż wygląda to teraz zupełnie inaczej niż kiedyś i studia gamedev niekoniecznie muszą zatrudniać mistrzów assemblera, tylko kupują silniki które już są zoptymalizowane pod tym kątem.

      PS. Co was wszystkich napadło na przekonanie że nikt nie dba o optymalizacje kodu? bo więcej mocy wymagają dzisiejsze gry? nikt nie zauważył ile za nią oferują?

    •  

      pokaż komentarz

      @niechcacy_przypadkiem: Microsoft też, patrz na MS SQL. i właśnie głównie w silnikach baz danych teraz stosuje się niskopoziomowe optymalizacje, ale nie polegają one zazwyczaj na przesunięciach bitowych.

    •  

      pokaż komentarz

      @prusi: No, w silniku bazy danych przesunięcia bitowe raczej na niewiele by się zdały :)

    •  

      pokaż komentarz

      @raj: spójrz na reprezentację zbiorów w MySQL - operacje na bitach się przydają w silnikach baz danych, ale prawdziwą optymalizację osiągasz poprzez np. optymalizację pod względem odwołań do cache czy lepsze zrównoleglenie algorytmu. próbowałem to wytłumaczyć wyżej, ale jakoś nikt mnie nie słucha.

  •  

    pokaż komentarz

    i = 0x5f3759df - ( i >> 1 ); // what the fuck?

    widze, ze autor tego kodu tez nie rozumie tego co napisal