26 czerwca 2011

Zmiana rejsu

Przez ostatnie trzy dni moją uwagę skierowałem na zapoznanie się ze sposobem programowania dynamicznych gier. Wiadomo tam gdzie ruch tam i kolizję, które należy wykryć i obsłużyć reakcjami. Bardzo przypadł mi do gustu ten temat, a także to, że jest powiązany z fizyką, za którą nie przepadałem!

Korci mnie wykonanie własnego SpriteEngine, który zajmowałby się wyświetlaniem spritów, animacji, a także wspomnianą detekcją kolizji.

Poza tym chciałbym nauczyć się renderować znacznie ciekawsze rzeczy niż tylko pliki graficzne. Ciekawi mnie jak narysować programowo deszcz, dym czy ogień.

To przyszłe programowanie nie będę opierał o język actionscript3. Nie dla tego, że AS3 to "skopany język :-)". Da się w nim programować i wielu tego uświadcza. Własny engine pewnie i w tym języku mógłbym wykonać. Czego przykładem jest projekt flixel. Mnie chodzi po prostu o to, że nie chce się zamykać tylko na webowe rozwiązania.


Myślę, że lepiej będzie jeśli mój silnik wykonam w oparciu o OpenGL, wtedy zdobędę wiedzę, która jednocześnie przyda mi się na wielu platformach, a tymsamym umożliwi mi lepszy start w grafice 3D.

Uwaga:
Za kilka dni podam adres na mój kolejny blog o programowaniu w OpenGL.


24 czerwca 2011

Porównywanie obiektów

Rzeczowo ujmując, porównywanie obiektów w AS3 jest bardzo trudne, o ile możliwe. Osobiście nie mam pomysłu jak można porównać dwa obiekty tej samej klasy.

Szperając w google, znalazłem informację (ostatni post), aby oba obiekty zapisywać do postaci bajtowej, a następnie bajt po bajcie je porównywać, aż do przerwania.

Nie wiem czemu, ale u mnie to nie działa. W związku z zaistniała sytuacja utworzyłem wątek na devpytania, lecz nikt do tej pory, nie udzielił mi odpowiedzi.

Rozwodząc się dalej nad problemem, dopowiem, że jeszcze gorzej ma się cześciowe porównywanie obiektów, to znaczy w oparciu o kilka parametrów, a nie wszystkie.

AS3 nie ma wsparcia dla funkcji porównywania. To znaczy, nie ma tu takiej możliwości jak w Java czy C++, gdzie można w funkcji porównywania uzyskać prywatne atrybuty drugiego obiektu. Oznacza to, że w wielu przypadkach skazanym jest się na upublicznianie stanów obiektu.

Rozumiem, że AS3 jest z gatunku tych lżejszych języków, ale czemu do diaska mamy tu tak zaniedbany fundament? Najbardziej ironiczne jest to, że mamy tutaj operator == dla stringów, czego nie można zaświadczyć u Javy :-) . Pytanie, czemu tylko na tym poprzestano?

23 czerwca 2011

Pierwsze demo: Simpsons Memory Game

Po wielu godzinach zmagań z AS3 udało mi się stworzyć pierwsze demo gry.


Jest to klasyczna gra w pamięć. Gra w chwili obecnej nie osiągnie wysokich notowań, bo wiele rzeczy zostało wykonanych na odwal. Nie dodałem żadnego intra z instrukcją, nie mam żadnego podkładu muzycznego, a sam  interfejs użytkownika jest zbyt statyczny. Ogólnie zdałem sobie sprawę, że nie wszystko da się polubić w tworzeniu gier.

Mnie największą frajdę sprawiło implementowanie relacji jaka występuje pomiędzy kartami.

22 czerwca 2011

Sposób na random int

Standardowy moduł Math oferuje tylko jedna funkcja, która losuje liczbę zmiennoprzecinkową z zakresu od 0 do 1. To powoduje, że dość wkurzające jest losowanie liczb całkowitych. Trzeba robić do tego osobną funkcję. Zupełnie nie rozumiem czemu mam tu tak ubogi asortyment standardowych funkcji. Już język python oferuje lepsze wsparcie. 

Czy tylko mnie się tak wydaje?

Oto moja funkcja do losowania liczb całkowitych z podanego przedziału.

Własny kursor

Aby nadać grze lepszego klimatu można standardowy wygląd kursora zastąpić czymś bardziej szykownym, np. ręką orka, czy rózgą czarodzieja. 


Wykonanie takiej sztuczki nie jest trudne wystarczy po prostu schować mysz i  co odświeżenie klatki rysować własny obrazek w miejscu współrzędnych "niewidzialnego" kursora.