Uaaa... Ostatnio sporo się działo. Nie chodzi mi tu tylko o sprawy "zawodowe" (uczelnia, zaliczenia, prace, a niedługo rozpoczynające się kolokwia). Od końca wakacji jednak troszkę programowałem i chociaż tak naprawdę powinienem się skupić na czymś innym (także innym projekcie), to od czasu do czasu troszkę pomęczę frameworka. Przy okazji kończę kolejną książkę w mojej czytelni pratchettowskiej, a mianowicie Straż nocną. Polecam - Prawda, Wolność, Sprawiedliwość. I Jajko Na Twardo. To są naczelne prawa rewolucji - zapamiętajcie na wszelki wypadek.
No dobrze, ale skupmy się na rzeczach związanych z frameworkiem. Przede wszystkim odkryłem sposób na...
Całkowite odblokowanie wydajności OpenGL-a pod Vistą
Ogólnie sprawa jest bardzo dziwna, żeby nie powiedzieć - kretyńska. Według tego, czego się nauczyłem w latach młodości (ach, kiedy to było...), pliki z roszerzeniem DLL raczej pomagały, aniżeli przeszkadzały działać aplikacji. Dlatego się dziwię, bo nie wyobrażałem sobie, że zbiory dyskowe opengl32.dll i glu32.dll zamieszczone w katalogu z programem sieją zamęt, zło, mrok i ogólnie cała konstrukcja trzęsie portkami przed DLL (wygląda na to, ze są nimi Drapieżne Ludożerne Lemingi). Po usunięciu tych plików nie dość, że aplikacje zaczęły działać w normalnym tempie, to jeszcze obsługiwały rozszerzenia i shadery CG. Prawdę mówiąc - nadal nie wiem, gdzie leżał problem. Ktoś potrafi mnie naprowadzić?
Następna sprawa wyniknęła dosyć gwałtownie. Otóż musiałem naprędce wymyślić rzecz, która zowie się...
Nazwa frameworka
Chciałem to już mieć za sobą, gdyż tak czy siak głowy do kreowania niesamowitych nazw nie mam (wystarczy wspomnieć Graphratora), a poza tym nie lubię skupiać na tym swojej uwagi, wychodząc też z założenia, że im szybciej coś wybiorę, tym będzie to dziwniejsze, a im będzie to dziwniejsze, to tym więcej interpretacji/wytłumaczeń/rozwinięć skrótów można wymyślić. A że inni będą się śmiali, to swoją drogą.
Tak czy inaczej, nazwa frameworka brzmi:
Yesta
Nie, nie jest to skrót od "Yes, Extremely Stupid Test Application", choć nie ukrywam, że podoba mi się takie absurdalne rozwinięcie. "Yesta" to inaczej "Początek", "Pierwszy". Samo słowo pochodzi z języka, z którego postanowiłem coś wybrać, a mianowicie elfickiego (konkretnie dialekt Quenya). Mam nadzieję, że nie jest aż tak głupia. Przynajmniej ładnie brzmi i kojarzy się z Vist... A nie, to akurat nie jest zaleta.
Przejdźmy teraz do wykazu "ficzerków", jakimi uraczyłem Yestę.
Mapy BSP
Tego typu obiekty są znane z produkcji pod egidą moich ideałów programistycznych, a mianowicie pana C. i spółki, czyli id Software (swoją drogą, jeśli ktoś jest aż tak zarozumiały i mu się wydaje, że jest na zaawansowanym poziomie oraż iż według niego na pewno będzie pracował w przyszłości w gamedevie [ba - może już nawet teraz pracować!], to niech popatrzy na oferty pracy id. Życzę powodzenia w spełnieniu wymagań). Mowa oczywiście o mapy BSP. Całkiem fajny i niegroźny mechanizm - a może się czasem przydać. Jest przy tym dosyć wydajny - stosuje algorytm obcinania powierzchni BSP (proszę mnie poprawić, jeśli się mylę) i ładnie "lajtmapuje" cały teren. Niezły widok. No i kolejny punkt w gonitwie za "ficzerkami" Esenthela, Final Quest, nGENE czy innych (pozdrawiam przy okazji twórców i żywię wielki szacunek).
Bufor pikselowy
Czyli mechanizm umożliwiający renderowanie do tekstury, poza ekran. Muszę powiedzieć, że byłem tutaj dużo większym optymistą, a skończyło się jak zwykle. Przede wszystkim, myślałem, że bazowanie na przykładzie będzie łatwe i proste, a tak naprawdę nie wszystko wyszło tak jak należy. A największym problemem jest to, że do końca nie wiem, co tak-naprawdę-nie-wyszło-jak-należy. Uważałem też, że od momentu wprowadzenia tej partii frameworka bardzo szybko przejdę do efektów typu bloom czy HDR i że w ogóle będę profesjonalny, podziwiany i będę miał prawo do dodatkowych kartek na wędliny. Ale i tak cieszę się z tego, co mam. Postanowiłem również poniżej umieszczać linki do kodów, na których się opierałem - na pewno komuś się to kiedyś przyda. A nie wątpie, że przeanalizuje je szybciej i dokładniej niż ja.
Fake Radial Blur
Cóż, jako że będzie trzeba powoli zacząć pisać efekty graficzne, utworzyłem sobie przestrzeń nazw CEffects, gdzie będą znajdowały się takowe funkcje. Na pierwszy ogień poszedł efekt Fake Radial Blur. Nie będę tutaj za bardzo się rozpisywał (w ogóle dzisiaj za bardzo się nie rozpisuję) - bardzo ładny opis jest właśnie w lekcji z Nehe [link poniżej]. Krótko tylko nadmienię, iż jest to coś w rodzaju rozmycia ekranu pod wpływem ruchu obiektów. Ciekawe zjawisko. Dobre, jak ktoś chce być zahipnotyzowany.
Usprawnienie liczenia klatek i klasy CCore
Tutaj także nie ma co się rozpisywać. Po prostu usprawniłem obydwie partie w dosyć znaczący sposób. Wynika to oczywiście z wymagań, jakie nakładały blur oraz p-bufor i konieczność chociażby pobierania uchwytu na konteksty WinAPI. Natomiast złe liczenie FPS-ów wytknęło już mi parę osób. Postanowiłem to poprawić - mam nadzieję, że będzie teraz wyglądać i działać lepiej.
Sockety
Od jakiegoś czasu myślałem też nad tym, jak zmusić programy do komunikacji między sobą i wymiany danych. Jest to najmniej rozwinięta i przetestowana część z dzisiejszych nagłówków. Myślę jednak, że już na tyle zaawansowana, że zasługuje już na wymienienie. Więcej o niej - przy kolejnych okazjach.
Widać na pewno jedną rzecz - to, że zakończyłem pracę nad jakimś kawałkiem kodu, nie oznacza wcale, iż już nigdy do niego nie powrócę. Dotyczy to w szczególności klas takich jak CCore czy CTextureManager. Myślę jednak, że jak na działanie typowo hobbystyczne i tak naprawdę nieplanowane (jeśli kogoś to interesuje - nie mam żadnej rozpiski, co zamierzam robić po kolei) nie wygląda to tak tragicznie. Póki co jednak, muszę mocno zwolnić pracę. Pewne sfery życia "zawodowego" zaczynają naciskać coraz mocniej.
Jak zwykle, uraduję się mogąc odpowiedzieć na jakiekolwiek pytania i komentarze z Waszej strony. Mam nadzieję, że prędzej czy później uda mi się wysmażyć kolejny artykulik o tym czy innym zagadnieniu. W końcu wypada zadbać o dydaktyczną warstwę tej witryny.
http://www.ultimategameprogramming.com/zips/Gl_BspLoader.ZIP
http://www.ultimategameprogramming.com/zips/Gl_OffScreen.ZIP
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=36
http://www.ultimategameprogramming.com/zips/Gl_FPS.ZIP
http://www.ultimategameprogramming.com/zips/Cpp_SendingReceiving.ZIP
Pozdrawiam i dziękuję - SceNtriC.
poniedziałek, 3 listopad 2008
Subskrybuj:
Komentarze do posta (Atom)
1 komentarze:
Wymiękam przy Tobie xD You RLZ i tyle.
A tak ogółem, to napisz może co nieco o tym, co dzieje się w "życiu zawodowym" ;P
Prześlij komentarz