Bojkar\'s dev blog
sty 31

Witam. Dawno już tutaj nie pisałem ale było to spowodowane małymi zawirowaniami w moim życiu. Było to przede wszystkim napisanie pracy inżynierskiej, zmiana pracy, tworzeniem pewnego nowego projektu oraz kończenie studiów. Ale o tym więcej napisze w kolejnym wpisie.

Tym pewnym projektem, który tworzyÅ‚em jest www.e-notatka.pl. Jest to serwis, który oferuje tworzenie i trzymanie swoich notatek w internecie. SkÄ…d pomysÅ‚ na ten projekt? Z potrzeby. Nie raz bÄ™dÄ…c gdzieÅ› poza domem znalazÅ‚em ciekawy link, informacjÄ™ czy też prowadziÅ‚em ważna rozmowÄ™, którÄ… chciaÅ‚em przenieść na swój domowy komputer. MusiaÅ‚em wtedy zapisywać wszystko na kartkach (które później niestety siÄ™ gubiÅ‚y albo zwyczajnie nie mogÅ‚em siÄ™ rozczytać :) ) albo musiaÅ‚em wysyÅ‚ać te rzeczy sobie na maila, co nie jest “eleganckie” i wygodne. BrakowaÅ‚o mi internetowego notatnika do którego bÄ™dÄ™ miaÅ‚ dostÄ™p z każdego miejsca na Å›wiecie, nie ważne czy bÄ™dÄ™ na uczelni, w pracy, czy poza granicÄ… Polski. CaÅ‚y serwis i aplikacje wykonaÅ‚em i zaprojektowaÅ‚em sam (projekt graficzny strony jest tylko autorem grafika)
Sam pomysÅ‚ projektu nie jest może innowacyjny ale jego wykonanie tak. Do stworzenia samej aplikacji użyÅ‚em oczywiÅ›cie Adobe Flex’a. Aplikacje oparÅ‚em o system okienkowy, w którym każda notatka jest oknem, które można przemieszczać, zmieniać jego rozmiar, minimalizować oraz maksymalizować. Oprócz tego serwis umożliwia zmianÄ™ koloru notatki, oznaczenie jej jako ważnej (pojawia siÄ™ wykrzyknik obok tytuÅ‚u) oraz zablokowanie (pojawia siÄ™ kłódka obok tytuÅ‚y i dopóki notatka jest zablokowana, nie można jej usunąć). Możliwe jest również dzielenie siÄ™ notatkami poprzez wysÅ‚anie notatki na e-mail bÄ…dź udostÄ™pnienie przez www. Co ciekawe aplikacja jest caÅ‚kowicie darmowe i pozbawiona reklam. Zobaczcie sami:
Serwis:  www.e-notatka.pl
Demo:  www.e-notatka.pl/demo/
Możliwości: http://www.e-notatka.pl/mozliwosci.html

Plany? Mam już kilka pomysłów ale nie na razie nie chce bardzo się nimi dzielić. Będą to dodatkowe funkcjonalności poprawiające użyteczność notatek oraz personalizowanie systemu. Oprócz tego chce stworzyć aplikacje mobilną, która umożliwi łatwiejsze dodawanie i przeglądanie notatek z urządzeń mobilnych.

Screeny:

P.S.

Aktualnie szukam patrona medialnego serwisu oraz troche rozglosu o nim. Więc jeśli chcesz coś napisać o aplikacji na swojej stronie/blogu i dowiedzieć się coś wiecej, skontaktuj się ze mną.

gru 1
C.d.
icon1 admin | icon2 c++, engine, projekty | icon4 12 1st, 2009| icon3No Comments »

