Thursday, December 23, 2010

L.B.A. remake

Ostatnie tygodnie były dla mnie dość ciężkie większość czasu poświęcałem : życiu prywatnemu, pracy i uczelni. Dlatego dość mało udało mi się zrobić w projektach ale zmiany są, jak zawsze :] Obecnie realizuję projekt na uczelnię oraz pracę magisterską w oparciu o swój silnik. Jako, że fajnie jest mieć środowisko do testowania algorytmów w warunkach jak najbardziej zbliżonych do tych rzeczywistych postanowiłem stworzyć grę.

Posiadając ograniczony czas zdecydowałem się na stworzenie remake'a starej gry. Dzięki temu mogę skupić się głównie na pisaniu i tworzeniu rzeczy bezpośrednio potrzebnych do tej produkcji nie martwiąc się wymyślaniem fabuły i mechaniki. Dodatkowym plusem takiego rozwiązania jest posiadanie konkretnego celu i założeń które w trakcie prac nie mogą się zbytnio zmienić gdyż chce aby gra była podobna do pierwowzoru.  Pierwsze efekty można zauważyć już poniżej :


Na koniec dodam tylko :

Wesołych Świąt Bożego Narodzenia 

w końcu już dziś wigilia :]

Wednesday, December 8, 2010

Projekt rozpoczęty

No więc rozpocząłem pierwszy konkretniejszy projekt na swoim silniku, oto efekt co da się już szybko osiągnąć  dzięki edytorowi:


w trakcie pracy nad tą wstępną wersją mapki wyszło parę rzeczy które można jeszcze poprawić a parę musiałem poprawić aby praca szybciej szla :] No ale jak widać nawet się udało coś porządnego uzyskać :] 


Dodatkowo dzisiaj przeprowadziłem pewne optymalizacje w wyświetlaniu grafiki a gDEBuger bardzo mi w tym pomógł :] dodatkowo uświadomił parę moich złych nawyków. Mianowicie przyzwyczajenie do standardowego pipelinu OpenGL. Widać ciągle przede mną długa :] no ale gdyby jej nie było to bym się pewnie nudził :]

Saturday, December 4, 2010

I kolejny post.

Ostatnio coś sporo się tych moich postów pojawia :] no więc nie mnie oceniać czy to powód do radości czy do płaczu :P No ale kontynuujmy to co zacząłem. Ostatnimi czasy udało się zrobić parę ciekawych rzeczy: Jedną z nich były obiekty i tak do tej pory w silniku dało dodawać się tylko modele i teren co nie dawało za dużych możliwości konfiguracji dodawanych danych. Ale niedawno się to zmieniło:] powstały małe skrypty wyglądające np. tak :

//// plik: FloorA.wro

def 0 : models/FloorA.wrm
{
    material = Floor000
}


//// plik: FloorB.wro
def 0 : models/FloorA.wrm
{
    material = Floor001
}

Niby nic nadzwyczajnego ale z powodu tego właśnie bajeru musiałem przebudować system modeli. Problemem był fakt, że w poprzedniej implementacji zakładałem, że każdy model ma materiał. Jak widać powyżej problem jest bo mam 1 model a chcę aby 2 obiekty nadawały mu dwa różne materiały. Stary system prezentował się tak :

A nowy tak :


Jak widać pojawiła się w nim nowa warstwa CMeshInstance która zastąpiła wszystkie użycia klasy CMesh w grze. Jednak mimo wszystko nie mogłem zrezygnować z warstwy klasa CMesh gdyż będzie ona przechowywać w sobie dane o L.O.D i parę innych współdzielonych rzeczy :]. 

No i na koniec trochę z innej beczki a mianowicie taki oto modelik :)


  



Wednesday, November 24, 2010

Nowości ciąg dalszy

W projekcie pojawiły się kolejne nowości. Większość można zauważyć na poniższym screenie z edytora.


Zaczął działać system wyświetlania właściwości zaznaczonego obiektu. Póki co jest to tylko podgląd ale już niedługo będzie można przy pomocy niego edytować właściwości. Kolejna spora zmiana to pojawienie się terenu, póki co generowany jest on z bitmap i przez jakiś czas w takim stanie pozostanie.

Kolejna ciekawostka to, że w końcu istnieje coś takiego jak zaznaczanie wielu obiektów. Ułatwia to bardzo tworzenie sceny. Wystarczy zaznaczyć obiekty i albo przekształcić obiekty albo przy transformacji przytrzymać SHIFT aby uzyskać ich kopie.

Sunday, November 21, 2010

Gra

W pracach nad silnikiem i edytorem nie zapominam, że wszystko to robię w celu stworzenia gry. Dlatego dzisiaj ukończyłem pierwszy etap prac nad grą. Jak widać poniżej udało mi się załadować scenę stworzoną w edytorze bezpośrednio do gry.


Ze strony kodu wymagało to jak zawsze trochę pracy ale jak to bywa w programowaniu lepiej wykonać takie rzeczy nie czekając za długo gdyż czym dłużej się zwleka tym więcej rzeczy do przerobienia. Aktualny system gry wygląda w uproszczeniu tak :


Poszczególne kolory oznaczają warstwy aplikacji. Jak widać gra i edytor współdzielą systemy silnika gry, dzięki temu raz napisany kod działa dla obu tych "tworów". Pojawia się jednak kwestia późniejszego wykorzystania silnika w innych produkcjach, z tego powodu właśnie powstała warstwa przejściowa pomiędzy silnikiem gry a plikiem wykonywalnym. W "Game DLL"  będą definiowane obiekty gry w niej znajdą się definicje obiektów przedmiotów, mechanika oraz inne obiekty tego typu. Później podczas ładowania edytora całość zostanie załadowana do późniejszego użycia w lokacjach.

