• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Void Runner - Platformówka 2D [Update - wersja na Linux]

VPS Starter Arubacloud
+6 głosów
959 wizyt
pytanie zadane 31 sierpnia 2016 w Nasze projekty przez WookieDev Użytkownik (740 p.)
edycja 3 września 2016 przez WookieDev

Hej wszystkim!
Chciałbym wam przedstawić dziś jeden z moich projektów, a jest nim mianowicie (jak zapewne domyśliliście się po tytule) platformówka 2D.
Postanowiłem wypuścić w świat jej pierwszą wersję, żeby dostać feedback, może znaleźć ludzi do wspólnych projektów. 
Gra napisana jest w c++ przy użyciu biblioteki SFML, jeżeli chcecie dowiedzieć się więcej, zapraszam do wpisu na blogu.

PS. W grze obsługiwany jest double jump (2xspacja).
 

Linki do pobrania:

Do gry napisałem również edytor poziomów, w którym - jak można się domyślić - można tworzyć poziomy do gry.

Wpis na blogu.

Linki do pobrania:

Screeny

Gra:

Edytor:

UWAGA!

Jeżeli komuś gra scrashuje się po wyborze level'u, uruchomcie ją jako administrator. 

Update 1.

Jak kilka osób radziło - poprawiłem mechanikę skoku i zrobiłem, żeby po śmierci resetował się timer i level do stanu pierwotnego. Dalsze poprawki w drodze, wersja na Linux'a powinna być dostępna jeszcze dziś.

Update 2.

Znalazłem w końcu chwilę i poprawiłem to upadanie jak chmurka, o którym pisał filipekczek7 + dodałem wersję na Linuxa. :)

- Wersja na Linuxa 
- Poprawki do skoku

1
komentarz 31 sierpnia 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)
Dokończ to co miałeś napisać.
komentarz 31 sierpnia 2016 przez WookieDev Użytkownik (740 p.)
Przez przypadek kliknąłem "Dodaj post", wybacz. :p
komentarz 31 sierpnia 2016 przez jpacanowski VIP (101,940 p.)
Czy mógłby ktoś zrobić jakiś screen z gry? Jestem ciekaw, ale pracuję na OS X...
komentarz 31 sierpnia 2016 przez WookieDev Użytkownik (740 p.)
Dodałem do postu na życzenie.

7 odpowiedzi

+1 głos
odpowiedź 31 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
Aplikacja nie działa poprawnie - wybranie pierwszego poziomu gry kończy się jej zawieszeniem. Nie inaczej jest przy kliknięciu "X" na okienku...
komentarz 31 sierpnia 2016 przez WookieDev Użytkownik (740 p.)
Uruchom jako administrator, na 99% zadziała
komentarz 31 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)

Działać działa, ale nie wiem, jakim prawem twoja aplikacja nie ma dostępu do wszelkich plików gry bez ingerencji administratora? Domyślam się, że zmieniałeś uprawnienia folderów, aby nikt niepowołany nie modyfikował zasobów, ale nie ma to większego sensu.

Z pierwszych uwag mogę podać:

komentarz 31 sierpnia 2016 przez WookieDev Użytkownik (740 p.)
Przypuszczam, że sprawa z folderami to wina instalatora, bo ja żadnych zabezpieczeń nie nakładałem. Muszę to sprawdzić. A co do skoku to jest double jump, spróbuj teraz ;).
Co masz na myśli przez optymalizację? Gra zacina? Sprawdzałem na 3 komputerach i wszystko śmigało.
komentarz 31 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)

Przepraszam, ale skok w tej grze to jakaś kpina, bez urazy wink

Mogę cię pochwalić za grafikę, bo jest całkiem przyzwoita, ale jak sam widzisz, pierwsze wrażenie psują głupie błędy. Po paru poprawkach może z tego wyjść całkiem fajna platformówka.

Życzę powodzenia

komentarz 31 sierpnia 2016 przez WookieDev Użytkownik (740 p.)
Możesz rozwinąć, co masz na myśli pisząc "kpina"? Wszelki feedback jest dla mnie ważny, wiec spokojnie, nie obrażę się o słowa krytyki. :D

Dzięki, że w ogóle znalazłeś czas, żeby ściągnąć i zagrać. ;)
komentarz 31 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)

Jeśli chodzi o optymalizację, to miałem na myśli zbyt duże wykorzystanie procesora przez twoją grę (u mnie ponad 15%). Rozumiem, że programy powinny wykorzystywać pełnie możliwości sprzętu, ale w tym przypadku jest to nieuzasadnione.

Jako posiadacz laptopa, przy uruchomieniu twojej gry, zaczyna on piszczeć, a wentylatory mocno hałasują.

Sam miałem podobne problemy "wydajnościowe" przy pisaniu moich gier i wiem, że użycie metody setFramerateLimit jest bardzo dobrym posunięciem. Jest to limiter, który ustala górną granicę klatek na sekundę. Przy grach online każdy FPS jest na wagę złota i nie stosuje się tego typu rozwiązań, ale przy platformówce 2D rozgrywka niczego nie straci, zaś gracz nie będzie musiał zatykać uszu laugh

A co do skoku... jest tragiczny! Postać dziwnie się zachowuje, a manewrowanie nią jest nieintuicyjne. Włącz sobie jakąkolwiek wysokobudżetową platformówkę, np. Rayman czy Super Mario Bros. i zobaczysz różnicę.

komentarz 31 sierpnia 2016 przez WookieDev Użytkownik (740 p.)
Łał, sprawdziłem zużycie i co prawda u mnie jest to coś w granicach 7%, ale to i tak herezja. Dzięki, że to wypunktowałeś, bo nigdy tego nie sprawdzałem :D.

Jutro sprawdzę tę metodę i zobaczymy, czy przy okazji może wydajność nie podskoczy, dzięki raz jeszcze za poradę.

Sterowanie w sumie mi osobiście nie sprawia problemów, ale może to przez ciągłe testowanie, przez które się przyzwyczaiłem. Nie mniej zwrócę na to uwagę. Wolę nie porównywać swojej gry do gier wysokobudżetowych, bo się tylko zdemotywuję. :D

 

Edit.

Sprawdziłem na szybkotę metodę setFramerateLimit, zużycie spadło do ~1%. Jutro skompiluję gierkę na nowo i wrzucę. WIELKIE DZIĘKI!!!
1
komentarz 31 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
Na zakończenie dodam, że problemem nie jest rozbudowana grafika czy mechanika gry, a zbyt częste wykonywanie pętli głównej.

System widząc aplikację "bez pohamowań", przydziela jej sporo zasobów. Ustawiając limit klatek, SFML samoczynnie oblicza czas potrzebny do krótkotrwałego uśpienia wątku, powodując zmniejszenie zasobożerności.
+1 głos
odpowiedź 1 września 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)
A gdzie wersja na inne systemy? :D Użytkownicy Linuksa, OS X, BSD czy jeszcze innych systemów pewnie też by sobi chętnie zagrali ;)
+1 głos
odpowiedź 1 września 2016 przez niezalogowany
edycja 1 września 2016
Na początek powiem, że gra wygląda całkiem fajne :) W grze najważniejsza jest grafika, jeśli chodzi o pierwsze wrażenie, a grafika jest ładna. Chociaż te piły tarczowe to mi bardzo mocno przypominają te z Super Meat Boy'a ;)

Co do czcionki, to pasuje, ale cyfra '1' wygląda jak '7', więc można się nieźle pomylić ;) I dźwięki powinny być od włączenie ustawione na chociaż 10, a nie 0 (widziałem w pliku konfiguracyjnym, dlatego sobie przestawiłem już w grze na 10, bo nie wiedziałem o co chodzi z tymi dźwiękami ;)).

Jak chcę wybrać drugi poziom, a jeszcze nie przeszedłem pierwszego (jest to dość trudne przez skok ;)), to pojawia się napis "You have to unlock this level first!". No, brzmi to dziwnie ;) Ja bym dał "To unlock this level, you have to finish previous level.", czy coś takiego, może coś krótszego, ale jak dodasz pełny ekran to będzie sporo miejsca ;)

Zauważyłem też, że po zginięciu i zrestartowaniu poziomu... Poziom się tak naprawdę nie restartuje :| Postać jest na początkowym miejscu, ale wszystkie animacje, ruchy, przeciwnicy (nie wiem czy są, bo jeszcze pierwszego poziomu nie przeszedłem xd) też powinny być wyzerowane. A tymczasem ekran się po prostu zaciemnia, żeby zespawnować postać na miejscu początkowym i się rozjaśnia, ale wszystko idzie tak jak wcześniej, po prostu kontynuuje swój ruch. A jest to niezbyt dokładne, szczególnie jeśli o pobijanie swoich rekordów, poziom powinien być taki sam za każdym razem, w końcu twój poziom nie jest generowany proceduralnie, więc wszystko powinno być takie same. To są takie szczegóły, ale właśnie poprawiają jakość rozgrywki ;)