Ostatnio naszÅ‚o mnie na dodanie konsoli do silnika, nie żadnej wypaÅ›nej z tysiÄ…cami komend a zwykłą konsole do wyÅ›wietlania logów. Teraz bez wychodzenia z aplikacji mogÄ™ sprawdzić logi z silnika.  Przy pisaniu konsoli dodatkowo doszÅ‚a obsÅ‚uga fontów. ZastanawiaÅ‚em siÄ™ chwile nad wybraniem odpowiednich dla mnie.  Wybór w sumie padÅ‚ na zwykÅ‚e fonty bitmapowe lub FreeType. WybraÅ‚em jednak FreeType z tego wzglÄ™du, że przy fontach bitmapowych jestem nieco uzależniony od formatu textur fontów, czyli generujÄ…c fonty bitmapowe różnymi programami, implementacja ich byÅ‚a by różna. Można byÅ‚o do tego “zaprząść” xml wraz ze kodami asci poszczególnych literek + ich współrzÄ™dne ale znowu wtedy bym musiaÅ‚ wszystko rÄ™cznie edytować co też nie jest fajne. FreeType też nie jest różowy (np. w przypadku “customowych” fontów) ale w moim przypadku bardziej odpowiednie. Wystarczy, że wczytam sobie zwykłą czcionkÄ™ ttf i mogÄ™ niÄ… pisać po ekranie. Do implementacji FreeType’a użyÅ‚em biblioteki FTGL (http://sourceforge.net/projects/ftgl/). Dość fajne i proste w obsÅ‚udze API, która potrafi rysować fonty jako textury czy nawet jako meshe.

DrugÄ… nowoÅ›ciÄ…, w moim silniku jest obsÅ‚uga dźwiÄ™ku. Tutaj posÅ‚użyÅ‚em siÄ™ OpenAL. Biblioteka jest bardzo przyjemna (szczególnie dla opengl-owców) w implementacji, dobrze udokumentowana i ma za plecami Creative’a. NapisaÅ‚em maÅ‚y wrapper na wÅ‚asne potrzeby, który obsÅ‚uguje WAV-y (OpenAL  posiada gotowe funkcjÄ™ do wczytywania) oraz OGG. ObsÅ‚ugÄ™ OGG musiaÅ‚em już sam napisać ale byÅ‚o to bajecznie proste, do tego sÄ… tysiÄ…ce tutoriali w necie na ten temat. Oprócz tego udaÅ‚o mi siÄ™ w koÅ„cu (wczeÅ›niej nigdy tego nie pisaÅ‚em) zaimplementować dźwiÄ™k 3D, co daje bardzo fajny efekt. Po pierwszych testach byÅ‚em miÅ‚o zaskoczony efektem. Tutaj warto zwrócić uwagÄ™ na maÅ‚y szczegół. Jak bÄ™dziecie kiedyÅ› implementować dźwiÄ™k 3D pod OpenAL i nie bÄ™dzie Wam dziaÅ‚aÅ‚, upewnijcie siÄ™,  że dźwiÄ™ki sÄ… w mono, bo możecie na tym stracić kilka godzin i kupkÄ™ nerwów :)

Nie długo postaram się zrobić jakieś krótkie tech-demko i udostępnić.

lis 5
icon1 admin | icon2 pozostaÅ‚e, projekty | icon4 11 5th, 2009| icon3No Comments »

