Co poniektórzy mogą pamiętać mój wątek sprzed chyba 2 lat, kiedy to chwaliłem się swoja pierwszą grą - tekstowym "RPG" w konsoli, który podbił serca tego forum. Od tamtego czasu sporo próżnowałem, ale mimo to coś tam ewoluowałem :P Dzisiaj prezentuję wam więc nową grę, już w bardziej przyzwoitej oprawie:
https://www.dropbox.com/s/hc1ml6gpgijt57n/BrickBreaker.rar
Nie owijając w bawełnę, gameplayowo jest to prostacki klon Arkanoida, ale za to ma losowo generowane poziomy i z nudów można pograć. Grę napisałem w C++ z użyciem SDL. Co do sterowania, to standardowo myszka, a jak ktoś ma wolniejszego kompa to może próbować i na klawiaturze. Na esc jest też pauza.
Jak ktoś jest zainteresowany to zapraszam do grania i wyrażania opinii.
Chudy -> Zabieram się za Twoje nowe dzieło, ale póki co pytanie - byłbyś w sanie rzucić linkiem do tej tekstówki?
NO ONE CARES
Szczerze mówiąc, poprzednia gierka była ciekawsza :P
@PatriciusG.
https://www.gry-online.pl/forum/stworzylem-gre-1/z8b5ff0e (choć w sumie widzę, ze link nie działa...)
PatriciusG. - musiałem wygrzebać to ze swoich starych projektów, ale znalazłem i wrzuciłem:
https://www.dropbox.com/s/zz6m8wyxvjjf4au/Chudej%27s%20Game.rar
Tuminure - za to z programistycznego punktu widzenia to ta była "ciekawsza" :P Zaletą pisania takich gierek konsolowych (i pewnie też takich na gotowych silnikach) jest to, że masz do zrobienia praktycznie tylko mechanikę gry i wszystko sobie już hula. W tym przypadku miejscami było to jak wynajdywanie koła od zera, bo miałem praktycznie tylko do dyspozycji wyświetlanie obrazków na ekranie i wszystko trzeba było robić ręcznie.
Witam Panie Chudy.
Od dość dawna zacząłem sobie z nudów robić takie gierki w notatniku, teraz chwile pograłem w pana pierwszą grę (Bardzo fajną IMO) i jeśli mogę to chciałbym mieć prośbę. Mianowicie, czy mógłby pan dać mi kilka wskazówek jak dobrze robić takie gry. W jakim programie najlepiej i najprościej można takie cudo wykombinować?
Co tu mówić. Gierka spoko :P. Na pewno ja bym takiej nie zrobił.
Chciałbym takie coś umieć, ale nie chce mi się uczyć.
Kwarak - wybierz sobie jakiś język programowania, ogarnij jego podstawy (już same konstrukcje warunkowe, pętle i tablice w sumie wystarczą), napisz sobie parę programów do przećwiczenia i wtedy z odrobiną wyobraźni możesz pisać takie gierki :P Chudej's Game napisałem w C i ten język polecałbym też dla ciebie na start, w necie na pewno jest pełno kursów.
Chodzi o zwykłe C bez żadnych plusów ani kratek?
Bo jeśli tak, to nie znalazłem :c.
Jest bug. Piłkę można odbijać pionowo bez poruszania paletki - czegoś takiego nie widziałem w żadnym arkanoidzie.
Gra jest zacna milordzie ale crashuje ;/ Po prostu mi się wyłącza
Kwarak - tak. Spróbuj może tego: http://www-users.mat.uni.torun.pl/~garfi/kursc/kursc/index.htm
maviozo - "it's not a bug, it's a feature" :P Po prostu tak obliczany jest kierunek piłki.
nerdlord - jakiego masz kompa i system operacyjny?
Chudy nawet nie wiem :D . Gónwo laptop już umierający lada dzień czekam aż wybuchnie
Siema, mogę się podpiąć? Sam napisałem ostatnio prostą gierkę. Chodzimy sobie mechem i strzelamy do przeciwników. Poziomy też są generowane losowo (żaden to plus w sumie, bo są mało urozmaicone). Nie do końca zadowolony też jestem z kolizji, ale uparłem się, że zrobię to sam, bez korzystania z bibliotek typu JBox. Grę napisałem w Javie z wykorzystaniem Lightweight Java Game Library.
Sterowanie to: WSAD, Shift(dopalacz), myszka, LPM oraz PPM. Gra odpala się z pliku .jar, więc komputer musi mieć możliwość odpalać takie pliki (można to naprawić używając programu jarfix).
http://www.sendspace.com/file/682sfg
A, i mam nadzieję, że gra nie będzie przycinać, bo nie szalałem z żadną optymalizacją ;).
nerdlord - czyżby WinXP? :P Na jedynym kompie z XP, jaki miałem do dyspozycji i na którym testowałem tą gierkę występował ten sam problem. Niestety nie znalazłem rozwiązania.
PJanek - niezłe, chociaż gierka za mało dynamiczna i śmiesznie te kwiatki wyglądają na polu bitwy :D Jak zrobiłeś detekcję kolizji i pathfinding dla wrogów?
Chudy: do zminimalizowania wystepowania crashy dodaj do gry przechwytywanie wyjatkow i upewnij sie, ze wszystkie dynamiczne obiekty sa poprawnie tworzone i zwalniane. Kod ktory korzysta z dynamicznych obiektow obuduj assert`ami. Dla wszystkich zmiennych >zawsze< przypisuj jakies wartosci po uruchomieniu gry. Dodanie prostego logera znaczaco ulatwi znalezienie bledow.
cruiser - dzięki za rady. Mam spore braki i mało praktyki w C++ (ostatni raz uczyłem się tego w czasach gimnazjum na własną rękę i skończyłem na wskaźnikach) i zupełnie zapomniałem o wyjątkach. Za to implementowałem takiego loggera i rzeczywiście pokazał mi mniej więcej skąd się brał problem i miało to związek z tworzeniem dynamicznych obiektów, ale nie mam pojęcia dlaczego crash występował tylko na 1 kompie testowym z chyba 8 i akurat miał on jako jedyny zainstalowany WinXP. Inne obiekty tworzyłem w ten sam sposób i wszystkie przechowywałem w różnych kontenerach typu vector i usuwałem erasem. Mógłbym pokazać jak to wygląda w kodzie jakbyś był zainteresowany :P
Na poczatek obuduj program o jeden duzy wyjatej:
int main/winmain
try
TUTAJ CALY KOD GLOWNY PROGRAMU
catch(const char *exc)
MessagBox(0, exc, "", MB_OK);
lub
printf(exc), count<<exc
return 0;
Jesli uzywasz kontenerow std, do ktorych dostep do elementow jest przez indeks, to nie stosuj odwolania w postaci :
myVec[8].
myVec[8]->
tylko
myVec.at(8).
myVec.at(8)->
Odwolywanie sie do niepoprawnych elementow poprzez [] nie wywoluje wyjatkow i powoduje natychmiastowego crash`a i zamkniecie programu.
Dla wszystkich wskaznikow zawsze na poczatku przypisuj wartosc NULL\0 a przy ich usuwaniu zawsze sprawdzaj czy cos zawieraja if`em.
@Chudy -> Każdy obiekt w grze to prostokąt, żeby wykryć kolizję sprawdzam czy każdy z wierzchołków prostokąta znajduje się wewnątrz drugiego. Żeby to zrobić sprawdzam odległość miedzy współrzędnymi wierzchołka jednego prostokąta a prostymi wyznaczonymi przez współrzędne wierzchołków drugiego prostokąta.
Pathfindingu nie ma :P. Za słaby w te klocki jeszcze jestem. Wrogowie po prostu w losowych odstępach czasu zmieniają kierunek poruszania się, odbijając się przy tym od przeszkód (co nie działa zbyt dobrze).
A, i jeszcze klawiszami 1-4 można zmieniać pory dnia, a klawiszem 0 włączać/wyłączać deszcz.
Do takiego bawienia się i pisania prostych gierek polecicie pascala z allegro, czy od razu w C++ iść?
Wydaje mi się, że wydajniej byłoby zrobić wykrywanie kolizji na okręgach, a nie prostokątach.
Mogłoby to poprawić odbijanie się wrogów od przeszkód.
Nie znam się, więc sięwypowiem. Arx, a czy nie czasem wtedy bedzie wiecej zmiennych?
Oczywiście, że nie - dla okręgu potrzebujemy tylko współrzędnych środka i promień. Kolizję wykrywamy obliczając odległość między środkami poszczególnych okręgów czy nie jest mniejsza niż suma promieni tych okręgów.
Dla bardziej skomplikowanych obiektów tworzymy więcej niż jeden okrąg kolizyjny, nakładając je na siebie.
Tak, gdyby przeciwnicy byli okręgami faktycznie byłoby lepiej. W zasadzie, to strefa kolizji mecha, którym sterujemy jest okręgiem. W sumie, to nie wiem dlaczego nie zastosowałem tego samego do przeciwników :P. Może dlatego, że i tak tekstura potrzebuje 4 współrzędnych, więc nie kombinowałem już z okręgami.
Chyba naprawiłem ten problem z wykrzaczaniem się gry. Powodem był nieefektywny sposób tworzenia śladów iskier z eksplozji, teraz po prostu ten ślad będzie mniej "gęsty", ale za to powinno działać (na tamtym feralnym kompie testowym wreszcie działa jak należy).
Poprawiona wersja: https://www.dropbox.com/s/hc1ml6gpgijt57n/BrickBreaker.rar
ElNinho - jak jesteś jeszcze zainteresowany to podaj maila, jak trochę uprzątnę ten kod to podeślę.
PJanek - chodziło mi właściwie, czy używałeś jakiegoś sposobu na zmniejszenie ilości obiektów do sprawdzenia kolizji, bo w BrickBreakerze puściłem po prostu fora po wszystkich bricksach i porównywałem je ze współrzędnymi piłki :P Planowałem użyć jakiegoś bardziej cywilizowanego sposobu, ale okazało się, że przy takiej ilości obiektów jakie mam na ekranie, nie wpłynęłoby to znacząco na framerate, więc dałem sobie spokój.
Przyznam, że spodziewałem się totalnego badziewia, ale gierka daje radę. Można spokojnie pograć sobie te kilka minut :P
Niektóre z mocy jakby nie miały żadnego efektu. Może coś robią, ale tego nie widzę.
Tak sobie myślę, że wymyśl coś w miarę unikalnego i do dzieła. Nie żartuję. Ostatnio natrafiłem na grę o tytule 140.
Gra ze screenów i filmików na YT wygląda... nie wygląda. Totalny gniot wizualnie. Lata 80 poprzedniego wieku.
Ale coś mnie podkusiło by kupić. Nie wiem czy jest warta swojej ceny (5 dolców chyba), ale trochę wyzwań dostarczyła. I ma coś w sobie. Grasz i machasz głową w rytm muzyki. Tupiesz nogą.
Szkoda, że nie dołączyli ścieżki dźwiękowej, wówczas wartość zestawu by znacznie podskoczyła.
Ale nie o tym chciałem. Chodzi mi o to, że nawet tak minimalistyczna gra jak wspomniane 140 może się przebić. Wystarczy tylko albo aż pomysł. Umiejętności już jak widzę masz :)
A grze w kod nikt nie zagląda, ma działać i dostarczyć rozrywki.
Aha, denerwowało mnie, że jak wyjechałem za okno myszką, to materac stawał. Czasem, przy co gwałtowniejszym ruchu po spadający bonus mi się to zdarzało.
Zrób ze 100 poziomów (choćby i dostępnych na kody do wpisania w menu) i będzie wyzwanie :D
Hakim - dzięki, pisząc tę grę miałem głównie na celu nauczenie się podstaw ale przy okazji chciałem żeby nie było to zbyt denne :P Na realizację pomysłów jeszcze przyjdzie czas, póki co to pewnie zrobię jeszcze z 2 takie "proste" gierki żeby się rozkręcić.
Co do tych mocy, to pewnie masz na myśli spowolnienie, przyspieszenie albo podwojone punkty, bo reszta daje bardzo widoczny efekt. Poziomów zaś jest nieskończoność i są generowane losowo.
Bez kitu, potrafię usunąć psu śledzionę a jak chwilę poczytałem ten kurs języka C, to poczułem się jak dwulatek przed książką do fizyki kwantowej, nie zrozumiałem absolutnie nic :). Ogromny podziw i brawa dla Was, Panowie, życzę progresji i powodzenia. A gierki bardzo przyjemne.
Witaj, jedli ktoś z Was stworzył jakąś grę i chce na niej zacząć zarabiać - polecam wrzucić ją tutaj - [link] - jest to portal dla twórców i można sprzedawać swoje - zdjęcia, grafikę, muzykę, gry, literaturę lub notatki. Polecam