ThemeFestival na wybiegu, czyli modele

Wszystko, co chcemy w grze zobaczyć, z czym ma następować interakcja trzeba jakoś narysować. Natomiast wszystko, co chcielibyśmy narysować składa się z trójkątów – to dla tego prymitywu graficznego dostępne jest od lat sprzętowe wsparcie rysowania, wypełniania kolorem i teksturowania.

Bez obaw, nie porywam się na ręczne tworzenie całej graficznej zawartości gry i potem ręczne przekazywanie każdego trójkąta do rysowania. Skorzystamy z dobrodziejstw biblioteki XNA, która daje możliwość ładowania, wstępnej obróbki oraz wyświetlania siatek ładowanych z plików. Te natomiast można zrobić samemu w programach typu Maya lub Blender, lub poszukać w sieci darmowych wersji.

Dalej »

Pomysły, pomysły, pomysły..

A właściwie pomysł.. na Theme Festival. Zrodził się podczas leżenia błogo na terenie lotniska Kossakowo w Gdyni podczas tegorocznego Open’era. Dyskutując o skali tego przedsięwzięcia, różnych jego aspektach i trudnościach z organizacją takiej imprezy zaczął pałętać się po głowie POMYSŁ.

Dalej »

Deus ex adfectus machina – menedżer stanów

Skąd taki tytuł?

Deus ex machina (łac.) – Bóg z maszyny

adfectus (łac.) – stan

Za Eurypisesem wprowadzę do Theme Festival coś, co szybko rozwiąże problem zarządzaniem grą, „aby akcja nie trwała zbyt długo” (za Wikipedią). Ten wpis poświęcę koncepcji menedżera stanów, „Boga z maszyny stanów”.

Dalej »

[XNA] Kamera FPP

Bardzo ważnym elementem gry jest kamera. Można ją sobie rzeczywiście wyobrazić jako kamerę przekazującą obraz z konkretnego miejsca sceny, pod odpowiednim kątem i wysyłającą obraz na ekran. Pod spodem siedzi jednak kilka macierzy. Każdy wierzchołek jest przez te macierze mnożony, a finalnym wynikiem jest pozycja (ważne, dwuwymiarowa) na ekranie.

Dalej »

Własna funkcja w Excelu

Kolejna, po wpisie o eksporcie danych, notka o Excelu.

Zauważyłem, że ostatnio sporo czasu traciłem na eksporcie danych z Excela do ustalonego z góry formatu tekstowego (wartości z poszczególnych kolumn rozdzielone backslash’em). Gdy kolumn było mało (2-3) wpisanie formuły:

=A2&"\"&B2

zajmowało chwilę, gorzej gdy ilość kolumn zaczęła przekraczać 30..

Dalej »

Osadzanie XNA 4.0 w Windows Forms

XNA 4.0 jest bardzo przyjemnym frameworkiem do programowania gier: ma bogatą bibliotekę matematyczną, kilka predefiniowanych efektów (shaderów), dzięki którym można po krótkiej chwili zobaczyć efekt swojej pracy na ekranie. Brakuje jej natomiast bardzo według mnie istotnego elementu, jakim jest biblioteka do obsługi graficznego interfejsu użytkownika (Graphical User Interface, dalej będę posługiwał się skrótem GUI). Z drugiej strony, pisząc już kilka lat aplikacje pod .NET, projektując GUI zawsze myślę w kategoriach Windows Forms – przyzwyczaiłem się, i tyle. W dalszej części wpisu przedstawię sposób na połączenie obu technologii – stworzenie „WindowsFormsowej” formy, osadzenie na niej kilku kontrolek do sterowania aplikacją (będą to zwykłe przyciski), uruchomienie na formie renderowania za pomocą XNA oraz reagowanie na akcje użytkownika wewnątrz obiektu Game.

Dalej »

„Daj się poznać” – 63. uczestnik

Nie ma chyba w Polsce człowieka czytającego blogi „z branży”, który nie słyszałby o konkursie Maćka Aniserowicza „Daj się poznać”. Dla tych, którzy jednak nie słyszeli 😉 krótkie wprowadzenie: w okresie od 1 sierpnia do 15 listopada należy prowadzić projekt open-source wraz z blogiem na temat jego powstawania. Ma to rozruszać się polską techniczną blogosferę i pierwsze tego efekty zdążyłem zauważyć w ciągu ostatnich 2 tygodni. Osobiście traktuję udział w konkursie jako motywację do rozpoczęcia pewnego projektu, który od jakiegoś czasu chodzi mi po głowie. Jeżeli dodatkowo podszkolę się w paru technologiach (XNA + jakiś ORM) – będzie super. Jeszcze fajniej, jeżeli przy okazji uda się zdobyć jedną z nagród, których jest naprawdę sporo.

