Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5

Pełna gra w SDL z kodem źródłowym - gratka dla betatesterów.

#1
Pamietacie ten tematHuh o SDL?

Projekt jest juz niemal ukonczony, pobawcie się, wyraźcie swoją opinię, jak wam gra chodzi na waszych komputerach.
Wiem, że grywalność jest zerowa. Wiem, że wymaga mocnego procesora (są dwie biblioteki SDL.dll, ja pracuję na tej, która ma problemy z Open GL, z tą drugą nie chce mi się kompilować).
Poszukajcie błędów, a znajdziecie.
To jest gra zrobiona w C++, z wykorzystaniem środowiska graficznego w SDL. Jest to projekt semestralny zaliczający programowanie w c++, a osoby w to zaangażowane (koniecznie trzeba było to robić w kilka osób) nie marzą o programowaniu, więc jest jaki jest (czyt. beznadziejny). Czekam na wasze opinie i skargi.
W archiwum jest kod, niech każdy zainteresowany podejrzy sobie to cudo.
Gra: Element ukryty. Rejestracja zajmie tylko minutę!


Edit:

Dołączam dokumentację w doxygenie:
Element ukryty. Rejestracja zajmie tylko minutę!

W następnej wersji będą (chyba) poprawione 3 rzeczy:
- nawigacja w menu ma poważny błąd funkcjonowania (dużo roboty, żeby poprawić, nie wiem, czy mi się będzie chciało)
- chodzenienie z wyciągnietym mieczem, miecz ginie w dwóch scenach
- dołącze napisy końcowe, gdy ktoś już wreszcie wygra.
#2
A ja mam takie pytanko - nie dałeś linka do gry więc mam sobie ściągnąć kod i samodzielnie skompilować? Bo z chęcią bym zobaczył, co to za produkcja Big Grin
#3
cleric_of_lolth - ale w Element ukryty. Rejestracja zajmie tylko minutę! archiwum jest również sama gra.
#4
jak mi powiecie jak w tym walczyć, to może pogram Smile bo narazie to ten miecz lata z jednej strony na drugą i nic nie robi.
#5
Może to pierwszy błąd? Wink
zx - dzięki za info bo szczerze mówiąc leniem jestem i nie sprawdziłem zawartości archiwum.
#6
Dzięki wszystkim za zajrzenie. Owszem, w archiwum są i pliki z kodem, jak i już skompilowany program (kompilowałem w devie - DEV-CPP, wersja 4.9.9.2, czyli 5.0 beta - starsze nie poprawnie obsługują biblioteki SDL'a).

Jest już nowa wersja programu: 1.0.2
Do zassania z: Element ukryty. Rejestracja zajmie tylko minutę!

Jak i nowa dokumentacja:
Element ukryty. Rejestracja zajmie tylko minutę!

Od wersji 1.0.1 różni się:
- dodane napisy końcowe
- miecz już nie ginie, gdy chodzi się po lesie z wyciągniętym mieczem
- postacie poruszają się ciut szybciej, szybciej też porusza się sam miecz (faktycznie, miecz latał zbyt wolno, dlatego też napisałem nowy wzór wyznaczający prędkość "animacji" miecza.
Efekt walki: naciśnięcie klawisza "a" powoduje zmianę stanów miecza. Następuje to po zmianie stanów zmiennej typu int m i m2 w linijkach 1221-1230. Następnie zmiana stanów jest odnotowywana w danej scenie, np: 4 (ruch==4 - linijki 725-770) w animacji miecza: linijki 746-767. Naciśnięcie litery "w" powoduje użycie kodu w linijkach 1351-1378. I tak w przypadku sceny 4 (walka z dwoma sępami) za uderzenie przeciwnika odpowiada linijka 1363:
Boh1->Atak(cel);

Boh1 to jesteśmy my, czyli główny bohater.
Atak to funckja zawarta w klasie postać (linijki 7-76), linijki 56-62.

Z tego wszystkiego wynika wniosek, że mieczem nie trzeba celować, samo naciśnięcie przycisku "w" powoduje rozpoczęcie ataku, mimo iż miecz jest jeszcze dalego od sępa.


Zastanawiacie się może, czemu prezentuję wam już wersję 1.x.xHuhWersja 1.0 miała swoją premierę na uczelnii 19 stycznia, na ten dzień miała być gotowa ostateczna wersja. Ale z powodu braku dokumentacji dostałem jeszcze miesiąc na dorobienie dokumentacji jak i poprawienie błędów, a tych przez ostatni miesiąc poprawiłem ponad 50, zmniejszając zapotrzebowanie komputera na zasoby. Obecnie komputer potrzebuje tylko mocnego procesora, gdyż z powodu braku OpenGl, grafika jest generowana przez CPU a nie GPU, jak byc powinno. Jednak udało mi się tak przerobić kod, że mam teraz 6-7 razy mniejsze zużycie pamięci wirtualnej, które u mnie nie przekracza 7 MB.

Jest już dostępny projekt okładki (literówki na niej będą za godzine poprawione), z której dowiecie się, o co chodzi w grze Big Grin
Element ukryty. Rejestracja zajmie tylko minutę!
#7
A mi się uruchamia, potem są trzy napisy o Schwardzwaldzie (nienawidze niemieckiego, jak nazwe pomyliłem to przepraszam) jak dam do przodu to jest jakiś zilony las. Jedyne co moge zrobić to się cofnąć i znowu obejrzeć napis.
#8
A ja mam pytanie - ta postać, która się pojawia to kto to jest? Ja? Bo czasem jest 3 razy na jednym ekranie :| A wróg chyba też nie, bo życia mi nie ubywa...
Poza tym chyba trochę nie czaję zasad ale kielich odnalazłem :p

Edycja: to chyba Elfy z tego co wyczytałem ale mnie nie atakują!

@sztosz: no ruszaj strzałami na lewo i prawo, dalej prosto po prostu nie da się iść Wink
#9
dobra walczyć już umie Smile da się tę gre jakoś przejść? jeśli tak to jakim sposobem? bo mi się wydaje, że życia nie starczy na załatwienie tych wszystkich potworków. a tak apropo - jak już wyskoczył mi czerowny ekran z napisem "przegrałeś" to za nic nie da się zacząć gry od nowa bo dalej on wyskakuje. dopiero trzeba uruchamiać ponownie gre.

edit. już wiem o co chodzi z okładki - pospieszyłem się Tongue

edit2.


l5e2zalskrqvoqczm.jpg   
Big Grin

faktycznie teraz już się o wiele lepiej gra z tym przyspieszonym mieczem. szkoda tylko, że gra na 1 minute ;p
#10
Hmmm @luk47. Ciekawy błąd. Ogólnie jest tak zrobione, że po trzech sekundach wyświetlania napisu Przegrałeś, gra się wyłącza, myślałem, że to wystarczy.
Ta tajemnicza postać to elfica: w hierarchi klas jest jako rzecz, gdyż nie można z nią walczyć, nie ma cech ludzkich typu zycie, inteligencja czy siła.
Sposób przejścia. Jest coś takiego jak diagram przejść (nie będę podawać w któym miejscu kodu jest on, żebyście błądzili i może znajdziecie tam jakiś błąd. A przejście całej gry polega na przejściu "niewidocznego" labiryntu: jak się źle skręci, widzi się coś w stylu ślepego zaułka, nie można stamtąd wyjść póki nie cofniemy się. Dzięki temu mam realne ściany, które nie pozwalają wychodzić poza planszę.
#11
OK. to chyba coś z moim kompem... Zacząłem jeszcze raz... zielony las... prawo... lewo... do przodu... zacząłem na oślep wciskać klawisze... po kilkunastu sekundach zaczęły się plansze zmieniać... ale ja (już?) nie mialem nad tym kontroli... jakieś elfy (sam sie domysliem), robaki na drzewach i nie tylko... zacząłem wciskać "a" i "w"... nic to nie daje... nagle kielich się powiększył i... wygrałem... Dziwna gra Wink Ale to chyba coś z moim kompem, albo windowsem... za wolno reaguje po prostu.
#12
sztosz, to oznacza, że możesz mieć za wolny komputer Big Grin
Fakt, gra i może jest na jedną minutę, ale kilkaset razy więcej tych minut poświęciłem, żeby tą grę napisać; to mój pierwszy tak duży program, tak duży program w c++, pierwsza hierarchia klas, pierwszy raz użyłem środowiska graficznego SDL, itd... Założenie było takie: napisać projekt tak, aby zaliczał i ćw i egzamin z programowania. Udało się, a jest to 3 pod względem efektywności i złożoności projekt (pierwsze miejsce zajmuje program, w którym koleś rozpoznaje rodzaj kamery internetowej, pobiera z niej obraz i przekształca go za pomocą własnoręcznie zrobionych filtrów, zmienia nasycenie, jasność itd. zmienia czułość detektora ruchu - koleś idzie na programowanie, drugi pod względem jakości projekt to jest wierna imitacja Herosów, z animacjami, walkami ludzików itd...). Jak widzicie autorów gry, żaden z nich nie wybrał i nie wybierze się na specjalność programowania, dlatego trudniej nam było napisać.
#13
U mnie nie było problemów, tylko ramu sporo żre (tak jak na 'opakowaniu' napisane) Wink . Ogólnie jak na garażowy projekt jest spoko Smile. Gratulacje !
#14
to ja może dwa zdania dlaczego gra uruchamia się w rozdziałce 1024x768 pomimo że ja mam np 800x600 ? i nie np trybu okienkowego tylko full screen po drugie a gdzie dzwięk ? bo o ile pamięć mnie nie myli za pomocą SDL'a można jakieś dzwięki uzyskać, dlaczego ładowane są czcionku True Type ? przecież jest to nieporeczne łatwiej załadować czcionkę bitmapową i można z tym robić co się żywnie podoba , i jeszcze optymalizacja gra jest strasznie wolna u mnie to chyba z 5 fps ale program robi wrażenia jako prosta 2D jest bardzo ładna brawo pomimo paru braków gratulacje
#15
Dzięki wielkie za komentarze. Faktycznie, jest ramożerne, gdyż każda grafika jest ładowana do ramu. A tego trochę jest. Jednak nie martwcie się, to co widzicie, to i tak zostało znacznie zooptymalizowane.

Gra uruchamia się w takiej rozdziałce, gdyż takowa została przeze mnie zadeklarowana w mainie (linijki 1383-1391):
int main(int argc, char *argv[])
Kod:
{
    scena engine(1024,768);
    engine.init();
    engine.setFullScreen();
    engine.start();
    engine.end();
    return 0;
}
Jak sam widzisz, to właśnie tutaj deklaruję rozdzielczość, a zrobiłem to celowo: obiekty wyświetlane są jak w układzie współrzędnych, a więc deklaruję x i y. Zmieniając rozdzielczość wszystko się rozjedzie, więc main to był początek pisania tego projektu.
Faktycznie, można dać dźwięk (SDL ma możliwość obsługi dźwięków w .wav i .mp3 i pewnie jeszcze inne), ale nam zabrakło i czasu i pomysłu, żeby znaleźć jakiś dobry dźwięk.
Czcionka, może i byłoby łatwiej, ale jakoś tak zrobiłem na początku i tak jakoś pozostało, nie pomyślałem, żeby to modyfikować.
Mało fpsówHuhNa starym lapie z Pentium 233 i 96MB ramu, 4MB na grafikę z win98 i max rozdziałką 800x600 (to co się nie zmieściło, zostało ucięte) osiągałem ok 1,5 fps, a w scenach animacji (nadlatujące sępy, i poruszający się miecz) wachało się ok. 1 fps Smile, w wyniku czego sępy nadlatywały (a jeszcze wolniej latały) w czasie ok.2 min. Big Grin

Braki są, nie powiem, ale ten projekt na obecną chwilę zamykam: obroniłem kod na 4 w dniu dzisiejszym.

Dzięki wam wszystkim za pomoc w obu tematach, a szczególnie Bittermanowi.
#16
raczej nie leciały tylko skakały : - )
  


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  C++ jak wyciągnąć czas - funkcja silniku graficznym SDL Rozwiązanie: kod einstein-malysz 16 1,766 22.01.2006 12:47
Ostatni post: Bitterman

Skocz do:


Użytkownicy przeglądający ten wątek:
1 gości