All blog entries, ordered from most recent. Entry count: 1198.
# Policzone tangenty do mapy
Thu
01
May 2008
Wieści z pierwszej linii frontu: Chyba udało mi się policzyć normalne i tangenty dla mapy Indoor, z wygładzeniem zależnie od kąta krawędzi. Wzory na tangenty wziąłem z tego artykułu. Ciekawy patent wymyśliłem, żeby w poszukiwaniu wierzchołków leżacych w pobliżu nie działać ze złożnością kwadratową. Otóż posortowałem wierzchołki w każdej grupie (rysowane danym materiałem) wg współrzędnej X. Potem dla każdego wierzchołka przeglądam tylko kilka następnych, tak długo jak (v2.x - v1.x) < EPSILON_DIST. Czyż to nie dużo prostsze, niż jakieś Octree czy k-d tree? :D
Comments | #rendering #math Share
# Platforma do eksperymentów
Wed
30
Apr 2008
Mam teraz ochotę poeksperymentować trochę na luzie z różnymi efektami, technikami i algorytmami. W tym celu napisałem sobie platformę do eksperymentów opartą na moim frameworku. Na dole jest log lub panel informacyjny (np. z licznikiem FPS), po lewej na górze jest drzewo obiektów, ich pod-obiektów, poleceń i dowolnych innych rzeczy, a po lewej na dole jest Property Grid. Na początek wczytałem mapę wyeksportowaną z DeleD.
# Rat Adventure - nasza praca z IGK Compo
Sat
26
Apr 2008
Umieściłem do pobrania naszą pracę konkursową z tegorocznej konferencji IGK. Tematem było hasło "Kanały - raj pod ziemią". Gra jest 3D, TPP. Bohaterem jest szczur. Grafika oparta jest na wokselach. Sterowanie: W, S, A, D, Spacja (skok), LPM (gryzienie). Archiwum zawiera binarkę oraz kod źródłowy w C++. Autorzy: drużyna "Rzeźnicy Inc.", czyli: Krzysiek K., ayufan, gemGreg, Reg.
Warto zapoznać się z tą pracą, żeby zobaczyć, jak Krzysiek K. w ciągu zaledwie kilku godzin zaprogramował silnik wokselowy, jego wizualizację i kolizje :)
Pobierz: IGK_2008_Compo_Rzeznicy_Inc.rar (4.33 MB)
Comments | #igk #productions Share
# Wikipedia jest najlepsza
Thu
24
Apr 2008
Każdy kto prowadzi swoją stronę internetową może dostać roczny, darmowy dostęp do encyklopedii Britannica Online (formularz rejestracyjny). Zarejestrowałem się i wniosek mam jeden - Wikipedia jest jednak najlepsza. Oto przykłady:
Podsumowując, Wikipedia jest po prostu lepsza. Może i faktycznie przez możliwość edytowania dla każdego internauty zdarzają się tam błędy merytoryczne. Na przykład Havok leży w kategorii "Biblioteki graficzne", a kiedy usunąłem przydział do tej kategorii, ktoś zaraz z powrotem go przywrócił. Tym nie mniej hasła na Wikipedii są po prostu obszerniejsze, zawierają więcej konkretnych informacji, więcej obrazków i grafikę lepszej jakości, więcej linków zewnętrznych, są bardziej aktualne - no i dostępne dla każdego za darmo, bez żadnej rejestracji.
# Kolejność pól FVF
Tue
22
Apr 2008
O tym jeszcze chyba nie pisałem, a sprawa jest ciężka, bo DirectX SDK, o ile wiem, jasno tego nie precyzuje. Chodzi o kolejność, w jakiej powinny pojawiać się pola w strukturze wierzchołka opisywanej przez FVF. Dlatego postanowiłem sobie to raz a porządnie spisać:
# A jak ty tutaj trafiłeś?
Sun
20
Apr 2008
Strona WWW każdego z nas jest zindeksowana przez Google. Dlatego warto zarejestrować się w Google Narzędzia dla webmasterów. Można wtedy zobaczyć ciekawe statystyki, np. jakie strony linkują do naszej oraz przede wszystkim jakie zapytania powodują najcześciej jej wyszukanie.
Statystyki mojej strony są... dziwne. Zapytania najczęściej powodujące wyszukanie: "ctfmon exe", regedit, wiedźmin solucja, "d3dx9_30 dll", gamedev, wiedzmin, solucja, automaty komórkowe, sawicki, reg, sortowanie przez wybieranie. Zapytania najczęściej powodujące kliknięcie: "ctfmon exe", regedit, tekstury, rzutowanie c++, wiedźmin solucja, automaty komórkowe, c++ rzutowanie, "d3dx9_30 dll", gamedev, adam sawicki.
Widać więc, że większość osób trafia tu przypadkowo, tylko dlatego że gdzieś kiedyś napisałem notkę poświęconą czemuś, co jest popularne - np. problemom z plikiem ctfmon.exe, d3dx9_30.dll czy grze Wiedźmin. Cóż... Dla mnie najważniejsze jest, że wchodzą tutaj odpowiednie osoby, a nie dużo osób. Gdybym chciał zrobić stronę jak najbardziej popularną, zająłbym się robieniem stron porno, a nie blogowaniem o programowaniu :P
Comments | #web #homepage Share
# GameDev Calc
Fri
18
Apr 2008
Opublikowałem moją nową małą, wielką produkcję. Jest mała, bo kodowanie wcale nie wymagało dużo pracy, ale wielka, bo od dawna bardzo chciałem to napisać. To GameDev Calc - kalkulator dla programistów gier.
Pobierz: GameDevCalc_1-0.zip (53.06 KB)
Jednostką danych jest wektor 1-4 liczb zmiennoprzecinkowych, który można traktować jako wektor (x,y,z,w) lub kolor (r,g,b,a). Oprócz podstawowych operacji jak dodawanie, mnożenie czy sinus, dostępne są operacje wektorowe, np. normalizacja wektora, a także zamiana kątów na stopnie i radiany, zamiana kolorów na RGB i HSB, znajdowanie współczynników funkcji liniowej i kwadratowej oraz wiele innych. Zamiast tylko ostatnio wprowadzonej liczby, widoczna jest cała historia obliczeń w postaci stosu i na tym stosie są przeprowadzane wszystkie operacje. Dane można wprowadzać i wyprowadzać w dowolnym wybranym formacie, np. jako "D3DXVECTOR4(0.0f, 0.5f, 0.752f, 1.0f)" albo "0xFF0080C0". Platforma: Windows. Język: C#. Licencja: GNU GPL.
Comments | #productions #tools #math Share
# Ścieżka do Application Data w C#
Thu
17
Apr 2008
Żeby program był elegancki i działał dobrze (zwłaszcza pod Vista...), powinien swoje pliki konfiguracyjne i inne dane trzymać w katalogu C:\Dokuments and Settings\Login\Application Data\..., a nie w podkatalogu Program Files, gdzie leży plik wykonywalny. Jak pobrać ścieżkę do tego katalogu w C#?
Microsoft przewidział do tego metodę statyczną Application.UserAppDataPath. Niestety ona działa w ten sposób, że zwraca (a jeśli nie istnieje to także tworzy na dysku) ścieżkę typu Application Data\Nazwa firmy\Nazwa programu\Wersja.Wersja.Wersja.Wersja. Taka zamotana ścieżka to nienajlepszy pomysł. Szczególnie, że konfiguracja powinna działać także w nowych wersjach programu.
Dlatego lepszym rozwiązaniem jest chyba taki kod:
private string GetConfigFileName()
{
string Dir = System.IO.Path.Combine(
Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData),
"Nazwa programu");
if (!System.IO.Directory.Exists(Dir))
System.IO.Directory.CreateDirectory(Dir);
return System.IO.Path.Combine(Dir, "Plik.ext");
}