Zmienną elapsed time chyba jednak bym resetował po każdym zginięciu. Zmienna deaths wystarczyłaby do pokazania, ile było podejść, a zmienna elapsed time by po prostu pokazała, jaki był czas, gdy w końcu przeszliśmy dany poziom. Wydaje mi się, że tak by było lepiej ;)

Co do skoku, to Patrycjerz miał jak najbardziej rację. Ten skok jest taki, hm... Jakby grawitacji nie było. Jest mocno nieintuicyjny. Że jest podwójny skok to może być, ale chodzi o to, że postać w skoku ma stałą prędkość, a powinno być to tak, że po wciśnięciu spacji postać dość szybko unosi się w górę, a potem tej prędkości jej ubywa i następnie spada. Na pewno wiesz o co chodzi ;) Tak jak już Patrycjerz wspomniał, skoki powinny być takie jak w Rayman'ie, Mario, Super Meat Boy'u, FEZ, LIMBO (mam nadzieję, że jednak grami się interesujesz, więc wiesz o co chodzi ;)). Te wszystkie gry coś łączy: mają normalny skok ;)

W komentarzu do Patrycjerza napisałeś, że wolisz nie porównywać swojej gry, do jakichś wysokobudżetowych gier, bo się tylko zdemotywujesz. Słuchaj, jak nie będziesz porównywał swojej gry, do jakiejś dobrej, znanej i porządnie zrobionej gry, to wiedz, że może ci wyjść coś kiepskiego. I zupełnie nie chodzi mi o zgapianie, czy coś. Tylko raczej o "podpatrzenie" różnych mechanik (na przykład skok ;)). Grafikę masz swoją, a to jedyna rzecz, dzięki której można grę porównać do innej. Ale nie masz swojej gry porównywać do wysokobudżetowych gier, tylko masz się nimi inspirować. Możesz zrobić bardzo fajną grę, nie patrząc na inne, ale chodzi o to, że gry już się ukształtowały na tyle, że odnajdywanie czegoś na nowo jest bez sensu. Gra powinna być nowatorska, wyróżniająca się na tle innych gier, ale patrząc na znane i dobre gry możesz się wiele nauczyć ;)

Nie nazwałbym tej gry platformówką, tylko raczej zręcznościówką na czas (drugie podobieństwo do Super Meat Boy'a ;)). Gdyby to był platformówka, to by był jakiś ludzik wesoło i spokojnie zbierający monety, przeskakujący dziury, znajdujący jakieś nowe przejścia, miał by życia, punkty itp. (patrz: Mario). Tą grę bym nazwał zręcznościówką. Takie moje spostrzeżenie.

Wiadomo, mogą być jakieś bugi, Patrycjerz ci powiedział o pewnej ważnej instrukcji, ale gra jest całkiem fajna :) Jakbyś poprawił to, co jest źle, ulepszył to, co jest dobrze, dodał tam jeszcze różne rzeczy, to może z tego wyjść całkiem sympatyczna gierka :) Aha, no i koniecznie dodaj fullscreen'a ;)

I jeszcze takie pytanie na koniec: sam robiłeś tą grafikę? Przyznaj się ;) Jeszcze nie patrzyłem na stronkę, więc nie wiem, czy tam takie coś jest, ale jak nie ma, to czy sam robiłeś tą grafikę?

Edit: przydało by się dodać zakładkę "How to play", zamiast dać napisy sterowania w menu głównym. I jeśli jesteśmy już przy menu głównym, to można by było usunąć te dwa obrazki, czyli logo SFML-a i twoje logo, WookieDev i dać je do nowej zakładki "Credits". I jeszcze dodać możliwość ominięcia splash screen'a, na przykład wciskając Escape, Spację czy Enter. Za pierwszym włączeniem gry nie było by takiej możliwości, ale po każdym kolejnym można by było ominąć. Taki jeszcze mniejszy szczegół ;)

Edit 2: jak już skończysz tą grę porządnie i nadal będziesz chciał robić coś podobnego, to polecam ci open source'ową bibliotekę fizyczną Box2D, na której zrobiono takie gry Angry Birds, LIMBO, czy Happy Wheels, czyli same znane gry w środowisku graczy. Chociaż Angry Birds odniosło taki sukces, że nie trzeba być graczem, żeby je znać. A twórcy dzięki tej bibliotece wcale się tak nie napracowali, bo o to właśnie chodzi, żeby sobie ułatwić życie czymś, co jest porządnie zrobione. Więc polecam ci tak na przyszłość Box2D ;)
komentarz 1 września 2016 przez niezalogowany
Tak, efekt parallaxy bardzo fajne wygląda ;)

Co do poprawki skoku: tak, o to chodziło :) Tylko że ten skok może być trochę szybszy, że by postać nie była jakby taka lekka, jakby miała taki mini spadochron. Ale o to chodziło, dobry patch ;)
komentarz 1 września 2016 przez niezalogowany
No i restart poziomu jak i czasu działa dobrze, więc fajnie, że poprawiłeś ;)
komentarz 1 września 2016 przez niezalogowany
O! Zauważyłem kolejną rzecz: jak postać dotknie górną częścią spód jakiegoś klocka, to wtedy od razu spada jak kamień. Wydaje mi się, że powinno być tak, że jeśli skok jest mocniejszy, to powinna wisieć przy suficie i później zaczynać spadać. Jak skok jest słabszy, to postać powinna tylko odrobinkę wisieć i zaczynać spadać.
komentarz 3 września 2016 przez WookieDev Użytkownik (740 p.)
Spatchowane, możesz sprawdzić, jak teraz zdziała. :p
komentarz 3 września 2016 przez niezalogowany
No, super! Teraz gra jest jak najbardziej grywalna :)
0 głosów
odpowiedź 1 września 2016 przez Michał Gibas Pasjonat (19,630 p.)
Miło by było jak byś wrzucił kod źródłowy albo skompilowany plik pod Linuxa. Bo trochę dyskryminujesz takich Linuxowców jak ja ;) Pozdrawiam!
komentarz 1 września 2016 przez Patrycjerz Mędrzec (192,320 p.)

Przecież autor gry udostępnił kod - wystarczyło przeczytać wpis na jego blogu wink

komentarz 1 września 2016 przez jpacanowski VIP (101,940 p.)
Użytkownicy sami sobie kompilują kod ;) Autor gry mógłby tylko jedynie dorzucić kod źródłowy...
0 głosów
odpowiedź 1 września 2016 przez WookieDev Użytkownik (740 p.)
Własnie lecę na rozpoczęcie roku, ale jak wrócę to skompiluję i dorzucę wersje na inne systemy. Wybaczcie ignorancje :p.
0 głosów
odpowiedź 1 września 2016 przez MrRozgunek Użytkownik (810 p.)
Tak z ciekawości zapytam. Ile pisałeś tą gierkę? :D

I mógłbyś dodać skakanie strzałką w górę ;d
komentarz 1 września 2016 przez WookieDev Użytkownik (740 p.)
Zacząłem ją pisać jakoś na początku lipca i tak skrobałem sobie przez wakacje, ale wiesz jak to jest w wakacje - tu wyjazd się trafił, tu coś + jeszcze nie jest to jedyny mój projekt. ;)

Ustawianie klawiszy do poruszania z poziomu menu to coś, co chciałbym dodać, żeby każdy mógł sobie dostosować, więc stay tuned. :D
komentarz 1 września 2016 przez MrRozgunek Użytkownik (810 p.)
Fajnie by było jakbyś dodał tą opcje, bo skakanie spacją mnie denerwuje ;) A strzałką  w górę było by mi wygodniej grać :D
0 głosów
odpowiedź 3 września 2016 przez WookieDev Użytkownik (740 p.)
Jest już wersja na Linux'a, wybaczcie opóźnienia. ;p

Podobne pytania

0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 23 września 2017 w C i C++ przez DonTweaks Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 163 wizyt
pytanie zadane 14 marca 2018 w C i C++ przez zpawlo00 Początkujący (310 p.)
0 głosów
1 odpowiedź 681 wizyt
pytanie zadane 5 sierpnia 2017 w C i C++ przez Programeł Gaduła (3,500 p.)

92,832 zapytań

141,776 odpowiedzi

320,824 komentarzy

62,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...