August 2008

Uwaga! Informacje na tej stronie mają ponad 3 lata. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

22:06
Fri
29
Aug 2008

NVScene 08

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 (0) | Tags: demoscene events | Author: Adam Sawicki | Share

20:03
Tue
26
Aug 2008

Własne narzędzia w Visual C++

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 (0) | Tags: visual studio | Author: Adam Sawicki | Share

23:35
Sun
24
Aug 2008

Mass Effect - polecam!

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:

Mass Effect - Szum

Mimo tego grę polecam wszystkim miłośnikom komputerowych RPG i nie tylko.

Comments (0) | Tags: games | Author: Adam Sawicki | Share

21:22
Thu
21
Aug 2008

Raw Input

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.

Comments (2) | Tags: winapi | Author: Adam Sawicki | Share

00:09
Mon
18
Aug 2008

SIGGRAPH 2008 i Larrabee

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 (0) | Tags: events hardware | Author: Adam Sawicki | Share

20:05
Sat
16
Aug 2008

Wielka Warsztatowa Ankieta 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 (0) | Tags: warsztat web | Author: Adam Sawicki | Share

23:32
Thu
14
Aug 2008

Visual C++ - jak zacząć

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:

  1. Wejść do opcji projektu - Project > Properties.
  2. Przestawić General > Character Set na Not Set - pomaga na błędy z Unicode, wchar_t itp. dziwnymi hasłami :)
  3. Przestawić C/C++ > Precompiled Headers > Create/Use Precompiled Header na Not Using Precompiled Headers - pomaga na błędy z Stdafx.h.
  4. Przestawić C/C++ > Code Generation > Runtime Library na Multi-threaded Debug (w konfiguracji Debug) i Multi-threaded (w konfiguracji Release) - pomaga na błędy z brakiem plików DLL po przeniesieniu programu na inny komputer.
  5. Dalej warto zgłębić ten temat czytając Warsztat FAQ, bo tam opisałem to dokładniej.

Comments (0) | Tags: teaching visual studio c++ | Author: Adam Sawicki | Share

22:43
Sun
10
Aug 2008

Nauka asemblera - Początek

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 :)

Test04 - Asembler, śnieżenie

Comments (0) | Tags: assembler | Author: Adam Sawicki | Share

20:35
Thu
07
Aug 2008

Odpalić program i poczekać

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);

Comments (0) | Tags: winapi | Author: Adam Sawicki | Share

20:11
Tue
05
Aug 2008

Odpalanie TortoiseSVN ze swojego programu

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.

Comments (0) | Tags: tools | Author: Adam Sawicki | Share

STAT NO AD [Stat] [Admin] [STAT NO AD] [pub] [Mirror] Copyright © 2004-2017 Adam Sawicki
Copyright © 2004-2017 Adam Sawicki