Witam po kolejnej sporej przerwie. Przez ten czas sporo siÄ™ zmieniÅ‚o. Ze wzglÄ™du na (nieszczÄ™sne) studia już od października z powrotem jestem w biaÅ‚ej. Dwa miesiÄ…ce, które spÄ™dziÅ‚em w firmie “Game-Lion” uważam za bardzo udane, przez ten czas zdobyÅ‚em “trochÄ™” doÅ›wiadczenia, miaÅ‚em do czynienia z dwoma platformami (wii oraz psp) i poznaÅ‚em profesjonalny game-deve “od kuchni” oraz pracowaÅ‚em nad jednÄ… z gier tejże firmy. Tak jak jednak wczeÅ›niej wspomniaÅ‚em mimo moich chÄ™ci oraz firmy Game-Lion nie mogÅ‚em dalej tam pracować ze wzglÄ™du studiów jak już wczeÅ›niej wspomniaÅ‚em (najwiÄ™kszÄ… przeszkodÄ… byÅ‚a odlegÅ‚ość, inaczej przeszedÅ‚bym na zaoczne). WiÄ™kszość czasu tej pracy spÄ™dziÅ‚em nad tÄ… grÄ…: http://game-lion.com/blockcascade.html. Moim zadaniem byÅ‚o “z portowanie” tej gry na psp oraz dodanie kilku featuresów. Ale o samych doÅ›wiadczeniach, pracy i Szczecinie napisze innym razem. Aktualnie znów wróciÅ‚em do dawnej firmy Cyber.pl (do “szmaciaków”).
Drugim news’em jest to, że udaÅ‚o mi siÄ™ podciÄ…gnąć mój silnik pod pracÄ™ inżynierskÄ…, dziÄ™ki temu nie muszÄ™ robić jakiÅ› dodatkowych “bzdur” w ramach tej prace. No i może bÄ™dzie to dodatkowy bodziec do pracy nad silnikiem :) Także to tak pokrótce o tym co siÄ™ u mnie dziejÄ™ i nie dÅ‚ugo pojawi siÄ™ post który bÄ™dzie już bardziej techniczny i treÅ›ciwszy a przede wszystkim mam nadziejÄ™, że bÄ™dzie mniejsza przerwa czasowa niż ostatnio :)

sie 24
LUA in da house
icon1 admin | icon2 c++, engine, programy | icon4 08 24th, 2009| icon37 Comments »

