18 05 2010
Opublikowano w Programowanie  |  2 Komentarzy
Tagi: , , , , , , ,

Gra platformowa

Mało wpisów na blogu nie oznacza braku programistycznych prac. Dzisiaj podzielę się jednym z ostatnio realizowanych projektów. Będzie to coś nowego: platformowa gra trójwymiarowa. Pisałem ją w ramach zaliczenia na jeden z uczelnianych przedmiotów. Od początku zakładałem by uczynić ją jak najprostszą, a jednocześnie poznać kilka ciekawych narzędzi. Wersja, którą udostępniam zawiera jeden poziom (zapisany w pliku *.xml) i nie obsługuje trybu kampanii. Mimo wszystko można się nią troszkę pobawić. Co jak co granie w grę, którą stworzyło się samemu jest bardzo satysfakcjonujące. Na czym polega rozgrywka? Najlepiej odzwierciedli to nagrany przeze mnie materiał.

Prezentacja

Technicznie

Marzyło mi się napisanie aplikacji, która działała by płynnie w przeglądarce internetowej. Nie mogłem wykorzystać webgl-a ponieważ moja karta graficzna go nie obsługuje. Zostało mi O3D (3D w przeglądarce od Google), które działało nad wyraz dobrze. Gorzej się miały sprawy z silnikiem fizycznym (Box2D). Początkowo nie było problemów – dopiero później wychodziły braki portu JavaScript. Fizyka była dla mnie na tyle ważna, że zrezygnowałem z takiego doboru narzędzi.
Drugim podejściem było połączenie Irrlicht-a (silnika graficznego) z “normalną” wersją Box2D. Tutaj wszystko było jasne – programowało się miło i przyjemnie ;) Po bardzo dużej ilości godzin pracy, gra została wzbogacona o dźwięk (w oparciu o Irrklang) oraz język skryptowy Lua (z wrapperem Luabind). Choć gra nie jest skończona można ją uznać za grywalną. Cel projektu – osiągnięty.

Kolejna wersja

Co do przyszłości projektu: nie będę już więcej nad nim pracował. Udostępniam źródła, które każdy może sobie przejrzeć bądź zmodyfikować.

Kompilacja – Ubuntu

Skompilowanie oraz uruchomienie gry wymaga w systemie kilku paczek:

  • build-essential
  • irrlicht1.7
  • irrlicht-dev
  • libbox2d0
  • libbox2d-dev
  • liblua5.1-0
  • liblua5.1-0-dev
  • libluabind-dev
  • libluabind0.9.0
  • qt-creator

W raz z ich instalacją konieczne jest pobranie biblioteki IrrKlang, która nie jest dostępna w repozytorium. Po jej rozpakowaniu można otworzyć plik projektu (*.pro) QT Creator-a oraz upewnić się czy podane ścieżki INCLUDEPATH oraz LIBS są poprawne. Teraz można zbudować projekt.

Załączniki

Kod źródłowy + media

28 09 2009
Opublikowano w Programowanie  |  0 Komentarzy
Tagi: , , , , , ,

Coś w 3D

Jeden z ostatnich wieczorów przeznaczyłem na wykonanie prostego projektu – animacji 3D. Program wykorzystuje mój ulubiony zestaw narzędzi: bibliotekę QT oraz język C++. Za renderowanie grafiki odpowiada uniwersalne api OpenGL. Udostępniłem źródła, które być może okażą się dla Ciebie pożyteczne.

Galeria

Załączniki

Źródło

23 09 2009
Opublikowano w Programowanie  |  10 Komentarzy
Tagi: , , , ,

STasks

Od dłuższego czasu nie aktualizowałem plasmoidy STasks. Miałem ku temu wiele powodów. Brak czasu, nadmiar opcji, rozdmuchany kod – te wszystkie czynniki nie zachęcały mnie do dalszej pracy. Doszło do sytuacji, w której pojawiły się liczne aktualizacje mojego projektu. Jedne zapewniały poprawną pracę z nową wówczas wersją KDE 4.3. Inne rozszerzały plasmoidę o nowe funkcjonalności (fork Smooth Tasks). Wszystkim osobom, które komentowały mój projekt oraz przyczyniły się do jego rozwoju serdecznie dziękuję. Spotkałem się też z mniej radosnymi słowami STasks is dead. Z dniem dzisiejszym tracą na wartości – wracam do pracy. Jaki będzie nowy menadżer zadań?

Simple

Nowy STasks ma być przede wszystkim prosty. Prosty w sensie: intuicyjny, wydajny, dopracowany – nie prymitywny. Bogatszy w doświadczenia z poprzednimi wersjami piszę projekt niemal od zera. Staram się zapewnić dużą jakość kodu tak by był łatwy w utrzymaniu i mógł godnie leżeć w SVN-ie. Na moim pulpicie gości KDE 4.4 (trunk). STasks jest tworzone z myślą o tej wersji środowiska graficznego. Wybaczcie ale nie rozważam kompatybilności wstecz.

Gdzie jesteśmy

Na chwilę obecną oprogramowałem elementarne wyświetlanie zadań. Sposób w jaki to robię radykalnie, różni się od tego z czym spotkaliśmy się wcześniej. Światło widoczne na obrazku pochodzi z pliku svg. Rozwiązany został przy tym problem jego wychodzenia poza obramowanie – przy renderowaniu wykorzystywana jest maska. Oszczędza to użytkownikowi konfigurację a grafikom umożliwia przeniesienie wszystkiego do stylu Plasmy. Być może na obrazku zaobserwowałeś jeszcze jedną rzecz. Dolphin posiada podwójną ramkę z prawej strony. W nowej wersji STasks w taki sposób jest pokazywana grupa zadań. Nie potrzeba już do tego żadnych cyfr/symboli. Postanowiłem zrezygnować z rozwijania zadań. Wiem że wiele osób polubiło tą funkcjonalność ale nie będę jej tutaj dodawać. Za jej nieobecnością przemawia mniejsza wydajność rysowania Frame::Svg (zmiana rozmiaru wymusza wyłączenie cache tego komponentu) oraz mnogość kombinacji, które później trzeba rozpatrywać. Zastanawiam się nad obecnością aktywatorów w plasmoidzie. Możliwe że ich również nie będę dodawał na rzecz osobnej plasmoidy (SLaunch?), która mogła by wyglądać tak. Co o tym myślicie?

Wszelkie komentarze będą pomocne. Pozdrawiam.

08 07 2009
Opublikowano w Programowanie  |  2 Komentarzy
Tagi: , , , , , , ,

Malutki programik

Zostałem poproszony o napisanie programu, który odwiedzałby strony podane w formularzu co określony czas. Zleceniodawcy zależało na tym by program działał na produktach z rodziny Windows. Ważne było również ukrywanie aplikacji w zasobniku systemowym. Jak widać nic skomplikowanego. Tego typu rzeczy wykonuję od ręki. Tworząc program posłużyłem się środowiskiem Qt Creator (jestem zaskoczony wygodą tego narzędzia). Dla wszystkich zainteresowanych udostępniam kod źródłowy.

Galeria

Załączniki

QCron – Źródło