Trochę oddalam się od tej koncepcji Zeldy, ale nie od koncepcji gry. Postać oznacza masę kłopotów z animacją i to nie natury programistycznej, a raczej mmm... artystycznej. Znaczy ktoś te wszystkie kolorowe obrazki przebierającego nóżkami ludka musi narysować. Pomnożone przez 20, bo przeciwnicy też nie mogą być sztywnymi kołkami.
A może jednak mogą? Gdyby wymienić ich na jakieś pojazdy, roboty, pospolite sprzęty? Na razie testuję koncepcję wymiany na figurę geometryczną. I różne koncepcje ruchu. To jest właściwie główna treść tego testu. Jak powinna poruszać się postać? No tak, jasne, klawisze kursora i mysz do strzelania. Tyle ustaliłem na początku. Ale co właściwie robi klawisz "Up"? Gdzie ma iść postać? W gorę ekranu? Przed siebie? W kierunku kursora? Co robi "Left"? Postać obraca się w lewo? Czy może raczej zaczyna strafować?
Zamiast czczych rozważań, lepiej napisać test - oto więc jest. Na dole są radiobuttony do trzech opcji, można potestować. Póki co, wychodzi mi jednak, że pierwsze rozwiązanie było najlepsze. Jakoś tak najłatwiej ogarnąć gdzie postać idzie, a gdzie ma iść. Ale jeszcze sprawdzę co się stanie, gdy ruch postaci wymienię na ruch tła pod postacią (tak przecież ma wyglądać to docelowo - postać na środku ekranu, a świat przewija się jej pod stopami).
Kolejny krok to będzie zatem dodanie tego świata, który mógłby się przewijać.
Link do obadania:
http://gramowanie.blox.pl/resource/SilverlightApplication2TestPage.html
sobota, 18 czerwca 2011
niedziela, 12 czerwca 2011
Podróbka Zeldy w Silverlight
Obijałem się strasznie ostatnio i w ogóle nie dotknąłem palcem mojego Bouldera. Ale za to, zachęcony nieopatrznym komentarzem torq314, rzuciłem się na Silverlighta niczym wilk na owieczkę. O, jakże łatwiej jest chwycić się nowego projektu (i nowej technologii), niż dociągnąć coś starego do końca. Pocieszam się myślą, że jak rozgrzebię 3 czy 5 projektów, to może powolutku-powolutku uda się któryś dopchać do poziomu przyzwoitości (o poziomie zajebistości na razie nie myślę).
W sumie to pomysł był na flashową Zeldę, ale... Ale póki co zamiast flasha jest silverlight. Co do Zeldy, to też nie jestem do końca przekonany. Może Linka zastąpię czołgiem lub - jeszcze lepiej - latającym spodkiem. Mniej zabaw z animacją.
Zaś Mario? Mario odkładam na później. Może jak najdzie mię ochotą zrobić coś w XNA.
To co jest teraz można zobaczyć tutaj:
http://gramowanie.blox.pl/resource/SilverlightApplication1TestPage.html
(Mam nadzieję, że działa nie tylko u mnie, nie wiem czy zrzuciłem na serwer wszystko co trzeba.)
A co jest? Jest animowana postać, którą poruszamy klawiszami strzałek (lub WSADem), myszką możemy strzelać. Strzałami. Celów nie ma, nie ma kolizji, nie ma mapy. Animacja jest tylko w jedną stronę, bo nie chciało mi się więcej rysować obrazków.
Jeszcze nie zrobiłem solidnego riserczu jeśli idzie o tworzenie gier w SL, więc parę rzeczy jest wykonanych po omacku. Sprajty to Image wrzucane na Canvas. Aktualizacja stanu gry jest w DispatcherTimer. Animacja ludka - podmiana Source w Image. Nie wiem, czy to jest najwłaściwsza ścieżka, ale (póki co) działa.
Jeśli nie opuści mnie zapał, to następne w kolejności będzie dodanie jakiejś mapy i kolizji (w tym zabijania przeciwników). Waham się, czy robić wielką scrollowaną mapę (tricky), czy osobne plansze jak w oryginalne (mowa o Zeldach 2D).
Fota jest na wypadek, gdyby były wątpliwości, czy wygląda tak jak ma wyglądać. Ma wyglądać tak:
W sumie to pomysł był na flashową Zeldę, ale... Ale póki co zamiast flasha jest silverlight. Co do Zeldy, to też nie jestem do końca przekonany. Może Linka zastąpię czołgiem lub - jeszcze lepiej - latającym spodkiem. Mniej zabaw z animacją.
Zaś Mario? Mario odkładam na później. Może jak najdzie mię ochotą zrobić coś w XNA.
To co jest teraz można zobaczyć tutaj:
http://gramowanie.blox.pl/resource/SilverlightApplication1TestPage.html
(Mam nadzieję, że działa nie tylko u mnie, nie wiem czy zrzuciłem na serwer wszystko co trzeba.)
A co jest? Jest animowana postać, którą poruszamy klawiszami strzałek (lub WSADem), myszką możemy strzelać. Strzałami. Celów nie ma, nie ma kolizji, nie ma mapy. Animacja jest tylko w jedną stronę, bo nie chciało mi się więcej rysować obrazków.
Jeszcze nie zrobiłem solidnego riserczu jeśli idzie o tworzenie gier w SL, więc parę rzeczy jest wykonanych po omacku. Sprajty to Image wrzucane na Canvas. Aktualizacja stanu gry jest w DispatcherTimer. Animacja ludka - podmiana Source w Image. Nie wiem, czy to jest najwłaściwsza ścieżka, ale (póki co) działa.
Jeśli nie opuści mnie zapał, to następne w kolejności będzie dodanie jakiejś mapy i kolizji (w tym zabijania przeciwników). Waham się, czy robić wielką scrollowaną mapę (tricky), czy osobne plansze jak w oryginalne (mowa o Zeldach 2D).
Fota jest na wypadek, gdyby były wątpliwości, czy wygląda tak jak ma wyglądać. Ma wyglądać tak:
niedziela, 22 maja 2011
Bowlder, ver. 0.7
Wrzucam źródła i binarkę do Bowldera. Błędy znalezione i poprawione, interakcja działa jak należy. Jeszcze przyjrzę się ruchom przeszkadzajek, ale to przy okazji dodawania nowych gatunków (ruch tylko w poziomie, ruch tylko w pionie, ruchome działko, śledzenie gracza, ruch losowy, etc.)
Parę elementów wymaga dopieszczenia graficznego, np. dlaczego zjadanie "trawy" sprowadza się do jej zniknięcia? Nie przeszkadzało to przy ruchu krokowym, ale przy płynnym wygląda słabo. Czy nie przydałaby się tu jakaś animacja? Muszę też dodać możliwość zdefiniowania innej liczby kamieni koniecznych do ukończenia poziomu.
Do zwalczenia: pierdzenie dźwięku w Windowsie. A może to wina plików muzycznych?
Windowsowa binarka: https://rapidshare.com/files/2816660835/Bowlder_07.zip
Źródła: https://rapidshare.com/files/1190000989/Bowlder_07_src.zip
Parę elementów wymaga dopieszczenia graficznego, np. dlaczego zjadanie "trawy" sprowadza się do jej zniknięcia? Nie przeszkadzało to przy ruchu krokowym, ale przy płynnym wygląda słabo. Czy nie przydałaby się tu jakaś animacja? Muszę też dodać możliwość zdefiniowania innej liczby kamieni koniecznych do ukończenia poziomu.
Do zwalczenia: pierdzenie dźwięku w Windowsie. A może to wina plików muzycznych?
Windowsowa binarka: https://rapidshare.com/files/2816660835/Bowlder_07.zip
Źródła: https://rapidshare.com/files/1190000989/Bowlder_07_src.zip
100 Bowlderów na sekundę
Chyba za dużo ostatnio czasu spędzam w GIMPie et consortes, tracąc czas na zabawę grafikami, zamiast programować. A i tak nic bardzo pięknego nie udaje mi się uzyskać. Tworzenie to ciężki kawałek chleba...
Uporałem się już za to z wydajnością (wreszcie śmiga na słowniku - teraz ta wielka plansza, która ostatnio zmulała do 20 klatek, teraz szumi w 100fps w trybie oszczędnym lapka, hell yeah), ruch płynny też już wszędzie chodzi tak jak bym chciał. No, może jeszcze ruch "potworów" (ostatnio przerobiłem je na wirujące ostrza) wymaga dopatrzenia, a nawet nie tyle ruch co ich interakcja (wciąż zdarza im się uniknąć zmiażdżenia przez kamień). Dodałem też beczki i skrzynki, które potrafią wybuchnąć w różnych okolicznościach i różnym promieniu (skrzynki docelowo mają eksplodować w klejnoty) oraz działko (to te fioletowe coś podobne do krzyża na obrazku) strzelajace w czterech kierunkach pociskami. Co zostało? Naprawić co wymaga naprawienia, a potem już tylko dodawać kolejne elementy. No i wreszcie zacząć projektować jakieś sensowne plansze. Z tym pewnie będzie najwięcej roboty.
Kody i binaria wrzucę później, bo mam jeszcze parę błędów.
Uporałem się już za to z wydajnością (wreszcie śmiga na słowniku - teraz ta wielka plansza, która ostatnio zmulała do 20 klatek, teraz szumi w 100fps w trybie oszczędnym lapka, hell yeah), ruch płynny też już wszędzie chodzi tak jak bym chciał. No, może jeszcze ruch "potworów" (ostatnio przerobiłem je na wirujące ostrza) wymaga dopatrzenia, a nawet nie tyle ruch co ich interakcja (wciąż zdarza im się uniknąć zmiażdżenia przez kamień). Dodałem też beczki i skrzynki, które potrafią wybuchnąć w różnych okolicznościach i różnym promieniu (skrzynki docelowo mają eksplodować w klejnoty) oraz działko (to te fioletowe coś podobne do krzyża na obrazku) strzelajace w czterech kierunkach pociskami. Co zostało? Naprawić co wymaga naprawienia, a potem już tylko dodawać kolejne elementy. No i wreszcie zacząć projektować jakieś sensowne plansze. Z tym pewnie będzie najwięcej roboty.
Kody i binaria wrzucę później, bo mam jeszcze parę błędów.
I na dobranoc obrazek:
wtorek, 17 maja 2011
Bowlder - walka o fps
Dodanie płynnego ruchu ujawniło problem, który wcześniej nie występował - przy planszy o rozmiarze 43x25 wydajność znacznie spadała (w okolice 20fps). Nie spodziewałem się, że w dzisiejszych czasach trzeba myśleć o optymalizacji jakiegoś dwuwymiarowego shitu rodem z lat osiemdziesiątych. Dłubałem, dłubałem i chyba się dodłubałem - największy problem sprawia chyba iteracja przez listę klocków (miałem tam listę wszystkich elementów budujących labirynt i wędrowałem przez nią przy rysowaniu i liczeniu "fizyki"). Zamiana tego na słownik (gdzie kluczem jest tuple z pozycją) daje solidnego kopa.
W sumie to dziwne. Sądziłem, że najkosztowniejsze jest rysowanie (a i tak nie rysowałem niewidocznych elementów), a nie jakaś głupia iteracja przez 1000 elementów. Jak widać nie dla Pythona. A może to powtarzanie testów widoczności było zbyt kosztowne? Zobaczę, jak się to sprawdzi (chwilowo mam to wygrzebane poza główny program). Jak się nie sprawdzi, to przesiadam się na C++. Bua cha cha cha.
Domyślam się, że część winy leży w tym, że uruchamiałem to na VirtualBoksie pod Ubuntu, z wyłączoną akceleracją 2D, na karcie Intela i w trybie "wydajnym" lapka. Ale celuję w to, aby działało to nawet na ciut słabszym sprzęcie (przykładowo moim stacjonarnym staruszku).
Za to fizyka i przeciwnicy działają już jak należy (no a w każdym razie tak, aby nie dawać mi powodów do narzekań).
W ramach testów wklepałem parę plansz z Heartlight ((c) Janusz Pelc). Efekt nie jest taki jak w oryginale, a zatem nie mogę pochwalić się w pełni funkcjonalną podróbką, ale chyba nie będę dopasowywać się na siłę. Podoba mi się, jak to działa teraz. No, chyba że skończę już wszystko inne.
W sumie to dziwne. Sądziłem, że najkosztowniejsze jest rysowanie (a i tak nie rysowałem niewidocznych elementów), a nie jakaś głupia iteracja przez 1000 elementów. Jak widać nie dla Pythona. A może to powtarzanie testów widoczności było zbyt kosztowne? Zobaczę, jak się to sprawdzi (chwilowo mam to wygrzebane poza główny program). Jak się nie sprawdzi, to przesiadam się na C++. Bua cha cha cha.
Domyślam się, że część winy leży w tym, że uruchamiałem to na VirtualBoksie pod Ubuntu, z wyłączoną akceleracją 2D, na karcie Intela i w trybie "wydajnym" lapka. Ale celuję w to, aby działało to nawet na ciut słabszym sprzęcie (przykładowo moim stacjonarnym staruszku).
Za to fizyka i przeciwnicy działają już jak należy (no a w każdym razie tak, aby nie dawać mi powodów do narzekań).
W ramach testów wklepałem parę plansz z Heartlight ((c) Janusz Pelc). Efekt nie jest taki jak w oryginale, a zatem nie mogę pochwalić się w pełni funkcjonalną podróbką, ale chyba nie będę dopasowywać się na siłę. Podoba mi się, jak to działa teraz. No, chyba że skończę już wszystko inne.
niedziela, 15 maja 2011
Bowlder nadal żyje!
Wcale się nie obijałem przez ostatni tydzień. To znaczy oczywiście, że się obijałem - dlaczegóż by nie? Ale nie tylko obijałem. Parę chwil poświęciłem na pieszczenie Bowldera. Bo tak to chyba można już tylko nazwać. Niby ma wszystko, co mieć powinien, ale jest brzydki, w paru miejscach mógłby zachowywać się lepiej niż zachowuje, kod jest popstrzony starymi rzeczami schowanymi w komentarzach, ale... działa. Co dalej? Trochę sprzątania, drobne poprawki, może parę godzin w GIMPie, aby wreszcie dać jakieś przytomne ikony przeciwników.
Tego jeszcze nie zrobiłem. Ale już mam "płynny ruch". Wygląda całkiem fajnie. Posiedziałem też nad wydajnością (na większej planszy spadała w okolice 20 ramek - fatalnie, fatalnie). To zupełnie zmieniło koncepcję "renderera" (i dobrze, tamta była słaba). Upłynniając ruch, rozsynchronizowałem fizykę - teraz każdy kamień (i przeciwnik) może sobie działać we własnych fazach. Rodzi to jeszcze pewne problemy, ale do opanowania.
Nim umieszczę nową wersję, chcę jeszcze dodać parę elementów (bomby, działka, może klucze lub teleporty).
Tego jeszcze nie zrobiłem. Ale już mam "płynny ruch". Wygląda całkiem fajnie. Posiedziałem też nad wydajnością (na większej planszy spadała w okolice 20 ramek - fatalnie, fatalnie). To zupełnie zmieniło koncepcję "renderera" (i dobrze, tamta była słaba). Upłynniając ruch, rozsynchronizowałem fizykę - teraz każdy kamień (i przeciwnik) może sobie działać we własnych fazach. Rodzi to jeszcze pewne problemy, ale do opanowania.
Nim umieszczę nową wersję, chcę jeszcze dodać parę elementów (bomby, działka, może klucze lub teleporty).
sobota, 7 maja 2011
Bowlder Smash video
Wrzuciłem filmik z rozgrywki na youtuba. Nie wiem skąd problemy z nagraniem dźwięku - tak pod Windą jak i Ubuntu. Spróbuję z innym programem.
Subskrybuj:
Posty (Atom)