No i udaÅ‚o mi siÄ™ w koÅ„cu to co planowaÅ‚em od dÅ‚uższego czasu ale nigdy nie mogÅ‚em siÄ™ zebrać. Od wczoraj mogÄ™ siÄ™ cieszyć podpiÄ™tÄ… lua’Ä…. DziÄ™ki temu w koÅ„cu mam rozgraniczonÄ… logikÄ™ gry od samego silnika. UdaÅ‚o mi siÄ™ nawet przepisać caÅ‚a logikÄ™ gracza na skrypty i dużą część samego silnika. Luabind spisuje siÄ™ tutaj bardzo dobrze. Tylko podczas przepisywania logiki pojawiÅ‚ siÄ™ pewien problem, który jest argumenty dla ludzi przeciwnych jÄ™zykom skryptowym a mianowicie debugowanie. JeÅ›li chodzi o pisanie skryptów w “czystym” lua to z debugowaniem wiÄ™kszego problemu nie ma, ale znowu jak podepniemy np. nasz wÅ‚asny silnik wtedy problem siÄ™ pojawia. Na szczęście nie jest z tym tak źle jak to wyglÄ…da. Z pomocÄ… przychodzi nam program o nazwie Decoda (http://www.unknownworlds.com/decoda), który jest bardzo fajnym debugerem lua. Program jest w peÅ‚ni aplikacjÄ… graficznÄ… (“konsolówki” fuuuu), posiada wÅ‚asny dość ciekawy edytor skryptów (wciÄ™cia, kolorowanie i podpowiadanie skÅ‚adni, itp), project explorer oraz to co nas najbardziej interesuje czyli debuger. Posiada on takie funkcjÄ™ jak: breakpoint’y, call stack oraz output czyli to co jest najbardziej potrzebne. Zasada dziaÅ‚anie jest bardzo prosta, tworzymy nowy projekt zaznaczamy exe’ka w którym używamy naszych skryptów, ustawiamy “working directory”, wciskamy F5 (skÄ…d my to znamy..) i odpala siÄ™ nasza aplikacja, Decoda sama wczytuje skrypty użyte w niej i zaczynamy debugować. Sama zasada dziaÅ‚ania debugera jest bardzo podoba jak ta w Visuala, wiÄ™c nie ma problemu z jej obsÅ‚ugÄ….
Ogólnie program oceniam bardzo pozytywnie, jest tym czego szukaÅ‚em, teraz pisanie skryptów jest o wiele Å‚atwiejsze. CiekawostkÄ… jest to, że aplikacja umożliwia debugowanie pod konsolami xbox360 oraz ps3. Niestety aplikacja nie jest darmowa, no ale w sumie nie ma co siÄ™ temu dziwić. Pocieszeniem jest cena, która nawet w naszym kraju nie jest wygórowana. Licencja indie kosztuje 50$ natomiast licencja “peÅ‚na” jest już droższa i już nie taka niska bo 400$, ale myÅ›lÄ™, że dla sporej części osób licencja indie (dla firm i osób których roczny dochód nie przekracza 100k$) jest wystarczajÄ…ca.

decoda
sie 21
Co w silniku piszczy
icon1 admin | icon2 c++, engine, projekty | icon4 08 21st, 2009| icon31 Comment »

OdkÄ…d mieszkam w Szczecinie wieczorami mam trochÄ™ czasu i mogÄ™ znowu wrócić do silnika. Jako, że dawno już tam nie zaglÄ…daÅ‚em musiaÅ‚em trochÄ™ “poodkurzać”. Na dobry poczÄ…tek jako, że silnik siÄ™ rozrasta dodaÅ‚em namespace’y i część metod zamieniÅ‚em na const’owe. Dalej przerobiÅ‚em mojÄ… leciwÄ… i lekka kulejÄ…cÄ… (ale dziaÅ‚ajÄ…cÄ…!) serializacje. Teraz zamiast kilku metod postanowiÅ‚em sobie przeciążyć operator << (serializacja) i >> (deserializacja) i do tego jest maÅ‚y menedżer archiwów. Jak to wszystko dziaÅ‚a? Najpierw oczywiÅ›cie musimy stworzyć klasÄ™ archiwatora (czyli tam gdzie bÄ™dziemy zapisywać / odczytywać dane) implementujÄ…cÄ… interfejs IArchive. NastÄ™pnie musimy obiekt tego archiwum (oczywiÅ›cie menedżer zadba o to, żeby nie tworzyć 2 razy tego samego archiver’a). Teraz możemy już do niego zapisywać / odczytywać:


//serialize
arch << someInt << someVector << someOther;
//deserialize
arch >> someInt >> someVector >> someOther;

Oprócz tego do silnika dodaÅ‚em obsÅ‚ugÄ™ skryptów. ZdecydowaÅ‚em siÄ™ na bardzo popularna lua’e. Szczerze mówiÄ…c sama skÅ‚adnia bardziej mi siÄ™ podoba w AngelScript ale za lua przemawia jej szybkość oraz jej popularność wÅ›ród gamedeveloperów. Do połączenia lua’y z C++ użyÅ‚em biblioteki luabind, która w bardzo Å‚atwy sposób pozwala na “zbindowanie” lua’y do C++. Teraz dziÄ™ki temu caÅ‚a logika gry bÄ™dzie spoczywać na skryptach i bÄ™dzie można jÄ… Å‚atwo modyfikować bez ponownej kompilacji kodu (również przez osoby trzecie).
UdaÅ‚o mi siÄ™ również dodać klasÄ™ do obsÅ‚ugi klawiatury oraz myszki. Teraz w bardzo Å‚atwy i przystÄ™pny sposób mogÄ™ mieć obsÅ‚ugÄ™ tych dwóch urzÄ…dzeÅ„ w każdym miejscu silnika (oraz skryptów). PodłączyÅ‚em też już część PhysX, tj. character controler oraz mesh cooking, muszÄ™ jeszcze do edytora “dopiąć” opcje fizyczny dla aktorów.
Na dzieÅ„ dzisiejszy zostaÅ‚o mi dopracowanie meanedżera serializacji, skoÅ„czenie peÅ‚nego podpinania silnika do lua’y, refactoring fabryki klas, oraz klasa do dźwiÄ™ku i w koÅ„cu bÄ™dÄ™ mógÅ‚ siÄ™ wziąć za renderer :)

sie 6

Dzisiaj w pracy natknałem się na bardzo głupi błąd, nad którym starciłem kilkanaście cennych minut. Może nie ma czym się chwalić ale warto zwrócić na to uwagę. Dodawałem do pewnego modułu, functor i chciałem go przetestować w ten oto sposób (pseudo kod):