Wednesday, November 17, 2010

Ciąg dalszy prac

Ostatnie parę dni poświęciłem głównie na rozważania nad algorytmem zarządzającym geometrią który planuję realizować w ramach pracy mgr. Udało mi się jednak znaleźć trochę czasu i tak oto poprawiłem system zarządzający obiektami. Doczekał on się podziału na foldery które znajdują się w katalogu roboczym.


Przy tej okazji przekonałem się, że biblioteka Qt była słusznym wyborem jeśli chodzi o edytor:] Do pracy zaprzęgłem system wyrażeń regularnych który udostępnia. W ten sposób nie muszę dołączać dodatkowych bibliotek z których korzystał bym właściwie tylko w edytorze.

Nowy system umożliwia dwa sposoby filtrowania. Pierwszy jest to struktura folderów natomiast drugim który odnosi się tylko do aktualnej listy jest wyszukiwanie (pole tekstowe na górze). Dzięki zastosowaniu takiego lokalnego przeszukiwania cały system powinien się sprawdzać nawet przy sporych zbiorach obiektów :]

Sunday, November 14, 2010

WRE

W ostatnich miesiącach rozpocząłem pracę wiec trochę mniej czasu pozostało na programowanie. Jednak udaje mi się go trochę wygospodarować. I tak poza kursem CUDA który realizuję na uniwerku. Moim głównym zajęciem jest tworzenie WRE jest to mój silnik wyposażony dodatkowo w edytor. Póki co nie ma za bardzo co pokazywać bo głównie poświęcam się rzeczą mało widocznym ale systematycznie w miarę dorzucam nowe rzeczy.

Ostatnimi czasy zajmowałem się trochę systemem materiałów który doczekał się w końcu dziedziczenia :] pomaga to wielce w tworzeniu nowych materiałów. Zmienił się również system OCtree który w razie potrzeby potrafi się już rozszerzyć (w stosunku do wejściowego obszaru).

No i dość dynamicznie rozwija się również edytor. Jak widać na screenie jestem już w stanie stworzyć prostą scenę jednak jeszcze dość długa droga zanim będzie można w nim łatwo i wygodnie tworzyć lokacje gry.

Monday, July 26, 2010

Wielki powrót (naprawdę wielki)

Ostatnio trochę zaniedbywałem bloga. Ale postaram się wrzucać od teraz posty w miarę regularnie. Co z tego wyjdzie ? Czas pokaże :] jak zawsze.

No ale przejdźmy do tego czym się ostatnimi czasami zajmowałem a trochę tego było.
Na zajęcia z Realistycznej Grafiki Komputerowej prowadzonych przez dr Andrzeja Łukaszewskiego tworzyłem ray tracing oraz path tracing. Nie obyło się bez problemów ale ogólnie kurs był według mnie prowadzony był świetnie. Nie ograniczał się tylko do jakichś podstaw ale pokazywał dużo technik o których przed kursem nie miałem zielonego pojęcia. Niestety mogłem uczestniczyć najczęściej tylko na jedną część wykładu gdyż kolidował on z zajęciami na mojej uczelni. Ale i tak uważam mimo wszystko, że nauczyłem się na nim naprawdę wiele :] Poniżej zamieszczam parę renderków z mojego programu.





Wprowadziłem też własny format plików dla shaderów:

set path='./data/'

def perPixel : vert ('perPixel.cg','matVP')
{
modelViewProj = MODELVIEWPROJ_MATRIX
}

def perPixel : frag ('perPixel.cg','matFP')
{
lightPos0 = LIGHT0_POSITION
lightPos1 = LIGHT1_POSITION
eyePos = CAMERA_POSITION
}

Oraz dla materiałów:

-- ********************************************************
-- Tank M26 pershing material
-- ********************************************************
def TankM26
{
technique default
{
color = [0.8,0.8,0.8,1.0]
cullface = back
pass
{
texture decalMap = TankM26_D.dds
texture normalMap = TankM26_NH.dds
texture shadowMap = shadow.dyn
shader all = normalMapping_shadow
}
}
}
Przy okazji skleciłem prosty system podświetlania składni dla poszczególnych formatów w moim ulubionym edytorze Vim :] Przerzucenie się na nowe formaty otworzyło przede mną nowe możliwości a całość kody jest dużo bardziej czytelna niż zapis w formacie XML którego wcześniej używałem. W silniku doszło też parę opcji w które w końcu udało mi się w implementować (zebrałem się do nich w końcu). Na koniec czerwca powstała jedna z nich a mianowicie obsługa formatu zip :] sprawuje się całkiem nieźle przy małych plikach z dużymi ma trochę problemów ale też postaram się w końcu przysiąść i to zmienić :] o pozostałych zmianach wspomnę przy innej okazji bo i tak się rozpisałem.

Oddzielny post przeznaczę też na powierzchnie i krzywe o których się uczyłem na zajęciach. Na koniec wspomnę jeszcze, że obecnie poświęcam się głównie tworzeniu gry pod logiem ADW. Ale o niej wspomnę przy innej okazji. Póki co to tajemnica :].


Sunday, June 6, 2010

Efekty pełnoekranowe

Dawno nic nie wrzucałem. Ale ostatnio trochę bawiłem się efektami pełno ekranowymi i oto co wyszło:

SSAO


Fov


Blur


Jakiś efekt który mi wyszedł :]


Niestety efekty nie zachwycają ale czego można oczekiwać po zintegrowanej karcie graficznej intela na moim laptopie :]

Thursday, March 4, 2010

Fotografia

Przez ostatni czas nie tylko bawiłem się grafiką robioną na kompie. Ćwiczyłem również fotografię, efekty moich eksperymentów można zobaczyć poniżej: