# NVScene 08
Fri
29
Aug 2008
W dniach 25-28 sierpnia 2008 w San Jose (USA) miała miejsce impreza demoscenowa NVScene 08. Warto pościągać i pooglądać zaprezentowane tam dema, bo są jak sądzę na najwyższym światowym poziomie. Kto z czytelników mojego bloga nie wie jeszcze, co to jest Demoscena, niech czym prędzej się dowie, bo będę tu czasem o niej pisał. Dema scenowe naprawde warto oglądać! (A samemu tworzyć pewnie też, jeśli ktoś umie...)
Comments | #demoscene #events Share
# Własne narzędzia w Visual C++
Tue
26
Aug 2008
Do projektu Visual C++ można dodać pliki o nieobsługiwanych domyślnie rozszerzeniach i ustawić ich obsługę tak, żeby podczas kompilowania projektu wszystkie takie pliki były przetwarzane przez określony program konsolowy. To może być na przykład generowanie parserów za pomocą Flex i Bison czy jakiekolwiek inne czynności, które wygenerują na podstawie plików źródłowych pliki docelowe, z przygotowanym kodem C++ lub inne.
Służą do tego dwa mechanizmy. Ten starszy to Custom Build Steps i Build Events. Ten nowy, bardziej potężny, dostępny od wersji Visual C++ 2005, nazywa się Custom Build Rules. Jego skonfigurowanie jest bardzo proste - wszystko da się wyklikać w oknach dialogowych.
Comments | #visual studio Share
# Mass Effect - polecam!
Sun
24
Aug 2008
Mass Effect to osadzona w przyszłości i w kosmosie gra RPG z elementami strzelania TPP (kamera jak w Gears of War), w którą gram od pewnego czasu i którą chciałbym wszystkim gorąco polecić. Jest świetna! Po pierwsze, to jest prawdziwy rasowy cRPG, a nie żaden Hack'n'Slash. Jest dużo dialogów, dużo eksploracji świata, dużo zadań pobocznych, dużo przedmiotów do zebrania, trudne dylematy moralne itd. Po drugie, fabuła jest bardzo ciekawa i powinna się spodobać każdemu miłośnikowi Science-fiction. Po trzecie, gra jest zrobiona z prawdziwie epickim rozmachem. Wszystkie dialogi są nagrane jako dźwięk (i przetłumaczone na polski). Duże wrażenie robi możliwość odwiedzania różnych układów słonecznych i planet w galaktyce czy jeżdżenia po powierzchni planety. Takich ciekawych rozwiązań jest w grze więce.
Oczywiście Mass Effect nie jest idealny. Pisząc o wadach trzeba wspomnieć przede wszystkim, że "śmierdzi konsolą" - choćby w kwestii sterowania i celowania. Grafika też jest jakości średniej, a niską jakość tekstur i ogólną sterylność lokacji twórcy spróbowali zakryć dodając na cały ekran... szum. Moim zdaniem to jest cios poniżej pasa. Na szczęście można go wyłączyć w opcjach. Tak to wygląda w powiększeniu:
Mimo tego grę polecam wszystkim miłośnikom komputerowych RPG i nie tylko.
# Raw Input
Thu
21
Aug 2008
Trafiłem ostatnio na ciekawą, a mało chyba znaną część WinAPI - Raw Input. Pozwala ona na otrzymywanie przez okno komunikatów WM_INPUT z informacjami od podłączonych do komputera klawiatur, myszek i innych urządzeń wejściowych, jak joystick, ekran dotykowy czy nawet mikrofon. Celowo napisałem w liczbie mnogiej - to API pozwala na obsługę i rozróżnianie wielu podłączonych do komputera myszek i klawiatur! Ponadto daje dostęp do informacji od myszy w wyżej rozdzielczości, niż standardowa.
Ale coś za coś. Raw Input nie przetwarza za to przyspieszenia kursora Pointer Ballistics, do którego przyzwyczajeni są użytkownicy. Dlatego ten artykuł zaleca, aby do obsługi kursora stosować standardowy WM_MOUSEMOVE, do poruszania kamerą i wszędzie gdzie przyda się duża precyzja - Raw Input, a DirectInput stosować tylko do obsługi manipulatorów (joysticki, pady, kierownice).
Na koniec ciekawostka: Jest też darmowa, wieloplatformowa biblioteka do obsługi wielu myszek - ManyMouse.
# SIGGRAPH 2008 i Larrabee
Mon
18
Aug 2008
W dniach 11 - 15 sierpnia 2008 w Los Angeles odbyła się konferencja naukowa SIGGRAPH 2008 poświęcona grafice komputerowej. Większość z artykułów została udostępniona w Sieci: SIGGRAPH 2008 papers on the web. Warto je poprzeglądać, nawet jeśli nie wszystko się rozumie :)
Jednym z najciekawszych jest ten opisujący nową konstrukcję firmy Intel - Larrabee (zobacz artykuł lub hasło na Wikipedii). To będzie (sprzedawany zapewne jako karta rozszerzeń) zbiór procesorów typu x86 z dodatkowymi instrukcjami. Jednostka wektorowa (vector processor - VPU) będzie miała instrukcje podobne do shaderów (swizzle, replicate, mask). Każdy rdzeń będzie miał własny 4 MB cache L2. Zakodowane na sztywno w sprzęcie pozostaną tylko niektóre funkcje tradycyjnych GPU - samplowanie i filtrowanie tekstur. Inne znane z potoku graficznego - rasteryzacja, interpolacja i blending - będą realizowane programowo.
Larrabee będzie wykonywał normalny kod x86, jak również będzie działał jako zwykła karta graficzna. Mamy więc do czynienia z rewolucją. Pozostaje tylko przekonać użytkowników do kupienia takiego urządzenia. A my programiści... wracamy do pisania software rendererów :)
Comments | #events #hardware Share
# Wielka Warsztatowa Ankieta 2008
Sat
16
Aug 2008
Zorganizowałem ostatnio trzecią edycję projektu Wielka Warsztatowa Ankieta. To badanie statystyczne, które ma na celu poznanie cech i preferencji ludzi z Warsztatu - odwiedzających portal www.gamedev.pl, forum.gamedev.pl lub kanał IRC #warsztat. Zbieranie danych trwało 2 tygodnie. W tym czasie osoby zainteresowane mogły amonimowo wypełnić ankietę złożoną z wielu pytań. Nadeszło 605 wpisów. Wczoraj udostępniłem opracowane wyniki. Zapraszam do przeglądania dokumentu Wielka Warsztatowa Ankieta 2008.
Comments | #warsztat #web Share
# Visual C++ - jak zacząć
Thu
14
Aug 2008
Właśnie zagadał do mnie na Gadu-Gadu jeden z kolegów z Warsztatu z pytaniami, lękami i wątpliwościami na temat przesiadki z Code::Blocks na Visual C++. Odpowiadając uświadomiłem sobie, że Visual, jakkolwiek jest moim zdaniem najlepszym IDE, jest wygodny, potężny, szybki itd., ma pewien problem - nie można w nim od tak zacząć programowania, napisać "Hello World" czy wkleić kod z jakiegoś tutoriala. Na drodze stoją opcje projektu, które w wersjach 2005 i 2008 domyślnie są tak ustawione, że kod się nie kompiluje albo też nie działa na komputerach innych niż programisty. Początkującym można więc polecić proste kroki do wykonania po utworzeniu nowego projektu:
Comments | #teaching #visual studio #c++ Share
# Nauka asemblera - Początek
Sun
10
Aug 2008
Postanowiłem nadrobić braki w wiedzy, która ominęła mnie w dzieciństwie z racji Pascalowo-Delphiarskiej przeszłości i w wolnych chwilach wziąłem się za naukę asemblera. Używam MASM i uczę się głównie z tutoriala Iczeliona. Właśnie napisałem swój pierwszy efekt graficzny. Możnaby go zatytułować "śnieżenie". Do pobrania tutaj: Asm_Test04.exe. Nie zmierzyłem jeszcze FPS, ale ciekaw jestem, czy napisany w C++ działałby równie szybko :)