Projekt nosi tytuł: Theme Festival, konkrety nieco później, gdyż priorytety mam na razie inne. Całe szczęście Maciek wprowadził do regulaminu konkursu możliwą do wykorzystania przerwę w blogowaniu i pracy nad aplikacją, z której korzystam od razu ze względu na końcową fazę powstawania mojej pracy magisterskiej.

Stay tuned, bloga nie porzuciłem, podczas pracy nad magisterką pojawiło się parę ciekawych zagadnień, prace nad Theme Festival też mam nadzieję przyniosą kilka interesujących postów.

PS. Link do źródeł projektu (assembla): http://subversion.assembla.com/svn/themefestival/

No i twitter: http://twitter.com/cz0per

Short Tip #10: modyfikacja domyślnych szablonów plików VS2008

Każdy programista to leń, już kiedyś o tym pisałem 😉

Kiedy dodajemy do projektu nową klasę/interfejs/ogólnie plik z kodem* zawiera on określone z góry rzeczy (nazwa klasy, domyślną sekcję using itp.) Można zmodyfikować istniejący szablon plików, aby wygenerowany kod był od razu bardziej dostosowany do naszych potrzeb. W moim przypadku jest to wydzielenie regionów na pola, właściwości i metody (z podregionami publiczne/prywatne) oraz wygenerowanie domyślnego konstruktora klasy.

Osiągnięcie tego efektu jest proste:

  1. znajdujemy katalog, w którym zainstalowane jest Visual Studio (domyślnie to „C:\Program Files”
  2. wchodzimy do podkatalogu „Microsoft Visual Studio 9.0\Common7\IDE”
  3. są tam dwa katalogi, które nas interesują, ItemTemplates oraz ItemTemplatesCache. Zawartość obu będzie zaraz modyfikowana pod indywidualne potrzeby.

W „ItemTemplates\CSharp\Code\” znajdują się spakowane ZIP-em szablony podstawowych plików Class.cs, Interface.cs, CodeFile.cs (te same pliki znajdują się, tylko w postaci niespakowanej w „ItemTemplatesCache\CSharp\Code”) Można je zmodyfikować wewnątrz archiwum (dodając np. wspomniane już regiony i konstruktor), należy pamiętać, żeby używać słów kluczowych dla szablonu, które na etapie tworzenia zostaną zamienione. I tak:

  • $rootnamespace$ zostanie zamienione na (o dziwo) namespace odpowiedni dla projektu
  • $safeitemrootname$ (również o dziwo) na nazwę klasy wziętą z nazwy tworzonego w Wizardzie pliku.

Przykład, stworzenie nowej klasy:

entering class name

wygenerowany kod:

szablon:

* niepotrzebne skreślić/wymazać korektorem bezpośrednio na monitorze**

** jw.

Generyczna klasa zbioru

W projekcie, nad którym pracuję potrzebowałem przyzwoicie działającej klasy reprezentującej zbiór. Zbiór nie do końca w sensie teoriomnogościowym (o właściwościach takiego można przeczytać np. tu), posiadający jedną bardzo ważną cechę: przechowywanie unikalnych elementów.

Dalej »

Wyzwanie dla level-designerów

Easter-Egg

Projektanci poziomów w grach często starają się przewidzieć lokalizacje trudno dostępne, czy wręcz”sekretne”. Takie elementy dają spore możliwości – pełne „po horyzont” pole apteczek w grach FPP, potężny artefakt w RPG czy po prostu dodatkowe punkty / skrót w wyścigu w ścigałkach.

Taki secret jest też okazją do zaprezentowania poczucia humoru twórców, którzy mogą w takim miejscu umieścić easter-eggi w najróżniejszych postaciach.

Poniżej przykład miejsca chyba najlepszego na taki właśnie easter-egg, bo któż z nas nie zastanawiał się co jest za zamkiem, do którego na końcu każdego poziomu wchodził Mario..

Moja propozycja na design levelu na prawo od zamku:

level design for Mario

Macie inne propozycje?