X-Files: I want to believe

25.07.2008 21:27 in filmy, recenzje

Jest około południa; mamy upalny, lipcowy dzień. Młody chłopak przechodzi na drugą stronę ulicy i znika w wejściu do metra. Kamera przybliża się powoli. Nigdzie go nie widać. Agenci zajmują swoje pozycje. Gdy pada rozkaz do szturmu, osaczają go bez trudu. W tle widać kilka wyłamanych bramek do metra. Chłopak stoi, a raczej klęczy przed wielkim plakatem. Patrzy. Chce uwierzyć.

Minęło sześć długich lat od chwili, gdy po raz ostatni mogliśmy podziwiać naszą ulubioną parę agentów FBI. Część z widzów mogła już wyrosnąć z historii o rządowym spisku i złych Obcych. Inni, wprost przeciwnie; kierowani brakiem używki próbowali rozpaczliwie, na własną rękę szukać tajemnic, których nikt nie chce rozwiązać. Życiem większości jednak niezbyt wstrząsnęło zakończenie, po 9 seriach, serialu X-Files. Cóż, taka jest natura seriali. Z jednej strony człowiek zawsze chciałby choć jeszcze jeden odcinek, z drugiej -- twórcy mieli 202 okazje pokazania światu, że prawda gdzieś tam jest.

Read more...

Współpraca Cg i OpenGL

24.07.2008 13:56 in programowanie, grafika 3D

Gdy piszemy jakiś Vertex Shader, podstawowym działaniem, jakie w nim zawieramy, jest przemnożenie współrzędnych wierzchołka przez macierz projekcji i widoku. No cóż, nie jest to bardzo skomplikowane. Wymaga jednak, aby macierz była dostępna dla naszego programu. W Cg można ją przekazać w następujący sposób:

cgGLSetStateMatrixParameter(parameter,
    CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);

Pojawiają się jednak dwa problemy. Pierwszy: jeżeli korzystamy z operacji na macierzach OpenGL (np. ustawiamy nasze obiekty za pomocą glTranslatef), to taką instrukcję musimy powtórzyć dla każdego obiektu. OK -- możemy to zrobić, czemu nie? Pojawia się wtedy jednak drugi, dużo poważniejszy, problem.

Read more...

Wirtualny system plików

17.07.2008 20:49 in devblog, programowanie, C++, C♯, artykuły

Większość gier komputerowych przetwarza ogromne ilości danych. Najłatwiej uzmysłowić to sobie w czasie oczekiwania na załadowanie kolejnego poziomu; w czasie tego -- irytującego, swoją drogą -- procesu komputer musi wczytać i przetworzyć setki megabajtów tekstur, siatek, skryptów i wszystkich innych plików z danymi. Tekst ten nie będzie jednak poświęcony zagadnieniu wczytywania poziomów (ani też metodom irytowania użytkownika). Powiemy sobie natomiast, jak można wygodnie zorganizować wszystkie pliki z danymi.

Read more...

Walka z wiewiórkami

12.07.2008 18:40 in programowanie, devblog, squirrel, C++, artykuły

Wiewiórka pospolita

Kiedy chcemy skorzystać z jakiejś nietrywialnej funkcjonalności w naszym programie, mamy zazwyczaj do wyboru dwie możliwości. Albo sami wymyślamy koło, albo idziemy do sklepu (względnie komisu), aby się w takowe zaopatrzyć. Ponieważ programiści to z natury stworzenia na wskroś leniwe, z reguły będą starali się zminimalizować wkład czasowo-intelektualny w tworzone oprogramowanie. Tak było w tym przypadku: do implementacji skryptów w KNAT zdecydowaliśmy się na użycie SqPlus, będącego rozszerzeniem do Squirrel.

Korzystanie z gotowych rozwiązań (zwłaszcza w przypadku FLOSS) ma jednak często sporą niedogodność. Otóż spojrzenie do kodu rzadko potrafi z miejsca ujawnić całą intelektualną głębię autora, i z tego to powodu zmuszeni jesteśmy poprzestać na lekturze materiałów pochodnych — a w szczególności dokumentacji. Jeżeli tylko autor biblioteki zdecydował się na tak szalony i ekscentryczny krok, jakim jest dokumentacja…

Read more...