Forum Gry Hobby Sprzęt Rozmawiamy Archiwum Regulamin

Forum: Stworzyłem kolejną grę!

09.03.2014 21:14
Chudy The Barbarian
😊
1
Chudy The Barbarian
89
Legend
Image

Stworzyłem kolejną grę!

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.

09.03.2014 21:17
PatriciusG.
2
odpowiedz
PatriciusG.
97
Inaction Figure

Chudy -> Zabieram się za Twoje nowe dzieło, ale póki co pytanie - byłbyś w sanie rzucić linkiem do tej tekstówki?

09.03.2014 21:19
3
odpowiedz
zanonimizowany933075
0
Centurion

NO ONE CARES

09.03.2014 21:22
4
odpowiedz
Tuminure
105
Senator

Szczerze mówiąc, poprzednia gierka była ciekawsza :P

@PatriciusG.
https://www.gry-online.pl/S043.asp?ID=11927310 (choć w sumie widzę, ze link nie działa...)

09.03.2014 21:24
Chudy The Barbarian
5
odpowiedz
Chudy The Barbarian
89
Legend

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.

09.03.2014 23:11
6
odpowiedz
Kwarak
44
Stary Korsarz

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ć?

09.03.2014 23:13
ProTyp
😉
7
odpowiedz
ProTyp
162
random

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ć.

10.03.2014 11:44
Chudy The Barbarian
8
odpowiedz
Chudy The Barbarian
89
Legend

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.

10.03.2014 19:39
9
odpowiedz
Kwarak
44
Stary Korsarz

Chodzi o zwykłe C bez żadnych plusów ani kratek?
Bo jeśli tak, to nie znalazłem :c.

10.03.2014 19:45
maviozo
10
odpowiedz
maviozo
226
autor zdjęć

Jest bug. Piłkę można odbijać pionowo bez poruszania paletki - czegoś takiego nie widziałem w żadnym arkanoidzie.

10.03.2014 20:03
11
odpowiedz
nerdlord
31
Pretorianin

Gra jest zacna milordzie ale crashuje ;/ Po prostu mi się wyłącza

10.03.2014 20:30
Chudy The Barbarian
12
odpowiedz
Chudy The Barbarian
89
Legend

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?

11.03.2014 17:12
13
odpowiedz
nerdlord
31
Pretorianin

Chudy nawet nie wiem :D . Gónwo laptop już umierający lada dzień czekam aż wybuchnie

11.03.2014 18:50
PJanek
14
odpowiedz
PJanek
75
Konsul
Image

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ą ;).

11.03.2014 19:09
X@Vier455
15
odpowiedz
X@Vier455
118
Szynszyl

PJanek i Chudy The Barbarian ----> Połączcie siły :D

11.03.2014 21:26
Chudy The Barbarian
16
odpowiedz
Chudy The Barbarian
89
Legend

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?

11.03.2014 22:39
17
odpowiedz
zanonimizowany792388
37
Generał

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.

11.03.2014 23:29
Chudy The Barbarian
18
odpowiedz
Chudy The Barbarian
89
Legend

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

12.03.2014 10:39
19
odpowiedz
zanonimizowany792388
37
Generał

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.

12.03.2014 10:55
20
odpowiedz
ElNinho
159
STROH 80

Chudy - a możesz podzielić się źródłem ? :)

16.03.2014 12:03
PJanek
21
odpowiedz
PJanek
75
Konsul

@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.

16.03.2014 13:19
maly_17a
22
odpowiedz
maly_17a
155
Senator

Do takiego bawienia się i pisania prostych gierek polecicie pascala z allegro, czy od razu w C++ iść?

16.03.2014 13:21
23
odpowiedz
kupa211
60
Generał

nie baw sie w pascala, od razu c++

16.03.2014 13:34
Arxel
24
odpowiedz
Arxel
220
Kostka Rubika

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.

16.03.2014 14:33
malyb89
25
odpowiedz
malyb89
186
Demigod

Nie znam się, więc sięwypowiem. Arx, a czy nie czasem wtedy bedzie wiecej zmiennych?

16.03.2014 14:47
Arxel
26
odpowiedz
Arxel
220
Kostka Rubika

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.

16.03.2014 22:37
PJanek
👍
27
odpowiedz
PJanek
75
Konsul

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.

21.03.2014 16:22
Chudy The Barbarian
28
odpowiedz
Chudy The Barbarian
89
Legend

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.

21.03.2014 17:03
😊
29
odpowiedz
Hakim
234
Senator

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

21.03.2014 18:50
Chudy The Barbarian
😃
30
odpowiedz
Chudy The Barbarian
89
Legend

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.

08.08.2014 14:59
Aen
👍
31
odpowiedz
Aen
232
Anesthetize

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.

14.11.2014 20:37
32
odpowiedz
myartgo
2
Junior

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

14.11.2014 20:42
33
odpowiedz
myartgo
2
Junior

portal - myartgo.pl :)

Forum: Stworzyłem kolejną grę!