# Odpalić program i poczekać
Thu
07
Aug 2008
Jak uruchomić z poziomu swojego programu inny program i zaczekać na jego zakończenie? Funkcji do uruchamiania programów jest wiele. Najprostsza, ale posiadająca małe możliwości jest funkcja system z biblioteki standardowej C, która pozwala uruchomić dowolne polecenie systemowe. Prosta jest też funkcja WinExec, ale ona jest przestarzała i niezalecana.
Pośród tych potężnych zostają dwie, z których każda ma swoje wady i zalety. ShellExecute i ShellExecuteEx pozwala "uruchomić" dowolny plik lub wykonać na nim inną akcję powłoki (np. "open", "edit", "print"). W przypadku plików EXE to będzie uruchomienie, a dla różnych dokumentów, ich otwarcie w domyślnej aplikacji skojarzonej z rozszerzeniem. Z kolei funkcja CreateProcess pozwala uruchomić plik wykonywalny podając przy tym m.in. własne zmienne środowiskowe czy też uchwyty przechwytujące konsolowe wejście-wyjście. Zwraca natomiast uchwyt do utworzonego procesu.
Ostatnio wyczytałem, że funkcja ShellExecuteEx też potrafi zwrócić uchwyt do utworzonego procesu. Wystarczy w strukturze SHELLEXECUTEINFO ustawić pole fMask na flagę SEE_MASK_NOCLOSEPROCESS. Wówczas pole hProcess zostanie wypełnione uchwytem. Potem wystarczy już tylko poczekać na zakończenie programu takim wywołaniem:
WaitForSingleObject(shell_execute_info.hProcess, INFINITE);
# Odpalanie TortoiseSVN ze swojego programu
Tue
05
Aug 2008
Pisząc zaawansowane narzędzie wygodnie byłoby zintegrować je z systemem kontroli wersji SVN. Jak odpalić funkcję SVN z poziomu programu? Można uruchomić konsolowy SVN z odpowiednim parametrami, ale konsolowy program ma konsolowe wyjście i jest konsolowo niewygodny. Dużo fajniej byłoby uruchomić jakoś TortoiseSVN, tak jakby to użytkownik wybrał z menu kontekstowego danego pliku czy katalogu polecenie otwierające odpowiednie okienko, np. Update, Commit.
Okazuje się, że da się to zrobić bardzo prosto. Szczegóły można znaleźć w helpie TortoiseSVN, pod hasłem "Automating TortoiseSVN". Pisząc w skrócie, trzeba uruchomić program TortoiseProc.exe. Pełną ścieżkę do niego można znaleźć w rejestrze, w HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseSVN\ProcPath. Jako parametry trzeba podać /notempfile, /command:commit (gdzie zamiast "commit" mogą być różne polecenia, np. "update" albo "repostatus") oraz /path:"..." ze ścieżką do danego katalogu. Można dodać /closeonend:2, aby okienko samo się zamknęło po zakończeniu operacji, jeśli nie było błędów.