void Init()
{
      Functor<CFoo> func(&mFoo, &CFoo::foo);
      myObj->SetFunctor(&func);
}

Jakież było moje zdziwienie, gdy poźniej chciałem wywołać mojego functora, oczywiście poza metoda Init() :) Ciekawe co się stało z func i wskaźnikiem na niego po wyjściu z init? :) Na usprawidlenie mogę powiedzieć tylko to, że na platformę na jaką to było pisane nie używamy debugera z visual stuio i trzeba debugować narzędziem zewnętrznym i to dość "ciężkim".

Kolejną rzeczą o której chcę wspomnieć jest różnica w prędkości wykonywania się pre i post inkrementacji. Kiedyś w jakiejś książce dość starej książce wyczytałem żeby stosować pre inkrementacji zamiast postinkrementacji, i że niby to jest szybsze. Do tego dzisiaj kolega zwrócił mi na to uwagę w moim kodzie więc postanowiłem to sprawdzić na przykładzie kompilatora z visual studio 2008 express. Zrobiłem prosty przykład (pętla for wykonana 1000x z kilkoma mnożeniami i dodawaniami w środku) i dzięki pomocy kolegi który się zna na assemblerze zdeassemblorawalismy go. I co się okazało? Oba kody są identyczne :) Może w jakiś skomplikowanych przykładach jest jakaś znaczna różnica ale przy zwykłych forach i inkrementacjach przy dzisiejszych kompilatorach i procesorach, różnicy nie ma (przynajmniej mi się tak zdaje :) .

sie 4

No i udaÅ‚o siÄ™, od 3 dni siedze w nowym mieszkaniu w Szczecinie :) Od wczoraj pracuje w szczecinskiej firmie game-lion zajmujÄ…cÄ… siÄ™ tworzeniem i portowaniem gier. Dzisiaj minÄ…Å‚ mój drugi dzieÅ„ i oceniam go bardzo pozytywnie. Mieszkanie dostaÅ‚em narazie od firmy i jest ono 100m od siedziby wiec do pracy mam bardzo blisko. Pierwszy dzieÅ„ caÅ‚y zleciaÅ‚ na zaÅ‚atwianiu formalnoÅ›ci i konfiguracji stanowiska, i tak pod koniec dnia moje stanowisko z ndev’em(devkit do nintendo wii) i dodatkowym telewizorem bylo już gotowe:). DziÄ™ki temu od 2 dni pracuje w pracy w której zawsze chciaÅ‚em pracować zawodowo czyli w game-devie (do tego jeszcze mam możliwość pisania na konsole, gdzie raczej w domowych warunkach nie jest to możliwe). Na poczatÄ™k zostaÅ‚em zawalony dużą iloÅ›ciÄ… manuali i doc’ów od nintendo ale powoli to ogarniam, dzisiaj nawet udaÅ‚o mi siÄ™ coÅ› wyÅ›wietlić na ekranie :) Od dzisiaj pracujÄ™ nad jednÄ… z gier na wii i mam nadzieje, że troszkÄ™ mojego udziaÅ‚u w niej bÄ™dzie…

lip 16
icon1 admin | icon2 c++, engine | icon4 07 16th, 2009| icon31 Comment »

Witam. Znowu niestety zaniedbałem ostatnio devbloga i już dawno nie pojawiał się tutaj żaden wpis. Nie bedę tutaj znowu nudził, że brak czasu i pełno zajęć tylko odrazu przejdę do rzeczy. Co się ostatnio działo? Troszkę się działo, niestety w silniku dużych postępów nie zrobiłem nad czym ubolewam. Udało mi sie tylko napisać okno do statystyk w edytorze oraz manedżer efektów postprocessingowych, dość prosty ale skuteczny. Jak działa? Na początek oczywiście trzeba dodać jakies efekty. Aby to zrobić trzeba wykonać jedną metodę gdzie podajemy nazwę tego efektu oraz scieżkę do fragment i vertex programu. Np. tak:

m_postProcessing.Add(“Bloom”, “data/shaders/test.vp”, “data/shaders/test.fp”);

NastÄ™pnie w metodzie renderujÄ…cej musimy dodać na poczÄ…tku: m_postProcessing.Begin() oraz na koÅ„cu m_postProcessing.End(). Jak włączyć dowolny efekt? Wystarczy go “zbindowac” metodÄ… “Bind”, której jedynym argumentem jest nazwa efektu. Okno które widzicie na screenie poniżej jest “samo uzupeÅ‚niajÄ…ce”, czyli po dodaniu efektów do managera okno samo siÄ™ zaaktualizujÄ™ i pokaże dostÄ™pne efekty, także integracja w kod jest minimalna.

editor.jpg

Z kolejnych nowości to prawdopodobnie od sierpnia bedę pracował w nowej firmie, niestety położonej dość daleko od mojego miejsca zamieszkania ale za to będzie to moja pierwsza praca w gamedevie, ale żeby nie zapeszać to o tym napiszę w sierpniu jak już wszystko będzie pewne.

cze 20
icon1 admin | icon2 flex, pozostaÅ‚e | icon4 06 20th, 2009| icon34 Comments »

Witam wszystkich. Już dawno nie było żadnego wpisu, i pewnie część myślała, że już mój devblog mi się znudził. Nie jest jest to prawdą ponieważ przerwa była wywołana połączeniem kilku czynników: sesja, cranchtime w pracy oraz drużba na weselu. Tak się złożyło, że wszystkie te rzeczy nastąpiły na raz i zjadły mi cały czas (tak to jest jak sie w tydzień zalicza cały semestr na uczelni :) ).
Z programistycznych rzeczy to silnika niestety nie miaÅ‚em jak i kiedy ruszyć ale teraz już mam wiÄ™cej wolnego czasu i przeznacze go na budowÄ™ silnika. Na pierwszy ogieÅ„ idÄ…: dokoÅ„czenie systemu materiałów,  cienie (najprawdopodobniej shadow mapy), woda oraz dodatkowe efekty post-processingowe (DOF, etc). W pracy caÅ‚y czas koÅ„czÄ™ wielki system do obsÅ‚ugi targów, dzisiaj kod przekroczyÅ‚ magicznÄ… granice 1mb :) , ale pocieszajÄ…ce jest to, że duża część modułów jest już zaimplementowana (pliki, wiadomoÅ›ci, itp). Projekt już piszÄ™ ponad miesiÄ…c i przez ten czas muszÄ™ stwierdzić, że flex oraz pureMVC dajÄ… radÄ™, wzorzec MVC bardzo uÅ‚atwie pisanie tak dużych aplikacji. Z ciekawostek, to jeszcze zostaÅ‚em poproszony przez jednego z wykÅ‚adowców o przygotowanie prezentacji na temat podstaw programowania gier na spotkanie mÅ‚odzieży ponadgimnazjalnej na naszej uczelni. Nawet udaÅ‚o mi siÄ™ jakoÅ› tÄ… prezentacje zÅ‚ożyć i wygÅ‚osić, jak uporzÄ…dkuje jÄ… to postaram siÄ™ wystawić jÄ… tutaj. Teraz mam nadzieje, że kolejny wpis bÄ™dzie już “podparty” jakimÅ› ciekawym screenem z silnika.

maj 16
Komenatrze
icon1 admin | icon2 bez kategorii | icon4 05 16th, 2009| icon33 Comments »

Dopiero po pewnym czasie zauważyłem, że komenatrze nie działaja. Po długiej walce udało mi się to naprawić. Więc jeśli ktoś wcześniej dodał jakiś komentarz i nie zobaczył go na blogu, proszę jeszcze raz go dodać. Winny był plugin anty spamowy, który był aktywny a nie był widoczny w zakładce plugins. Ale udało się na szczęście go usunąć. To ja tyle ;)

« Previous Entries